diff --git a/.clang-format b/.clang-format index 4d990a5..7f8e865 100644 --- a/.clang-format +++ b/.clang-format @@ -1,66 +1,211 @@ -# Generated from CLion C/C++ Code Style settings +--- BasedOnStyle: LLVM AccessModifierOffset: -2 -AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: None +AlignAfterOpenBracket: BlockIndent +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignEscapedNewlines: Left AlignOperands: Align -AllowAllArgumentsOnNextLine: false -AllowAllConstructorInitializersOnNextLine: false -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortBlocksOnASingleLine: Always -AllowShortCaseLabelsOnASingleLine: false +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: true +AllowShortEnumsOnASingleLine: true AllowShortFunctionsOnASingleLine: All -AllowShortIfStatementsOnASingleLine: Always +AllowShortIfStatementsOnASingleLine: AllIfsAndElse AllowShortLambdasOnASingleLine: All -AllowShortLoopsOnASingleLine: true +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: Yes -BreakBeforeBraces: Custom +AttributeMacros: + - __capability +BinPackArguments: false +BinPackParameters: false +BitFieldColonSpacing: Both BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterControlStatement: Never + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: Always AfterEnum: false AfterFunction: false AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false AfterUnion: false + AfterExternBlock: false BeforeCatch: false BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false IndentBraces: false - SplitEmptyFunction: false + SplitEmptyFunction: true SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAfterJavaFieldAnnotations: false BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeConceptDeclarations: Always BreakBeforeTernaryOperators: true -BreakConstructorInitializers: BeforeColon +BreakConstructorInitializers: AfterColon BreakInheritanceList: BeforeColon -ColumnLimit: 0 +BreakStringLiterals: true +ColumnLimit: 120 +CommentPragmas: "^ IWYU pragma:" CompactNamespaces: false -ContinuationIndentWidth: 4 +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 2 +ContinuationIndentWidth: 2 +Cpp11BracedListStyle: false +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: ^"(llvm|llvm-c|clang|clang-c)/ + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: ^(<|"(gtest|gmock|isl|json)/) + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: .* + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: (Test)?$ +IncludeIsMainSourceRegex: "" +IndentAccessModifiers: false +IndentCaseBlocks: true IndentCaseLabels: true +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true IndentPPDirectives: None +IndentRequiresClause: true IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertTrailingCommas: None +JavaScriptQuotes: Leave +JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: true -MaxEmptyLinesToKeep: 2 +LambdaBodyIndentation: Signature +Language: Cpp +MacroBlockBegin: "" +MacroBlockEnd: "" +MaxEmptyLinesToKeep: 1 NamespaceIndentation: All +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true +PPIndentWidth: -1 +PackConstructorInitializers: Never +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Left -ReflowComments: false +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RequiresClausePosition: OwnLine +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: Never +SortJavaStaticImport: Before +SortUsingDeclarations: true SpaceAfterCStyleCast: true SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false SpaceBeforeCpp11BracedList: false SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements -SpaceBeforeRangeBasedForLoopColon: false +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDeclarationName: false + AfterFunctionDefinitionName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 0 -SpacesInAngles: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never SpacesInCStyleCastParentheses: false -SpacesInContainerLiterals: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 SpacesInParentheses: false SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION TabWidth: 2 -UseTab: Always +UseCRLF: false +UseTab: ForContinuationAndIndentation +WhitespaceSensitiveMacros: + - STRINGIZE + - PP_STRINGIZE + - BOOST_PP_STRINGIZE + - NS_SWIFT_NAME + - CF_SWIFT_NAME \ No newline at end of file diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..7891ac7 --- /dev/null +++ b/.cproject @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.docs/Designs/Language.drawio b/.docs/Designs/Language.drawio new file mode 100644 index 0000000..88238fd --- /dev/null +++ b/.docs/Designs/Language.drawio @@ -0,0 +1,428 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.docs/Gallery/Oscript.gif b/.docs/Gallery/Oscript.gif new file mode 100644 index 0000000..932a66f Binary files /dev/null and b/.docs/Gallery/Oscript.gif differ diff --git a/.docs/Gallery/RayTracer.png b/.docs/Gallery/RayTracer.png new file mode 100644 index 0000000..1fe76b2 Binary files /dev/null and b/.docs/Gallery/RayTracer.png differ diff --git a/.docs/Gallery/RayTracerLua.png b/.docs/Gallery/RayTracerLua.png new file mode 100644 index 0000000..f49bbd0 Binary files /dev/null and b/.docs/Gallery/RayTracerLua.png differ diff --git a/.docs/Gallery/Sketch3D.gif b/.docs/Gallery/Sketch3D.gif new file mode 100644 index 0000000..890b1f3 Binary files /dev/null and b/.docs/Gallery/Sketch3D.gif differ diff --git a/.docs/Gallery/oscript.txt b/.docs/Gallery/oscript.txt new file mode 100644 index 0000000..72b43e1 --- /dev/null +++ b/.docs/Gallery/oscript.txt @@ -0,0 +1,16 @@ +method myLogFunction(value) { + print value; +} + +myLogFunction("hello"); + +var i = 10; + +if (i == 10) { + while (i > 0) { + print i; + i = i - 1; + } +} else { + print "still doin' heavy calculations..."; +} diff --git a/.github/workflows/WindowsPlatform.yml b/.github/workflows/WindowsPlatform.yml new file mode 100644 index 0000000..760ad45 --- /dev/null +++ b/.github/workflows/WindowsPlatform.yml @@ -0,0 +1,17 @@ +name: Windows + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + runs-on: self-hosted + + steps: + - uses: actions/checkout@v3 + + #- name: Build + #run: echo hello diff --git a/.github/workflows/cmake-single-platform.yml b/.github/workflows/cmake-single-platform.yml new file mode 100644 index 0000000..be2d4e7 --- /dev/null +++ b/.github/workflows/cmake-single-platform.yml @@ -0,0 +1,49 @@ +# This starter workflow is for a CMake project running on a single platform. There is a different starter workflow if you need cross-platform coverage. +# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-multi-platform.yml +name: CMake on a single platform + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Release + +jobs: + build: + # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. + # You can convert this to a matrix build if you need cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Sutup Dependencies + run: | + git submodule update --init --recursive + sudo apt-get update + sudo apt-get install python3 python-is-python3 + sudo apt-get install -y libx11-dev libgl1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev + sudo apt-get install -y clang-15 + sudo apt-get install -y libasound2-dev libglew-dev + sudo apt-get install -y portaudio19-dev + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest -C ${{env.BUILD_TYPE}} + diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 0e85c3d..4041169 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -18,25 +18,47 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - - name: Install LLVM - run: sudo apt-get install -y llvm - - - name: Set LLVM Toolchain - run: | - sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 10 - sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 20 + - name: Setup + shell: bash + run: | + # If your submodules are configured to use SSH instead of HTTPS please uncomment the following line + # git config --global url."https://github.com/".insteadOf "git@github.com:" + auth_header="$(git config --local --get http.https://github.com/.extraheader)" - - name: Configure CMake - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + git submodule sync --recursive + git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 + + sudo apt-get update + sudo apt-get install python3 python-is-python3 + sudo apt-get install -y libx11-dev libgl1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev + sudo apt-get install -y clang-15 + sudo apt-get install -y libasound2-dev libglew-dev + sudo apt-get install -y portaudio19-dev + #cd Externals/glew/ + #make extensions + sudo apt update + + #- name: Set LLVM Toolchain + #run: | + # sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 10 + # sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 20 + + - name: Configure CMake + run: | + gcc -v + clang++-15 -v + CC=clang-15 CXX=clang++-15 cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + run: CC=clang CXX=clang++ cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -v -j + + - name: Test + working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest -j -C ${{env.BUILD_TYPE}} - - name: Build - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - - name: Test - working-directory: ${{github.workspace}}/build - # Execute tests defined by the CMake configuration. - # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: ctest -C ${{env.BUILD_TYPE}} diff --git a/.gitignore b/.gitignore index b0247cb..5493878 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,11 @@ *tmp* bin build* +*build* lib install .vscode +out +.vs +*.bkp +*.$* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..9d1d1de --- /dev/null +++ b/.gitmodules @@ -0,0 +1,21 @@ +[submodule "Externals/imgui"] + path = Externals/imgui + url = https://github.com/elushaX/imgui.git +[submodule "Externals/lua"] + path = Externals/lua + url = https://github.com/elushaX/lua.git +[submodule "Externals/unittest-cpp"] + path = Externals/unittest-cpp + url = https://github.com/elushaX/unittest-cpp.git +[submodule "Externals/glfw"] + path = Externals/glfw + url = https://github.com/elushaX/glfw.git +[submodule "Externals/nanovg"] + path = Externals/nanovg + url = https://github.com/elushaX/nanovg.git +[submodule "Externals/lalr"] + path = Externals/lalr + url = https://github.com/elushaX/lalr.git +[submodule "Externals/asio"] + path = Externals/asio + url = https://github.com/elushaX/asio.git diff --git a/.project b/.project new file mode 100644 index 0000000..4dcf3c3 --- /dev/null +++ b/.project @@ -0,0 +1,20 @@ + + + Modules + + + + + + org.eclipse.cdt.core.cBuilder + clean,full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.cmake.core.cmakeNature + + diff --git a/Allocators/CMakeLists.txt b/.wip/Language/CMakeLists.txt similarity index 54% rename from Allocators/CMakeLists.txt rename to .wip/Language/CMakeLists.txt index fae102e..2ac316c 100644 --- a/Allocators/CMakeLists.txt +++ b/.wip/Language/CMakeLists.txt @@ -3,20 +3,18 @@ cmake_minimum_required(VERSION 3.2) set(CMAKE_CXX_STANDARD 23) -project(Allocator) +project(Language) ### ---------------------- Static Library --------------------- ### -file(GLOB SOURCES "./private/*.cpp") -file(GLOB HEADERS "./public/*.hpp") +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) -target_include_directories(${PROJECT_NAME} PUBLIC ./public/) -target_link_libraries(${PROJECT_NAME} PUBLIC Utils) +target_include_directories(${PROJECT_NAME} PUBLIC public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings) ### -------------------------- Tests -------------------------- ### enable_testing() file(GLOB TEST_SOURCES "./tests/*.cpp") add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) -target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) -add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) - -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} UnitTest++) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) \ No newline at end of file diff --git a/.wip/Language/private/Grammar.cpp b/.wip/Language/private/Grammar.cpp new file mode 100644 index 0000000..d6acecf --- /dev/null +++ b/.wip/Language/private/Grammar.cpp @@ -0,0 +1,36 @@ + +#include "Grammar.hpp" + +using namespace tp; + +ContextFreeGrammar::Arg::Arg(const String& id, bool terminal, bool epsilon) { + mId = id; + mIsTerminal = terminal; + mIsEpsilon = epsilon; +} + +const String& ContextFreeGrammar::Arg::getId() const { return mId; } + +bool ContextFreeGrammar::Arg::operator==(const Arg& in) const { + return (mId == in.mId) && (mIsEpsilon == in.mIsEpsilon) && (mIsTerminal == in.mIsTerminal); +} + +ContextFreeGrammar::Rule::Rule(const String& id, const InitialierList& args) { + mId = id; + mArgs = args; +} + +bool ContextFreeGrammar::Rule::operator==(const Rule& in) const { return (mId == in.mId) && (mArgs == in.mArgs); } + +bool ContextFreeGrammar::Rule::isProductive() const { + for (auto arg : mArgs) { + if (arg->getId() == mId) return false; + } + return true; +} + +void ContextFreeGrammar::addRule(const Rule& rule) { mRules.append(rule); } + +void ContextFreeGrammar::addRule(const String& id, const InitialierList& args) { addRule(Rule(id, args)); } + +void ContextFreeGrammar::setStart(const String& startRule) { mStartTerminal = startRule; } \ No newline at end of file diff --git a/.wip/Language/private/LanguageCommon.cpp b/.wip/Language/private/LanguageCommon.cpp new file mode 100644 index 0000000..147536d --- /dev/null +++ b/.wip/Language/private/LanguageCommon.cpp @@ -0,0 +1,8 @@ + +#include "LanguageCommon.hpp" +#include "Strings.hpp" + +using namespace tp; + +static ModuleManifest* sModuleDependencies[] = { &gModuleStrings, nullptr }; +ModuleManifest tp::gModuleLanguage = ModuleManifest("Language", nullptr, nullptr, sModuleDependencies); diff --git a/.wip/Language/public/Automata.hpp b/.wip/Language/public/Automata.hpp new file mode 100644 index 0000000..0e059b9 --- /dev/null +++ b/.wip/Language/public/Automata.hpp @@ -0,0 +1,249 @@ + +#pragma once + +#include "Utils.hpp" +#include "List.hpp" +#include "Map.hpp" +#include "Tree.hpp" + +namespace tp { + + // Non-Deterministic Finite-State Automata + template + class FiniteStateAutomation { + public: + struct State; + + public: + class Transition { + friend FiniteStateAutomation; + + public: + enum Type { ANY, EPSILON, SYMBOL }; + + public: + Transition(Type type, State* state, tAlphabetType symbol = tAlphabetType()) { + mState = state; + mType = type; + mSymbol = symbol; + } + + [[nodiscard]] bool isTransition(const tAlphabetType& symbol) const { + return (mType == ANY || mType == EPSILON) || (mSymbol == symbol); + } + + [[nodiscard]] bool doesConsumes(const tAlphabetType& symbol) const { + return (mType == ANY || (mType == SYMBOL && mSymbol == symbol)); + } + + [[nodiscard]] bool isEpsilon() const { return mType == EPSILON; } + + const State* getState() const { return mState; } + const tAlphabetType& getSymbol() const { return mSymbol; } + + private: + State* mState = nullptr; + Type mType; + tAlphabetType mSymbol; + }; + + class State { + friend FiniteStateAutomation; + + public: + State() = default; + + public: + void setValue(const tStateType& stateValue) { mStateVal = stateValue; } + void setAcceptance(bool isAccepting) { mIsAccepting = isAccepting; } + [[nodiscard]] bool isAccepting() const { return mIsAccepting; } + const tStateType& getStateVal() const { return mStateVal; } + [[nodiscard]] const Buffer* getTransitions() const { return &mTransitions; } + + private: + Buffer mTransitions{}; + tStateType mStateVal = tStateType(); + bool mIsAccepting = false; + }; + + private: + List mStates; + State* mStartState = nullptr; + Range mAlphabetRange = { ENV_UALNI_MAX, ENV_UALNI_MIN }; + + public: + FiniteStateAutomation() = default; + + State* addState(const tStateType& state, bool accepting) { + auto node = mStates.newNode(); + node->data.mIsAccepting = accepting; + node->data.mStateVal = state; + mStates.pushBack(node); + return &node->data; + } + + void addTransition(State* from, State* to, const tAlphabetType& symbol) { + from->mTransitions.append(Transition(Transition::SYMBOL, to, symbol)); + if (mAlphabetRange.mBegin < ualni(symbol)) mAlphabetRange.mBegin = ualni(symbol); + if (mAlphabetRange.mEnd > ualni(symbol)) mAlphabetRange.mEnd = ualni(symbol); + } + + void addEpsilonTransition(State* from, State* to) { from->mTransitions.append(Transition(Transition::SYMBOL, to)); } + + void addAnyTransition(State* from, State* to) { from->mTransitions.append(Transition(Transition::ANY, to)); } + + void setStartState(State* start) { mStartState = start; } + + [[nodiscard]] State* getStartState() const { return mStartState; } + + [[nodiscard]] bool isValid() const { + if (!mStartState) { + return false; + } + return true; + } + + [[nodiscard]] ualni numStates() const { return mStates.length(); } + + [[nodiscard]] const List* getStates() const { return &mStates; } + + [[nodiscard]] Range getAlphabetRange() const { return mAlphabetRange; } + + private: + typedef AvlTree, bool> StatesSet; + + // Expands initial set with states that are reachable from initial set with no input consumption (E-transitions) + static void expandSet(StatesSet& set) { + List workingSet; + + set.forEach([&](AvlNumericKey& key, bool) { workingSet.pushBack(key.val); }); + + while (workingSet.length()) { + auto first = workingSet.first()->data; + set.insert(first, {}); + + for (auto transition : first->mTransitions) { + if (!transition->isEpsilon()) continue; + if (set.find(transition->mState)) continue; + workingSet.pushBack(transition->mState); + } + + workingSet.popFront(); + } + } + + // States that are reachable from initial set with symbol transition + static void findMoveSet(StatesSet& from, StatesSet& moveSet, tAlphabetType symbol) { + from.forEach([&](AvlNumericKey& key, bool) { + for (auto transition : key.val->mTransitions) { + if (transition->isEpsilon()) continue; + if (!transition->isTransition(symbol)) continue; + if (moveSet.find(transition->mState)) continue; + moveSet.insert(transition->mState, {}); + } + }); + } + + public: + bool makeDeterministic() { + if (!isValid()) return false; + + struct GroupKey { + const StatesSet* group; + static ualni hash(GroupKey key) { return 0; } + bool operator==(const GroupKey& key) const { return false; } + }; + + struct GroupInfo { + StatesSet* group = nullptr; + AvlTree, tAlphabetType> transitions; + State* newState = nullptr; + bool accepting = false; + tStateType stateVal = tStateType(); + }; + + Buffer groups = { {} }; + Map groupInfos; + + groups.first().insert(getStartState(), false); + + expandSet(groups.first()); + + groupInfos.put({ &groups.first() }, { &groups.first() }); + + // 1) find new states + List workingSet; + workingSet.pushBack(&groups.first()); + + while (workingSet.length()) { + StatesSet* group = workingSet.first()->data; + GroupInfo* info = &groupInfos.get({ group }); + + for (auto symbol : getAlphabetRange()) { + + // calculate new possible state + StatesSet potentialGroup; + + findMoveSet(*group, potentialGroup, tAlphabetType(symbol)); + expandSet(potentialGroup); + + if (!potentialGroup.size()) continue; + + // find existing or create group + StatesSet* targetGroup = nullptr; + auto iter = groupInfos.presents({ &potentialGroup }); + if (iter) { + targetGroup = groupInfos.getSlotVal(iter).group; + } else { + targetGroup = &groups.append(potentialGroup); + groupInfos.put({ targetGroup }, { targetGroup }); + workingSet.pushBack(targetGroup); + } + + // assert transition is added + info->transitions.insert(targetGroup, tAlphabetType(symbol)); + } + + workingSet.popFront(); + } + + // 2) find new states termination values + for (auto group : groupInfos) { + GroupInfo* info = &group->val; + ualni accepting = 0; + + info->group->forEach([&](AvlNumericKey& key, bool) { + if (key.val->mIsAccepting) { + accepting++; + info->accepting = true; + info->stateVal = key.val->mStateVal; + } + }); + + if (!accepting) { + info->accepting = false; + info->stateVal = info->group->head()->key.val->mStateVal; + } + } + + // 3) transfer + mStates.removeAll(); + + // create states + for (auto group : groupInfos) { + group->val.newState = addState(group->val.stateVal, group->val.accepting); + } + + // create transitions + for (auto group : groupInfos) { + auto functor = [&](AvlNumericKey targetGroupKey, tAlphabetType symbol) { + GroupInfo* targetGroup = &groupInfos.get({ (StatesSet*) targetGroupKey.val }); + addTransition(group->val.newState, targetGroup->newState, symbol); + }; + group->val.transitions.forEach(functor); + } + + return true; + } + }; +} \ No newline at end of file diff --git a/.wip/Language/public/ContextFreeAutomata.hpp b/.wip/Language/public/ContextFreeAutomata.hpp new file mode 100644 index 0000000..9c4f698 --- /dev/null +++ b/.wip/Language/public/ContextFreeAutomata.hpp @@ -0,0 +1,137 @@ + +#pragma once + +#include "Strings.hpp" +#include "Automata.hpp" +#include "Buffer2D.hpp" + +namespace tp { + + template + class ContextFreeAutomata { + + struct Action { + enum Type { SHIFT, REDUCE, TRAP } type = TRAP; + ualni num = 0; // state to shift (shift action) or pop count (reduce action) + }; + + public: + struct StackItem { + ualni state = 0; + tAlphabetType symbol; + Buffer leafs; + }; + + struct AcceptResult { + bool accepted = false; + ualni advancedIdx = 0; + const StackItem* ast = nullptr; + }; + + public: + ContextFreeAutomata() = default; + + AcceptResult accept(const tAlphabetType* stream, ualni size) { + mCurrentState = mStartState; + mStack.append(&mItems.append({ mCurrentState, {}, {} })); + + ualni advancedIdx = 0; + while (advancedIdx < size) { + const tAlphabetType& symbol = *(stream + advancedIdx); + + if (!(symbol >= mRange.mBegin && symbol < mRange.mEnd)) { + return { false, advancedIdx, nullptr }; + } + + const Action& action = mTable.get({ ualni(symbol - mRange.mBegin), mCurrentState }); + + if (action.type == Action::TRAP) { + return { false, advancedIdx, nullptr }; + } + + if (action.type == Action::SHIFT) { + mStack.last()->symbol = symbol; + mStack.append(&mItems.append({ mCurrentState, {}, {} })); + mCurrentState = action.num; + } + + if (mTable.get({ 0, mCurrentState }).type == Action::REDUCE) { + StackItem* newItem = &mItems.append(StackItem{}); + for (auto iter : Range(action.num)) { + newItem->leafs.append(mStack.last()); + mCurrentState = mStack.last()->state; + mStack.pop(); + } + + if (!mStack.size()) { + if (advancedIdx == size) { + return { true, advancedIdx, newItem }; + } else { + return { false, advancedIdx, {} }; + } + } + + mStack.append(&mItems.append({ mCurrentState, {}, {} })); + } + + advancedIdx++; + } + + return { false, advancedIdx, nullptr }; + } + + public: + typedef FiniteStateAutomation Automata; + typedef Automata::State AutomataState; + + void construct(const Automata& automata) { + mRange = automata.getAlphabetRange(); + + const ualni numStates = automata.numStates(); + const ualni numSymbols = mRange.idxDiff(); + + mTable.reserve({ numSymbols, numStates }); + mTable.assign(Action{ Action::TRAP, 0 }); + + Map states; + ualni stateIndex = 0; + for (auto state : *automata.getStates()) { + states.put(&state.data(), { stateIndex }); + stateIndex++; + } + + stateIndex = 0; + for (auto state : *automata.getStates()) { + if (&state.data() == automata.getStartState()) { + mStartState = stateIndex; + } + + if (state->isAccepting()) { + ASSERT(state->getTransitions()->size() == 0) + for (auto symbolIndex : Range(numSymbols)) { + mTable.set({ stateIndex, symbolIndex }, { Action::REDUCE, state->getStateVal().numArgs() }); + } + } else { + for (auto transition : *state->getTransitions()) { + ualni symbolIndex = ualni(transition->getSymbol()) - mRange.mBegin; + ualni targetStateIndex = states.get(transition->getState()); + mTable.set({ stateIndex, symbolIndex }, { Action::SHIFT, targetStateIndex }); + } + } + + stateIndex++; + } + } + + private: + Buffer2D mTable; + + Buffer mItems; + Buffer mStack; + + ualni mStartState = 0; + ualni mCurrentState = 0; + + Range mRange; + }; +} diff --git a/.wip/Language/public/ContextFreeCompiler.hpp b/.wip/Language/public/ContextFreeCompiler.hpp new file mode 100644 index 0000000..db05b61 --- /dev/null +++ b/.wip/Language/public/ContextFreeCompiler.hpp @@ -0,0 +1,181 @@ + +#pragma once + +#include "Automata.hpp" +#include "Grammar.hpp" + +namespace tp { + + class ContextFreeCompiler { + public: + struct SymbolVal { + SymbolVal() = default; + + SymbolVal(ualni aId, ualni aStart, ualni aLen) { + id = aId; + start = aStart; + len = aLen; + }; + + SymbolVal(ualni val) { id = val; } + + operator ualni() const { return id; } + + bool operator==(const SymbolVal& in) const { return in.id == id; } + SymbolVal& operator=(const SymbolVal& in) = default; + + ualni id = 0; + ualni start = 0; + ualni len = 0; + }; + + struct Item { + const ContextFreeGrammar::Rule* mRule = nullptr; + ualni mAdvanceIdx = 0; + ualni numArgs() const { return 0; } + }; + + struct Symbol { + String mId; + bool mIsTerminal = false; + }; + + private: + struct NonTerminal { + Buffer rules; + Map references; + Map referencing; + + public: + [[nodiscard]] bool isProductive() const { + for (auto rule : rules) { + if (rule->isProductive()) return true; + } + return false; + } + + [[nodiscard]] bool isLooped(Map& processed, const String& id) const { + for (auto ref : referencing) { + if (processed.presents(ref->key)) return true; + } + processed.put(id, {}); + for (auto ref : referencing) { + if (ref->val->isLooped(processed, ref->key)) return true; + } + return false; + } + }; + + public: + bool compile(const ContextFreeGrammar& grammar, FiniteStateAutomation& automata) { + if (!init(grammar)) return false; + return true; + } + + [[nodiscard]] const Buffer* getSymbols() const { return &mSymbols; } + [[nodiscard]] SymbolVal getSymbolId(const String& name) const { return mSymbolLookup.get(name); } + + private: + bool init(const ContextFreeGrammar& grammar) { + + if (!grammar.getRules()->size()) { + return false; + } + + for (auto rule : *grammar.getRules()) { + if (!rule->getArgs()->size()) { + return false; + } + } + + findNonTerminals(grammar); + + for (auto nonTerminal : mNonTerminals) { + for (auto rule : nonTerminal->val.rules) { + for (auto arg : *rule->getArgs()) { + if (arg->isTerminal() || arg->isEpsilon()) continue; + + if (!mNonTerminals.presents(arg->getId())) { + printf("Referenced non-terminal '%s' is not defined\n", arg->getId().read()); + return false; + } + } + } + } + + findAllReferences(grammar); + + for (auto nonTerminal : mNonTerminals) { + if (!nonTerminal->val.references.size() && nonTerminal->key != grammar.getStartTerminal()) { + printf("Non-terminal '%s' is defined but not used\n", nonTerminal->key.read()); + return false; + } + } + + for (auto nonTerminal : mNonTerminals) { + if (!nonTerminal->val.isProductive()) { + printf("Non-terminal '%s' is not productive\n", nonTerminal->val.rules.first()->getId().read()); + return false; + } + } + + Map processed; + if (mNonTerminals.get(grammar.getStartTerminal()).isLooped(processed, grammar.getStartTerminal())) { + printf("Note that grammar is looped.\n"); + return false; + } + + initSymbols(grammar); + + return true; + } + + void findNonTerminals(const ContextFreeGrammar& grammar) { + for (auto rule : *grammar.getRules()) { + if (!mNonTerminals.presents(rule->getId())) { + mNonTerminals.put(rule->getId(), {}); + } + auto nonTerminal = &mNonTerminals.get(rule->getId()); + nonTerminal->rules.append(&rule.data()); + } + } + + void findAllReferences(const ContextFreeGrammar& grammar) { + for (auto nonTerminal : mNonTerminals) { + for (auto rule : nonTerminal->val.rules) { + for (auto arg : *rule->getArgs()) { + if (arg->isTerminal() || arg->isEpsilon()) continue; + + NonTerminal* reference = &mNonTerminals.get(arg->getId()); + nonTerminal->val.referencing.put(arg->getId(), reference); + reference->references.put(nonTerminal->key, &nonTerminal->val); + } + } + } + } + + void initSymbols(const ContextFreeGrammar& grammar) { + for (auto nonTerminal : mNonTerminals) { + mSymbols.append({ nonTerminal->key, false }); + mSymbolLookup.put(nonTerminal->key, SymbolVal(mSymbols.size() - 1)); + + for (auto rule : nonTerminal->val.rules) { + for (auto arg : *rule->getArgs()) { + if (arg->isEpsilon() || arg->isTerminal()) continue; + if (mTerminals.presents(arg->getId())) continue; + mTerminals.put(arg->getId(), {}); + + mSymbols.append({ nonTerminal->key, true }); + mSymbolLookup.put(nonTerminal->key, SymbolVal(mSymbols.size() - 1)); + } + } + } + } + + private: + Map mNonTerminals; + Map mTerminals; + Buffer mSymbols; + Map mSymbolLookup; + }; +} diff --git a/.wip/Language/public/Grammar.hpp b/.wip/Language/public/Grammar.hpp new file mode 100644 index 0000000..df1fba5 --- /dev/null +++ b/.wip/Language/public/Grammar.hpp @@ -0,0 +1,224 @@ + +#pragma once + +#include "Buffer.hpp" +#include "LanguageCommon.hpp" +#include "Map.hpp" +#include "Strings.hpp" + +namespace tp { + + class ContextFreeGrammar { + public: + struct Arg { + friend class Rule; + + public: + Arg() = default; + explicit Arg(const String& id, bool terminal = true, bool epsilon = false); + + public: + bool operator==(const Arg& in) const; + [[nodiscard]] const String& getId() const; + [[nodiscard]] bool isTerminal() const { return mIsTerminal; } + [[nodiscard]] bool isEpsilon() const { return mIsEpsilon; } + + private: + String mId; + bool mIsTerminal = false; + bool mIsEpsilon = false; + }; + + class Rule { + public: + Rule() = default; + Rule(const String& id, const InitialierList& args); + + public: + bool operator==(const Rule& in) const; + [[nodiscard]] bool isProductive() const; + [[nodiscard]] const String& getId() const { return mId; } + [[nodiscard]] const Buffer* getArgs() const { return &mArgs; } + + private: + String mId; + Buffer mArgs; + }; + + public: + ContextFreeGrammar() = default; + + public: + void addRule(const Rule& rule); + void addRule(const String& id, const InitialierList& args); + void setStart(const String& startRule); + [[nodiscard]] const Buffer* getRules() const { return &mRules; } + [[nodiscard]] const String& getStartTerminal() const { return mStartTerminal; } + + public: + Buffer mRules; + String mStartTerminal; + bool mIsLooped = false; + }; + + template + class RegularGrammar { + public: + struct Node { + enum Type { + NONE, + ANY, + OR, + IF, + CLASS, + COMPOUND, + REPEAT, + VAL, + } mType = NONE; + + explicit Node(Type type) : + mType(type) {} + + virtual ~Node() = default; + }; + + class ValueNode : public Node { + public: + explicit ValueNode(tAlphabetType val) : + mVal(val), + Node(Node::VAL) {} + + ~ValueNode() override = default; + + public: + tAlphabetType mVal; + }; + + class CompoundNode : public Node { + public: + CompoundNode() : + Node(Node::COMPOUND) {} + + CompoundNode(const InitialierList& nodes) : + Node(Node::COMPOUND) { + mSequence = nodes; + } + + ~CompoundNode() override { + for (auto iter : mSequence) { + delete iter.data(); + } + mSequence.clear(); + } + + public: + Buffer mSequence; + }; + + class AlternationNode : public Node { + public: + AlternationNode() : + Node(Node::OR) {} + + AlternationNode(const Node* a, const Node* b) : + Node(Node::OR) { + mFirst = a; + mSecond = b; + } + + ~AlternationNode() override { + delete mFirst; + delete mSecond; + } + + public: + const Node* mFirst = nullptr; + const Node* mSecond = nullptr; + }; + + class IfNode : public Node { + public: + IfNode() : + Node(Node::IF) {} + + explicit IfNode(const Node* a) : + Node(Node::IF) { + mNode = a; + } + + ~IfNode() override { delete mNode; } + + public: + const Node* mNode = nullptr; + }; + + class AnyNode : public Node { + public: + AnyNode() : + Node(Node::ANY) {} + + ~AnyNode() override = default; + }; + + class RepetitionNode : public Node { + public: + RepetitionNode() : + Node(Node::REPEAT) {} + + explicit RepetitionNode(const Node* rep, bool plus = false) : + Node(Node::REPEAT) { + mNode = rep; + mPlus = plus; + } + + ~RepetitionNode() override { delete mNode; } + + public: + Node* mNode = nullptr; + bool mPlus = false; + }; + + class ClassNode : public Node { + public: + ClassNode() : + Node(Node::CLASS) {} + + explicit ClassNode(const Buffer>& ranges, bool exclude = false) : + Node(Node::CLASS) { + mExclude = exclude; + mRanges = ranges; + } + + ~ClassNode() override { mRanges.removeAll(); } + + public: + Buffer> mRanges; + bool mExclude = false; + }; + + public: + RegularGrammar() = default; + + ~RegularGrammar() { + for (auto rule : mRules) { + delete rule->t1; + } + } + + void addRule(const Node* node, tTokType id) { mRules.append({ node, id }); } + + public: + const Node* seq(const InitialierList& nodes) { return new CompoundNode(nodes); } + const Node* val(tAlphabetType in) { return new ValueNode(in); } + const Node* alt(const Node* a, const Node* b) { return new AlternationNode(a, b); } + const Node* may(const Node* a) { return new IfNode(a); } + const Node* any() { return new AnyNode(); } + const Node* rep(const Node* rep, bool plus = false) { return new RepetitionNode(rep, plus); } + const Node* ranges(const Buffer>& ranges, bool exclude = false) { + return new ClassNode(ranges, exclude); + } + + public: + Buffer> mRules; + }; +} diff --git a/.wip/Language/public/LanguageCommon.hpp b/.wip/Language/public/LanguageCommon.hpp new file mode 100644 index 0000000..0429431 --- /dev/null +++ b/.wip/Language/public/LanguageCommon.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include "Module.hpp" + +namespace tp { + extern ModuleManifest gModuleLanguage; +} diff --git a/.wip/Language/public/Parser.hpp b/.wip/Language/public/Parser.hpp new file mode 100644 index 0000000..10985ae --- /dev/null +++ b/.wip/Language/public/Parser.hpp @@ -0,0 +1,107 @@ + +#pragma once + +#include "RegularCompiler.hpp" +#include "RegularAutomata.hpp" + +#include "ContextFreeCompiler.hpp" +#include "ContextFreeAutomata.hpp" + +namespace tp { + + template + class Parser { + + typedef RegularGrammar RegularGrammar; + typedef RegularCompiler RegularCompiler; + typedef FiniteStateAutomation RegularGraph; + typedef RegularAutomata RegularAutomata; + + // ContextFreeGrammar; + // ContextFreeCompiler; + typedef FiniteStateAutomation ContextFreeGraph; + typedef ContextFreeAutomata ContextFreeAutomata; + + public: + struct ParseResult { + bool accepted = false; + const ContextFreeAutomata::StackItem* ast = nullptr; + }; + + public: + Parser() = default; + + public: + bool compileTables( + const ContextFreeGrammar& cfGrammar, + const RegularGrammar& reGrammar, + const Map& contextFreeToRegular + ) { + // Compile Regular Grammar + { + RegularGraph graph; + RegularCompiler compiler; + compiler.compile(graph, reGrammar); + graph.makeDeterministic(); + mRegularAutomata.construct(graph); + } + + // compile context free grammar + { + ContextFreeGraph graph; + ContextFreeCompiler compiler; + compiler.compile(cfGrammar, graph); + graph.makeDeterministic(); + mContextFreeAutomata.construct(graph); + + // make glue + for (auto symbol : *compiler.getSymbols()) { + auto symbolId = compiler.getSymbolId(symbol->mId); + if (symbol->mIsTerminal) { + auto iter = contextFreeToRegular.presents(symbol->mId); + if (!iter) return false; + mGrammarGlue.put(contextFreeToRegular.getSlotVal(iter), symbolId); + } else { + mAstNames.put(symbolId, symbol->mId); + } + } + } + + return true; + } + + ParseResult parse(const tAlphabetType* sentence, ualni sentenceLength) { + // get tokens stream + Buffer tokens; + + const tAlphabetType* sentenceIter = sentence; + ualni lengthIter = sentenceLength; + + while (lengthIter) { + auto result = mRegularAutomata.accept(sentenceIter, lengthIter); + + if (!result.accepted) { + return { false, nullptr }; + } + + tokens.append(ContextFreeCompiler::SymbolVal( + mGrammarGlue.get(result.state), ualni(sentenceIter - sentence), result.advancedIdx + )); + + sentenceIter += result.advancedIdx; + lengthIter -= result.advancedIdx; + } + + ContextFreeAutomata::AcceptResult result = mContextFreeAutomata.accept(tokens.getBuff(), tokens.size()); + return { result.accepted, result.ast }; + } + + public: + // save load compiled tables + RegularAutomata mRegularAutomata; + ContextFreeAutomata mContextFreeAutomata; + + Map mGrammarGlue; + Map mAstNames; + }; +} diff --git a/.wip/Language/public/RegularAutomata.hpp b/.wip/Language/public/RegularAutomata.hpp new file mode 100644 index 0000000..501dada --- /dev/null +++ b/.wip/Language/public/RegularAutomata.hpp @@ -0,0 +1,101 @@ + +#pragma once + +#include "Strings.hpp" +#include "Automata.hpp" +#include "Buffer2D.hpp" + +namespace tp { + + template + class RegularAutomata { + public: + struct AcceptResult { + bool accepted = false; + ualni advancedIdx = 0; + tStateType state = tStateType(); + }; + + public: + RegularAutomata() = default; + + AcceptResult accept(const tAlphabetType* stream, ualni size) { + mCurrentState = mStartState; + + ualni advancedIdx = 0; + + while (advancedIdx < size) { + const tAlphabetType& symbol = *(stream + advancedIdx); + + if (!(symbol >= mSymbolRange.mBegin && symbol < mSymbolRange.mEnd)) { + return { false, advancedIdx, {} }; + } + + mCurrentState = mTable.get({ (ualni) (symbol - mSymbolRange.mBegin), mCurrentState }); + + if (mCurrentState == mStates.size()) { + return { false, advancedIdx, {} }; + } + + if (mStates[mCurrentState].first) { + return { true, advancedIdx, mStates[mCurrentState].second }; + } + + advancedIdx++; + } + + return { false, advancedIdx, {} }; + } + + public: + void construct(const FiniteStateAutomation& automata) { + const auto range = automata.getAlphabetRange(); + mSymbolRange = { tAlphabetType(range.mBegin), tAlphabetType(range.mEnd) }; + + auto range_len = ualni(mSymbolRange.mEnd - mSymbolRange.mBegin); + auto sizeX = range_len ? range_len : 1; + auto sizeY = (ualni) (automata.numStates()); + + mTable.reserve({ sizeX, sizeY }); + mTable.assign(automata.numStates()); + mStates.reserve(sizeY); + + ualni idx = 0; + for (auto state : *automata.getStates()) { + mStates[idx] = { state->isAccepting(), state->getStateVal() }; + idx++; + } + + idx = 0; + for (auto state : *automata.getStates()) { + if (&state.data() == automata.getStartState()) { + mStartState = mCurrentState = idx; + } + idx++; + } + + ualni stateIdx = 0; + for (auto state : *automata.getStates()) { + for (auto transition : *state->getTransitions()) { + ualni stateIdx2 = 0; + for (auto state2 : *automata.getStates()) { + if (transition->getState() == &state2.data()) break; + stateIdx2++; + } + auto const code = transition->getSymbol(); + mTable.set({ (ualni) (code - mSymbolRange.mBegin), (ualni) stateIdx }, stateIdx2); + } + stateIdx++; + } + } + + private: + Buffer2D mTable; + Buffer> mStates; + + ualni mCurrentState = 0; + ualni mStartState = 0; + + Range mSymbolRange = { 0, 0 }; + }; +} diff --git a/.wip/Language/public/RegularCompiler.hpp b/.wip/Language/public/RegularCompiler.hpp new file mode 100644 index 0000000..a27f464 --- /dev/null +++ b/.wip/Language/public/RegularCompiler.hpp @@ -0,0 +1,208 @@ + +#pragma once + +#include "Grammar.hpp" +#include "Automata.hpp" + +namespace tp { + + template + class RegularCompiler { + + typedef FiniteStateAutomation Graph; + typedef typename Graph::State Vertex; + typedef RegularGrammar Grammar; + + struct Node { + Vertex* left = nullptr; + Vertex* right = nullptr; + }; + + private: + Graph* mGraph = nullptr; + + public: + struct CompileError { + uhalni mRuleIndex = 0; + tStateType mRuleState; + const char* description = nullptr; + [[nodiscard]] bool isError() const { return description; } + }; + + CompileError mError; + + void compile(Graph& graph, const tAlphabetType* regex, tStateType state) { + mGraph = &graph; + compileUtil(regex, state); + } + + void compile(Graph& aGraph, const Grammar& grammar) { + mGraph = &aGraph; + + auto left = addVertex(); + auto right = addVertex(); + + halni idx = 0; + for (auto rule : grammar.mRules) { + + auto node = compileUtil(rule.data().first, rule.data().second); + + if (!(node.left && node.right)) { + mError.mRuleIndex = idx; + return; + } + + transitionAny(left, node.left); + transitionAny(node.right, right); + + idx++; + } + + mGraph->setStartState(left); + } + + private: + Node compileUtil(const Grammar::Node* astNode, tStateType state) { + + auto node = compileNode(astNode, nullptr, nullptr); + + node.right->setValue(state); + node.right->setAcceptance(true); + + mGraph->setStartState(node.left); + + return node; + } + + Node compileVal(Grammar::ValueNode* val, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto left = aLeft ? aLeft : addVertex(); + auto right = aRight ? aRight : addVertex(); + transitionVal(left, right, val->mVal); + return { left, right }; + } + + Node compileAlternation(const Grammar::AlternationNode* alt, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto first_node = compileNode(alt->mFirst, aLeft, aRight); + auto second_node = compileNode(alt->mSecond); + transitionAny(first_node.left, second_node.left); + transitionAny(second_node.right, first_node.right); + return first_node; + } + + Node compileAny(const Grammar::AnyNode*, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto left = aLeft ? aLeft : addVertex(); + auto right = aRight ? aRight : addVertex(); + transitionAny(left, right, true); + return { left, right }; + } + + Node compileRepeat(const Grammar::RepetitionNode* repeat, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + if (repeat->mPlus) { + auto middle = addVertex(); + + auto left_node = compileNode(repeat->mNode, aLeft, middle); + + auto right_node = compileNode(repeat->mNode, middle, aRight); + transitionAny(right_node.right, right_node.left); + transitionAny(right_node.left, right_node.right); + + return { left_node.left, right_node.right }; + } else { + auto node = compileNode(repeat->mNode, aLeft, aRight); + transitionAny(node.right, node.left); + transitionAny(node.left, node.right); + return node; + } + } + + Node compileIf(const Grammar::IfNode* ifNode, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto node = compileNode(ifNode->mNode, aLeft, aRight); + transitionAny(node.left, node.right); + return node; + } + + Node compileClass(const Grammar::ClassNode* node, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto left = aLeft ? aLeft : addVertex(); + auto right = aRight ? aRight : addVertex(); + + if (node->mRanges.size() == 1) { + auto const& range = node->mRanges.first(); + transitionRange(left, right, { ualni(range.mBegin), ualni(range.mEnd) }, node->mExclude); + return { left, right }; + } + + for (auto range : node->mRanges) { + auto middle = addVertex(); + transitionRange(left, middle, { ualni(range->mBegin), ualni(range->mEnd) }, node->mExclude); + transitionAny(middle, right); + } + return { left, right }; + } + + Node compileCompound(const Grammar::CompoundNode* compound, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + Vertex* left = nullptr; + Vertex* rigth = nullptr; + + ualni idx = 0; + for (auto child : compound->mSequence) { + auto pass_left = idx == 0 ? aLeft : rigth; + auto pass_right = idx == compound->mSequence.size() - 1 ? aRight : nullptr; + auto node = compileNode(child.data(), pass_left, pass_right); + if (!left) left = node.left; + rigth = node.right; + idx++; + } + + return { left, rigth }; + } + + Node compileNode(const Grammar::Node* node, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + switch (node->mType) { + case Grammar::Node::CLASS: return compileClass((typename Grammar::ClassNode*) node, aLeft, aRight); + case Grammar::Node::COMPOUND: return compileCompound((typename Grammar::CompoundNode*) node, aLeft, aRight); + case Grammar::Node::IF: return compileIf((typename Grammar::IfNode*) node, aLeft, aRight); + case Grammar::Node::REPEAT: return compileRepeat((typename Grammar::RepetitionNode*) node, aLeft, aRight); + case Grammar::Node::ANY: return compileAny((typename Grammar::AnyNode*) node, aLeft, aRight); + case Grammar::Node::OR: return compileAlternation((typename Grammar::AlternationNode*) node, aLeft, aRight); + case Grammar::Node::VAL: return compileVal((typename Grammar::ValueNode*) node, aLeft, aRight); + case Grammar::Node::NONE: break; + } + ASSERT(0) + return {}; + } + + void transitionAny(Vertex* from, Vertex* to, bool consumes = false) { + for (auto symbol : Range(tMinSymbol, tMaxSymbol)) { + transitionVal(from, to, symbol); + } + } + + void transitionVal(Vertex* from, Vertex* to, tAlphabetType val) { mGraph->addTransition(from, to, val); } + + void transitionRange(Vertex* from, Vertex* to, Range range, bool exclude) { + if (exclude) { + Range first = { tMinSymbol, range.mBegin - 1 }; + Range second = { range.mEnd + 1, tMaxSymbol }; + + if (first.valid()) { + for (auto symbol : first) { + transitionVal(from, to, symbol); + } + } + + if (second.valid()) { + for (auto symbol : second) { + transitionVal(from, to, symbol); + } + } + + } else { + for (auto symbol : range) { + transitionVal(from, to, symbol); + } + } + } + + Vertex* addVertex() { return mGraph->addState(tInTransition, false); } + }; +} diff --git a/.wip/Language/public/SimpleParser.hpp b/.wip/Language/public/SimpleParser.hpp new file mode 100644 index 0000000..ad1dc6e --- /dev/null +++ b/.wip/Language/public/SimpleParser.hpp @@ -0,0 +1,69 @@ +#pragma once + +#include "Parser.hpp" + +namespace tp { + + // Gives ability to express grammar in the Unified Format as sentence + template + class SimpleParser { + enum UGTokens : alni { InTransition = -1, TestSeq }; + + typedef Parser UGParser; + typedef Parser UserParser; + + public: + SimpleParser() { + // Grammar for unified grammar format sentence that tables compiled from + + // Define Context-Free grammar + ContextFreeGrammar contextFreeGrammar; + { + // use existing CF grammar interface + contextFreeGrammar.addRule("a", { ContextFreeGrammar::Arg("") }); + contextFreeGrammar.setStart("a"); + } + + // Define Regular grammar + RegularGrammar regularGrammar; + { + // this is basically ast from existing tokenizer + regularGrammar.addRule(regularGrammar.seq({ regularGrammar.val('a'), regularGrammar.val('b') }), TestSeq); + } + + Map terminalsMap; + terminalsMap.put("TestSeq", TestSeq); + + mUnifiedGrammarParser.compileTables(contextFreeGrammar, regularGrammar, terminalsMap); + } + + public: + void compileTables(const tAlphabetType* grammar, ualni grammarLength) { + mUnifiedGrammarParser.parse(grammar, grammarLength); + + // compile each ast into RegularGrammar and ContextFree Grammar api instructions + ContextFreeGrammar userContextFreeGrammar; + RegularGrammar userRegularGrammar; + + // ... + // split ast into RE and CF part + // generate and execute grammar api commands + // use existing tokenizer code to create RE transition matrix + // ... + // compile tables from user grammar + + Map terminalsMap; + terminalsMap.put("TestSeq", 0); + + mUserParser.compileTables(userContextFreeGrammar, userRegularGrammar, terminalsMap); + } + + UserParser::ParseResult parse(const tAlphabetType* grammar, ualni grammarLength) { + return mUserParser.parse(grammar, grammarLength); + } + + private: + UGParser mUnifiedGrammarParser; + UserParser mUserParser; + }; +} diff --git a/.wip/Language/tests/Test.hpp b/.wip/Language/tests/Test.hpp new file mode 100644 index 0000000..f0b25f1 --- /dev/null +++ b/.wip/Language/tests/Test.hpp @@ -0,0 +1,43 @@ +#pragma once + +// #include "SimpleParser.hpp" + +const char* gGrammar = R"( +# Grammar in the CF-RE United Format (Defined by language module) + +Rules : { + ScopeList : ScopeList Scope | Scope ; + Scope : \ScopeBegin StatementList \ScopeEnd; + StatementList : StatementList Statement \StatementEnd; + StatementList : Statement \StatementEnd; + Statement : \StatementBody; +} + +Terminals : { + Space : " " | "\t" | "\n" | "\r"; + ScopeBegin : "{"; + ScopeEnd : "}"; + StatementEnd : ";"; + StatementBody : "a" | "b"; +} + +Start : Scope; +Ignore : Space; +)"; + +const char* gSentence = R"( +{} + +{ } + +{ +a; + a ; a ; + + } + + { +a; + a; +} +)"; \ No newline at end of file diff --git a/.wip/Language/tests/Tests.cpp b/.wip/Language/tests/Tests.cpp new file mode 100644 index 0000000..ce4beb2 --- /dev/null +++ b/.wip/Language/tests/Tests.cpp @@ -0,0 +1,45 @@ + +#include "Test.hpp" + +/* +using namespace tp; + +void testAutomation() { + + FiniteStateAutomation automata; + + auto start = automata.addState(0, false); + auto end = automata.addState(1, true); + + automata.addTransition(start, end, 'a'); + + automata.setStartState(start); + + automata.makeDeterministic(); +} + +void test() { + auto parser = SimpleParser(); + + parser.compileTables(gGrammar, String::Logic::calcLength(gGrammar)); + auto result = parser.parse(gSentence, String::Logic::calcLength(gSentence)); +} + +int main() { + + tp::ModuleManifest* deps[] = { &tp::gModuleLanguage, nullptr }; + tp::ModuleManifest testModule("Test", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + testAutomation(); + test(); + + testModule.deinitialize(); +} + +*/ + +int main() { return 0; } \ No newline at end of file diff --git a/3DEditor/CMakeLists.txt b/3DEditor/CMakeLists.txt new file mode 100644 index 0000000..e11e387 --- /dev/null +++ b/3DEditor/CMakeLists.txt @@ -0,0 +1,22 @@ +project(3DEditor) + +### ---------------------- Externals --------------------- ### +set(BINDINGS_INCLUDE ../Externals/glfw/include ../Externals) +set(BINDINGS_LIBS glfw Imgui) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ${BINDINGS_INCLUDE} ./ext/) +target_link_libraries(${PROJECT_NAME} PUBLIC Graphics Connection Widgets Math RasterRender) +target_link_libraries(${PROJECT_NAME} PUBLIC ${BINDINGS_LIBS}) + +### -------------------------- Applications -------------------------- ### +add_executable(3DEditorApp ./applications/Entry.cpp ./applications/SceneLoad.cpp) +target_link_libraries(3DEditorApp ${PROJECT_NAME} Lua ImageIO) + +file(COPY "rsc" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") +file(COPY "rsc/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") diff --git a/3DEditor/applications/Entry.cpp b/3DEditor/applications/Entry.cpp new file mode 100644 index 0000000..fb1e37e --- /dev/null +++ b/3DEditor/applications/Entry.cpp @@ -0,0 +1,42 @@ + +#include "EditorWidget.hpp" + +#include "GraphicApplication.hpp" + +using namespace tp; + +bool loadMeshes(tp::Scene& scene, const std::string& objetsPath); + +class EditorGUI : public Application { +public: + EditorGUI() { + Vec2F renderResolution = { 1000, 1000 }; + auto canvas = this->mGraphics->getCanvas(); + // mGui = new EditorWidget(canvas, &geometry, renderResolution); + + mGui = new ShortcutsTest(); + + loadMeshes(geometry, "rsc/scene.obj"); + + geometry.mCamera.lookAtPoint({ 0, 0, 0 }, { 3, 3, 2 }, { 0, 0, 1 }); + } + + ~EditorGUI() override { delete mGui; } + + void processFrame(EventHandler* eventHandler) override { + + auto rec = RectF({ 0, 0 }, mWindow->getSize()); + mGui->proc(*eventHandler, rec, rec); + } + + void drawFrame(Canvas* canvas) override { mGui->draw(*canvas); } + +private: + Scene geometry; + ShortcutsTest* mGui; +}; + +int main() { + EditorGUI gui; + gui.run(); +} diff --git a/3DEditor/applications/SceneLoad.cpp b/3DEditor/applications/SceneLoad.cpp new file mode 100644 index 0000000..bc03e0c --- /dev/null +++ b/3DEditor/applications/SceneLoad.cpp @@ -0,0 +1,41 @@ +#include "Scene.hpp" + +#include "obj/OBJ_Loader.h" +#include + +bool loadMeshes(tp::Scene& scene, const std::string& objetsPath) { + using namespace tp; + + objl::Loader Loader; + + if (!Loader.LoadFile(objetsPath.c_str())) { + std::cout << "Failed to Load File. May have failed to find it or it was not an .obj file.\n"; + return false; + } + + for (auto& curMesh : Loader.LoadedMeshes) { + scene.mObjects.append(Object()); + + auto object = &scene.mObjects.last(); + + for (auto& vertex : curMesh.Vertices) { + // printf("{ %f, %f, %f }, \n", vertex.Position.X, vertex.Position.Y, vertex.Position.Z); + object->mTopology.Points.append(Vec3F{ vertex.Position.X, vertex.Position.Y, vertex.Position.Z }); + object->mTopology.Normals.append(Vec3F{ vertex.Normal.X, vertex.Normal.Y, vertex.Normal.Z }); + } + + for (int j = 0; j < curMesh.Indices.size(); j += 3) { + uint idx1 = (int) curMesh.Indices[j]; + uint idx2 = (int) curMesh.Indices[j + 1]; + uint idx3 = (int) curMesh.Indices[j + 2]; + // printf("{ %i, %i, %i },\n", idx1, idx2, idx3); + object->mTopology.Indexes.append({ idx1, idx2, idx3 }); + } + + if (object->mTopology.Normals.size() != object->mTopology.Points.size()) { + printf("Logic error loading normals\n"); + } + } + + return scene.mObjects.size(); +} diff --git a/3DEditor/private/Render.cpp b/3DEditor/private/Render.cpp new file mode 100644 index 0000000..ec98be5 --- /dev/null +++ b/3DEditor/private/Render.cpp @@ -0,0 +1,110 @@ +#include "Render.hpp" + +#include "GraphicsApi.hpp" + +using namespace tp; + +class ObjectBuffers { +public: + ObjectBuffers(Object* object) { + mObject = (object); + + auto& buff = mObject->mTopology.Points; + auto& indices = mObject->mTopology.Indexes; + + glGenVertexArrays(1, &VAO); + glGenBuffers(1, &VBO); + glGenBuffers(1, &EBO); + + glBindVertexArray(VAO); + + glBindBuffer(GL_ARRAY_BUFFER, VBO); + glBufferData(GL_ARRAY_BUFFER, sizeof(Vec3F) * buff.size(), buff.getBuff(), GL_STATIC_DRAW); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(Vec3) * indices.size(), indices.getBuff(), GL_STATIC_DRAW); + + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), nullptr); + glEnableVertexAttribArray(0); + + // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindVertexArray(0); + } + + Object* mObject = nullptr; + + GLuint VAO = 0; + GLuint VBO = 0; + GLuint EBO = 0; + + void drawCall() { + auto& indices = mObject->mTopology.Indexes; + + glBindVertexArray(VAO); + + // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); + glDrawElements(GL_TRIANGLES, indices.size() * 3, GL_UNSIGNED_INT, nullptr); + + // glDrawArrays(GL_TRIANGLES, 0, sizeof(buffer) / (2 * sizeof(float))); + + // glBindVertexArray(0); + } + + ~ObjectBuffers() { + glDeleteBuffers(1, &VBO); + glDeleteVertexArrays(1, &VAO); + } +}; + +Render::Render(Vec2F renderResolution) : + mRenderBuffer(renderResolution) { + + mDefaultShader.load("rsc/shaders/default.vert", nullptr, "rsc/shaders/default.frag", true); +} + +Render::~Render() {} + +uint4 Render::getRenderBuffer() { return mRenderBuffer.texId(); } + +Vec2F Render::getBufferSize() { return mRenderBuffer.getSize(); } + +void Render::render(const Scene& geometry, Vec2F size) { + + for (auto object : geometry.mObjects) { + if (!object->mBuffers) { + object->mBuffers = std::make_shared(&object.data()); + } + } + + mRenderBuffer.mClearCol = { 0.0f, 0.0f, 0.0f, 0.f }; + + mRenderBuffer.beginDraw(); + mRenderBuffer.clear(); + + mDefaultShader.bind(); + + Mat4F cameraMat = geometry.mCamera.calculateTransformationMatrix(); + + glEnable(GL_DEPTH_TEST); + + for (auto object : geometry.mObjects) { + + static auto origin = (GLint) mDefaultShader.getu("Origin"); + static auto basis = (GLint) mDefaultShader.getu("Basis"); + static auto camera = (GLint) mDefaultShader.getu("Camera"); + + Mat4F basisMat; + Vec4F originPoint; + + glUniform4fv(origin, 1, &originPoint[0]); + glUniformMatrix4fv(basis, 1, false, &basisMat[0][0]); + glUniformMatrix4fv(camera, 1, true, &cameraMat[0][0]); + + object->mBuffers->drawCall(); + } + + mDefaultShader.unbind(); + + mRenderBuffer.endDraw(); +} diff --git a/3DEditor/public/EditorWidget.hpp b/3DEditor/public/EditorWidget.hpp new file mode 100644 index 0000000..cabd207 --- /dev/null +++ b/3DEditor/public/EditorWidget.hpp @@ -0,0 +1,104 @@ +#include "Widgets.hpp" +#include "Render.hpp" + +namespace tp { + + template + class ShortcutsTest : public Widget { + public: + ShortcutsTest() { this->createConfig("ShortcutsTest"); } + + void action(const Events&) { + // + } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + canvas.rect(this->mArea, this->getColor("Base")); + } + + void populateConfig() override { + this->addColor("Base", "Base"); + + this->addOperator("OperatorName", { this, [](void* self, const Events& events) { + ((ShortcutsTest*) self)->action(events); + } }); + + this->getShortcuts("OperatorName").append({ { "Alt", "Hold" }, { "Mouse1", "Hold" } }); + this->getShortcuts("OperatorName").append({ { "Alt", "Hold" }, { "Mouse1", "Hold" } }); + } + }; + + template + class ViewportWidget : public Widget { + public: + explicit ViewportWidget(Canvas* canvas, Scene* geometry, Vec2F renderResolution) : + mRender(renderResolution) { + this->createConfig("ViewportWidget"); + + mImage = canvas->createImageFromTextId(mRender.getRenderBuffer(), mRender.getBufferSize()); + mGeometry = geometry; + mCanvas = canvas; + } + + ~ViewportWidget() { mCanvas->deleteImageHandle(mImage); } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + + mGeometry->mCamera.rotate(0.01f, 0.0); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + mRender.render(*mGeometry, this->mArea.size); + canvas.drawImage(this->mArea, &mImage, PI); + } + + public: + Render mRender; + Scene* mGeometry = nullptr; + Canvas* mCanvas = nullptr; + Canvas::ImageHandle mImage; + }; + + template + class EditorWidget : public Widget { + public: + EditorWidget(Canvas* canvas, Scene* geometry, Vec2F renderResolution) : + mViewport(canvas, geometry, renderResolution) { + this->createConfig("EditorWidget"); + this->addColor("Base", "Base"); + } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + + mSplitView.proc(events, aArea, aArea); + mViewport.proc(events, aArea, mSplitView.getFirst()); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + canvas.rect(this->mArea, this->getColor("Base")); + mSplitView.draw(canvas); + mViewport.draw(canvas); + } + + public: + ViewportWidget mViewport; + SplitView mSplitView; + }; +} \ No newline at end of file diff --git a/3DEditor/public/Render.hpp b/3DEditor/public/Render.hpp new file mode 100644 index 0000000..818ffe8 --- /dev/null +++ b/3DEditor/public/Render.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include "Scene.hpp" +#include "Rect.hpp" + +#include "FrameBuffer.hpp" +#include "Shader.hpp" + +namespace tp { + class Render { + public: + explicit Render(Vec2F renderResolution); + ~Render(); + + void render(const Scene& geometry, Vec2F size); + uint4 getRenderBuffer(); + Vec2F getBufferSize(); + + private: + RenderBuffer mRenderBuffer; + RenderShader mDefaultShader; + }; +} \ No newline at end of file diff --git a/3DEditor/public/Scene.hpp b/3DEditor/public/Scene.hpp new file mode 100644 index 0000000..9b995ba --- /dev/null +++ b/3DEditor/public/Scene.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "Topology.hpp" +#include + +class ObjectBuffers; + +namespace tp { + + class Object { + public: + Object() = default; + + public: + Topology mTopology; + std::shared_ptr mBuffers; + }; + + struct PointLight { + Vec3F pos; + halnf fallOut = 1.f; + halnf intensity = 1.f; + }; + + class Scene { + public: + Scene() = default; + + public: + Buffer mObjects; + Buffer mLights; + Camera mCamera; + }; +} \ No newline at end of file diff --git a/3DEditor/rsc/Font.ttf b/3DEditor/rsc/Font.ttf new file mode 100644 index 0000000..8a63054 Binary files /dev/null and b/3DEditor/rsc/Font.ttf differ diff --git a/3DEditor/rsc/scene.obj b/3DEditor/rsc/scene.obj new file mode 100644 index 0000000..4368e9e --- /dev/null +++ b/3DEditor/rsc/scene.obj @@ -0,0 +1,112 @@ +# Blender v3.0.1 OBJ File: 'scene.blend' +# www.blender.org +mtllib meshes.mtl +o Cube +v -1.039076 1.039076 1.792917 +v -1.039076 1.039076 -1.285234 +v 1.039076 1.039076 1.792917 +v 1.039076 1.039076 -1.285234 +v -1.039076 -1.039076 1.792917 +v -1.039076 -1.039076 -1.285234 +v 1.039076 -1.039076 1.792917 +v 1.039076 -1.039076 -1.285234 +vt 0.625000 0.500000 +vt 0.625000 0.750000 +vt 0.875000 0.750000 +vt 0.875000 0.500000 +vt 0.375000 0.750000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.375000 0.000000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.625000 0.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 0.500000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +usemtl Material +s off +f 1/1/1 3/2/1 7/3/1 5/4/1 +f 4/5/2 8/6/2 7/7/2 3/2/2 +f 8/8/3 6/9/3 5/10/3 7/11/3 +f 6/12/4 8/13/4 4/5/4 2/14/4 +f 6/9/5 2/14/5 1/1/5 5/10/5 +o Cube.001 +v 0.411013 -0.208216 -1.264212 +v 0.411013 -0.208216 -0.612621 +v -0.208216 -0.411013 -1.264212 +v -0.208216 -0.411013 -0.612621 +v 0.208216 0.411013 -1.264212 +v 0.208216 0.411013 -0.612621 +v -0.411013 0.208216 -1.264212 +v -0.411013 0.208216 -0.612621 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vn 0.3112 -0.9503 0.0000 +vn -0.9503 -0.3112 0.0000 +vn -0.3112 0.9503 0.0000 +vn 0.9503 0.3112 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl None +s off +f 9/15/6 10/16/6 12/17/6 11/18/6 +f 11/18/7 12/17/7 16/19/7 15/20/7 +f 15/20/8 16/19/8 14/21/8 13/22/8 +f 13/22/9 14/21/9 10/23/9 9/24/9 +f 11/25/10 15/20/10 13/22/10 9/26/10 +f 16/19/11 12/27/11 10/28/11 14/21/11 +o Cube.002 +v -0.351718 -0.467100 -0.602050 +v -0.351718 -0.467100 0.049542 +v -0.800825 0.004996 -0.602050 +v -0.800825 0.004996 0.049542 +v 0.120377 -0.017993 -0.602050 +v 0.120377 -0.017993 0.049542 +v -0.328730 0.454103 -0.602050 +v -0.328730 0.454103 0.049542 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vn -0.7245 -0.6892 0.0000 +vn -0.6892 0.7245 0.0000 +vn 0.7245 0.6892 0.0000 +vn 0.6892 -0.7245 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl None +s off +f 17/29/12 18/30/12 20/31/12 19/32/12 +f 19/32/13 20/31/13 24/33/13 23/34/13 +f 23/34/14 24/33/14 22/35/14 21/36/14 +f 21/36/15 22/35/15 18/37/15 17/38/15 +f 19/39/16 23/34/16 21/36/16 17/40/16 +f 24/33/17 20/41/17 18/42/17 22/35/17 diff --git a/3DEditor/rsc/shaders/default.frag b/3DEditor/rsc/shaders/default.frag new file mode 100644 index 0000000..e142a37 --- /dev/null +++ b/3DEditor/rsc/shaders/default.frag @@ -0,0 +1,7 @@ +#version 330 core + +out vec4 FragColor; + +void main() { + FragColor = vec4(gl_FragCoord.z, gl_FragCoord.z, gl_FragCoord.z, 1.f); +} \ No newline at end of file diff --git a/3DEditor/rsc/shaders/default.vert b/3DEditor/rsc/shaders/default.vert new file mode 100644 index 0000000..7d1fd94 --- /dev/null +++ b/3DEditor/rsc/shaders/default.vert @@ -0,0 +1,11 @@ +#version 330 core + +layout(location = 0) in vec3 Point; + +uniform vec4 Origin; +uniform mat4 Basis; +uniform mat4 Camera; + +void main() { + gl_Position = Camera * vec4(Point.xyz, 1.0); +} \ No newline at end of file diff --git a/Allocators/README.md b/Allocators/README.md deleted file mode 100644 index 6062b25..0000000 --- a/Allocators/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# Profiling - -## Memory Leaks - -Example program with memory leaks: - -```c++ -#include "allocators.h" - -void test_call22() { new int; } -void test_call21() { new float; } - -void test_call11() { - test_call21(); - test_call22(); -} - -int main(char argc, char* argv[]) { - tp::ModuleManifest* ModuleDependencies[] = { &tp::gModuleAllocators, NULL }; - tp::ModuleManifest TestModule("Test", NULL, NULL, ModuleDependencies); - TestModule.initialize(); - - test_call11(); - - TestModule.deinitialize(); -} - -``` -If memory leaks were detected it will be loged in the output console. - -![image](https://user-images.githubusercontent.com/63184036/222794298-3f238de4-c0b8-41fa-b7ec-c0c675da8f05.png) - -Also debug.memleaks binary will be generated in the working directory that can be viewved with MemLeaks Viewver. - -![image](https://user-images.githubusercontent.com/63184036/222793169-a405effe-72be-42fc-b375-bb06dce0a735.png) - - -## Memory Usage Analisys -Currently outdated - -## Benchmarks -Currently outdated diff --git a/Allocators/private/Allocators.cpp b/Allocators/private/Allocators.cpp deleted file mode 100644 index 18bc13c..0000000 --- a/Allocators/private/Allocators.cpp +++ /dev/null @@ -1,23 +0,0 @@ - -#include "Allocators.hpp" - -#include - -static tp::ModuleManifest* sModuleDependencies[] = { &tp::gModuleBase, nullptr }; -tp::ModuleManifest tp::gModuleAllocators = ModuleManifest("Allocators", nullptr, nullptr, sModuleDependencies); - - -void* operator new(size_t aSize) { return tp::HeapAllocGlobal::allocate(aSize); } -void* operator new[](size_t aSize) { return tp::HeapAllocGlobal::allocate(aSize); } -void operator delete(void* aPtr) noexcept { tp::HeapAllocGlobal::deallocate(aPtr); } -void operator delete[](void* aPtr) noexcept { tp::HeapAllocGlobal::deallocate(aPtr); } - -void* operator new(size_t aSize, tp::HeapAlloc& aAlloc) { return aAlloc.allocate(aSize); } -void* operator new[](size_t aSize, tp::HeapAlloc& aAlloc) { return aAlloc.allocate(aSize); } -void operator delete(void* aPtr, tp::HeapAlloc& aAlloc) { aAlloc.deallocate(aPtr); } -void operator delete[](void* aPtr, tp::HeapAlloc& aAlloc) { aAlloc.deallocate(aPtr); } - -void* operator new(size_t aSize, tp::HeapAllocGlobal& aAlloc) { return tp::HeapAllocGlobal::allocate(aSize); } -void* operator new[](size_t aSize, tp::HeapAllocGlobal& aAlloc) { return tp::HeapAllocGlobal::allocate(aSize); } -void operator delete(void* aPtr, tp::HeapAllocGlobal& aAlloc) { tp::HeapAllocGlobal::deallocate(aPtr); } -void operator delete[](void* aPtr, tp::HeapAllocGlobal& aAlloc) { tp::HeapAllocGlobal::deallocate(aPtr); } \ No newline at end of file diff --git a/Allocators/private/HeapAllocator.cpp b/Allocators/private/HeapAllocator.cpp deleted file mode 100644 index a1994da..0000000 --- a/Allocators/private/HeapAllocator.cpp +++ /dev/null @@ -1,70 +0,0 @@ - - -#include "HeapAllocator.hpp" -#include "HeapAllocatorGlobal.hpp" - -#include "PrivateConfig.hpp" - -using namespace tp; - -#if not defined(MEM_DEBUG) - -// ----------------------- Release Implementation ---------------------------- // -void* HeapAlloc::allocate(ualni aBlockSize) { return malloc(aBlockSize); } -void HeapAlloc::deallocate(void* aPtr) { free(aPtr); } -HeapAlloc::~HeapAlloc() {} - -#else - -namespace tp { - struct MemHeadLocal { - MemHeadLocal* mPrev; - MemHeadLocal* mNext; - }; -} - -void* HeapAlloc::allocate(ualni aBlockSize) { - auto head = (MemHeadLocal*) HeapAllocGlobal::allocate(aBlockSize + sizeof(MemHeadLocal)); - auto out = head + 1; - - mNumAllocations++; - if (mEntry) { - DEBUG_ASSERT(!mEntry->mNext) - head->mNext = nullptr; - head->mPrev = mEntry; - mEntry->mNext = head; - } else { - head->mNext = nullptr; - head->mPrev = nullptr; - } - mEntry = head; - - return out; -} - -void HeapAlloc::deallocate(void* aPtr) { - auto head = ((MemHeadLocal*)(aPtr)) - 1; - - mNumAllocations--; - DEBUG_ASSERT(!mEntry->mNext) - if (head->mNext) head->mNext->mPrev = head->mPrev; - if (head->mPrev) head->mPrev->mNext = head->mNext; - if (head == mEntry) { - mEntry = head->mPrev; - } - - HeapAllocGlobal::deallocate(head); -} - -HeapAlloc::~HeapAlloc() { - if (mNumAllocations) { - DEBUG_BREAK("Destruction of not freed Allocator") - - #ifdef MEM_STACK_TRACE - // TODO : log leaks and free them up - #endif - } -} - -#endif - diff --git a/Allocators/private/HeapAllocatorGlobal.cpp b/Allocators/private/HeapAllocatorGlobal.cpp deleted file mode 100644 index da31e46..0000000 --- a/Allocators/private/HeapAllocatorGlobal.cpp +++ /dev/null @@ -1,150 +0,0 @@ - - -#include "HeapAllocatorGlobal.hpp" -#include "PrivateConfig.hpp" - -#include "Utils.hpp" -#include "Debugging.hpp" - -#include - -using namespace tp; - -#if not defined(MEM_DEBUG) - -// ----------------------- Release Implementation ---------------------------- // - -void* HeapAllocGlobal::allocate(ualni aBlockSize) { return malloc(aBlockSize); } -void HeapAllocGlobal::deallocate(void* aPtr) { free(aPtr); } -HeapAllocGlobal::~HeapAllocGlobal() = default; - -#else - -tp::MemHead* tp::HeapAllocGlobal::mEntry = nullptr; -tp::ualni tp::HeapAllocGlobal::mNumAllocations = 0; - -// ----------------------- Debug Implementation ---------------------------- // -// |----------------| -// | MemHead | -// |----------------| -// | wrap top | -// |----------------| - Allocated Block Layout -// | data | -// |----------------| -// | wrap bottom | -// |----------------| - -namespace tp { - struct MemHead { - MemHead* mPrev; - MemHead* mNext; - ualni mBlockSize; - #ifdef MEM_STACK_TRACE - const CallStackCapture::CallStack* mCallStack; - #endif - }; -} - -enum : ualni { - ALIGNED_SIZE = ENV_ALNI_SIZE_B, - WRAP_SIZE = MEM_WRAP_SIZE * ALIGNED_SIZE, - WRAP_VAL = MEM_WRAP_FILL_VAL, - HEAD_SIZE = sizeof(MemHead), - CLEAR_ALLOC_VAL = MEM_CLEAR_ON_ALLOC_VAL, - CLEAR_DEALLOC_VAL = MEM_CLEAR_ON_DEALLOC_VAL, -}; - -void* HeapAllocGlobal::allocate(ualni aBlockSize) { - - static_assert(HEAD_SIZE % ALIGNED_SIZE == 0, "Heap Allocator Configuration Error"); - - if (aBlockSize % ALIGNED_SIZE) { - aBlockSize = (aBlockSize / ALIGNED_SIZE + 1) * ALIGNED_SIZE; - } - - // 1) Allocate the block - auto head = (MemHead*)malloc(aBlockSize + WRAP_SIZE * 2 + HEAD_SIZE); - auto wrap_top = (int1*)(head + 1); - auto data = wrap_top + WRAP_SIZE; - auto wrap_bottom = data + aBlockSize; - - if (!head) { return nullptr; } - head->mBlockSize = aBlockSize; - - // 2) Link with existing blocks - mNumAllocations++; - if (mEntry) { - DEBUG_ASSERT(!mEntry->mNext) - head->mNext = nullptr; - head->mPrev = mEntry; - mEntry->mNext = head; - } else { - head->mNext = nullptr; - head->mPrev = nullptr; - } - mEntry = head; - - // 3) Wrap fill - memSetVal(wrap_top, WRAP_SIZE, WRAP_VAL); - memSetVal(wrap_bottom, WRAP_SIZE, WRAP_VAL); - - // 4) Trace the stack - #ifdef MEM_STACK_TRACE - head->mCallStack = gCSCapture->getSnapshot(); - #endif - - // 5) clear data -#ifdef MEM_CLEAR_ON_ALLOC - memSetVal(data, aBlockSize, CLEAR_ALLOC_VAL); -#endif - - return data; -} - -void HeapAllocGlobal::deallocate(void* aPtr) { - // 1) Restore the pointers - auto head = ((MemHead*)((int1*)aPtr - WRAP_SIZE)) - 1; - auto wrap_top = (int1*)(head + 1); - auto data = wrap_top + WRAP_SIZE; - auto wrap_bottom = data + head->mBlockSize; - - // 2) Unlink with blocks - mNumAllocations--; - DEBUG_ASSERT(!mEntry->mNext) - if (head->mNext) head->mNext->mPrev = head->mPrev; - if (head->mPrev) head->mPrev->mNext = head->mNext; - if (head == mEntry) { - mEntry = head->mPrev; - } - - // 3) Check the wrap - ASSERT(!memCompareVal(wrap_top, WRAP_SIZE, WRAP_VAL) && "Allocated Block Wrap Corrupted!") - ASSERT(!memCompareVal(wrap_bottom, WRAP_SIZE, WRAP_VAL) && "Allocated Block Wrap Corrupted!") - - // 4) clear data -#ifdef MEM_CLEAR_ON_ALLOC - memSetVal(data, head->mBlockSize, CLEAR_DEALLOC_VAL); -#endif - - // 5) free the block - free(head); -} - -bool HeapAllocGlobal::checkLeaks() { - // 1) Check for not deallocated memory - if (mNumAllocations) { - - #ifdef MEM_STACK_TRACE - gCSCapture->logLeaks(); - #endif - - DEBUG_BREAK("Destruction of not freed Allocator") - return true; - } - return false; -} - -HeapAllocGlobal::~HeapAllocGlobal() = default; - -#endif - diff --git a/Allocators/public/Allocators.hpp b/Allocators/public/Allocators.hpp deleted file mode 100644 index da01ede..0000000 --- a/Allocators/public/Allocators.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include "Module.hpp" - -#include "HeapAllocatorGlobal.hpp" -#include "HeapAllocator.hpp" -#include "ChunkAllocator.hpp" -#include "PoolAllocator.hpp" - -namespace tp { - extern ModuleManifest gModuleAllocators; -} - -inline void* operator new(std::size_t aSize, void* aWhere) noexcept { return aWhere; } - -void* operator new(std::size_t aSize); -void* operator new[](std::size_t aSize); -void operator delete(void* aPtr) noexcept; -void operator delete[](void* aPtr) noexcept; - -void* operator new(std::size_t aSize, tp::HeapAlloc& aAlloc); -void* operator new[](std::size_t aSize, tp::HeapAlloc& aAlloc); -void operator delete(void* aPtr, tp::HeapAlloc& aAlloc); -void operator delete[](void* aPtr, tp::HeapAlloc& aAlloc); - -void* operator new(std::size_t aSize, tp::HeapAllocGlobal& aAlloc); -void* operator new[](std::size_t aSize, tp::HeapAllocGlobal& aAlloc); -void operator delete(void* aPtr, tp::HeapAllocGlobal& aAlloc); -void operator delete[](void* aPtr, tp::HeapAllocGlobal& aAlloc); \ No newline at end of file diff --git a/Allocators/public/ChunkAllocator.hpp b/Allocators/public/ChunkAllocator.hpp deleted file mode 100644 index 99247fa..0000000 --- a/Allocators/public/ChunkAllocator.hpp +++ /dev/null @@ -1,135 +0,0 @@ -#pragma once - -/* -* Implementation uses embedded one-directional linked list to track free blocks. -* The embedded part ensures that there is no memory overhead on block specifically. -* Linked list is initialized iteratively on each allocation if it has not been already. - -* Allocating: -* 1) updating list entry to stored in the entry itself next free pointer -* 2) returning entry before (1). -* -* Deallocating: -* 1) assigning list entry value to the deleted block -* 2) updating list entry to that block. -*/ - -#include "Environment.hpp" -#include "PrivateConfig.hpp" - -namespace tp { - - // Chunk Allocator - // Constant time allocations and de-allocations in any order. - // Memory blocks are fixed in size and number of blocks can not exceed given parameter. - template - class ChunkAlloc { - - enum : ualni { - ALIGNED_SIZE = ENV_ALNI_SIZE_B, - - WRAP_SIZE_ALN = MEM_WRAP_SIZE / 2, - WRAP_SIZE = WRAP_SIZE_ALN * ALIGNED_SIZE, - - WRAP_VAL = MEM_WRAP_FILL_VAL, - CLEAR_ALLOC_VAL = MEM_CLEAR_ON_ALLOC_VAL, - CLEAR_DEALLOC_VAL = MEM_CLEAR_ON_DEALLOC_VAL, - }; - - static constexpr ualni dataSize() { - auto BLOCK_SIZE_BYTES = sizeof(tType); - auto BLOCK_SIZE_ALIGNED = BLOCK_SIZE_BYTES / ALIGNED_SIZE; - return BLOCK_SIZE_ALIGNED; - } - - static constexpr ualni blockSize() { - auto BLOCK_SIZE_BYTES = sizeof(tType); - auto BLOCK_SIZE = dataSize() + bool(BLOCK_SIZE_BYTES % ALIGNED_SIZE) + WRAP_SIZE_ALN * 2; - return BLOCK_SIZE; - } - - private: - ualni* mNextBlock; - ualni mNumFreeBlocks; - ualni mNumInitBlocks; - ualni mBuff[tNumBlocks * blockSize() * ALIGNED_SIZE]; - - public: - ChunkAlloc() { - mNumFreeBlocks = tNumBlocks; - mNumInitBlocks = 0; - mNextBlock = mBuff; - } - - ~ChunkAlloc() = default; // TODO : check for leaks - - public: - void* allocate(ualni) { - DEBUG_ASSERT(mNumFreeBlocks && "Out Of Memory") - - // 1) PreInitialize blocks - if (mNumInitBlocks < tNumBlocks) { - mBuff[mNumInitBlocks * blockSize()] = (ualni) (mBuff + (mNumInitBlocks + 1) * blockSize()); - mNumInitBlocks++; - } - - // 2) Find free block and update next free block - auto data = mNextBlock; - mNextBlock = (ualni*)(*data); - mNumFreeBlocks--; - - #ifdef MEM_DEBUG - // 3) Fill Wrap and offset data - auto wrap_top = data; - auto wrap_bottom = data + WRAP_SIZE_ALN + dataSize(); - - memSetVal(wrap_top, WRAP_SIZE, WRAP_VAL); - memSetVal(wrap_bottom, WRAP_SIZE, WRAP_VAL); - - // 4) Clear data - #ifdef MEM_CLEAR_ON_ALLOC - memSetVal(data + WRAP_SIZE_ALN, dataSize() * ALIGNED_SIZE, CLEAR_ALLOC_VAL); - #endif - - data += WRAP_SIZE_ALN; - #endif - - return data; - } - - void deallocate(void* aPtr) { - DEBUG_ASSERT(aPtr >= mBuff && aPtr < mBuff + tNumBlocks * blockSize()) - - auto block = (ualni*)aPtr; - - #ifdef MEM_DEBUG - // 3) Check Wrap and offset data - auto wrap_bottom = block + dataSize(); - auto wrap_top = block - WRAP_SIZE_ALN; - block = wrap_top; - - // 3) Check the wrap - ASSERT(!memCompareVal(wrap_top, WRAP_SIZE, WRAP_VAL) && "Allocated Block Wrap Corrupted!") - ASSERT(!memCompareVal(wrap_bottom, WRAP_SIZE, WRAP_VAL) && "Allocated Block Wrap Corrupted!") - - // 4) Clear data - #ifdef MEM_CLEAR_ON_ALLOC - memSetVal(block, blockSize() * ALIGNED_SIZE, CLEAR_DEALLOC_VAL); - #endif - - #endif - - (*block) = (ualni)mNextBlock; - mNextBlock = block; - mNumFreeBlocks++; - } - - [[nodiscard]] bool checkWrap() const { return false; } - void checkValid() {} - - public: - [[nodiscard]] bool isFull() const { return !mNumFreeBlocks; } - [[nodiscard]] bool isEmpty() const { return mNumFreeBlocks == tNumBlocks; } - [[nodiscard]] const ualni* getBuff() const { return mBuff; } - }; -} \ No newline at end of file diff --git a/Allocators/public/HeapAllocator.hpp b/Allocators/public/HeapAllocator.hpp deleted file mode 100644 index 59aedba..0000000 --- a/Allocators/public/HeapAllocator.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "Environment.hpp" - -namespace tp { - - class HeapAlloc { - -#ifdef MEM_DEBUG - ualni mNumAllocations = 0; - struct MemHeadLocal* mEntry = nullptr; -#endif - - public: - HeapAlloc() = default; - ~HeapAlloc(); - - public: - void* allocate(ualni aBlockSize); - void deallocate(void* aPtr); - - public: - [[nodiscard]] bool checkWrap() const { return false; } - void checkValid() {} - }; -} diff --git a/Allocators/public/HeapAllocatorGlobal.hpp b/Allocators/public/HeapAllocatorGlobal.hpp deleted file mode 100644 index 18cae0e..0000000 --- a/Allocators/public/HeapAllocatorGlobal.hpp +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "Module.hpp" - -namespace tp { - - class HeapAllocGlobal { - -#ifdef MEM_DEBUG - static ualni mNumAllocations; - static struct MemHead* mEntry; -#endif - - public: - HeapAllocGlobal() = default; - ~HeapAllocGlobal(); - - public: - static void* allocate(ualni aBlockSize); - static void deallocate(void* aPtr); - - static bool checkLeaks(); - public: - [[nodiscard]] bool checkWrap() const { return false; } - void checkValid() {} - }; -} diff --git a/Allocators/public/PoolAllocator.hpp b/Allocators/public/PoolAllocator.hpp deleted file mode 100644 index 98f1596..0000000 --- a/Allocators/public/PoolAllocator.hpp +++ /dev/null @@ -1,162 +0,0 @@ -#pragma once - -/* -Implementation: -* Adding chunk pointer to each chunk to form one-directional list that keeps track of free chunk -* Storing ordered pointers to chunks in order to find desired chunk from delete pointer on de-allocation in log time -* -* Allocations: -* 1) allocate with chunk stored in list entry -* 2) ... -* -* De-allocations: -* 1) binary-search with delete pointer to find desired chunk -* 2) ... -* -*/ - -#include "ChunkAllocator.hpp" - -namespace tp { - - // Pool Allocator - // Overcomes chunk allocator fixed number of max allocations - template - class PoolAlloc { - - typedef ChunkAlloc Chunk; - - struct Chunks { - - void add(Chunk* aChunk){ - - if (!mBuff) { - mLen = 16; - mBuff = (Chunk**) HeapAllocGlobal::allocate(sizeof(Chunk*) * mLen); - mUsedLen = 1; - mBuff[0] = aChunk; - return; - } - - // ensure order - auto smaller_address = findUtil(mBuff, mBuff + mUsedLen, aChunk); - for (auto iter = mBuff + mUsedLen; iter != smaller_address; iter--) { - *iter = *(iter - 1); - } - - *(smaller_address) = aChunk; - mUsedLen++; - - // check for buff overflow - if (mUsedLen == mLen) { - auto prevBuff = mBuff; - mBuff = (Chunk**) HeapAllocGlobal::allocate(sizeof(Chunk*) * mLen * 2); - memCopy(mBuff, prevBuff, sizeof(Chunk*) * mUsedLen); - mLen *= 2; - HeapAllocGlobal::deallocate(prevBuff); - } - } - - void remove(Chunk** del_address){ - if (mUsedLen == 1) { - mLen = 0; - mUsedLen = 0; - HeapAllocGlobal::deallocate(mBuff); - mBuff = nullptr; - return; - } - - // ensure order - for (auto iter = del_address; iter != mBuff + mUsedLen - 1; iter++) { - *iter = *(iter + 1); - } - - mUsedLen--; - - // check for buff low usage - if ((halnf)mUsedLen / (halnf)mLen < 0.25f) { - auto prevBuff = mBuff; - mBuff = (Chunk**)HeapAllocGlobal::allocate(sizeof(Chunk*) * mLen / 2); - memCopy(mBuff, prevBuff, sizeof(Chunk*) * mUsedLen); - mLen /= 2; - HeapAllocGlobal::deallocate(prevBuff); - } - } - - [[nodiscard]] Chunk** find(void* aPtr) { - return findUtil(mBuff, mBuff + mUsedLen, aPtr) - 1; - } - - [[nodiscard]] Chunk* findNotFull() const { - for (ualni idx = 0; idx < mUsedLen; idx++) { - if (!mBuff[idx]->isFull()) { - return mBuff[idx]; - } - } - return nullptr; - } - - Chunk** mBuff = nullptr; - ualni mUsedLen = 0; - ualni mLen = 0; - - private: - Chunk** findUtil(Chunk** aLeft, Chunk** aRight, void* aPtr) { - auto range = ualni(aRight - aLeft); - if (range == 1) { - return (aPtr < *aLeft) ? aLeft : aRight; - } - auto middle = aLeft + range / 2; - return (aPtr >= (*middle)) ? findUtil(middle, aRight, aPtr) : findUtil(aLeft, middle, aPtr); - } - }; - - private: - Chunks mChunks; - Chunk* mFreeChunk = nullptr; - - public: - PoolAlloc() = default; - ~PoolAlloc() = default; - - public: - void* allocate(ualni) { - if (!mFreeChunk || mFreeChunk->isFull()) { - auto new_free_chunk = mChunks.findNotFull(); - if (!new_free_chunk) { - new_free_chunk = new (HeapAllocGlobal::allocate(sizeof(Chunk))) Chunk(); - DEBUG_ASSERT(new_free_chunk) - mChunks.add(new_free_chunk); - } - mFreeChunk = new_free_chunk; - } - return mFreeChunk->allocate(0); - } - - void deallocate(void* aPtr) { - auto chunk = mChunks.find(aPtr); - (*chunk)->deallocate(aPtr); - if ((*chunk)->isEmpty()) { - if (mFreeChunk == *chunk) mFreeChunk = nullptr; - HeapAllocGlobal::deallocate(*chunk); - mChunks.remove(chunk); - } - } - - public: - [[nodiscard]] bool checkWrap() const { return false; } - - void checkValid() { - return; - for (auto i = 0; i < mChunks.mUsedLen; i++) { - for (auto j = 0; j < mChunks.mUsedLen; j++) { - if (i > j) { - ASSERT(mChunks.mBuff[i] > mChunks.mBuff[j]) - } else if (i < j) { - ASSERT(mChunks.mBuff[i] < mChunks.mBuff[j]) - } - } - } - } - }; -} diff --git a/Allocators/public/PrivateConfig.hpp b/Allocators/public/PrivateConfig.hpp deleted file mode 100644 index beacb7e..0000000 --- a/Allocators/public/PrivateConfig.hpp +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#define MEM_WRAP_SIZE 8 // Wrapping Size in aligned units -#define MEM_WRAP_FILL_VAL 0xBB // Wrapping Fill Value -#define MEM_CLEAR_ON_ALLOC // Clear data on allocation -#define MEM_CLEAR_ON_DEALLOC // Clear data on free -#define MEM_CLEAR_ON_DEALLOC_VAL 0xAA // Clear data on free -#define MEM_CLEAR_ON_ALLOC_VAL 0xCC // Clear data on free -#define MEM_STACK_TRACE // Save stack on allocation call -#define MEM_STACK_TRACE_MAX_DEPTH 32 // Call stack max depth \ No newline at end of file diff --git a/Allocators/tests/Tests.cpp b/Allocators/tests/Tests.cpp deleted file mode 100644 index 760d6c5..0000000 --- a/Allocators/tests/Tests.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "Allocators.hpp" - -#include "Tests.hpp" - -using namespace tp; - -int main() { - - tp::ModuleManifest* deps[] = { &tp::gModuleAllocators, &tp::gModuleUtils, nullptr }; - tp::ModuleManifest testModule("AllocatorsTest", nullptr, nullptr, deps); - - if (!testModule.initialize()) { - return 1; - } - - testAll(); - - testModule.deinitialize(); -} diff --git a/Allocators/tests/Tests.hpp b/Allocators/tests/Tests.hpp deleted file mode 100644 index 8345a9d..0000000 --- a/Allocators/tests/Tests.hpp +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include "Utils.hpp" -#include "Testing.hpp" - -void testAll(); \ No newline at end of file diff --git a/Allocators/tests/TestsAll.cpp b/Allocators/tests/TestsAll.cpp deleted file mode 100644 index cb90f78..0000000 --- a/Allocators/tests/TestsAll.cpp +++ /dev/null @@ -1,248 +0,0 @@ - -#include "Utils.hpp" -#include "Testing.hpp" - -#include "HeapAllocatorGlobal.hpp" -#include "HeapAllocator.hpp" -#include "ChunkAllocator.hpp" -#include "PoolAllocator.hpp" - -#include - -using namespace tp; - -struct TestStruct { - alni val = 0; - - TestStruct() : val(0) {} - explicit TestStruct(alni val) : val(val) {} - TestStruct(const TestStruct& in) : val(in.val) {} - - ~TestStruct() { val = -1; } - - bool operator==(const TestStruct& in) const { - return in.val == val; - } -}; - -template -class TestBenches { - - tAllocator mAlloc{}; - TestStruct mData[tSize]{}; - TestStruct* mLoaded[tSize]{}; - bool mIsLoaded[tSize]{}; - alni mLoadedNum = 0; - -public: - TestBenches() { - for (alni i = 0; i < tSize; i++) { - mData[i].val = i; - mIsLoaded[i] = false; - mLoaded[i] = nullptr; - } - } - - void runTests() { - try { - test1(); - test2(); - test3(); - test4(); - test5(); - test6(); - } catch (...) { - ASSERT(false) - } - } - -private: - alni randomIdx(bool state, Range range = { 0, tSize }) { - RAND: - auto idx = alni(alnf(range.idxBegin()) + randomFloat() * alnf(range.idxDiff() + 1)); - idx = clamp(idx, alni(0), tSize - 1); - if (state == mIsLoaded[idx]) goto RAND; - return idx; - } - - void verifyIntegrity() { - mAlloc.checkValid(); - ASSERT(!mAlloc.checkWrap()) - for (alni i = 0; i < tSize; i++) { - if (mIsLoaded[i]) { - ASSERT(*mLoaded[i] == mData[i]) - } - } - } - - void loadItem(alni idx) { - if (mIsLoaded[idx]) return; - verifyIntegrity(); - mLoaded[idx] = new (mAlloc.allocate(sizeof(TestStruct))) TestStruct(mData[idx]); - TEST(mLoaded[idx]); - mIsLoaded[idx] = true; - mLoadedNum++; - verifyIntegrity(); - } - - void unloadItem(alni idx) { - if (!mIsLoaded[idx]) return; - verifyIntegrity(); - mLoaded[idx]->~TestStruct(); - mAlloc.deallocate(mLoaded[idx]); - mIsLoaded[idx] = false; - mLoadedNum--; - verifyIntegrity(); - } - - void changeStates(Range rg, bool load, bool reversed = false, bool random = false) { - for (auto i : rg) { - alni idx = i; - if (random) { - idx = randomIdx(load, rg); - } else if (reversed) { - idx = rg.idxEnd() - i - 1; - } - (load) ? loadItem(idx) : unloadItem(idx); - } - } - - // full down-up load then up-down unload - void test1() { - changeStates({ 0, tSize }, true); - changeStates({ 0, tSize }, false, true); - } - - // full down-up load then down-up unload - void test2() { - changeStates({0, tSize}, true); - changeStates({0, tSize}, false); - } - - // full random load then random unload - void test3() { - changeStates({0, tSize}, true, false, true); - changeStates({0, tSize}, false, false, true); - } - - // combo tests 1-3 - void test4() { - test1(); - test1(); - - test2(); - test2(); - - test3(); - test3(); - } - - static alnf sineUpFunction(alnf aSize, alnf aX, bool aReverse) { - alnf end = 4 * 3.14159; - alnf a = (2 / 7.f) * aSize; - alnf b = end / aSize; - - alni c = ((-1 * aReverse) + (1 * !aReverse)); - alnf c1 = (aX - (end * aReverse)) / b; - alnf c2 = (a * sin(aX - (end * aReverse))); - alnf out = c1 + c2; - return (alnf) c * out; - } - - // sin load & sin unload with ~1/2 drop factor - void test5() { - alnf end = 4 * 3.14159; - alnf step = end / 4.f; - - for (char i = 0; i < 2; i++) { - for (alnf x = 0; x <= end; x += step) { - - alni target_alloc_count = (alni) ceil(sineUpFunction(tSize, x, i)); - target_alloc_count = clamp(target_alloc_count, alni(0), tSize); - - while (mLoadedNum > target_alloc_count) { - unloadItem(randomIdx(0)); - } - while (mLoadedNum < target_alloc_count) { - loadItem(randomIdx(1)); - } - } - } - } - - void checkWrap(ualni offset, bool after) { - offset = clamp(offset, (ualni) 1, (ualni) MEM_WRAP_SIZE); - - TestStruct* ts = mLoaded[randomIdx(0)]; - ualni shift = (sizeof(TestStruct) * after) + (offset - 1) * after - offset * (!after); - uint1* address = (((uint1*)ts) + shift); - - uint1 val = *address; - *address = 5; - - TEST(!mAlloc.checkWrap()); - - *address = val; - } - - // mem guards test - void test6() { - changeStates({0, tSize}, 1); - #ifdef MEM_DEBUG - for (alni after = 0; after < 2; after++) { - for (alni offset = 1; offset <= MEM_WRAP_SIZE; offset++) { - checkWrap(offset, after); - } - } - #endif - changeStates({0, tSize}, 0); - } -}; - -const ualni size = 1000; - -template -void testAlloc() { - try { - TestBenches heapTests{}; - heapTests.runTests(); - } catch (...) { - TEST(false); - } -} - -TEST_DEF_STATIC(GlobalHeap) { - testAlloc(); -} - -TEST_DEF_STATIC(Heap) { - testAlloc(); -} - -TEST_DEF_STATIC(Chunk) { - testAlloc>(); - testAlloc>(); -} - -TEST_DEF_STATIC(Pool) { - testAlloc>(); - testAlloc>(); - testAlloc>(); -} - -TEST_DEF_STATIC(Simple) { - auto a = new TestStruct(-1); - delete a; -} - -TEST_DEF(All) { - testSimple(); - - testGlobalHeap(); - testHeap(); - testChunk(); - testPool(); - - // TEST(HeapAllocGlobal::checkLeaks()); - // TEST(false); -} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index d23e6cf..c211e67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,27 @@ -cmake_minimum_required(VERSION 3.2) -set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/install) +cmake_minimum_required(VERSION 3.5) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -gdwarf-4") +set(CMAKE_CXX_STANDARD 20) -enable_testing() +# set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/./tmp/install) +# set(CMAKE_CXX_FLAGS "-fuse-ld=lld-15 ${CMAKE_CXX_FLAGS} -gdwarf-4 ") -project(Types) +project(ModulesRoot) -add_compile_definitions(MEM_DEBUG) +include(CMakeOptions.txt) add_subdirectory(Modules) -add_subdirectory(Utils) add_subdirectory(Containers) add_subdirectory(Math) -add_subdirectory(Allocators) \ No newline at end of file +# add_subdirectory(Language) +add_subdirectory(Externals) +add_subdirectory(Connection) +add_subdirectory(Graphics) +add_subdirectory(RayTracer) +add_subdirectory(DataAnalysis) +add_subdirectory(Objects) +add_subdirectory(Widgets) +add_subdirectory(LibraryViewer) +add_subdirectory(RasterRender) +add_subdirectory(Sketch3D) +add_subdirectory(3DEditor) diff --git a/CMakeOptions.txt b/CMakeOptions.txt new file mode 100644 index 0000000..2a080ad --- /dev/null +++ b/CMakeOptions.txt @@ -0,0 +1,14 @@ +option(MODULES_MEMORY_DEBUG "Debug memory" OFF) +option(MODULES_MEMORY_DEBUG_STACK_TRACE "Record stack info on memory debug" OFF) + +set(WINDOWS_LIBRARIES "../../ModulesWindowsLibraries" CACHE STRING "Svn repository with windows libraries https://svn.riouxsvn.com/moduleswindowsl") + +if (MODULES_MEMORY_DEBUG) + add_compile_definitions(MEM_DEBUG) +endif () + +if (MODULES_MEMORY_DEBUG_STACK_TRACE) + add_compile_definitions(MEM_STACK_TRACE) +endif () + +enable_testing() \ No newline at end of file diff --git a/CMakeSettings.json b/CMakeSettings.json new file mode 100644 index 0000000..03cbf8d --- /dev/null +++ b/CMakeSettings.json @@ -0,0 +1,15 @@ +{ + "configurations": [ + { + "name": "x64-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ "msvc_x64_x64" ], + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "" + } + ] +} \ No newline at end of file diff --git a/Connection/CMakeLists.txt b/Connection/CMakeLists.txt new file mode 100644 index 0000000..a4487b7 --- /dev/null +++ b/Connection/CMakeLists.txt @@ -0,0 +1,18 @@ +project(Connection) + +set(BINDINGS_INCLUDE ./../Externals/asio/asio/include) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_include_directories(${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE}) +target_link_libraries(${PROJECT_NAME} PUBLIC Modules) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(Test${PROJECT_NAME} ${TEST_SOURCES}) +target_link_libraries(Test${PROJECT_NAME} ${PROJECT_NAME} UnitTest++) +add_test(NAME Test${PROJECT_NAME} COMMAND Test${PROJECT_NAME}) \ No newline at end of file diff --git a/Connection/private/LocalConnection.cpp b/Connection/private/LocalConnection.cpp new file mode 100644 index 0000000..efe7648 --- /dev/null +++ b/Connection/private/LocalConnection.cpp @@ -0,0 +1,84 @@ +#include "LocalConnection.hpp" + +#include "bindings/Disk.hpp" + +#include + +using namespace tp; + +bool LocalConnection::Location::exists() const { + // TODO : fixme + FILE* file = fopen(mLocation.c_str(), "r"); + if (file) { + // File exists, close it and return 1 + fclose(file); + return true; + } + return false; +} + +bool LocalConnection::connect(const Location& location, const Type& connectionInfo) { + DEBUG_ASSERT(!mStatus.isOpened()); + if (mStatus.isOpened()) return false; + + auto handle = new LocalConnectionContext(); + + switch (connectionInfo.getType()) { + case Type::READ: handle->open(location.getLocation().c_str(), true); break; + case Type::WRITE: handle->open(location.getLocation().c_str(), false); break; + default: break; + }; + + if (!handle->isOpen()) { + mStatus.setStatus(Status::DENIED); + delete handle; + return false; + } + + mStatus.setStatus(Status::OPENED); + mHandle = handle; + mConnectionType = connectionInfo; + return true; +} + +bool LocalConnection::disconnect() { + DEBUG_ASSERT(mStatus.isOpened()); + if (!mStatus.isOpened() || !mHandle) return false; + mHandle->close(); + delete mHandle; + mStatus.setStatus(Status::CLOSED); + return true; +} + +bool LocalConnection::setPointer(BytePointer pointer) { + DEBUG_ASSERT(mStatus.isOpened()); + if (!mStatus.isOpened()) return false; + mPointer = pointer; + return true; +} + +bool LocalConnection::readBytes(Byte* bytes, SizeBytes size) { + DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isRead()); + if (!mStatus.isOpened() || !mConnectionType.isRead()) return false; + + mHandle->seekp(mPointer); + mHandle->read(bytes, size); + mPointer += size; + return true; +} + +bool LocalConnection::writeBytes(const Byte* bytes, SizeBytes size) { + DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isWrite()); + if (!mStatus.isOpened() || !mConnectionType.isWrite()) return false; + + mHandle->seekp(mPointer); + mHandle->write(bytes, size); + mPointer += size; + return true; +} + +LocalConnection::SizeBytes LocalConnection::size() { + DEBUG_ASSERT(mStatus.isOpened()); + if (!mStatus.isOpened() || !mHandle) return 0; + return mHandle->size(); +} diff --git a/Connection/private/RemoteConnection.cpp b/Connection/private/RemoteConnection.cpp new file mode 100644 index 0000000..9495b4f --- /dev/null +++ b/Connection/private/RemoteConnection.cpp @@ -0,0 +1,2 @@ + +#include "RemoteConnection.hpp" diff --git a/Connection/private/bindings/Disk.cpp b/Connection/private/bindings/Disk.cpp new file mode 100644 index 0000000..97d8cc9 --- /dev/null +++ b/Connection/private/bindings/Disk.cpp @@ -0,0 +1,53 @@ +#include "Disk.hpp" + +#include + +using namespace tp; + +ualni tp::LocalConnectionContext::size() { + auto strm = (std::fstream*) stream; + ualni out = 0; + strm->seekg(0, std::ios::beg); + out = strm->tellg(); + strm->seekg(0, std::ios::end); + out = (ualni) strm->tellg() - out; + return out; +} + +LocalConnectionContext::LocalConnectionContext() { stream = new std::fstream(); } + +LocalConnectionContext::~LocalConnectionContext() { + auto strm = (std::fstream*) stream; + delete strm; +} + +bool LocalConnectionContext::isOpen() { + auto strm = (std::fstream*) stream; + return strm->is_open(); +} + +void LocalConnectionContext::close() { + auto strm = (std::fstream*) stream; + strm->close(); +} + +void LocalConnectionContext::seekp(ualni in) { + auto strm = (std::fstream*) stream; + strm->seekp(in); +} + +void LocalConnectionContext::read(int1* in, ualni size) { + auto strm = (std::fstream*) stream; + strm->read(in, size); +} + +void LocalConnectionContext::write(const int1* in, ualni size) { + auto strm = (std::fstream*) stream; + strm->write(in, size); +} + +void LocalConnectionContext::open(const char* path, bool read) { + auto strm = (std::fstream*) stream; + if (read) strm->open(path, std::ios::in | std::ios::binary | std::ios::app); + else strm->open(path, std::ios::out | std::ios::binary | std::ios::trunc); +} diff --git a/Connection/private/bindings/Disk.hpp b/Connection/private/bindings/Disk.hpp new file mode 100644 index 0000000..ad53c43 --- /dev/null +++ b/Connection/private/bindings/Disk.hpp @@ -0,0 +1,18 @@ +#include "Common.hpp" + +namespace tp { + class LocalConnectionContext { + void* stream; + + public: + LocalConnectionContext(); + ~LocalConnectionContext(); + void open(const char*, bool); + bool isOpen(); + void close(); + void seekp(ualni); + void read(int1*, ualni); + void write(const int1*, ualni); + ualni size(); + }; +} \ No newline at end of file diff --git a/Connection/private/bindings/Network.cpp b/Connection/private/bindings/Network.cpp new file mode 100644 index 0000000..1d5a33f --- /dev/null +++ b/Connection/private/bindings/Network.cpp @@ -0,0 +1,116 @@ +#include "Network.hpp" + +#include "asio.hpp" + +#include + +using namespace tp; + +class tp::ServerContext { + friend class Server; + + asio::io_context context; + asio::ip::tcp::acceptor socket; + typedef asio::ip::tcp::socket Socket; + + ServerContext() : + socket(context) {} + + ~ServerContext() { + context.stop(); + socket.close(); + } +}; + +class tp::ClientContext { + friend Client; + + asio::io_context context; + asio::ip::tcp::socket socket; + +public: + ClientContext() : + socket(context) {} + + ~ClientContext() { + context.stop(); + socket.close(); + } +}; + +// --------------------------------------------------------------------------------------- // + +Server::Server() { mContext = new ServerContext(); } + +Server::~Server() { delete mContext; } + +void Server::start(ualni port) { + mContext->socket.open(asio::ip::tcp::v4()); + mContext->socket.bind(asio::ip::tcp::endpoint(asio::ip::tcp::v4(), port)); + mContext->socket.listen(); + std::cout << "Server listening on port " << port << std::endl; +} + +Server::Socket Server::accept() { + auto clientSocket = new asio::ip::tcp::socket(mContext->context); + mContext->socket.accept(*clientSocket); + std::cout << "New client accepted " << std::endl; + return clientSocket; +} + +bool Server::read(Socket client, int1* message, halni messageSize) { + try { + std::size_t bytesRead = asio::read(*(ServerContext::Socket*) client, asio::buffer(message, messageSize)); + return bytesRead == messageSize; + } catch (const std::exception& e) { + std::cerr << "Error during read: " << e.what() << "\n"; + return false; + } +} + +bool Server::write(Socket client, const int1* message, halni messageSize) { + try { + std::size_t bytesWritten = asio::write(*(ServerContext::Socket*) client, asio::buffer(message, messageSize)); + return bytesWritten == messageSize; + } catch (const std::exception& e) { + std::cerr << "Error during write: " << e.what() << "\n"; + return false; + } +} + +// --------------------------------------------------------------------------------------- // + +Client::Client() { mContext = new ClientContext(); } + +Client::~Client() { delete mContext; } + +bool Client::connect(const char* IP, ualni PORT) { + try { + asio::ip::tcp::endpoint endpoint(asio::ip::address::from_string(IP), PORT); + mContext->socket.connect(endpoint); + return true; + } catch (const std::exception& e) { + std::cerr << "Error during read: " << e.what() << "\n"; + return false; + } +} + +bool Client::read(int1* buff, halni size) { + try { + std::size_t bytesRead = asio::read(mContext->socket, asio::buffer(buff, size)); + return bytesRead == size; + } catch (const std::exception& e) { + std::cerr << "Error during read: " << e.what() << "\n"; + return false; + } +} + +bool Client::write(const int1* message, halni messageSize) { + try { + std::size_t bytesWritten = asio::write(mContext->socket, asio::buffer(message, messageSize)); + return bytesWritten == messageSize; + } catch (const std::exception& e) { + std::cerr << "Error during write: " << e.what() << "\n"; + return false; + } +} diff --git a/Connection/public/ConnectionCommon.hpp b/Connection/public/ConnectionCommon.hpp new file mode 100644 index 0000000..5014f4a --- /dev/null +++ b/Connection/public/ConnectionCommon.hpp @@ -0,0 +1,66 @@ +#pragma once + +#include "Module.hpp" +#include + +namespace tp { + class Connection { + public: + typedef ualni SizeBytes; + typedef ualni BytePointer; + typedef int1 Byte; + + class Status { + public: + enum State { + NONE, + OPENED, + CLOSED, + DENIED, + INVALID, + }; + + private: + State mStatus = NONE; + + public: + Status() = default; + [[nodiscard]] State getStatus() const { return mStatus; } + void setStatus(State status) { mStatus = status; } + [[nodiscard]] bool isOpened() const { return mStatus == OPENED; } + }; + + class Type { + public: + enum State { + WRITE, + READ, + READ_WRITE, + NONE, + }; + + private: + State mHandleType = NONE; + + public: + Type() = default; + explicit Type(bool read) : + mHandleType((State) read) {} + explicit Type(State handleType) : + mHandleType(handleType) {} + [[nodiscard]] State getType() const { return mHandleType; } + [[nodiscard]] bool isRead() const { return mHandleType == READ; } + [[nodiscard]] bool isWrite() const { return mHandleType == WRITE; } + }; + + protected: + Status mStatus; + Type mConnectionType; + + public: + Connection() = default; + + virtual const Status& getConnectionStatus() { return mStatus; } + virtual const Type& getConnectionType() { return mConnectionType; } + }; +} \ No newline at end of file diff --git a/Connection/public/LocalConnection.hpp b/Connection/public/LocalConnection.hpp new file mode 100644 index 0000000..bdde90b --- /dev/null +++ b/Connection/public/LocalConnection.hpp @@ -0,0 +1,66 @@ +#pragma once + +#include "Archiver.hpp" +#include "ConnectionCommon.hpp" + +namespace tp { + class LocalConnectionContext; + + class LocalConnection : public Connection { + public: + class Location { + std::string mLocation; + + public: + Location() : + mLocation("tmp"){}; + explicit Location(const std::string& location) : + mLocation(location) {} + void setLocation(const std::string& location) { mLocation = location; } + [[nodiscard]] const std::string& getLocation() const { return mLocation; } + [[nodiscard]] bool exists() const; + }; + + public: + LocalConnection() = default; + + virtual ~LocalConnection() { + if (mStatus.isOpened()) LocalConnection::disconnect(); + } + + public: + virtual bool connect(const Location& location, const Type& connectionInfo); + virtual bool disconnect(); + + public: + virtual const Status& getConnectionStatus() { return mStatus; } + virtual const Type& getConnectionType() { return mConnectionType; } + virtual const Location& getLocation() { return mLocation; } + + public: + virtual bool setPointer(BytePointer pointer); + virtual bool readBytes(Byte* bytes, SizeBytes size); + virtual bool writeBytes(const Byte* bytes, SizeBytes size); + + public: + virtual SizeBytes size(); + + private: + LocalConnectionContext* mHandle = nullptr; + Location mLocation; + BytePointer mPointer = 0; + }; + + template + class ArchiverLocalConnection : public ArchiverTemplate { + public: + ArchiverLocalConnection() = default; + + protected: + void writeBytes(const int1* val, ualni size) override { connection.writeBytes(val, size); } + void readBytes(int1* val, ualni size) override { connection.readBytes(val, size); } + + public: + LocalConnection connection; + }; +} \ No newline at end of file diff --git a/Connection/public/Network.hpp b/Connection/public/Network.hpp new file mode 100644 index 0000000..215de31 --- /dev/null +++ b/Connection/public/Network.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include "Module.hpp" + +namespace tp { + class ServerContext; + class ClientContext; + + class Server { + ServerContext* mContext; + + public: + typedef void* Socket; + + public: + Server(); + ~Server(); + + void start(ualni port); + Socket accept(); + bool read(Socket client, int1* message, halni size); + bool write(Socket client, const int1* message, halni size); + }; + + class Client { + ClientContext* mContext; + + public: + Client(); + ~Client(); + + bool connect(const int1* IP, ualni PORT); + bool read(int1* buff, halni size); + bool write(const int1* message, halni size); + }; +} \ No newline at end of file diff --git a/Connection/public/RemoteConnection.hpp b/Connection/public/RemoteConnection.hpp new file mode 100644 index 0000000..4bb7ed2 --- /dev/null +++ b/Connection/public/RemoteConnection.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include "ConnectionCommon.hpp" + +namespace tp { + + class RemoteConnectionContext; + + class RemoteConnection : public Connection { + public: + class Location { + ualni mId = 0; + + public: + Location() = default; + }; + + public: + RemoteConnection() = default; + + virtual ~RemoteConnection() { + if (mStatus.isOpened()) RemoteConnection::disconnect(); + } + + public: + virtual bool connect(const Location& location, const Type& connectionInfo); + virtual bool disconnect(); + + public: + virtual const Location& getLocation() { return mLocation; } + + public: + virtual bool readBytes(Byte* bytes, SizeBytes size); + virtual bool writeBytes(const Byte* bytes, SizeBytes size); + + private: + RemoteConnectionContext* mHandle = nullptr; + Location mLocation; + }; +} \ No newline at end of file diff --git a/Connection/tests/Test.cpp b/Connection/tests/Test.cpp new file mode 100644 index 0000000..d42527f --- /dev/null +++ b/Connection/tests/Test.cpp @@ -0,0 +1,37 @@ + +#include "ConnectionCommon.hpp" + +#include "LocalConnection.hpp" + +#include "UnitTest++/UnitTest++.h" + +using namespace tp; + +SUITE(Connection) { + TEST(LocalConnection) { + const int1* data = "abcde\0"; + int1 dataRead[6]{}; + + { + LocalConnection file; + file.connect(LocalConnection::Location(std::string("tmp2.txt")), LocalConnection::Type(false)); + file.writeBytes(data, 6); + file.disconnect(); + } + + { + LocalConnection file; + file.connect(LocalConnection::Location(std::string("tmp2.txt")), LocalConnection::Type(true)); + file.readBytes(dataRead, 6); + file.disconnect(); + } + + for (auto i = 0; i < 5; i++) { + CHECK(data[i] == dataRead[i]); + } + } +} + +int main() { + return UnitTest::RunAllTests(); +} \ No newline at end of file diff --git a/Containers/CMakeLists.txt b/Containers/CMakeLists.txt index f63ea2f..9b0f308 100644 --- a/Containers/CMakeLists.txt +++ b/Containers/CMakeLists.txt @@ -1,8 +1,3 @@ - -cmake_minimum_required(VERSION 3.2) - -set(CMAKE_CXX_STANDARD 23) - project(Containers) ### ---------------------- Static Library --------------------- ### @@ -10,13 +5,24 @@ file(GLOB SOURCES "./private/*.cpp") file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_include_directories(${PROJECT_NAME} PUBLIC ./private/) target_link_libraries(${PROJECT_NAME} PUBLIC Modules) ### -------------------------- Tests -------------------------- ### -enable_testing() -file(GLOB TEST_SOURCES "./tests/*.cpp") -add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) -target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) -add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) +file(GLOB TEST_SOURCES + ./tests/Buffer2DTest.cpp + ./tests/BufferTest.cpp + ./tests/IntervalTreeTests.cpp + ./tests/ListTest.cpp + ./tests/MapTest.cpp + ./tests/TreeTest.cpp + ./tests/Tests.cpp +) -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file +add_executable(Tests${PROJECT_NAME} ${TEST_SOURCES}) +target_link_libraries(Tests${PROJECT_NAME} ${PROJECT_NAME} UnitTest++) +add_test(NAME Tests${PROJECT_NAME} COMMAND Tests${PROJECT_NAME}) + + +add_executable(AVLTreeSpeedTest ./tests/AVLTreeProfiling.cpp) +target_link_libraries(AVLTreeSpeedTest ${PROJECT_NAME}) \ No newline at end of file diff --git a/Containers/private/AVLTree.ipp b/Containers/private/AVLTree.ipp new file mode 100644 index 0000000..40a64d8 --- /dev/null +++ b/Containers/private/AVLTree.ipp @@ -0,0 +1,407 @@ +// #pragma once + +// #include "Tree.hpp" + +template +tp::AvlTree::~AvlTree() { + removeAll(); +} + +template +void tp::AvlTree::deleteNode(Node* node) { + node->~Node(); + mAlloc.deallocate(node); + mSize--; +} + +template +auto tp::AvlTree::newNode(KeyArg key, DataArg data) -> Node* { + mSize++; + auto node = new (mAlloc.allocate(sizeof(Node))) Node(key, data); + node->mLeft = &gNullNode; + node->mRight = &gNullNode; + return node; +} + +template +[[nodiscard]] tp::ualni tp::AvlTree::size() const { + return mSize; +} + +template +auto tp::AvlTree::head() const -> Node* { + return this->mRoot; +} + +template +void tp::AvlTree::insert(KeyArg key, DataArg data) { + if (!mRoot) { + mRoot = newNode(key, data); + return; + } + + if (auto parent = findInsertParent(mRoot, key)) { + restoreInvariants(insertNode(parent, key, data)); + } +} + +template +void tp::AvlTree::remove(KeyArg key) { + + auto node = findSubTree(mRoot, key); + + if (!node) return; + + if (node->mRight != &gNullNode && node->mLeft != &gNullNode) { + Node* min = minNode(node->mRight); + injectNodeInstead(node, min); + std::swap(node, min); + // auto const& newKey = min->key.getFindKey(head->mRight); + node = findSubTree(node->mRight, key); + DEBUG_ASSERT(node); + } + + if (node->mRight != &gNullNode) { + if (node->mParent) { + if (node->mParent->mLeft == node) node->mParent->mLeft = node->mRight; + else node->mParent->mRight = node->mRight; + } + node->mRight->mParent = node->mParent; + auto delNode = node; + node = node->mRight; + deleteNode(delNode); + + } else if (node->mLeft != &gNullNode) { + if (node->mParent) { + if (node->mParent->mLeft == node) node->mParent->mLeft = node->mLeft; + else node->mParent->mRight = node->mLeft; + } + node->mLeft->mParent = node->mParent; + auto delNode = node; + node = node->mLeft; + deleteNode(delNode); + + } else { + if (node->mParent) { + if (node->mParent->mLeft == node) node->mParent->mLeft = &gNullNode; + else node->mParent->mRight = &gNullNode; + } + + auto delNode = node; + node = node->mParent; + deleteNode(delNode); + } + + restoreInvariants(node); + + if (mRoot) mRoot->mParent = nullptr; +} + +template +auto tp::AvlTree::maxNode(Node* head) const -> Node* { + if (!head) return nullptr; + while (head->mRight != &gNullNode) { + head = head->mRight; + } + return head; +} + +template +auto tp::AvlTree::minNode(Node* head) const -> Node* { + if (!head) return nullptr; + while (head->mLeft != &gNullNode) { + head = head->mLeft; + } + return head; +} + +template +auto tp::AvlTree::find(KeyArg key) const -> Node* { + return findSubTree(mRoot, key); +} + +template +auto tp::AvlTree::findSubTree(Node* iter, KeyArg key) const -> Node* { + while (true) { + if (iter == &gNullNode) return nullptr; + if (iter->key.exactNode(key)) return iter; + if (iter->key.descentRight(key)) { + // key = iter->key.keyInRightSubtree(key); + iter = iter->mRight; + } else { + // key = iter->key.keyInLeftSubtree(key); + iter = iter->mLeft; + } + } +} + +template +auto tp::AvlTree::findLessOrEq(KeyArg key) const -> Node* { + Node* iter = mRoot; + while (true) { + if (iter == &gNullNode) return nullptr; + if (iter->key.exactNode(key)) return iter; + if (iter->key.descentRight(key)) { + if (iter->mRight) { + // key = iter->key.keyInRightSubtree(key); + iter = iter->mRight; + } else { + return iter; + } + } else { + if (iter->mLeft) { + // key = iter->key.keyInLeftSubtree(key); + iter = iter->mLeft; + } else { + return iter; + } + } + } +} + +template +bool tp::AvlTree::isValid() { + return findInvalidNode(head()) == nullptr; +} + +template +void tp::AvlTree::removeAll() { + if (!mRoot) return; + removeAllUtil(mRoot); + mRoot = nullptr; + mSize = 0; +} + +template +void tp::AvlTree::removeAllUtil(Node* node) { + if (node->mLeft != &gNullNode) removeAllUtil(node->mLeft); + if (node->mRight != &gNullNode) removeAllUtil(node->mRight); + deleteNode(node); +} + +template +auto tp::AvlTree::findInvalidNode(const Node* head) const -> const Node* { + // checks invariants of AVL tree + // returns first invalid node + if (!head || head == &gNullNode) return nullptr; + + if (head->mLeft != &gNullNode) { + // TODO: incomplete test + if (head->key.descentRight(head->mLeft->key.getFindKey(head))) { + return head; + } + if (head->mLeft->mParent != head) { + return head; + } + if (!head->mRight && head->mLeft->mHeight != head->mHeight - 1) { + return head; + } + } + + if (head->mRight != &gNullNode) { + if (!head->key.descentRight(head->mRight->key.getFindKey(head))) { + return head; + } + if (head->mRight->mParent != head) { + return head; + } + if (!head->mLeft && head->mRight->mHeight != head->mHeight - 1) { + return head; + } + } + + if (head->mLeft != &gNullNode && head->mRight != &gNullNode) { + if (max(head->mLeft->mHeight, head->mRight->mHeight) != head->mHeight - 1) { + return head; + } + } + + int balance = head->mRight->mHeight - head->mLeft->mHeight; + + if (balance > 1 || balance < -1) { + return head; + } + + const Node* ret = findInvalidNode(head->mRight); + + if (ret) { + return ret; + } + + return findInvalidNode(head->mLeft); +} + +template +auto tp::AvlTree::rotateLeft(Node* pivot) -> Node* { + // returns new head + DEBUG_ASSERT(pivot); + + Node* const head = pivot; + Node* const right = pivot->mRight; + Node* const right_left = right->mLeft; + Node* const parent = pivot->mParent; + + // parents + if (right_left != &gNullNode) right_left->mParent = head; + head->mParent = right; + right->mParent = parent; + + // children + head->mRight = right_left; + right->mLeft = head; + + // heights + head->mHeight = 1 + max(head->mLeft->mHeight, head->mRight->mHeight); + right->mHeight = 1 + max(right->mLeft->mHeight, right->mRight->mHeight); + + // cache + head->key.updateNodeCache(head); + right->key.updateNodeCache(right); + + return right; +} + +template +auto tp::AvlTree::rotateRight(Node* pivot) -> Node* { + // returns new head + DEBUG_ASSERT(pivot); + + Node* const head = pivot; + Node* const left = pivot->mLeft; + Node* const left_right = left->mRight; + Node* const parent = pivot->mParent; + + // parents + if (left_right != &gNullNode) left_right->mParent = head; + head->mParent = left; + left->mParent = parent; + + // children + head->mLeft = left_right; + left->mRight = head; + + // heights + head->mHeight = 1 + max(head->mLeft->mHeight, head->mRight->mHeight); + left->mHeight = 1 + max(left->mLeft->mHeight, left->mRight->mHeight); + + // cache + head->key.updateNodeCache(head); + left->key.updateNodeCache(left); + + return left; +} + +template +void tp::AvlTree::restoreInvariants(Node* head) { + if (!head) mRoot = nullptr; + + while (head) { + Node* headParent = head->mParent; + Node** parentHeadLink = nullptr; + + if (headParent) parentHeadLink = headParent->mLeft == head ? &headParent->mLeft : &headParent->mRight; + + head->mHeight = 1 + max(head->mRight->mHeight, head->mLeft->mHeight); + const alni balance = head->mRight->mHeight - head->mLeft->mHeight; + + if (balance < -1) { + if (head->mLeft->mLeft->mHeight >= head->mLeft->mRight->mHeight) { + head = rotateRight(head); + } else { + head->mLeft = rotateLeft(head->mLeft); + head = rotateRight(head); + } + } else if (balance > 1) { + if (head->mRight->mRight->mHeight >= head->mRight->mLeft->mHeight) { + head = rotateLeft(head); + } else { + head->mRight = rotateRight(head->mRight); + head = rotateLeft(head); + } + } + + head->key.updateNodeCache(head); + if (headParent) *parentHeadLink = head; + + mRoot = head; + head = headParent; + } + + if (mRoot) mRoot->mParent = nullptr; +} + +template +auto tp::AvlTree::insertNode(Node* head, KeyArg key, DataArg data) -> Node* { + Node* insertedNode = newNode(key, data); + + if (head->key.descentRight(key)) { + head->mRight = insertedNode; + } else { + head->mLeft = insertedNode; + } + + insertedNode->mParent = head; + return insertedNode; +} + +template +auto tp::AvlTree::findInsertParent(Node* head, KeyArg key) -> Node* { + while (true) { + if (head->key.exactNode(key)) { + return nullptr; + } + if (head->key.descentRight(key)) { + if (head->mRight == &gNullNode) { + return head; + } + head = head->mRight; + } else { + if (head->mLeft == &gNullNode) { + return head; + } + head = head->mLeft; + } + } +} + +template +void tp::AvlTree::injectNodeInstead(Node* target, Node* from) { + // swaps pointers of two nodes to preserve data location in the memory instead of swapping data directly + + // 'target' always has two nodes + // 'from' has only one child on the right on no child at all + // 'from' can be right child of the 'target' + // 'target' can or can not have parent + // 'target' can be left or right child of parent + + // from is not a child of target + Node* targetParent = target->mParent; + Node* targetLeft = target->mLeft; + Node* targetRight = target->mRight; + + bool special = target->mRight == from; + + // update parent + if (targetParent) { + if (targetParent->mRight == target) targetParent->mRight = from; + else targetParent->mLeft = from; + } + + // clone 'from' to 'target' + target->mParent = special ? from : from->mParent; + target->mLeft = &gNullNode; + target->mRight = from->mRight; + if (!special) target->mParent->mLeft = target; + + // if (target->mLeft) target->mLeft->mParent = target; + if (target->mRight) target->mRight->mParent = target; + + // clone 'target' to 'from' + from->mParent = targetParent; + from->mLeft = targetLeft; + from->mRight = special ? target : targetRight; + from->mLeft->mParent = from; + from->mRight->mParent = from; + + std::swap(from->mHeight, target->mHeight); +} diff --git a/Containers/private/Containers.cpp b/Containers/private/Containers.cpp index b680dc5..6dbda3d 100644 --- a/Containers/private/Containers.cpp +++ b/Containers/private/Containers.cpp @@ -1,18 +1,9 @@ - -#include "ContainersCommon.hpp" - -#include - -namespace tp { - - static ModuleManifest* sModuleDependencies[] = { &gModuleBase,nullptr }; - ModuleManifest gModuleContainers = ModuleManifest("Containers", nullptr, nullptr, sModuleDependencies); - - void* DefaultAllocator::allocate(ualni size) { - return malloc(size); - } - - void DefaultAllocator::deallocate(void* p) { - free(p); - } + +#include "ContainersCommon.hpp" + +#include + +namespace tp { + void* DefaultAllocator::allocate(ualni size) { return malloc(size); } + void DefaultAllocator::deallocate(void* p) { free(p); } } \ No newline at end of file diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index 1c9d3bf..441283e 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -5,68 +5,174 @@ namespace tp { - template - inline ualni BufferResizeScaling(ualni const size) { return size * tScale; } + template + inline ualni BufferResizeScaling(const ualni size) { + return size * tScale; + } - template - inline ualni BufferResizeScalingDown(ualni const size) { return size / tScale; } + template + inline ualni BufferResizeScalingDown(const ualni size) { + return size / tScale; + } - template - inline ualni BufferResizeAddition(ualni const size) { return size + tAddition; } + template + inline ualni BufferResizeAddition(const ualni size) { + return size + tAddition; + } - template - inline ualni BufferResizeAdditionDown(ualni const size) { return size - tAddition; } + template + inline ualni BufferResizeAdditionDown(const ualni size) { + return size - tAddition; + } - - template + template class ConstSizeBuffer { - SelCopyArg Arg; + typedef SelectValueOrReference Arg; private: tType mBuff[tSize]; + ualni mLoad = 0; public: ConstSizeBuffer() = default; + ~ConstSizeBuffer() { + for (auto i = 0; i < mLoad; i++) { + mBuff[i].~tType(); + } + } + public: - [[nodiscard]] ualni size() const { return tSize; } + [[nodiscard]] ualni size() const { return mLoad; } - tType& first() { - return *mBuff; - } - - const tType& first() const { - return *mBuff; + [[nodiscard]] ualni getBuffSize() const { return tSize; } + + tType& first() { + DEBUG_ASSERT(mLoad) + return *mBuff; } - tType& last() { - return mBuff[tSize - 1]; + const tType& first() const { + DEBUG_ASSERT(mLoad) + return *mBuff; } - - const tType& last() const { - return mBuff[tSize - 1]; + + tType& last() { + DEBUG_ASSERT(mLoad) + return mBuff[mLoad - 1]; + } + + const tType& last() const { + DEBUG_ASSERT(mLoad) + return mBuff[mLoad - 1]; } tType& operator[](ualni aIdx) { - DEBUG_ASSERT(aIdx >= 0 && aIdx < tSize) + DEBUG_ASSERT(aIdx >= 0 && aIdx < mLoad) return mBuff[aIdx]; } const tType& operator[](ualni aIdx) const { - DEBUG_ASSERT(aIdx >= 0 && aIdx < tSize) + DEBUG_ASSERT(aIdx >= 0 && aIdx < mLoad) return mBuff[aIdx]; } + + void append(Arg data) { + ASSERT(mLoad != tSize) + new (&mBuff[mLoad]) tType(data); + mLoad++; + } + + void pop() { + DEBUG_ASSERT(mLoad) + mBuff[mLoad].~tType(); + mLoad--; + } + + ConstSizeBuffer& operator=(const tp::InitialierList& init) { + for (auto arg : init) { + append(arg); + } + return *this; + } + + void clear() { + this->~ConstSizeBuffer(); + new (this) ConstSizeBuffer(); + } + + public: + class IteratorPointer { + protected: + tType* mIter; + + public: + IteratorPointer() = default; + + tType& operator->() { return *mIter; } + + const tType& operator->() const { return *mIter; } + }; + + class IteratorReference { + protected: + tType* mIter; + + public: + IteratorReference() = default; + + tType* operator->() { return mIter; } + + const tType* operator->() const { return mIter; } + }; + + class Iterator : public TypeSelect::isPointer, IteratorPointer, IteratorReference>::Result { + public: + explicit Iterator(tType* iter) { this->mIter = iter; } + + const Iterator& operator*() const { return *this; } + + Iterator& operator++() { + this->mIter++; + return *this; + } + + bool operator==(const Iterator& left) const { return left.mIter == this->mIter; } + + bool operator!=(const Iterator& left) const { return left.mIter != this->mIter; } + }; + + [[nodiscard]] Iterator begin() const { return Iterator(mBuff); } + + [[nodiscard]] Iterator end() const { return Iterator(mBuff + mLoad); } + + public: + template + void archiveWrite(tArchiver& ar) const { + ar << mLoad; + for (auto item : *this) { + ar << item.data(); + } + } + + template + void archiveRead(tArchiver& ar) { + clear(); + ar >> mLoad; + for (auto i = 0; i < mLoad; i++) { + ar >> mBuff[i]; + } + } }; - template< + template < typename tType, class tAllocator = DefaultAllocator, - ualni (tResizePolicy)(ualni) = BufferResizeScaling<2>, - ualni (tResizePolicyDown)(ualni) = BufferResizeScalingDown<2>, - ualni tMinSize = 4 - > + ualni(tResizePolicy)(ualni) = BufferResizeScaling<2>, + ualni(tResizePolicyDown)(ualni) = BufferResizeScalingDown<2>, + ualni tMinSize = 4> class Buffer { - typedef SelCopyArg Arg; + typedef SelectValueOrReference Arg; private: tType* mBuff; @@ -75,58 +181,91 @@ namespace tp { ualni mLoad; public: - Buffer() : mSize(tMinSize), mLoad(0) { + Buffer() : + mSize(tMinSize), + mLoad(0) { mBuff = (tType*) mAllocator.allocate(sizeof(tType) * tMinSize); } - explicit Buffer(ualni size) : mSize(size), mLoad(0) { - mBuff = (tType*) mAllocator.allocate(sizeof(tType) * tMinSize); - } - - Buffer(const Buffer& in) : mSize(in.mSize), mLoad(in.mLoad) { + Buffer(const InitialierList& input) { + mSize = 0; + for (const auto& val : input) { + mSize++; + } mBuff = (tType*) mAllocator.allocate(sizeof(tType) * mSize); - for (ualni i = 0; i < mLoad; i++) new (&mBuff[i]) tType(in.mBuff[i]); + mLoad = 0; + for (const auto& val : input) { + mBuff[mLoad] = val; + mLoad++; + } + } + + explicit Buffer(ualni size) { + mBuff = (tType*) mAllocator.allocate(sizeof(tType) * size); + mSize = size; + mLoad = size; + for (ualni i = 0; i < mLoad; i++) { + new (mBuff + i) tType(); + } + } + + Buffer(const Buffer& in) : + mSize(in.mSize), + mLoad(in.mLoad) { + mBuff = (tType*) mAllocator.allocate(sizeof(tType) * mSize); + for (ualni i = 0; i < mLoad; i++) { + new (&mBuff[i]) tType(in.mBuff[i]); + } + } + + void clear() { + this->~Buffer(); + new (this) Buffer(); } Buffer& operator=(const Buffer& in) { - if (this == &in) return *this; + if (this == &in) { + return *this; + } this->~Buffer(); new (this) Buffer(in); return *this; } ~Buffer() { - for (ualni i = 0; i < mLoad; i++) mBuff[i].~tType(); + for (ualni i = 0; i < mLoad; i++) { + mBuff[i].~tType(); + } mAllocator.deallocate(mBuff); } public: - [[nodiscard]] ualni size() const { - return mLoad; - } + [[nodiscard]] ualni size() const { return mLoad; } + + [[nodiscard]] ualni getBuffSize() const { return mSize; } + + [[nodiscard]] const tType* getBuff() const { return mBuff; } + + [[nodiscard]] tType* getBuff() { return mBuff; } - [[nodiscard]] ualni getBuffSize() const { - return mSize; - } - tType& first() { - DEBUG_ASSERT(mLoad) - return *mBuff; + DEBUG_ASSERT(mLoad) + return *mBuff; } const tType& first() const { - DEBUG_ASSERT(mLoad) - return *mBuff; + DEBUG_ASSERT(mLoad) + return *mBuff; } tType& last() { - DEBUG_ASSERT(mLoad) - return mBuff[mLoad - 1]; + DEBUG_ASSERT(mLoad) + return mBuff[mLoad - 1]; } const tType& last() const { - DEBUG_ASSERT(mLoad) - return mBuff[mLoad - 1]; + DEBUG_ASSERT(mLoad) + return mBuff[mLoad - 1]; } tType& operator[](ualni idx) { @@ -141,50 +280,216 @@ namespace tp { public: bool operator==(const Buffer& in) const { - if (this == &in) return true; - if (mLoad != in.mLoad) return false; + if (this == &in) { + return true; + } + if (mLoad != in.mLoad) { + return false; + } for (ualni i = 0; i < mLoad; i++) { - if (mBuff[i] != in.mBuff[i]) return false; + if (mBuff[i] != in.mBuff[i]) { + return false; + } } return true; } public: - void append(Arg data) { - if (mLoad == mSize) resizeBuffer(tResizePolicy(mSize)); - new (&mBuff[mLoad]) tType(data); - mLoad++; + Buffer& operator=(const tp::InitialierList& input) { + // TODO : optimize + for (ualni i = 0; i < mLoad; i++) { + mBuff[i].~tType(); + } + mAllocator.deallocate(mBuff); + + mSize = 0; + for (const auto& val : input) { + mSize++; + } + + mBuff = (tType*) mAllocator.allocate(sizeof(tType) * mSize); + mLoad = 0; + for (const auto& val : input) { + new (&mBuff[mLoad]) tType(val); + mLoad++; + } + + return *this; } - void append(const Buffer& in) { - if (!in.mLoad) return; - auto newLoad = mLoad + in.mLoad; - auto newSize = mSize; - while (newLoad >= newSize) newSize = tResizePolicy(newSize); - if (newSize != mSize) resizeBuffer(newSize); - for (auto i = mLoad; i < newLoad; i++) new (&mBuff[i]) tType(in.mBuff[i - mLoad]); - mLoad = newLoad; - } + tType& append(Arg data) { + if (mLoad == mSize) { + resizeBuffer(tResizePolicy(mSize)); + } + new (&mBuff[mLoad]) tType(data); + mLoad++; + return mBuff[mLoad - 1]; + } + + void append(const Buffer& in) { + if (!in.mLoad) { + return; + } + auto newLoad = mLoad + in.mLoad; + auto newSize = mSize; + while (newLoad >= newSize) { + newSize = tResizePolicy(newSize); + } + if (newSize != mSize) { + resizeBuffer(newSize); + } + for (auto i = mLoad; i < newLoad; i++) { + new (&mBuff[i]) tType(in.mBuff[i - mLoad]); + } + mLoad = newLoad; + } void pop() { DEBUG_ASSERT(mLoad) mBuff[mLoad].~tType(); mLoad--; ualni prevSize = tResizePolicyDown(mSize); - DEBUG_ASSERT(prevSize < mSize) - if (prevSize > mLoad) resizeBuffer(prevSize); + DEBUG_ASSERT(prevSize < mSize) + if (prevSize > mLoad) { + resizeBuffer(prevSize); + } } + void reserve(ualni aSize) { + for (ualni i = 0; i < mLoad; i++) { + mBuff[i].~tType(); + } + mAllocator.deallocate(mBuff); + mBuff = (tType*) mAllocator.allocate(sizeof(tType) * aSize); + mSize = aSize; + mLoad = aSize; + for (ualni i = 0; i < mLoad; i++) { + new (mBuff + i) tType(); + } + } - private: - void resizeBuffer(ualni newSize) { - DEBUG_ASSERT(newSize >= mLoad) - auto const oldBuff = mBuff; - mBuff = (tType*) mAllocator.allocate(sizeof(tType) * newSize); - for (ualni i = 0; i < mLoad; i++) new (&mBuff[i]) tType(oldBuff[i]); - for (ualni i = 0; i < mLoad; i++) oldBuff[i].~tType(); - mAllocator.deallocate(oldBuff); - mSize = newSize; - } + public: + class IteratorPointer { + protected: + tType* mIter; + + public: + IteratorPointer() = default; + + tType& operator->() { return *mIter; } + + const tType& operator->() const { return *mIter; } + }; + + class IteratorReference { + protected: + tType* mIter; + + public: + IteratorReference() = default; + + tType* operator->() { return mIter; } + + const tType* operator->() const { return mIter; } + }; + + class Iterator : public TypeSelect::isPointer, IteratorPointer, IteratorReference>::Result { + public: + explicit Iterator(tType* iter) { this->mIter = iter; } + + const Iterator& operator*() const { return *this; } + + tType& data() { return *this->mIter; } + + Iterator& operator++() { + this->mIter++; + return *this; + } + + bool operator==(const Iterator& left) const { return left.mIter == this->mIter; } + + bool operator!=(const Iterator& left) const { return left.mIter != this->mIter; } + }; + + [[nodiscard]] Iterator begin() const { return Iterator(mBuff); } + + [[nodiscard]] Iterator end() const { return Iterator(mBuff + mLoad); } + + public: + template + void archiveWrite(tArchiver& ar) const { + ar << mLoad; + for (auto item : *this) { + ar % item.data(); + } + } + + template + void archiveRead(tArchiver& ar) { + clear(); + decltype(mLoad) len; + ar >> len; + for (auto i = len; i; i--) { + // TODO : optimize + if (mLoad == mSize) { + resizeBuffer(tResizePolicy(mSize)); + } + new (mBuff + mLoad) tType(); + ar % mBuff[mLoad]; + mLoad++; + } + } + + private: + void resizeBuffer(ualni newSize) { + DEBUG_ASSERT(newSize >= mLoad) + const auto oldBuff = mBuff; + mBuff = (tType*) mAllocator.allocate(sizeof(tType) * newSize); + for (ualni i = 0; i < mLoad; i++) { + new (&mBuff[i]) tType(oldBuff[i]); + } + for (ualni i = 0; i < mLoad; i++) { + oldBuff[i].~tType(); + } + mAllocator.deallocate(oldBuff); + mSize = newSize; + } }; -} \ No newline at end of file + + template + void generatePermutations(const Buffer>& in, Buffer>& out) { + typedef long long Idx; + + // sanity check + for (const auto& vec : in) { + if (!vec.size()) { + return; + } + } + + out.resize(in.size()); + auto len = Idx(1); + for (const auto& vec : in) { + len *= (Idx) vec.size(); + } + for (auto i = 0; i < in.size(); i++) { + out[i].resize(len); + } + + auto dub = Idx(1); + for (auto power = (Idx) in.size() - 1; power >= 0; power--) { + auto& vec = in[power]; + long long i = 0; + while (i < len) { + for (auto val : vec) { + for (auto j = 0; j < dub; j++) { + out[power][i] = val; + i++; + } + } + } + dub *= (Idx) vec.size(); + } + } + +} diff --git a/Containers/public/Buffer2D.hpp b/Containers/public/Buffer2D.hpp new file mode 100644 index 0000000..e3d8e23 --- /dev/null +++ b/Containers/public/Buffer2D.hpp @@ -0,0 +1,131 @@ + +#pragma once + +#include "Buffer.hpp" +#include "Utils.hpp" + +namespace tp { + + template + using ConstSizeBuffer2D = ConstSizeBuffer, tSizeY>; + + typedef ualni Index; + + struct Index2D { + Index x = 0; + Index y = 0; + }; + + template + class Buffer2D { + public: + + typedef SelectValueOrReference tTypeArg; + + private: + tAllocator mAlloc; + tType* mBuff = nullptr; + Index2D mSize = { 0, 0 }; + + void deleteBuffer() { + if (!mBuff) { + return; + } + for (ualni i = 0; i < mSize.x * mSize.y; i++) { + mBuff[i].~tType(); + } + mAlloc.deallocate(mBuff); + } + + void allocateBuffer(Index2D size) { + deleteBuffer(); + mBuff = (tType*) mAlloc.allocate(sizeof(tType) * size.x * size.y); + for (ualni i = 0; i < mSize.x * mSize.y; i++) { + new (mBuff + i) tType(); + } + } + + public: + Buffer2D() = default; + + ~Buffer2D() { + deleteBuffer(); + mSize = { 0, 0 }; + } + + explicit Buffer2D(Index2D aSize) { reserve(aSize); } + + [[nodiscard]] Index2D size() const { return { mSize.x, mSize.y }; } + + tType* getBuff() const { return mBuff; } + + inline tType& get(const Index2D& at) { + DEBUG_ASSERT(mBuff && at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + return *(mBuff + mSize.x * at.y + at.x); + } + + inline const tType& get(const Index2D& at) const { + DEBUG_ASSERT(mBuff && at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + return *(mBuff + mSize.x * at.y + at.x); + } + + inline void set(const Index2D& at, tTypeArg value) { + DEBUG_ASSERT(mBuff && at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + *(mBuff + mSize.x * at.y + at.x) = value; + } + + void reserve(const Index2D& newSize) { + if (mSize.x != newSize.x || mSize.y != newSize.y) { + allocateBuffer(newSize); + mSize = newSize; + } + } + + void assign(tType value) { + DEBUG_ASSERT(mBuff); + Index len = mSize.x * mSize.y; + for (Index i = 0; i < len; i++) { + mBuff[i] = value; + } + } + + bool operator==(const Buffer2D& in) const { + if (&in == this) { + return true; + } + if (in.size() != size()) { + return false; + } + for (auto i = 0; i < mSize.x * mSize.y; i++) { + if (mBuff[i] != in.mBuff[i]) { + return false; + } + } + return true; + } + + public: + template + void archiveWrite(tArchiver& ar) const { + ar << mSize; + for (auto i = 0; i < mSize.x; i++) { + for (auto j = 0; j < mSize.y; j++) { + ar << get(i, j); + } + } + } + + template + void archiveRead(tArchiver& ar) { + decltype(mSize) size; + deleteBuffer(); + ar >> size; + reserve(size); + for (auto i = 0; i < mSize.x; i++) { + for (auto j = 0; j < mSize.y; j++) { + ar >> get(i, j); + } + } + } + }; +} diff --git a/Containers/public/ContainersCommon.hpp b/Containers/public/ContainersCommon.hpp index 43552d8..4021041 100644 --- a/Containers/public/ContainersCommon.hpp +++ b/Containers/public/ContainersCommon.hpp @@ -4,23 +4,22 @@ #include "Module.hpp" namespace tp { - extern ModuleManifest gModuleContainers; class DefaultAllocator { public: DefaultAllocator() = default; - static void *allocate(ualni); - static void deallocate(void *); + static void* allocate(ualni); + static void deallocate(void*); }; class DefaultSaverLoader { public: DefaultSaverLoader() = default; - template + template static void write(const Type&) {} - template + template static void read(Type&) {} }; } \ No newline at end of file diff --git a/Containers/public/IntervalTree.hpp b/Containers/public/IntervalTree.hpp new file mode 100644 index 0000000..f877ed2 --- /dev/null +++ b/Containers/public/IntervalTree.hpp @@ -0,0 +1,87 @@ +#pragma once + +#include "Tree.hpp" + +namespace tp { + + template + class IntervalKey { + public: + IntervalKey() = default; + + IntervalKey(tType start, tType end) { + mStart = start; + mEnd = end; + } + + inline bool descentRight(const IntervalKey& in) const { + if (in.mStart != mStart) return in.mStart > mStart; + return in.mEnd > mEnd; + } + + inline bool exactNode(const IntervalKey& in) const { return in.mStart == mStart && in.mEnd == mEnd; } + + template + inline const IntervalKey& getFindKey(const tTreeNodeType* node) const { + return *this; + } + + inline const IntervalKey& keyInRightSubtree(const IntervalKey& in) const { return in; } + inline const IntervalKey& keyInLeftSubtree(const IntervalKey& in) const { return in; } + + template + inline void updateNodeCache(const tTreeNodeType* node) { + mMax = 0; + if (node->mRight && node->mRight->key.mMax > mMax) mMax = node->mRight->key.mMax; + if (node->mLeft && node->mLeft->key.mMax > mMax) mMax = node->mLeft->key.mMax; + if (mMax < mEnd) mMax = mEnd; + } + + public: + tType mStart = tType(); + tType mEnd = tType(); + tType mMax = tType(); + }; + + template + class IntervalTree : public AvlTree, tData> { + typedef typename AvlTree, tData>::Node Node; + + public: + IntervalTree() = default; + + template + ualni forEachIntersection(tType start, tType end, tFunctor functor) const { + ualni debug = 0; + forEachIntersectionUtil(this->head(), start, end, functor, debug); + return debug; + } + + private: + template + void forEachIntersectionUtil(const Node* node, tType start, tType end, tFunctor functor, ualni& debug) const { + if (node->mHeight == -1) return; // sentinel node (null node) + + debug++; + + // If 'start' is to the right of the rightmost point of any interval + // in this node and all children, there won't be any matches. + if (start > node->key.mMax) return; + + // Search left children + forEachIntersectionUtil(node->mLeft, start, end, functor, debug); + + // Check this node + if (start <= node->key.mEnd && end >= node->key.mStart) { + functor(node->key.mStart, node->key.mEnd, node->data); + } + + // If end is to the left of the start of this interval, + // then it can't be in any child to the right. + if (end < node->key.mStart) return; + + // Otherwise, search right children + forEachIntersectionUtil(node->mRight, start, end, functor, debug); + } + }; +} \ No newline at end of file diff --git a/Containers/public/List.hpp b/Containers/public/List.hpp index 470781b..3a36de5 100644 --- a/Containers/public/List.hpp +++ b/Containers/public/List.hpp @@ -1,322 +1,333 @@ - -#pragma once - -#include "ContainersCommon.hpp" - -#include "TypeInfo.hpp" - -namespace tp { - - template - class List { - - typedef SelCopyArg TypeArg; - typedef ualni Index; - - public: - - struct Node { - Type data; - Node* next = nullptr; - Node* prev = nullptr; - Node() = default; - explicit Node(TypeArg p_data) : data(p_data) {} - Type& operator->() { return data; } - }; - - class IteratorPointer { - protected: - Node* mIter; - public: - IteratorPointer() = default; - Type& operator->() { return (mIter->data); } - const Type& operator->() const { return (mIter->data); } - }; - - class IteratorReference { - protected: - Node* mIter; - public: - IteratorReference() = default; - Type* operator->() { return &(mIter->data); } - const Type* operator->() const { return &(mIter->data); } - }; - - class Iterator : public TypeSelect::isPointer, IteratorPointer, IteratorReference>::Result { - public: - - explicit Iterator(Node* iter) { this->mIter = iter; } - - Node* node() { return this->mIter; } - Type& data() { return this->mIter->data; } - const Node* node() const { return this->mIter; } - const Type& data() const { return this->mIter->data; } - - const Iterator& operator*() const { return *this; } - - Iterator& operator++() { - this->mIter = this->mIter->next; - return *this; - } - - bool operator==(const Iterator& left) const { return left.mIter == this->mIter; } - bool operator!=(const Iterator& left) const { return left.mIter != this->mIter; } - }; - - private: - Node* mFirst = nullptr; - Node* mLast = nullptr; - Index mLength = 0; - Allocator mAlloc; - - public: - - List() = default; - - List(const init_list& list) { operator=(list); } - - [[nodiscard]] inline Node* first() const { return mFirst; } - [[nodiscard]] inline Node* last() const { return mLast; } - [[nodiscard]] inline Index length() const { return mLength; } - - [[nodiscard]] Node* newNode() { return new (mAlloc.allocate(sizeof(Node))) Node(); } - [[nodiscard]] Node* newNode(TypeArg arg) { return new (mAlloc.allocate(sizeof(Node))) Node(arg); } - [[nodiscard]] Node* newNodeNotConstructed() { - auto node = (Node*) mAlloc.allocate(sizeof(Node)); - node->next = node->prev = nullptr; - return node; - } - - [[nodiscard]] const Allocator& getAllocator() const { return mAlloc; } - - void deleteNode(Node* node) { - node->~Node(); - mAlloc.deallocate(node); - } - - Node* addNodeBack() { - auto const out = newNode(); - pushBack(out); - return out; - } - - Node* addNodeFront() { - auto const out = newNode(); - pushFront(out); - return out; - } - - void attach(Node* node, Node* node_to) { - if (node_to) { - if (node_to->next) { - node->next = node_to->next; - node->next->prev = node; - } - node_to->next = node; - node->prev = node_to; - if (node_to == mLast) { - mLast = node; - } - } else { - if (mFirst) { - mFirst->prev = node; - node->next = mFirst; - mFirst = node; - } else { - mFirst = mLast = node; - } - } - mLength++; - } - - void detach(Node* node) { - if (node->next) { - node->next->prev = node->prev; - } - if (node->prev) { - node->prev->next = node->next; - } - if (node == mLast) { - mLast = mLast->prev; - } - if (node == mFirst) { - mFirst = mFirst->next; - } - mLength--; - } - - [[nodiscard]] Node* findIdx(Index idx) const { - DEBUG_ASSERT(!mFirst || idx > mLength - 1) - Node* found = mFirst; - for (int i = 0; i != idx; i++) { - found = found->next; - } - return found; - } - - [[nodiscard]] Node* find(const TypeArg data) const { - Node* found = mFirst; - for (alni i = 0; data != found->data; i++) { - if (!found->next) { - return nullptr; - } - found = found->next; - } - return found; - } - - [[nodiscard]] inline const Type& operator[](Index idx) const { - DEBUG_ASSERT(idx < mLength) - return find(idx)->data; - } - - void pushBack(Node* new_node) { attach(new_node, mLast); } - void pushFront(Node* new_node) { attach(new_node, nullptr); } - void pushBack(TypeArg data) { pushBack(newNode(data)); } - void pushFront(TypeArg data) { pushFront(newNode(data)); } - - void popBack() { - DEBUG_ASSERT(mLast) - detach(mLast); - deleteNode(mLast); - } - - void popFront() { - DEBUG_ASSERT(mFirst) - auto temp = mFirst; - detach(mFirst); - deleteNode(temp); - } - - void insert(Node* node, Index idx) { - if (!mLength) { - attach(node, mLast); - } else if (idx >= mLength) { - attach(node, nullptr); - } else { - attach(node, find(idx)->prev); - } - } - - void insert(TypeArg data, Index idx) { - insert(newNode(data), idx); - } - - void removeNode(Node* node) { - detach(node); - deleteNode(node); - } - - void removeAll() { - while (mFirst) { - popFront(); - } - } - - // copies data - List& operator+=(const List& in) { - for (auto node : in) { - pushBack(node.data()); - } - return *this; - } - - List& operator+=(const init_list& list) { - for (auto item : list) { - pushBack(item); - } - return *this; - } - - List& operator=(const List& in) { - if (this == &in) { return *this; } - removeAll(); - (*this) += in; - return *this; - } - - List& operator=(const init_list& list) { - removeAll(); - *this += list; - return *this; - } - - [[nodiscard]] bool operator==(const List& in) const { - if (in == *this) { return true; } - if (in.length() != length()) { - return false; - } - Node* left = in.first(); - Node* right = first(); - while (left && right) { - if (left->data != right->data) { - return false; - } - } - if (left != right) { - return false; - } - return true; - } - - template - [[nodiscard]] Node* find(bool (*found)(Node* node, compare_val val), compare_val value) const { - for (Node* node = mFirst; node; node = node->next) { - if (found(node, value)) { - return node; - } - } - return nullptr; - } - - [[nodiscard]] Iterator begin() const { - Iterator out(mFirst); - return out; - } - - [[nodiscard]] Iterator end() const { - return Iterator(nullptr); - } - - void invert() { - Node* iter = mFirst; - Node* tmp; - while (iter) { - tmp = iter; - iter = iter->next; - swap(tmp->next, tmp->prev); - } - swap(mFirst, mLast); - } - - void detachAll() { - while (mFirst) { - detach(mFirst); - } - } - - template - void write(Saver& file) const { - file.write(mLength); - for (auto item : *this) { - file.write(item.data()); - } - } - - template - void read(Loader& file) { - removeAll(); - ualni len; - file.read(len); - for (auto i = len; i; i--) { - auto node = newNodeNotConstructed(); - file.read(node->data); - pushBack(node); - } - } - - ~List() { - removeAll(); - } - }; + +#pragma once + +#include "ContainersCommon.hpp" + +#include "TypeInfo.hpp" + +namespace tp { + + template + class List { + + typedef SelectValueOrReference TypeArg; + typedef ualni Index; + + public: + struct Node { + Type data; + Node* next = nullptr; + Node* prev = nullptr; + Node() { data = Type(); } + explicit Node(TypeArg p_data) : + data(p_data) {} + Type& operator->() { return data; } + }; + + class IteratorPointer { + protected: + Node* mIter; + + public: + IteratorPointer() = default; + Type& operator->() { return (mIter->data); } + const Type& operator->() const { return (mIter->data); } + }; + + class IteratorReference { + protected: + Node* mIter; + + public: + IteratorReference() = default; + Type* operator->() { return &(mIter->data); } + const Type* operator->() const { return &(mIter->data); } + }; + + class Iterator : public TypeSelect::isPointer, IteratorPointer, IteratorReference>::Result { + public: + explicit Iterator(Node* iter) { this->mIter = iter; } + + Node* node() { return this->mIter; } + Type& data() { return this->mIter->data; } + const Node* node() const { return this->mIter; } + const Type& data() const { return this->mIter->data; } + + const Iterator& operator*() const { return *this; } + + Iterator& operator++() { + this->mIter = this->mIter->next; + return *this; + } + + bool operator==(const Iterator& left) const { return left.mIter == this->mIter; } + bool operator!=(const Iterator& left) const { return left.mIter != this->mIter; } + }; + + private: + Node* mFirst = nullptr; + Node* mLast = nullptr; + Index mLength = 0; + Allocator mAlloc; + + public: + List() = default; + List(const List& in) { this->operator=(in); } + List(const InitialierList& list) { operator=(list); } + + [[nodiscard]] inline Node* first() const { return mFirst; } + [[nodiscard]] inline Node* last() const { return mLast; } + [[nodiscard]] inline Index length() const { return mLength; } + + [[nodiscard]] Node* newNode() { return new (mAlloc.allocate(sizeof(Node))) Node(); } + [[nodiscard]] Node* newNode(TypeArg arg) { return new (mAlloc.allocate(sizeof(Node))) Node(arg); } + [[nodiscard]] Node* newNodeNotConstructed() { + auto node = (Node*) mAlloc.allocate(sizeof(Node)); + node->next = node->prev = nullptr; + return node; + } + + [[nodiscard]] const Allocator& getAllocator() const { return mAlloc; } + + void deleteNode(Node* node) { + node->~Node(); + mAlloc.deallocate(node); + } + + Node* addNodeBack() { + auto const out = newNode(); + pushBack(out); + return out; + } + + Node* addNodeFront() { + auto const out = newNode(); + pushFront(out); + return out; + } + + void attach(Node* node, Node* node_to) { + if (node_to) { + if (node_to->next) { + node->next = node_to->next; + node->next->prev = node; + } + node_to->next = node; + node->prev = node_to; + if (node_to == mLast) { + mLast = node; + } + } else { + if (mFirst) { + mFirst->prev = node; + node->next = mFirst; + mFirst = node; + } else { + mFirst = mLast = node; + } + } + mLength++; + } + + void detach(Node* node) { + if (node->next) { + node->next->prev = node->prev; + } + if (node->prev) { + node->prev->next = node->next; + } + if (node == mLast) { + mLast = mLast->prev; + } + if (node == mFirst) { + mFirst = mFirst->next; + } + mLength--; + } + + [[nodiscard]] Node* findIdx(Index idx) const { + DEBUG_ASSERT(mFirst && idx < mLength && idx >= 0) + Node* found = mFirst; + for (int i = 0; i != idx; i++) { + found = found->next; + } + return found; + } + + [[nodiscard]] Node* find(const TypeArg data) const { + Node* found = mFirst; + for (alni i = 0; data != found->data; i++) { + if (i == length()) return nullptr; + if (!found->next) { + return nullptr; + } + found = found->next; + } + return found; + } + + [[nodiscard]] inline const Type& operator[](Index idx) const { + DEBUG_ASSERT(idx < mLength) + return find(idx)->data; + } + + void pushBack(Node* new_node) { attach(new_node, mLast); } + void pushFront(Node* new_node) { attach(new_node, nullptr); } + void pushBack(TypeArg data) { pushBack(newNode(data)); } + void pushFront(TypeArg data) { pushFront(newNode(data)); } + + void popBack() { + DEBUG_ASSERT(mLast) + auto const tmp = mLast; + detach(mLast); + deleteNode(tmp); + } + + void popFront() { + DEBUG_ASSERT(mFirst) + auto temp = mFirst; + detach(mFirst); + deleteNode(temp); + } + + void insert(Node* node, Index idx) { + if (!mLength) { + attach(node, mLast); + } else if (idx >= mLength) { + attach(node, nullptr); + } else { + attach(node, find(idx)->prev); + } + } + + void insert(TypeArg data, Index idx) { insert(newNode(data), idx); } + + void removeNode(Node* node) { + detach(node); + deleteNode(node); + } + + void removeAll() { + while (mFirst) { + popFront(); + } + } + + // copies data + List& operator+=(const List& in) { + for (auto node : in) { + pushBack(node.data()); + } + return *this; + } + + List& operator+=(const InitialierList& list) { + for (auto item : list) { + pushBack(item); + } + return *this; + } + + List& operator=(const List& in) { + if (this == &in) { + return *this; + } + removeAll(); + (*this) += in; + return *this; + } + + List& operator=(const InitialierList& list) { + removeAll(); + *this += list; + return *this; + } + + [[nodiscard]] bool operator==(const List& in) const { + if (&in == this) { + return true; + } + if (in.length() != length()) { + return false; + } + Node* left = in.first(); + Node* right = first(); + while (left && right) { + if (left->data != right->data) { + return false; + } + left = left->next; + right = right->next; + } + if (left != right) { + return false; + } + return true; + } + + template + [[nodiscard]] Node* find(bool (*found)(Node* node, compare_val val), compare_val value) const { + for (Node* node = mFirst; node; node = node->next) { + if (found(node, value)) { + return node; + } + } + return nullptr; + } + + [[nodiscard]] Iterator begin() const { + Iterator out(mFirst); + return out; + } + + [[nodiscard]] Iterator end() const { return Iterator(nullptr); } + + void invert() { + Node* iter = mFirst; + Node* tmp; + while (iter) { + tmp = iter; + iter = iter->next; + swap(tmp->next, tmp->prev); + } + swap(mFirst, mLast); + } + + void detachAll() { + while (mFirst) { + detach(mFirst); + } + } + + void transferNodes(List in) { + removeAll(); + for (auto node : in) { + attach(node); + } + in.detachAll(); + } + + public: + template + void archiveWrite(tArchiver& ar) const { + ar << mLength; + for (auto item : *this) { + ar << item.data(); + } + } + + template + void archiveRead(tArchiver& ar) { + removeAll(); + decltype(mLength) len; + ar >> len; + for (auto i = len; i; i--) { + auto node = newNodeNotConstructed(); + ar >> node->data; + pushBack(node); + } + } + + ~List() { removeAll(); } + }; } \ No newline at end of file diff --git a/Containers/public/Map.hpp b/Containers/public/Map.hpp index 2f6fb88..fd50491 100644 --- a/Containers/public/Map.hpp +++ b/Containers/public/Map.hpp @@ -1,392 +1,396 @@ - -#pragma once - -#include "ContainersCommon.hpp" -#include "Common.hpp" - -namespace tp { - - template - ualni DefaultHashFunc(SelCopyArg key) { - return hash(key); - } - - template) = DefaultHashFunc, int tTableInitialSize = 4> - class Map { - - enum { - MAP_PERTURB_SHIFT = 5, - MAP_MIN_SIZE = 4, - MAP_MAX_LOAD_PERCENTAGE = 66, - }; - - typedef SelCopyArg KeyArg; - typedef SelCopyArg ValArg; - - public: - - class Node { - friend Map; - Node(KeyArg aKey, ValArg aVal) : key(aKey), val(aVal) {} - public: - tKey key; - tVal val; - }; - - struct Idx { - alni idx = -1; - operator bool() { return idx != -1; } - }; - - private: - tAllocator mAlloc; - Node** mTable; - ualni mNSlots = 0; - ualni mNEntries = 0; - - private: - - constexpr halnf maxLoadFactor() { return halnf(MAP_MAX_LOAD_PERCENTAGE) / 100.f; } - - inline Node** newTable(const ualni len) { - return new(mAlloc.allocate(sizeof(Node*) * len)) Node*[len](); - } - - inline Node* newNode(KeyArg key, ValArg val) { - return new(mAlloc.allocate(sizeof(Node))) Node(key, val); - } - - inline Node* newNodeNotConstructed() { - return (Node*) mAlloc.allocate(sizeof(Node)); - } - - inline void deleteTable(Node** table) { - mAlloc.deallocate(table); - } - - inline void deleteNode(Node* p) { - p->~Node(); - mAlloc.deallocate(p); - } - - void markDeletedSlot(ualni idx) const { - mTable[idx] = (Node*)-1; - } - - static bool isDeletedNode(Node* node) { - return node == (Node*)-1; - } - - void rehash() { - alni nSlotsOld = mNSlots; - Node** tableOld = mTable; - - mNSlots = next2pow((uhalni)((1.f / (maxLoadFactor())) * mNEntries + 1)); - mTable = newTable(mNSlots); - mNEntries = 0; - - for (alni i = 0; i < nSlotsOld; i++) { - if (!tableOld[i] || isDeletedNode(tableOld[i])) { - continue; - } - - alni idx = findSlotWrite(tableOld[i]->key); - mTable[idx] = tableOld[i]; - mNEntries++; - } - - deleteTable(tableOld); - } - - alni findSlotRead(KeyArg key) const { - ualni const hashed_key = tHashFunc(key); - ualni const mask = mNSlots - 1; - ualni const shift = (hashed_key >> MAP_PERTURB_SHIFT) & ~1; - alni idx = hashed_key & mask; - NEXT: - if (isDeletedNode(mTable[idx])) { - goto SKIP; - } - if (!mTable[idx]) { - return -1; - } - if (mTable[idx]->key == key) { - return idx; - } - SKIP: - idx = ((5 * idx) + 1 + shift) & mask; - goto NEXT; - } - - // compares keys only when collisions occur - alni findSlotReadExisting(KeyArg key) const { - ualni const hashed_key = tHashFunc(key); - ualni const mask = mNSlots - 1; - ualni const shift = (hashed_key >> MAP_PERTURB_SHIFT) & ~1; - alni idx = hashed_key & mask; - NEXT: - if (isDeletedNode(mTable[idx])) { - goto SKIP; - } - if (!mTable[idx]) { - return -1; - } - if (mTable[((5 * idx) + 1 + shift) & mask] == nullptr) { - return idx; - } - if (mTable[idx]->key == key) { - return idx; - } - SKIP: - idx = ((5 * idx) + 1 + shift) & mask; - goto NEXT; - } - - ualni findSlotWrite(KeyArg key) const { - ualni const hashed_key = tHashFunc(key); - ualni const mask = mNSlots - 1; - ualni const shift = (hashed_key >> MAP_PERTURB_SHIFT) & ~1; - ualni idx = hashed_key & mask; - NEXT: - if (isDeletedNode(mTable[idx]) || !mTable[idx]) { - return idx; - } - if (mTable[idx]->key == key) { - return idx; - } - idx = ((5 * idx) + 1 + shift) & mask; - goto NEXT; - } - - void put(Node* node) { - const ualni idx = findSlotWrite(node->key); - - if (!mTable[idx] || isDeletedNode(mTable[idx])) { - mNEntries++; - } - - mTable[idx] = node; - - if ((halnf)mNEntries / mNSlots > maxLoadFactor()) { - rehash(); - } - } - - public: - - Map() { - MODULE_SANITY_CHECK(gModuleContainers) - mNSlots = next2pow(uhalni(tTableInitialSize - 1)); - mTable = newTable(mNSlots); - } - - Node** buff() const { - return mTable; - } - - [[nodiscard]] ualni size() const { - return mNEntries; - } - - [[nodiscard]] ualni slotsSize() const { - return mNEntries; - } - - [[nodiscard]] const tAllocator& getAllocator() const { - return mAlloc; - } - - void put(KeyArg key, ValArg val) { - const ualni idx = findSlotWrite(key); - if (!mTable[idx] || isDeletedNode(mTable[idx])) { - mTable[idx] = newNode(key, val); - mNEntries++; - } - mTable[idx]->val = val; - if ((halnf) mNEntries / mNSlots > maxLoadFactor()) { - rehash(); - } - } - - // undefined behavior if item is not presents - tVal& get(KeyArg key) { - DEBUG_ASSERT(findSlotRead(key) != -1 && "Key Error") - return mTable[findSlotReadExisting(key)]->val; - } - - const tVal& get(KeyArg key) const { - DEBUG_ASSERT(findSlotRead(key) != -1 && "Key Error") - return mTable[findSlotReadExisting(key)]->val; - } - - [[nodiscard]] Idx presents(KeyArg key) const { return { findSlotRead(key) }; } - - void remove(KeyArg key) { - DEBUG_ASSERT(findSlotRead(key) != -1 && "Key Error") - auto idx = findSlotReadExisting(key); - - deleteNode(mTable[idx]); - - markDeletedSlot(idx); - - mNEntries--; - if (halnf(mNEntries / mNSlots) < 1.f - maxLoadFactor()) { - rehash(); - } - } - - const tVal& getSlotVal(ualni slot) const { - DEBUG_ASSERT(slot < mNSlots && (mTable[slot] && !isDeletedNode(mTable[slot])) && "Key Error") - return mTable[slot]->val; - } - - tVal& getSlotVal(ualni slot) { - DEBUG_ASSERT(slot < mNSlots && (mTable[slot] && !isDeletedNode(mTable[slot])) && "Key Error") - return mTable[slot]->val; - } - - const tVal& getSlotVal(Idx slot) const { - DEBUG_ASSERT(slot.idx < mNSlots && (mTable[slot.idx] && !isDeletedNode(mTable[slot.idx])) && "Key Error") - return mTable[slot]->val; - } - - tVal& getSlotVal(Idx slot) { - DEBUG_ASSERT(slot.idx < mNSlots && (mTable[slot.idx] && !isDeletedNode(mTable[slot.idx])) && "Key Error") - return mTable[slot.idx]->val; - } - - Map& operator=(const Map& in) { - if (this == &in) { - return *this; - } - removeAll(); - mNSlots = in.mNSlots; - mTable = newTable(mNSlots); - for (alni i = 0; i < mNSlots; i++) { - if (in.mTable[i] && !isDeletedNode(in.mTable[i])) { - put(in.mTable[i]->key, in.mTable[i]->val); - } - } - return *this; - } - - [[nodiscard]] bool operator==(const Map& in) const { - if (this == &in) { - return true; - } - if (in.mNEntries != mNEntries) { - return false; - } - for (auto i : in) { - if (!presents(i->key) || get(i->key) != i->val) { - return false; - } - } - return true; - } - - void removeAll() { - for (ualni i = 0; i < mNSlots; i++) { - if (mTable[i] && !isDeletedNode(mTable[i])) { - deleteNode(mTable[i]); - } - } - deleteTable(mTable); - mTable = newTable(tTableInitialSize); - mNSlots = tTableInitialSize; - mNEntries = 0; - } - - [[nodiscard]] alni slotIdx(alni entry_idx_in) const { - alni entry_idx = -1; - for (alni slot_idx = 0; slot_idx < mNSlots; slot_idx++) { - if (mTable[slot_idx]) { - entry_idx++; - } - if (entry_idx == entry_idx_in) { - return slot_idx; - } - } - return -1; - } - - Node* GetEntry(ualni idx) { - auto slot = slotIdx(idx); - DEBUG_ASSERT(slot != -1 && "Key error") - return mTable[slot]; - } - - const Node* GetEntry(ualni idx) const { - auto slot = slotIdx(idx); - DEBUG_ASSERT(slot != -1 && "Key error") - return mTable[slot]; - } - - public: - - class Iterator { - const Map* map; - Node* mIter; - alni mSlot; - alni mEntry; - - friend Map; - explicit Iterator(const Map* _map) { - mSlot = -1; - mEntry = -1; - map = _map; - this->operator++(); - } - - public: - Node* operator->() { return mIter; } - const Node* operator->() const { return mIter; } - const Iterator& operator*() const { return *this; } - - bool operator!=(ualni idx) const { return mSlot != idx; } - - void operator++() { - mSlot++; - while ((map->isDeletedNode(map->mTable[mSlot]) || !map->mTable[mSlot]) && (mSlot != map->mNSlots)) { - mSlot++; - } - if (mSlot != map->mNSlots) { - mIter = map->mTable[mSlot]; - mEntry++; - } - } - }; - - [[nodiscard]] Iterator begin() const { - return Iterator(this); - } - - [[nodiscard]] ualni end() const { - return mNSlots; - } - - template - void write(Saver& file) { - file.write(mNEntries); - for (auto item : *this) { - file.write(item->val); - file.write(item->key); - } - } - - template - void read(Loader& file) { - removeAll(); - ualni len; - file.read(len); - for (auto i = len; i; i--) { - auto node = newNodeNotConstructed(); - file.read(node->val); - file.read(node->key); - put(node); - } - } - - ~Map() { removeAll(); } - }; + +#pragma once + +#include "Common.hpp" +#include "ContainersCommon.hpp" + +namespace tp { + + template + ualni DefaultHashFunc(SelectValueOrReference key) { + return hash(key); + } + + template < + typename tKey, + typename tVal, + class tAllocator = DefaultAllocator, + ualni (*tHashFunc)(SelectValueOrReference) = DefaultHashFunc, + int tTableInitialSize = 4> + class Map { + + enum { + MAP_PERTURB_SHIFT = 5, + MAP_MIN_SIZE = 4, + MAP_MAX_LOAD_PERCENTAGE = 66, + }; + + typedef SelectValueOrReference KeyArg; + typedef SelectValueOrReference ValArg; + + public: + class Node { + friend Map; + Node(KeyArg aKey, ValArg aVal) : + key(aKey), + val(aVal) {} + + public: + tKey key; + tVal val; + }; + + struct Idx { + alni idx = -1; + [[nodiscard]] bool isValid() const { return bool(*this); } + explicit operator bool() const { return idx != -1; } + }; + + private: + tAllocator mAlloc; + Node** mTable = nullptr; + ualni mNSlots = 0; + ualni mNEntries = 0; + + private: + constexpr halnf maxLoadFactor() { return halnf(MAP_MAX_LOAD_PERCENTAGE) / 100.f; } + + inline Node** newTable(const ualni len) { return new (mAlloc.allocate(sizeof(Node*) * len)) Node*[len](); } + + inline Node* newNode(KeyArg key, ValArg val) { return new (mAlloc.allocate(sizeof(Node))) Node(key, val); } + + inline Node* newNodeNotConstructed() { return (Node*) mAlloc.allocate(sizeof(Node)); } + + inline void deleteTable(Node** table) { mAlloc.deallocate(table); } + + inline void deleteNode(Node* p) { + p->~Node(); + mAlloc.deallocate(p); + } + + void markDeletedSlot(ualni idx) const { mTable[idx] = (Node*) -1; } + + static bool isDeletedNode(Node* node) { return node == (Node*) -1; } + + void rehash() { + alni nSlotsOld = mNSlots; + Node** tableOld = mTable; + + mNSlots = next2pow((uhalni) ((1.f / (maxLoadFactor())) * mNEntries + 1)); + mTable = newTable(mNSlots); + mNEntries = 0; + + for (alni i = 0; i < nSlotsOld; i++) { + if (!tableOld[i] || isDeletedNode(tableOld[i])) { + continue; + } + + alni idx = findSlotWrite(tableOld[i]->key); + mTable[idx] = tableOld[i]; + mNEntries++; + } + + deleteTable(tableOld); + } + + alni findSlotRead(KeyArg key) const { + ualni const hashed_key = tHashFunc(key); + ualni const mask = mNSlots - 1; + ualni const shift = (hashed_key >> MAP_PERTURB_SHIFT) & ~1; + alni idx = hashed_key & mask; + NEXT: + if (isDeletedNode(mTable[idx])) { + goto SKIP; + } + if (!mTable[idx]) { + return -1; + } + if (mTable[idx]->key == key) { + return idx; + } + SKIP: + idx = ((5 * idx) + 1 + shift) & mask; + goto NEXT; + } + + // compares keys only when collisions occur + alni findSlotReadExisting(KeyArg key) const { + ualni const hashed_key = tHashFunc(key); + ualni const mask = mNSlots - 1; + ualni const shift = (hashed_key >> MAP_PERTURB_SHIFT) & ~1; + alni idx = hashed_key & mask; + NEXT: + if (isDeletedNode(mTable[idx])) { + goto SKIP; + } + if (!mTable[idx]) { + return -1; + } + if (mTable[((5 * idx) + 1 + shift) & mask] == nullptr) { + return idx; + } + if (mTable[idx]->key == key) { + return idx; + } + SKIP: + idx = ((5 * idx) + 1 + shift) & mask; + goto NEXT; + } + + ualni findSlotWrite(KeyArg key) const { + ualni const hashed_key = tHashFunc(key); + ualni const mask = mNSlots - 1; + ualni const shift = (hashed_key >> MAP_PERTURB_SHIFT) & ~1; + ualni idx = hashed_key & mask; + NEXT: + if (isDeletedNode(mTable[idx]) || !mTable[idx]) { + return idx; + } + if (mTable[idx]->key == key) { + return idx; + } + idx = ((5 * idx) + 1 + shift) & mask; + goto NEXT; + } + + void put(Node* node) { + const ualni idx = findSlotWrite(node->key); + + if (!mTable[idx] || isDeletedNode(mTable[idx])) { + mNEntries++; + } + + mTable[idx] = node; + + if ((halnf) mNEntries / mNSlots > maxLoadFactor()) { + rehash(); + } + } + + public: + Map() { + mNSlots = next2pow(uhalni(tTableInitialSize - 1)); + mTable = newTable(mNSlots); + } + + Map(const Map& in) { this->operator=(in); } + + Node** buff() const { return mTable; } + + [[nodiscard]] ualni size() const { return mNEntries; } + + [[nodiscard]] ualni slotsSize() const { return mNEntries; } + + [[nodiscard]] const tAllocator& getAllocator() const { return mAlloc; } + + void put(KeyArg key, ValArg val) { + const ualni idx = findSlotWrite(key); + if (!mTable[idx] || isDeletedNode(mTable[idx])) { + mTable[idx] = newNode(key, val); + mNEntries++; + } else { + mTable[idx]->val = val; + } + if ((halnf) mNEntries / mNSlots > maxLoadFactor()) { + rehash(); + } + } + + // undefined behavior if item is not presents + tVal& get(KeyArg key) { + DEBUG_ASSERT(findSlotRead(key) != -1 && "Key Error") + return mTable[findSlotReadExisting(key)]->val; + } + + const tVal& get(KeyArg key) const { + DEBUG_ASSERT(findSlotRead(key) != -1 && "Key Error") + return mTable[findSlotReadExisting(key)]->val; + } + + [[nodiscard]] Idx presents(KeyArg key) const { return { findSlotRead(key) }; } + + void remove(KeyArg key) { + DEBUG_ASSERT(findSlotRead(key) != -1 && "Key Error") + auto idx = findSlotReadExisting(key); + + deleteNode(mTable[idx]); + + markDeletedSlot(idx); + + mNEntries--; + if (halnf(mNEntries / mNSlots) < 1.f - maxLoadFactor()) { + rehash(); + } + } + + const tVal& getSlotVal(ualni slot) const { + DEBUG_ASSERT(slot < mNSlots && (mTable[slot] && !isDeletedNode(mTable[slot])) && "Key Error") + return mTable[slot]->val; + } + + tVal& operator[](KeyArg key) { + auto idx = presents(key); + if (idx.isValid()) return getSlotVal(idx); + put(key, {}); + return get(key); + } + + tVal& getSlotVal(ualni slot) { + DEBUG_ASSERT(slot < mNSlots && (mTable[slot] && !isDeletedNode(mTable[slot])) && "Key Error") + return mTable[slot]->val; + } + + const tVal& getSlotVal(Idx slot) const { + DEBUG_ASSERT(slot.idx < mNSlots && (mTable[slot.idx] && !isDeletedNode(mTable[slot.idx])) && "Key Error") + return mTable[slot.idx]->val; + } + + tVal& getSlotVal(Idx slot) { + DEBUG_ASSERT(slot.idx < mNSlots && (mTable[slot.idx] && !isDeletedNode(mTable[slot.idx])) && "Key Error") + return mTable[slot.idx]->val; + } + + Map& operator=(const Map& in) { + if (this == &in) { + return *this; + } + + for (ualni i = 0; i < mNSlots; i++) { + if (mTable[i] && !isDeletedNode(mTable[i])) { + deleteNode(mTable[i]); + } + } + mNEntries = 0; + mNSlots = in.mNSlots; + deleteTable(mTable); + mTable = newTable(mNSlots); + for (alni i = 0; i < mNSlots; i++) { + if (in.mTable[i] && !isDeletedNode(in.mTable[i])) { + put(in.mTable[i]->key, in.mTable[i]->val); + } + } + return *this; + } + + [[nodiscard]] bool operator==(const Map& in) const { + if (this == &in) { + return true; + } + if (in.mNEntries != mNEntries) { + return false; + } + for (auto i : in) { + if (!presents(i->key) || get(i->key) != i->val) { + return false; + } + } + return true; + } + + void removeAll() { + for (ualni i = 0; i < mNSlots; i++) { + if (mTable[i] && !isDeletedNode(mTable[i])) { + deleteNode(mTable[i]); + } + } + deleteTable(mTable); + mTable = newTable(tTableInitialSize); + mNSlots = tTableInitialSize; + mNEntries = 0; + } + + [[nodiscard]] alni slotIdx(alni entry_idx_in) const { + alni entry_idx = -1; + for (alni slot_idx = 0; slot_idx < mNSlots; slot_idx++) { + if (mTable[slot_idx]) { + entry_idx++; + } + if (entry_idx == entry_idx_in) { + return slot_idx; + } + } + return -1; + } + + Node* GetEntry(ualni idx) { + auto slot = slotIdx(idx); + DEBUG_ASSERT(slot != -1 && "Key error") + return mTable[slot]; + } + + const Node* GetEntry(ualni idx) const { + auto slot = slotIdx(idx); + DEBUG_ASSERT(slot != -1 && "Key error") + return mTable[slot]; + } + + public: + class Iterator { + const Map* map; + Node* mIter; + alni mSlot; + alni mEntry; + + friend Map; + explicit Iterator(const Map* _map) { + mSlot = -1; + mEntry = -1; + map = _map; + this->operator++(); + } + + public: + Node* operator->() { return mIter; } + const Node* operator->() const { return mIter; } + const Iterator& operator*() const { return *this; } + + bool operator!=(ualni idx) const { return mSlot != idx; } + + void operator++() { + mSlot++; + while ((map->isDeletedNode(map->mTable[mSlot]) || !map->mTable[mSlot]) && (mSlot != (map->mNSlots - 1))) { + mSlot++; + } + if (mSlot != map->mNSlots) { + mIter = map->mTable[mSlot]; + mEntry++; + } + } + }; + + [[nodiscard]] Iterator begin() const { return Iterator(this); } + + [[nodiscard]] ualni end() const { return mNSlots - 1; } + + template + void archiveWrite(Archiver& ar) const { + ar << mNEntries; + for (auto item : *this) { + ar << item->val; + ar << item->key; + } + } + + template + void archiveRead(Archiver& ar) { + removeAll(); + decltype(mNSlots) len; + ar >> len; + for (auto i = len; i; i--) { + auto node = newNodeNotConstructed(); + ar >> node->val; + ar >> node->key; + put(node); + } + } + + ~Map() { + for (ualni i = 0; i < mNSlots; i++) { + if (mTable[i] && !isDeletedNode(mTable[i])) { + deleteNode(mTable[i]); + } + } + deleteTable(mTable); + } + }; } \ No newline at end of file diff --git a/Containers/public/Tree.hpp b/Containers/public/Tree.hpp index dfeefc2..9cf702c 100644 --- a/Containers/public/Tree.hpp +++ b/Containers/public/Tree.hpp @@ -1,373 +1,117 @@ -#pragma once - -#include "ContainersCommon.hpp" - -namespace tp { - - template - struct AvlNumericKey { - - NumericType val; - - AvlNumericKey() = default; - AvlNumericKey(NumericType val) : val(val) {} - - inline bool descentRight(AvlNumericKey in) const { return in.val > val; } - inline bool descentLeft(AvlNumericKey in) const { return in.val < val; } - inline bool exactNode(AvlNumericKey in) const { return in.val == val; } - - inline AvlNumericKey getFindKey(/**/) const { return *this; } - inline AvlNumericKey keyInRightSubtree(AvlNumericKey in) const { return in; } - inline AvlNumericKey keyInLeftSubtree(AvlNumericKey in) const { return in; } - - inline void updateTreeCacheCallBack() {} - }; - - template - class AvlTree { - typedef SelCopyArg KeyArg; - typedef SelCopyArg DataArg; - - public: - class Node { - friend AvlTree; - - private: - Node(KeyArg aKey, DataArg aData) : key(aKey), data(aData) {} - - public: - Data data; - Key key; - - private: - Node* mLeft = nullptr; - Node* mRight = nullptr; - Node* mParent = nullptr; - ualni mHeight = 0; - - private: - inline bool descentRight(KeyArg aKey) const { return key.descentRight(aKey); } - inline bool descentLeft(KeyArg aKey) const { return key.descentLeft(aKey); } - inline bool exactNode(KeyArg aKey) const { return key.exactNode(aKey); } - - inline KeyArg getFindKey(const Node* node = nullptr) const { return key.getFindKey(/*node*/); } - inline KeyArg keyInRightSubtree(KeyArg aKey) const { return key.keyInRightSubtree(aKey); } - inline KeyArg keyInLeftSubtree(KeyArg aKey) const { return key.keyInLeftSubtree(aKey); } - - inline void updateTreeCacheCallBack() { key.updateTreeCacheCallBack(); } - }; - - private: - Node* mRoot = nullptr; - ualni mSize = 0; - Allocator mAlloc; - - private: - - inline void deleteNode(Node* node) { - node->~Node(); - mAlloc.deallocate(node); - } - - inline Node* newNode(KeyArg key, DataArg data) { - return new (mAlloc.allocate(sizeof(Node))) Node(key, data); - } - - inline void injectNodeInstead(Node* place, Node* inject) { - // TODO : swap instead of copy - place->data = inject->data; - place->key = inject->key; - } - - inline alni getNodeHeight(const Node* node) const { - return node ? node->mHeight : -1; - } - - // returns new head - Node* rotateLeft(Node* pivot) { - DEBUG_ASSERT(pivot); - - Node* const head = pivot; - Node* const right = pivot->mRight; - Node* const right_left = right->mLeft; - Node* const parent = pivot->mParent; - - // parents - if (right_left) right_left->mParent = head; - head->mParent = right; - right->mParent = parent; - - // children - head->mRight = right_left; - right->mLeft = head; - - // heights - head->mHeight = 1 + max(getNodeHeight(head->mLeft), getNodeHeight(head->mRight)); - right->mHeight = 1 + max(getNodeHeight(right->mLeft), getNodeHeight(right->mRight)); - - // cache - head->updateTreeCacheCallBack(); - right->updateTreeCacheCallBack(); - - return right; - } - - Node* rotateRight(Node* pivot) { - DEBUG_ASSERT(pivot); - - Node* const head = pivot; - Node* const left = pivot->mLeft; - Node* const left_right = left->mRight; - Node* const parent = pivot->mParent; - - // parents - if (left_right) left_right->mParent = head; - head->mParent = left; - left->mParent = parent; - - // children - head->mLeft = left_right; - left->mRight = head; - - // heights - head->mHeight = 1 + max(getNodeHeight(head->mLeft), getNodeHeight(head->mRight)); - left->mHeight = 1 + max(getNodeHeight(left->mLeft), getNodeHeight(left->mRight)); - - // cache - head->updateTreeCacheCallBack(); - left->updateTreeCacheCallBack(); - - return left; - } - - // recursively returns valid isLeft or isRight child or root - Node* insertUtil(Node* head, KeyArg key, DataArg data) { - - Node* insertedNode; - - if (head == nullptr) { - mSize++; - Node* out = newNode(key, data); - out->updateTreeCacheCallBack(); - return out; - } - else if (head->exactNode(key)) { - return head; - } - else if (head->descentRight(key)) { - insertedNode = insertUtil(head->mRight, head->keyInRightSubtree(key), data); - head->mRight = insertedNode; - insertedNode->mParent = head; - } - else { - insertedNode = insertUtil(head->mLeft, head->keyInLeftSubtree(key), data); - head->mLeft = insertedNode; - insertedNode->mParent = head; - } - - // update height - head->mHeight = 1 + max(getNodeHeight(head->mRight), getNodeHeight(head->mLeft)); - - alni balance = alni(getNodeHeight(head->mRight) - getNodeHeight(head->mLeft)); - - if (balance > 1) { - if (head->mRight->descentRight(head->keyInRightSubtree(key))) { - return rotateLeft(head); - } - else { - head->mRight = rotateRight(head->mRight); - return rotateLeft(head); - } - } - else if (balance < -1) { - if (head->mLeft->descentLeft(head->keyInLeftSubtree(key))) { - return rotateRight(head); - } - else { - head->mLeft = rotateLeft(head->mLeft); - return rotateRight(head); - } - } - - head->updateTreeCacheCallBack(); - - return head; - } - - Node* removeUtil(Node* head, KeyArg key) { - if (head == nullptr) return head; - - if (head->exactNode(key)) { - if (head->mRight && head->mLeft) { - Node* min = minNode(head->mRight); - auto const& newKey = min->getFindKey(head->mRight); - injectNodeInstead(head, min); - head->mRight = removeUtil(head->mRight, newKey); - } - else if (head->mRight) { - injectNodeInstead(head, head->mRight); - deleteNode(head->mRight); - head->mRight = nullptr; - mSize--; - } - else if (head->mLeft) { - injectNodeInstead(head, head->mLeft); - deleteNode(head->mLeft); - head->mLeft = nullptr; - mSize--; - } - else { - deleteNode(head); - mSize--; - head = nullptr; - } - } - else if (head->descentRight(key)) { - head->mRight = removeUtil(head->mRight, head->keyInRightSubtree(key)); - } - else if (head->descentLeft(key)) { - head->mLeft = removeUtil(head->mLeft, head->keyInLeftSubtree(key)); - } - - if (head == nullptr) return head; - - head->mHeight = 1 + max(getNodeHeight(head->mRight), getNodeHeight(head->mLeft)); - alni balance = getNodeHeight(head->mRight) - getNodeHeight(head->mLeft); - - if (balance < -1) { - if (getNodeHeight(head->mLeft->mLeft) >= getNodeHeight(head->mLeft->mRight)) { - return rotateRight(head); - } - else { - head->mLeft = rotateLeft(head->mLeft); - return rotateRight(head); - } - } - else if (balance > 1) { - if (getNodeHeight(head->mRight->mRight) >= getNodeHeight(head->mRight->mLeft)) { - return rotateLeft(head); - } - else { - head->mRight = rotateRight(head->mRight); - return rotateLeft(head); - } - } - - head->updateTreeCacheCallBack(); - - return head; - } - - public: - - AvlTree() { - MODULE_SANITY_CHECK(gModuleContainers) - } - - [[nodiscard]] ualni size() const { - return mSize; - } - - Node* head() const { - return this->mRoot; - } - - void insert(KeyArg key, DataArg data) { - mRoot = insertUtil(mRoot, key, data); - mRoot->mParent = nullptr; - } - - void remove(KeyArg key) { - mRoot = removeUtil(mRoot, key); - if (mRoot) mRoot->mParent = nullptr; - } - - Node* maxNode(Node* head) const { - if (!head) return nullptr; - while (head->mRight != nullptr) { - head = head->mRight; - } - return head; - } - - Node* minNode(Node* head) const { - if (!head) return nullptr; - while (head->mLeft != nullptr) { - head = head->mLeft; - } - return head; - } - - Node* find(KeyArg key) const { - Node* iter = mRoot; - while (true) { - if (!iter) return nullptr; - if (iter->exactNode(key)) return iter; - if (iter->descentLeft(key)) { - key = iter->keyInLeftSubtree(key); - iter = iter->mLeft; - } else { - key = iter->keyInRightSubtree(key); - iter = iter->mRight; - } - } - } - - Node* findLessOrEq(KeyArg key) const { - Node* iter = mRoot; - while (true) { - if (!iter) return nullptr; - if (iter->exactNode(key)) return iter; - if (iter->descentLeft(key)) { - if (iter->mLeft) { - key = iter->keyInLeftSubtree(key); - iter = iter->mLeft; - } else { - return iter; - } - } else { - if (iter->mRight) { - key = iter->keyInRightSubtree(key); - iter = iter->mRight; - } else { - return iter; - } - } - } - } - - // returns first invalid node - const Node* findInvalidNode(const Node* head) const { - if (head == nullptr) return nullptr; - - if (head->mLeft) { - // TODO: incomplete test - if (!head->descentLeft(head->mLeft->getFindKey(head))) return head; - if (head->mLeft->mParent != head) return head; - if (!head->mRight && head->mLeft->mHeight != head->mHeight - 1) return head; - } - - if (head->mRight) { - if (!head->descentRight(head->mRight->getFindKey(head))) return head; - if (head->mRight->mParent != head) return head; - if (!head->mLeft && head->mRight->mHeight != head->mHeight - 1) return head; - } - - if (head->mLeft && head->mRight) { - if (max(head->mLeft->mHeight, head->mRight->mHeight) != head->mHeight - 1) return head; - } - - int balance = getNodeHeight(head->mRight) - getNodeHeight(head->mLeft); - - if (balance > 1 || balance < -1) return head; - - const Node* ret = findInvalidNode(head->mRight); - - if (ret) return ret; - - return findInvalidNode(head->mLeft); - } - - bool isValid() { return findInvalidNode(head()) == nullptr; } - }; -} \ No newline at end of file +#pragma once + +#include "ContainersCommon.hpp" + +namespace tp { + + template + struct AvlNumericKey { + public: + AvlNumericKey() = default; + AvlNumericKey(NumericType val) : + val(val) {} + + inline bool descentRight(const AvlNumericKey& in) const { return in.val > val; } + inline bool exactNode(const AvlNumericKey& in) const { return in.val == val; } + + inline const AvlNumericKey& keyInRightSubtree(const AvlNumericKey& in) const { return in; } + inline const AvlNumericKey& keyInLeftSubtree(const AvlNumericKey& in) const { return in; } + + template + inline void updateNodeCache(const NodeType*) {} + + template + inline const AvlNumericKey& getFindKey(const NodeType*) const { + return *this; + } + + public: + NumericType val; + }; + + template + class AvlTree { + typedef SelectValueOrReference KeyArg; + typedef SelectValueOrReference DataArg; + + public: + class Node { + friend AvlTree; + + public: + Node() = default; + + private: + Node(KeyArg aKey, DataArg aData) : + key(aKey), + data(aData) {} + + public: + alni mHeight = -1; + + Node* mLeft = nullptr; + Node* mRight = nullptr; + Node* mParent = nullptr; + + Data data; + Key key; + }; + + public: + AvlTree() = default; + ~AvlTree(); + + ualni size() const; + Node* head() const; + + void insert(KeyArg key, DataArg data); + void remove(KeyArg key); + void removeAll(); + + Node* maxNode(Node* head) const; + Node* minNode(Node* head) const; + + Node* find(KeyArg key) const; + Node* findSubTree(Node* iter, KeyArg key) const; + Node* findLessOrEq(KeyArg key) const; + + template + void traverse(Node* node, bool after, tFunctor functor) { + if (!after) functor(node); + if (node->mLeft) traverse(node->mLeft, after, functor); + if (node->mRight) traverse(node->mRight, after, functor); + if (after) functor(node); + } + + auto findInvalidNode(const Node* head) const -> const Node*; + bool isValid(); + + private: + inline void deleteNode(Node* node); + inline auto newNode(KeyArg key, DataArg data) -> Node*; + + inline auto rotateLeft(Node* pivot) -> Node*; + inline auto rotateRight(Node* pivot) -> Node*; + + inline void restoreInvariants(Node* head); + + inline auto insertNode(Node* head, KeyArg key, DataArg data) -> Node*; + inline auto findInsertParent(Node* head, KeyArg key) -> Node*; + + inline void injectNodeInstead(Node* target, Node* from); + + void removeAllUtil(Node* node); + + private: + Node* mRoot = nullptr; + ualni mSize = 0; + Allocator mAlloc; + + static Node gNullNode; + }; + + template + AvlTree::Node AvlTree::gNullNode; +} + +#include "AVLTree.ipp" diff --git a/Containers/tests/AVLTreeProfiling.cpp b/Containers/tests/AVLTreeProfiling.cpp new file mode 100644 index 0000000..66532ce --- /dev/null +++ b/Containers/tests/AVLTreeProfiling.cpp @@ -0,0 +1,59 @@ +#include +#include "Tree.hpp" +#include "Timing.hpp" + +using namespace tp; + +struct Item { + Item() : + data(0) {} + bool presents = false; + alni data; +}; + +const auto size = 1000000; +Item buff[size]; + +int main() { + AvlTree, alni> tree; + + for (auto i : Range(size)) { + buff[i].data = i; + } + + Timer insertTime; + + ualni loadSize = 0; + while (loadSize < size / 2) { + auto idx = ualni(randomFloat() * (size - 1)); + if (!buff[idx].presents) { + tree.insert((alni) buff[idx].data, buff[idx].data); + loadSize++; + buff[idx].presents = true; + } + } + + std::cout << "AVL Tree Insert Speed " << (double) loadSize / (double) insertTime.timePassed() << "\n"; + + Timer removeTime; + + ualni unloadSize = 0; + while (unloadSize < size / 2) { + auto idx = ualni(randomFloat() * (size - 1)); + if (buff[idx].presents) { + tree.remove((alni) buff[idx].data); + unloadSize++; + buff[idx].presents = false; + } + } + + for (auto& item : buff) { + if (item.presents) { + tree.remove((alni) item.data); + unloadSize++; + item.presents = false; + } + } + + std::cout << "AVL Tree Remove Speed " << (double) unloadSize / (double) removeTime.timePassed() << "\n"; +} \ No newline at end of file diff --git a/Containers/tests/Buffer2DTest.cpp b/Containers/tests/Buffer2DTest.cpp new file mode 100644 index 0000000..b8e62d2 --- /dev/null +++ b/Containers/tests/Buffer2DTest.cpp @@ -0,0 +1,15 @@ +#include "Buffer2D.hpp" +#include "Tests.hpp" + +using namespace tp; + +const ualni size = 1000; + +SUITE(Buffer2D) { + TEST(Simple) { + Buffer2D buff; + buff.reserve({ 4, 4 }); + buff.set({ 2, 2 }, 5); + CHECK(buff.get({ 2, 2 }) == 5); + } +} diff --git a/Containers/tests/BufferTest.cpp b/Containers/tests/BufferTest.cpp index bcca3a8..ae631bd 100644 --- a/Containers/tests/BufferTest.cpp +++ b/Containers/tests/BufferTest.cpp @@ -1,37 +1,31 @@ - -#include "Tests.hpp" - #include "Buffer.hpp" - -#include "Testing.hpp" - -#include +#include "Tests.hpp" using namespace tp; const ualni size = 1000; -TEST_DEF_STATIC(Simple1) { - Buffer buff; - TEST(buff.size() == 0); - for (auto i : Range(size * 10)) { - buff.append(TestClass(i)); - } - TEST(buff.size() == size * 10); - while (buff.size()) buff.pop(); - TEST(buff.size() == 0); -} +SUITE(Buffer) { + TEST(Simple1) { + Buffer buff; + CHECK(buff.size() == 0); + for (auto i : Range(size * 10)) { + buff.append(TestClass(i)); + } + CHECK(buff.size() == size * 10); + while (buff.size()) + buff.pop(); + CHECK(buff.size() == 0); + } -TEST_DEF_STATIC(Simple2) { - Buffer buff(size); - TEST(buff.size() == 0); - for (auto i : Range(size * 10)) buff.append(TestClass(i)); - TEST(buff.size() == size * 10); - while (buff.size()) buff.pop(); - TEST(buff.size() == 0); -} - -TEST_DEF(Buffer) { - testSimple1(); - testSimple2(); + TEST(Simple2) { + Buffer buff(size); + CHECK(buff.size() == size); + for (auto i : Range(size * 10)) + buff.append(TestClass(i)); + CHECK(buff.size() == size + size * 10); + while (buff.size()) + buff.pop(); + CHECK(buff.size() == 0); + } } \ No newline at end of file diff --git a/Containers/tests/IntervalTreeTests.cpp b/Containers/tests/IntervalTreeTests.cpp new file mode 100644 index 0000000..fdf725e --- /dev/null +++ b/Containers/tests/IntervalTreeTests.cpp @@ -0,0 +1,273 @@ +#include "IntervalTree.hpp" +#include "Tests.hpp" + +#include "Buffer.hpp" + +#include + +using namespace tp; + +struct Interval { + + [[nodiscard]] bool overlaps(const Interval& in) const { return in.start <= end && in.end >= start; } + + halnf start{}; + halnf end{}; + bool ignore = false; + + void random(halnf span, halnf scale = 1.f) { + start = ((halnf) randomFloat()) * (span); + end = ((halnf) randomFloat()) * (span); + if (start > end) swap(start, end); + + auto len = (end - start) * scale * 0.5f; + auto mid = (start + end) / 2.f; + + start = mid - len; + end = mid + len; + } + + void randomSized(halnf span, halnf size, halnf wobble) { + start = ((halnf) randomFloat()) * (span); + end = start + size + (halnf) (randomFloat() * wobble); + } +}; + +SUITE(IntervalTree) { + TEST(FunctionalitySimple) { + + IntervalTree intervalTree; + + intervalTree.insert({ 0, 10 }, 1); + intervalTree.insert({ 3, 6 }, 2); + intervalTree.insert({ 8, 12 }, 3); + + intervalTree.forEachIntersection(4, 5, [](alni start, ualni end, ualni data) { + printf("%i", int(data)); + printf("\n"); + }); + } + + TEST(FunctionalityScale) { + + const int NUM_TEST_INTERVALS = 1000; + const halnf SPAN = 1000; + + Buffer pool; + IntervalTree intervalTree; + + Buffer testIntervals; + + auto test = [&]() { + for (auto testInterval : testIntervals) { + + Buffer correct; + Buffer result; + + ualni idx = 0; + for (auto interval : pool) { + if (!interval->ignore && interval->overlaps(testInterval.data())) { + correct.append(idx); + } + idx++; + } + + intervalTree.forEachIntersection( + testInterval->start, testInterval->end, [&](alni start, ualni end, ualni data) { result.append(data); } + ); + + CHECK(correct.size() == result.size()); + + if (!(correct.size() == result.size())) { + printf("intersections - \n"); + + for (auto i : correct) { + printf(" %i", (int) i.data()); + } + printf("\n"); + + for (auto i : result) { + printf(" %i", (int) i.data()); + } + printf("\n\n"); + } + // todo compare containers + } + }; + + // initialize + for (auto i : Range(NUM_TEST_INTERVALS)) { + auto interval = Interval(); + interval.random(SPAN); + + pool.append(interval); + intervalTree.insert({ interval.start, interval.end }, i); + + interval.random(SPAN * 2.f, (halnf) randomFloat()); + + testIntervals.append(interval); + } + + test(); + + // remove some + for (auto i : Range(NUM_TEST_INTERVALS / 2)) { + auto idx = ualni(randomFloat() * (alnf) pool.size()); + pool[idx].ignore = true; + intervalTree.remove({ pool[idx].start, pool[idx].end }); + } + + test(); + } + + TEST(Efficency) { + + struct Stat { + halnf numItems = 0; + halnf avgFound = 0; + halnf avgChecks = 0; + }; + + auto test = [&](ualni NUM_TEST_INTERVALS, ualni NUM_CHECKS) { + const auto SPAN = (halnf) (halnf(NUM_TEST_INTERVALS)); + const auto SCALE = (halnf) (2.f); + + IntervalTree intervalTree; + Buffer testIntervals; + + auto WOBBLE = SPAN * 0; + for (auto i : Range(NUM_TEST_INTERVALS)) { + auto interval = Interval(); + interval.randomSized(SPAN, SCALE, WOBBLE); + intervalTree.insert({ interval.start, interval.end }, i); + // WOBBLE -= 1.f; + } + + for (auto i : Range(0)) + intervalTree.insert({ (halnf) i * 0.01f, SPAN }, 0); + + WOBBLE = 0; + for (auto i : Range(NUM_CHECKS)) { + auto interval = Interval(); + interval.randomSized(SPAN, SCALE, WOBBLE); + testIntervals.append(interval); + } + + ualni debugMaxChecks = 0; + ualni debugMaxFound = 0; + halnf debugAvgChecks = 0; + halnf debugAvgFound = 0; + + for (auto testInterval : testIntervals) { + ualni debugFound = 0; + ualni debug = intervalTree.forEachIntersection( + testInterval->start, + testInterval->end, + [&](ualni start, ualni end, ualni data) { + debugFound++; + // + } + ); + + if (debug > debugMaxChecks) { + debugMaxChecks = debug; + debugMaxFound = debugFound; + } + + debugMaxChecks = max(debug, debugMaxChecks); + debugAvgChecks += (halnf) debug; + debugAvgFound += (halnf) debugFound; + } + + debugAvgChecks /= (halnf) testIntervals.size(); + debugAvgFound /= (halnf) testIntervals.size(); + + printf("\nItems : %llu\n", NUM_TEST_INTERVALS); + printf("Avg(checks) : %f\n", debugAvgChecks); + printf("Avg(found) : %f\n", debugAvgFound); + printf("Max checks : %llu\n", debugMaxChecks); + printf("Max checks found : %llu\n", debugMaxFound); + printf("N(Avg(checks) / Avg(N(items)) : %f\n", debugAvgChecks / (halnf) intervalTree.size()); + printf("N(Avg(found)) / Avg(N(items)) : %f\n", debugAvgFound / (halnf) intervalTree.size()); + printf("Avg(found) / Avg(checks) : %f\n", debugAvgFound / debugAvgChecks); + + return Stat{ (halnf) NUM_TEST_INTERVALS, + debugAvgFound / (halnf) intervalTree.size(), + debugAvgChecks / (halnf) intervalTree.size() }; + }; + + Buffer stats; + for (auto i : Range(2, 5)) { + Stat stat = test(pow(10, i), 100); + stats.append(stat); + } + + printf("\nChecks: "); + for (auto stat : stats) + printf("%e ", stat->avgChecks); + + printf("\nHits: "); + for (auto stat : stats) + printf("%e ", stat->avgFound); + + printf("\nItems: "); + for (auto stat : stats) + printf("%e ", stat->numItems); + + printf("\n\n"); + } + + TEST(FunctionalityComplex) { + IntervalTree intervals; + + struct QueryResult { + ualni numFound = 0; + ualni lastDataFound = 0; + + [[nodiscard]] bool isSingleData(ualni aData) const { return numFound == 1 && lastDataFound == aData; } + [[nodiscard]] bool notFound() const { return numFound == 0; } + [[nodiscard]] bool found(ualni num) const { return numFound == num; } + }; + + auto makeQuery = [&](ualni aStart, ualni aEnd) { + QueryResult out; + intervals.forEachIntersection(aStart, aEnd, [&](alni start, ualni end, ualni data) { + out.numFound++; + out.lastDataFound = data; + }); + return out; + }; + + intervals.insert({ 2, 5 }, 1); + intervals.insert({ 12, 15 }, 2); + intervals.insert({ 22, 25 }, 3); + + CHECK(makeQuery(1, 6).isSingleData(1)); + CHECK(makeQuery(1, 3).isSingleData(1)); + CHECK(makeQuery(3, 6).isSingleData(1)); + + CHECK(makeQuery(0, 1).notFound()); + CHECK(makeQuery(7, 8).notFound()); + + CHECK(makeQuery(3, 4).isSingleData(1)); + + CHECK(makeQuery(13, 14).isSingleData(2)); + + CHECK(makeQuery(1, 35).found(3)); + CHECK(makeQuery(11, 35).found(2)); + + // check opened + CHECK(makeQuery(5, 12).found(2)); + CHECK(makeQuery(15, 22).found(2)); + + CHECK(makeQuery(1, 2).isSingleData(1)); + CHECK(makeQuery(25, 35).isSingleData(3)); + + intervals.removeAll(); + + intervals.insert({ 0, 3 }, 1); + intervals.insert({ 0, 13 }, 2); + + CHECK(makeQuery(0, 1).found(2)); + } +} \ No newline at end of file diff --git a/Containers/tests/ListTest.cpp b/Containers/tests/ListTest.cpp index 44eddba..b12869b 100644 --- a/Containers/tests/ListTest.cpp +++ b/Containers/tests/ListTest.cpp @@ -1,88 +1,82 @@ - +#include "Archiver.hpp" #include "Tests.hpp" -#include "Testing.hpp" - -#include +#include "List.hpp" using namespace tp; -TEST_DEF_STATIC(SimpleReference) { - tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; +SUITE(DoubleLinkedList) { - list.pushBack(TestClass(5)); - list.pushFront(TestClass(0)); + TEST(SimpleReference) { + tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; - ualni i = -1; - for (auto iter : list) { - i++; - TEST_EQUAL(iter->getVal(), i); + list.pushBack(TestClass(5)); + list.pushFront(TestClass(0)); + + ualni i = -1; + for (auto iter : list) { + i++; + CHECK_EQUAL(iter->getVal(), i); + } + + CHECK(i == 5); + + list.removeAll(); } - TEST(i == 5); + TEST(SimplePointer) { + tp::List list = { + new TestClass(1), new TestClass(2), new TestClass(3), new TestClass(4) + }; - list.removeAll(); - TEST(list.getAllocator().getAllocationsCount() == 0); -} + list.pushBack(new TestClass(5)); + list.pushFront(new TestClass(0)); -TEST_DEF_STATIC(SimplePointer) { - tp::List list = { new TestClass(1), new TestClass(2), new TestClass(3), new TestClass(4) }; + ualni i = -1; + for (auto iter : list) { + i++; + CHECK_EQUAL(iter->getVal(), i); + } - list.pushBack(new TestClass(5)); - list.pushFront(new TestClass(0)); + CHECK(i == 5); - ualni i = -1; - for (auto iter : list) { - i++; - TEST_EQUAL(iter->getVal(), i); + for (auto iter : list) { + delete iter.data(); + } + + list.removeAll(); } - TEST(i == 5); + TEST(Copy) { + tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; + tp::List list2 = list; - list.removeAll(); + CHECK(list == list2); - TEST(list.getAllocator().getAllocationsCount() == 0); -} - -TEST_DEF_STATIC(Copy) { - tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; - tp::List list2 = list; - - TEST_EQUAL(list, list2); - - list.removeAll(); - list2.removeAll(); - - TEST(list.getAllocator().getAllocationsCount() == 0); - TEST(list2.getAllocator().getAllocationsCount() == 0); -} - -TEST_DEF_STATIC(SaveLoad) { - tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; - - TestFile file; - - list.write(file); - - list.removeAll(); - - file.setAddress(0); - - list.read(file); - - ualni i = 0; - for (auto iter : list) { - i++; - TEST_EQUAL(iter->getVal(), i); + list.removeAll(); + list2.removeAll(); } - TEST(i == 4); - list.removeAll(); + TEST(Serialization) { + tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; - TEST(list.getAllocator().getAllocationsCount() == 0); -} + ArchiverExample<1024, false> write; + ArchiverExample<1024, true> read; -TEST_DEF(List) { - testSimplePointer(); - testSimpleReference(); - testSaveLoad(); + write % list; + + list.removeAll(); + + memCopy(read.mBuff, write.mBuff, sizeof(write.mBuff)); + + read % list; + + ualni i = 0; + for (auto iter : list) { + i++; + CHECK(iter->getVal() == i); + } + CHECK(i == 4); + + list.removeAll(); + } } \ No newline at end of file diff --git a/Containers/tests/MapTest.cpp b/Containers/tests/MapTest.cpp index 1ce182e..3fb8ef6 100644 --- a/Containers/tests/MapTest.cpp +++ b/Containers/tests/MapTest.cpp @@ -1,137 +1,124 @@ - -#include "Tests.hpp" -#include "Testing.hpp" - +#include "Archiver.hpp" #include "Map.hpp" - -#include +#include "Tests.hpp" using namespace tp; -TEST_DEF_STATIC(SimpleReference) { - tp::Map map; +SUITE(HashTable) { + TEST(SimpleReference) { + tp::Map map; - for (auto i : Range(1000, 100000)) { - map.put(i, TestClass(i)); + for (auto i : Range(1000, 100000)) { + map.put(i, TestClass(i)); + } + + for (auto i : Range(1000, 100000)) { + CHECK(map.presents(i)); + CHECK_EQUAL((tp::ualni) map.get(i).getVal(), (tp::ualni) i); + } + + for (auto i : Range(1000, 100000)) { + map.put(i, TestClass(i)); + } + + for (auto i : Range(1000, 2000)) { + CHECK(map.presents(i)); + map.remove(i); + CHECK(!map.presents(i)); + } + + for (auto i : Range(2000, 100000)) { + CHECK(map.presents(i)); + CHECK_EQUAL((tp::ualni) map.get(i).getVal(), (tp::ualni) i); + } + + for (auto i : map) { + i->val.setVal(3); + } + + map.removeAll(); } - for (auto i : Range(1000, 100000)) { - TEST(map.presents(i)); - TEST_EQUAL(map.get(i).getVal(), i); + TEST(SimplePointer) { + tp::Map map; + + for (auto i : Range(1000)) { + map.put(i, new TestClass(i)); + } + + for (auto i : Range(1000)) { + CHECK(map.presents(i)); + CHECK_EQUAL((tp::ualni) map.get(i)->getVal(), (tp::ualni) i); + } + + for (auto i : Range(1000)) { + auto del = map.get(i); + map.put(i, new TestClass(i)); + delete del; + } + + for (auto i : Range(900, 1000)) { + CHECK(map.presents(i)); + delete map.get(i); + map.remove(i); + CHECK(!map.presents(i)); + } + + for (auto i : Range(900)) { + CHECK(map.presents(i)); + CHECK_EQUAL((tp::ualni) map.get(i)->getVal(), (tp::ualni) i); + } + + for (auto i : map) { + i->val->setVal(3); + delete i->val; + } + + map.removeAll(); } - for (auto i : Range(1000, 100000)) { - map.put(i, TestClass(i)); + TEST(Copy) { + tp::Map map; + + for (auto i : Range(10)) { + map.put(i, TestClass(i)); + } + + tp::Map map2 = map; + + CHECK(map == map2); + + map.removeAll(); + map2.removeAll(); } - for (auto i : Range(1000, 2000)) { - TEST(map.presents(i)); - map.remove(i); - TEST(!map.presents(i)); + TEST(SaveLoad) { + tp::Map map; + + for (auto i : Range(10)) { + map.put(i, TestClass(i)); + } + + ArchiverExample<1024, false> write; + ArchiverExample<1024, true> read; + + write % map; + + map.removeAll(); + + CHECK(map.size() == 0); + + memCopy(read.mBuff, write.mBuff, sizeof(write.mBuff)); + + read % map; + + CHECK(map.size() == 10); + + for (auto i : Range(10)) { + CHECK(map.presents(i)); + CHECK_EQUAL(map.get(i).getVal(), i); + } + + map.removeAll(); } - - for (auto i : Range(2000, 100000)) { - TEST(map.presents(i)); - TEST_EQUAL(map.get(i).getVal(), i); - } - - for (auto i : map) { - i->val.setVal(3); - } - - map.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); -} - -TEST_DEF_STATIC(SimplePointer) { - tp::Map map; - - for (auto i : Range(1000)) { - map.put(i, new TestClass(i)); - } - - for (auto i : Range(1000)) { - TEST(map.presents(i)); - TEST_EQUAL(map.get(i)->getVal(), i); - } - - for (auto i : Range(1000)) { - map.put(i, new TestClass(i)); - } - - for (auto i : Range(900, 1000)) { - TEST(map.presents(i)); - map.remove(i); - TEST(!map.presents(i)); - } - - for (auto i : Range(900)) { - TEST(map.presents(i)); - TEST_EQUAL(map.get(i)->getVal(), i); - } - - for (auto i : map) { - i->val->setVal(3); - delete i->val; - } - - map.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); -} - -TEST_DEF_STATIC(Copy) { - tp::Map map; - - for (auto i : Range(10)) { - map.put(i, TestClass(i)); - } - - tp::Map map2 = map; - - TEST_EQUAL(map, map2); - - map.removeAll(); - map2.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); - TEST(map2.getAllocator().getAllocationsCount() == 1); -} - -TEST_DEF_STATIC(SaveLoad) { - tp::Map map; - - for (auto i : Range(10)) { - map.put(i, TestClass(i)); - } - - TestFile file; - - map.write(file); - - map.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); - - file.setAddress(0); - - map.read(file); - - TEST(map.getAllocator().getAllocationsCount() == 11); - - for (auto i : Range(10)) { - TEST(map.presents(i)); - TEST_EQUAL(map.get(i).getVal(), i); - } - - map.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); -} - -TEST_DEF(Map) { - testSimplePointer(); - testSimpleReference(); - testSaveLoad(); } \ No newline at end of file diff --git a/Containers/tests/Tests.cpp b/Containers/tests/Tests.cpp index 25a659d..6769444 100644 --- a/Containers/tests/Tests.cpp +++ b/Containers/tests/Tests.cpp @@ -1,42 +1,24 @@ - -#include "Tests.hpp" - -#include "Testing.hpp" - -#include - -static bool init(const tp::ModuleManifest* self) { - tp::gTesting.setRootName(self->getName()); - return true; -} - -void* TestAllocator::allocate(tp::ualni size) { - nAllocations++; - return malloc(size); -} - -void TestAllocator::deallocate(void* p) { - nAllocations--; - free(p); -} - -tp::ualni TestAllocator::getAllocationsCount() const { - return nAllocations; -} - -int main() { - - tp::ModuleManifest* deps[] = { &tp::gModuleContainers, &tp::gModuleUtils, nullptr }; - tp::ModuleManifest testModule("ContainersTest", init, nullptr, deps); - - if (!testModule.initialize()) { - return 1; - } - - testList(); - testMap(); - testAvl(); - testBuffer(); - - testModule.deinitialize(); -} + +#include "Tests.hpp" +#include "UnitTest++/UnitTest++.h" + +void* TestAllocator::allocate(tp::ualni size) { + count++; + return malloc(size); +} + +void TestAllocator::deallocate(void* p) { + if (p) { + free(p); + count--; + } +} + + +TestAllocator::~TestAllocator() { + ASSERT(!count); +} + +int main() { + return UnitTest::RunAllTests(); +} diff --git a/Containers/tests/Tests.hpp b/Containers/tests/Tests.hpp index 98d2c71..a517eb0 100644 --- a/Containers/tests/Tests.hpp +++ b/Containers/tests/Tests.hpp @@ -1,74 +1,43 @@ #pragma once +#include "UnitTest++/UnitTest++.h" + #include "Utils.hpp" +// counting number of allocations and deallocations +struct TestAllocator { + TestAllocator() { count = 0; }; + + tp::ualni count = 0; + + void* allocate(tp::ualni size); + void deallocate(void*); + + ~TestAllocator(); +}; + class TestClass { tp::ualni val2 = 0; tp::ualni val1; + public: + TestClass() { val1 = 0; } - explicit TestClass(tp::ualni val) : val1(val) {} + explicit TestClass(tp::ualni val) : + val1(val) {} - template + template void write(Saver& file) const { file.write(val1); } - template + template void read(Loader& file) { file.read(val1); } - [[nodiscard]] bool operator==(const TestClass& in) const { - return in.val1 == val1; - } + [[nodiscard]] bool operator==(const TestClass& in) const { return in.val1 == val1; } [[nodiscard]] tp::ualni getVal() const { return val1; } void setVal(tp::ualni val) { val1 = val; } -}; - -class TestAllocator { - tp::ualni nAllocations = 0; -public: - TestAllocator() = default; - void* allocate(tp::ualni size); - void deallocate(void* p); - [[nodiscard]] tp::ualni getAllocationsCount() const; -}; - -class TestFile { - tp::ualni mem[1024] = { 0 }; - tp::ualni address = 0; - -public: - TestFile() = default; - - template - void write(const Type& val) { - val.write(*this); - } - - template<> - void write(const tp::ualni& val) { - mem[address] = val; - address++; - } - - void setAddress(tp::ualni addr) { address = addr; } - - template - void read(Type& val) { - val.read(*this); - } - - template<> - void read(tp::ualni& val) { - val = mem[address]; - address++; - } -}; - -void testList(); -void testMap(); -void testAvl(); -void testBuffer(); \ No newline at end of file +}; \ No newline at end of file diff --git a/Containers/tests/TreeTest.cpp b/Containers/tests/TreeTest.cpp index 7e39bc3..8d726ad 100644 --- a/Containers/tests/TreeTest.cpp +++ b/Containers/tests/TreeTest.cpp @@ -1,131 +1,127 @@ - -#include "Tests.hpp" - -#include "Tree.hpp" - -#include "Testing.hpp" - #include +#include "Tests.hpp" +#include "Tree.hpp" +#include "Timing.hpp" using namespace tp; -TEST_DEF_STATIC(Simple) { - AvlTree, TestClass, TestAllocator> tree; +SUITE(AvlTree) { + TEST(Simple) { + AvlTree, TestClass, TestAllocator> tree; - TEST(tree.size() == 0); - TEST(tree.head() == nullptr); + CHECK(tree.size() == 0); + CHECK(tree.head() == nullptr); - tree.insert(6, TestClass(6)); - TEST(tree.isValid()); - TEST(tree.size() == 1); - TEST(tree.head()->data == TestClass(6)); + tree.insert(6, TestClass(6)); + CHECK(tree.isValid()); + CHECK(tree.size() == 1); + CHECK(tree.head()->data == TestClass(6)); - tree.remove(6); - TEST(tree.isValid()); - TEST(tree.size() == 0); - TEST(tree.head() == nullptr); -} - -TEST_DEF_STATIC(Persistance) { - AvlTree, TestClass, TestAllocator> tree; - - const auto size = 1000; - - struct Item { - Item() : data(0) {} - bool presents = false; - TestClass data; - }; - - Item buff[size]; - - for (auto i : Range(size)) { - buff[i].data.setVal(i); + tree.remove(6); + CHECK(tree.isValid()); + CHECK(tree.size() == 0); + CHECK(tree.head() == nullptr); } - // random load - ualni loadSize = 0; - while (loadSize < size / 2) { - ualni idx = rand() % (size - 1); - DEBUG_ASSERT(idx < size) - if (!buff[idx].presents) { - tree.insert((alni) buff[idx].data.getVal(), buff[idx].data); - loadSize++; - buff[idx].presents = true; + TEST(Persistance) { + AvlTree, TestClass, TestAllocator> tree; - TEST(tree.isValid()); - TEST(tree.size() == loadSize); + const auto size = 1000; + + struct Item { + Item() : + data(0) {} + bool presents = false; + TestClass data; + }; + + Item buff[size]; + + for (auto i : Range(size)) { + buff[i].data.setVal(i); } - } - for (auto& item : buff) { - if (item.presents) continue; - tree.insert((alni) item.data.getVal(), item.data); - loadSize++; - item.presents = true; + // random load + ualni loadSize = 0; + while (loadSize < size / 2) { + auto idx = ualni(randomFloat() * (size - 1)); + DEBUG_ASSERT(idx < size) + if (!buff[idx].presents) { + tree.insert((alni) buff[idx].data.getVal(), buff[idx].data); + loadSize++; + buff[idx].presents = true; - TEST(tree.isValid()); - TEST(tree.size() == loadSize); - } - - TEST(tree.size() == size); - TEST(tree.maxNode(tree.head())->data.getVal() == size - 1); - TEST(tree.minNode(tree.head())->data.getVal() == 0); - - // find - for (auto item : buff) { - auto node = tree.find((alni) item.data.getVal()); - TEST(node); - if (!node) continue; - TEST(node->data.getVal() == item.data.getVal()); - } - - TEST(!tree.find(size + 1)); - TEST(!tree.find(-1)); - - // random unload - ualni unloadSize = 0; - while (unloadSize < size / 2) { - ualni idx = rand() % (size - 1); - if (buff[idx].presents) { - - tree.remove((alni) buff[idx].data.getVal()); - - unloadSize++; - buff[idx].presents = false; - - // find - for (auto item : buff) { - if (!item.presents) continue; - auto node = tree.find((alni) item.data.getVal()); - TEST(node); - if (!node) continue; - TEST(node->data.getVal() == item.data.getVal()); + CHECK(tree.isValid()); + CHECK(tree.size() == loadSize); } - - TEST(tree.isValid()); - TEST(tree.size() == size - unloadSize); } - } - for (auto& item : buff) { - if (item.presents) { - tree.remove((alni) item.data.getVal()); - unloadSize++; - item.presents = false; + for (auto& item : buff) { + if (item.presents) continue; + tree.insert((alni) item.data.getVal(), item.data); + loadSize++; + item.presents = true; - TEST(tree.isValid()); - TEST(tree.size() == size - unloadSize); + CHECK(tree.isValid()); + CHECK(tree.size() == loadSize); } + + CHECK(tree.size() == size); + CHECK(tree.maxNode(tree.head())->data.getVal() == size - 1); + CHECK(tree.minNode(tree.head())->data.getVal() == 0); + + // find + for (auto item : buff) { + auto node = tree.find((alni) item.data.getVal()); + CHECK(node); + if (!node) continue; + CHECK(node->data.getVal() == item.data.getVal()); + } + + CHECK(!tree.find(size + 1)); + CHECK(!tree.find(-1)); + + // random unload + ualni unloadSize = 0; + while (unloadSize < size / 2) { + auto idx = ualni(randomFloat() * (size - 1)); + if (buff[idx].presents) { + + tree.remove((alni) buff[idx].data.getVal()); + + CHECK(tree.isValid()); + + unloadSize++; + buff[idx].presents = false; + + // find + for (auto item : buff) { + if (!item.presents) continue; + auto node = tree.find((alni) item.data.getVal()); + CHECK(node); + if (!node) continue; + CHECK(node->data.getVal() == item.data.getVal()); + } + + CHECK(tree.isValid()); + CHECK(tree.size() == size - unloadSize); + } + } + + for (auto& item : buff) { + if (item.presents) { + tree.remove((alni) item.data.getVal()); + unloadSize++; + item.presents = false; + + CHECK(tree.isValid()); + CHECK(tree.size() == size - unloadSize); + } + } + + CHECK(tree.size() == 0); + CHECK(tree.head() == nullptr); + CHECK(tree.maxNode(tree.head()) == nullptr); + CHECK(tree.minNode(tree.head()) == nullptr); } - - TEST(tree.size() == 0); - TEST(tree.head() == nullptr); - TEST(tree.maxNode(tree.head()) == nullptr); - TEST(tree.minNode(tree.head()) == nullptr); -} - -TEST_DEF(Avl) { - testSimple(); - testPersistance(); } \ No newline at end of file diff --git a/DataAnalysis/CMakeLists.txt b/DataAnalysis/CMakeLists.txt new file mode 100644 index 0000000..3f00bd3 --- /dev/null +++ b/DataAnalysis/CMakeLists.txt @@ -0,0 +1,29 @@ +project(DataAnalysis) + +### ---------------------- Externals --------------------- ### +set(BINDINGS_INCLUDE ${EXTERNALS}/glfw/include ${EXTERNALS}/glew/include) +set(BINDINGS_LIBS glfw glew_s Imgui Nanovg) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp" "./applications/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Math Containers) + +### -------------------------- Applications -------------------------- ### +add_executable(NumRecTrain applications/NumRecTraining.cpp) +target_link_libraries(NumRecTrain ${PROJECT_NAME} Connection ImageIO) +file(COPY "applications/rsc" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") + +add_executable(NumRecApp applications/NumRecApp.cpp) +target_link_libraries(NumRecApp ${PROJECT_NAME} Connection ImageIO) + +### -------------------------- Tests -------------------------- ### +file(GLOB TEST_SOURCES "./tests/*.cpp" "./tests/*/*.cpp") +add_executable(Test${PROJECT_NAME} ${TEST_SOURCES}) +target_include_directories(Test${PROJECT_NAME} PUBLIC ./applications/) +target_link_libraries(Test${PROJECT_NAME} ${PROJECT_NAME} UnitTest++) +add_test(NAME Test${PROJECT_NAME} COMMAND Test${PROJECT_NAME}) diff --git a/DataAnalysis/applications/NumRecApp.cpp b/DataAnalysis/applications/NumRecApp.cpp new file mode 100644 index 0000000..421612a --- /dev/null +++ b/DataAnalysis/applications/NumRecApp.cpp @@ -0,0 +1,68 @@ + +#include "FCNN.hpp" +#include "LocalConnection.hpp" +// #include "NewPlacement.hpp" + +#define STB_IMAGE_WRITE_IMPLEMENTATION +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h" +#include "stb_image_write.h" + +using namespace tp; + +void loadImage(Buffer& output, const char* name) { + int x, y, channels_in_file; + unsigned char* loadedImage = stbi_load(name, &x, &y, &channels_in_file, 4); + + if (!loadedImage) return; + + output.reserve(x * y); + + for (auto i : Range(output.size())) { + output[i] = loadedImage[i * 4] / 255.f; + } + + stbi_image_free(loadedImage); +} + +void loadNN(FCNN& nn) { + ArchiverLocalConnection archiver; + + archiver.connection.connect(LocalConnection::Location("NumRec.wb"), LocalConnection::Type(true)); + + if (archiver.connection.getConnectionStatus().isOpened()) { + archiver % nn; + } else { + Buffer layers = { 784, 10 }; + nn.initializeRandom(layers); + } +} + +void executeCmd(const char* imageName) { + FCNN nn; + Buffer output(10); + Buffer input; + + loadNN(nn); + loadImage(input, imageName); + + nn.evaluate(input, output); + + printf("Output - "); + for (auto val : output) { + printf("%f ", val.data()); + } + printf("\n\n"); +} + +int main(int argc, char** argv) { + const char* imageName = "digit.png"; + + if (argc == 2) { + imageName = argv[1]; + } + + executeCmd(imageName); + + return 0; +} \ No newline at end of file diff --git a/DataAnalysis/applications/NumRecTraining.cpp b/DataAnalysis/applications/NumRecTraining.cpp new file mode 100644 index 0000000..69cd71c --- /dev/null +++ b/DataAnalysis/applications/NumRecTraining.cpp @@ -0,0 +1,244 @@ +#include "FCNN.hpp" +#include "LocalConnection.hpp" + +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include "stb_image_write.h" + +using namespace tp; + +void writeImage(const Buffer& image, const char* name) { + struct Tmp { + uint1 r, g, b, a; + }; + + Buffer converted; + converted.reserve(image.size()); + + for (auto i = 0; i < image.size(); i++) { + auto val = uint1(image[i] * 255); + converted[i] = { val, val, val, 255 }; + } + + stbi_write_png(name, 28, 28, 4, converted.getBuff(), 28 * 4); +} + +struct Dataset { + ualni length = 0; + std::pair imageSize = { 0, 0 }; + Buffer labels; + Buffer> images; +}; + +bool loadDataset(Dataset& out, const std::string& location) { + LocalConnection dataset; + dataset.connect(LocalConnection::Location(location), LocalConnection::Type(true)); + + if (!dataset.getConnectionStatus().isOpened()) { + return false; + } + + LocalConnection::Byte length; + dataset.readBytes(&length, 1); + + LocalConnection::Byte sizeX; + dataset.readBytes(&sizeX, 1); + + LocalConnection::Byte sizeY; + dataset.readBytes(&sizeY, 1); + + out.length = ((ualni) length) * 1000; + out.imageSize = { sizeX, sizeY }; + + out.labels.reserve(out.length); + out.images.reserve(out.length); + + for (auto i : Range(out.length)) { + auto& image = out.images[i]; + image.reserve(sizeX * sizeY); + dataset.readBytes((LocalConnection::Byte*) image.getBuff(), sizeX * sizeY); + } + + LocalConnection::Byte label; + dataset.readBytes((LocalConnection::Byte*) out.labels.getBuff(), out.length); + + return true; +} + +struct NumberRec { + NumberRec() { + + // try to load wb file + { + ArchiverLocalConnection archiver; + + archiver.connection.connect(LocalConnection::Location("NumRec.wb"), LocalConnection::Type(true)); + + if (archiver.connection.getConnectionStatus().isOpened()) { + archiver % nn; + } else { + Buffer layers = { 784, 10 }; + nn.initializeRandom(layers); + } + } + + Dataset dataset; + + if (!loadDataset(dataset, "rsc/mnist")) { + printf("Cant Load Mnist Dataset\n"); + return; + } + + mTestcases.reserve(dataset.images.size()); + for (auto i : Range(dataset.images.size())) { + auto& image = dataset.images[i]; + auto label = dataset.labels[i]; + + auto& testcase = mTestcases[i]; + + testcase.output.reserve(10); + + for (auto dig : Range(10)) { + testcase.output[dig] = label == dig ? 1 : 0; + } + + testcase.input.reserve(image.size()); + + for (auto pxl : Range(image.size())) { + testcase.input[pxl] = (halnf) image[pxl] / 255.f; + } + } + + output.reserve(10); + + writeImage(mTestcases.first().input, "tmp1.png"); + writeImage(mTestcases.last().input, "tmp2.png"); + } + + ~NumberRec() { + // save aas wb file + { + ArchiverLocalConnection archiver; + archiver.connection.connect(LocalConnection::Location("NumRec.wb"), LocalConnection::Type(false)); + if (archiver.connection.getConnectionStatus().isOpened()) { + archiver % nn; + } + } + } + + halnf eval(ualni idx) { + nn.evaluate(mTestcases[idx].input, output); + return nn.calcCost(mTestcases[idx].output); + } + + void applyGrad(ualni idx) { + nn.calcGrad(mTestcases[idx].output); + nn.applyGrad(step); + } + + static halni getMaxIdx(const Buffer& in) { + halni out = 0; + for (auto i : Range(in.size())) { + if (in[i] > in[out]) { + out = i; + } + } + return out; + } + + bool testIncorrect(ualni idx) { + nn.evaluate(mTestcases[idx].input, output); + return getMaxIdx(mTestcases[idx].output) != getMaxIdx(output); + } + + void debLog(halni idx) { + printf("\n Got %i - ", getMaxIdx(output)); + for (auto val : output) { + printf("%f ", val.data()); + } + printf("\n Expected %i - ", getMaxIdx(mTestcases[idx].output)); + for (auto val : mTestcases[idx].output) { + printf("%f ", val.data()); + } + printf("\n\n"); + } + + void displayImage(ualni idx) { + auto& testcase = mTestcases[idx]; + printf("Image : %i\n", int(getMaxIdx(testcase.output))); + for (auto i : Range(28)) { + for (auto j : Range(28)) { + printf("%c", char(testcase.input[j * 28 + i] * 255)); + } + printf("\n"); + } + } + + halnf test(const Range& range) { + halnf avgCost = 0; + for (auto i : range) { + avgCost += eval(i); + } + avgCost /= (halnf) range.idxDiff(); + return avgCost; + } + + void trainStep(const Range& range) { + nn.clearGrad(); + for (auto i : range) { + nn.evaluate(mTestcases[i].input, output); + nn.calcGrad(mTestcases[i].output); + } + nn.applyGrad(step); + } + +public: + struct Image { + Buffer input; + Buffer output; + }; + +public: + Buffer mTestcases; + + FCNN nn; + Buffer output; + + halnf step = 1.f; +}; + +int main() { + NumberRec app; + + auto numBatches = 10; + auto trainRange = Range(0, 50000); + auto testRange = Range(50000, 70000); + + auto batchSize = trainRange.idxDiff() / numBatches; + + for (auto epoch : Range(1)) { + printf("Epoch %i\n", epoch.index()); + + for (auto batchIdx : Range(trainRange.idxDiff() / batchSize)) { + printf(" - Batch :%i \n", batchIdx.index()); + + auto batchRange = Range(trainRange.idxBegin() + batchSize * batchIdx, trainRange.idxBegin() + batchSize * (batchIdx + 1)); + + app.trainStep(batchRange); + + printf("Cost on batch data : %f\n", app.test(batchRange)); + } + + printf("Cost on test data : %f\n\n", app.test(testRange)); + } + + auto errors = 0; + for (auto i : testRange) { + if (app.testIncorrect(i)) { + errors++; + } + // app.debLog(i); + // app.displayImage(i); + } + + printf("\n\nIncorrect - %i out of %i (%f)\n\n", errors, testRange.idxDiff(), (halnf) errors / (halnf) testRange.idxDiff()); +} \ No newline at end of file diff --git a/DataAnalysis/applications/rsc/mnist.gz b/DataAnalysis/applications/rsc/mnist.gz new file mode 100644 index 0000000..b8dd465 Binary files /dev/null and b/DataAnalysis/applications/rsc/mnist.gz differ diff --git a/DataAnalysis/private/FCNN.cpp b/DataAnalysis/private/FCNN.cpp new file mode 100644 index 0000000..be5b322 --- /dev/null +++ b/DataAnalysis/private/FCNN.cpp @@ -0,0 +1,157 @@ +// #include "NewPlacement.hpp" + +#include "FCNN.hpp" + +#include + +using namespace tp; + +static halnf linearFun(halnf val) { return val; } + +static halnf linearFunDerivative(halnf val) { return 1; } + +static halnf sigmoid(double val) { return 1.0f / (1.0f + (halnf) exp(-val)); } + +static halnf sigmoidDerivative(double val) { + halnf sigmoid_val = sigmoid(val); + return sigmoid_val * (1.0f - sigmoid_val); +} + +static halnf relu(halnf val) { return val < 0 ? 0 : val; } + +static halnf reluDerivative(halnf val) { return val < 0 ? 0 : 1; } + +static halnf activationFunction(halnf val) { return sigmoid(val); } + +static halnf activationFunctionDerivative(halnf val) { return sigmoidDerivative(val); } + +FCNN::FCNN(const Buffer& description) { initializeRandom(description); } + +void FCNN::initializeRandom(const Buffer& description) { + ASSERT(description.size() > 1); + + mLayers.reserve(description.size()); + + for (auto i : Range(0, (halni) description.size())) { + mLayers[i].neurons.reserve(description[i]); + if (i == 0) { + continue; + } + for (auto neuron : mLayers[i].neurons) { + neuron->weights.reserve(description[i - 1]); + for (auto weight : neuron->weights) { + weight->val = (halnf) (randomFloat() - 0.5) * 2; + } + neuron->bias.val = (halnf) (randomFloat() - 0.5) * 2; + } + } +} + +void FCNN::evaluate(const Buffer& input, Buffer& output) { + ASSERT(output.size() == mLayers.last().neurons.size() && input.size() == mLayers.first().neurons.size()) + + for (auto idx : Range(input.size())) { + mLayers.first().neurons[idx].activationValue = input[idx]; + } + + for (auto layerIdx : Range(1, (halni) mLayers.size())) { + auto& layer = mLayers[layerIdx]; + auto& layerPrev = mLayers[layerIdx - 1]; + + for (auto neuron : layer.neurons) { + neuron->activationValue = 0; + for (auto connectionIdx : Range(neuron->weights.size())) { + neuron->activationValue += neuron->weights[connectionIdx].val * layerPrev.neurons[connectionIdx].activationValue; + } + neuron->activationValue += neuron->bias.val; + neuron->activationValueLinear = neuron->activationValue; + neuron->activationValue = activationFunction(neuron->activationValue); + } + } + + for (auto idx : Range(output.size())) { + output[idx] = mLayers.last().neurons[idx].activationValue; + } +} + +halnf FCNN::calcCost(const Buffer& output) { + halnf out = 0; + for (auto neuronIdx : Range(mLayers.last().neurons.size())) { + out += pow(output[neuronIdx] - mLayers.last().neurons[neuronIdx].activationValue, 2); + } + return out; +} + +void FCNN::clearGrad() { + for (auto layIdx : Range(1, (halni) mLayers.size())) { + auto& layer = mLayers[layIdx]; + + for (auto neuron : layer.neurons) { + neuron->bias.grad = 0; + for (auto weightIdx : Range(neuron->weights.size())) { + neuron->weights[weightIdx].grad = 0; + } + } + } + mAvgCount = 0; +} + +void FCNN::calcGrad(const Buffer& output) { + ASSERT(mLayers.last().neurons.size() == output.size()) + + auto& lastLayer = mLayers.last(); + + // calculate chaining cache value for each neuron in last layer + for (auto neuronIdx : Range(lastLayer.neurons.size())) { + auto& neuron = lastLayer.neurons[neuronIdx]; + neuron.cache = 2 * (neuron.activationValue - output[neuronIdx]); + } + + // calculate rest of the layers + for (auto layerIdx = mLayers.size() - 1; layerIdx > 0; layerIdx--) { + + auto& currentLayer = mLayers[layerIdx]; + auto& inputLayer = mLayers[layerIdx - 1]; + + for (auto currentNeuronIdx : Range(currentLayer.neurons.size())) { + auto& currentNeuron = currentLayer.neurons[currentNeuronIdx]; + + // calculate cache value (chaining) + if (layerIdx != mLayers.size() - 1) { + auto& userLayer = mLayers[layerIdx + 1]; + + currentNeuron.cache = 0; + for (auto userNeuron : userLayer.neurons) { + currentNeuron.cache += userNeuron->weights[currentNeuronIdx].val * userNeuron->cache; + } + currentNeuron.cache *= activationFunctionDerivative(currentNeuron.activationValueLinear); + } + + // gradient for current neuron bias + currentNeuron.bias.grad += currentNeuron.cache; + + // calculate gradient for weights of current neuron + for (auto weightIdx : Range(currentNeuron.weights.size())) { + currentNeuron.weights[weightIdx].grad += inputLayer.neurons[weightIdx].activationValue * currentNeuron.cache; + } + } + } + + mAvgCount++; +} + +void FCNN::applyGrad(halnf step) { + + for (auto layIdx : Range(1, (halni) mLayers.size())) { + auto& layer = mLayers[layIdx]; + + for (auto neuron : layer.neurons) { + neuron->bias.val -= neuron->bias.grad / (halnf) mAvgCount * step; + for (auto weightIdx : Range(neuron->weights.size())) { + neuron->weights[weightIdx].val -= (neuron->weights[weightIdx].grad / (halnf) mAvgCount) * step; + } + } + } + + mAvgCount = 0; +} \ No newline at end of file diff --git a/DataAnalysis/public/FCNN.hpp b/DataAnalysis/public/FCNN.hpp new file mode 100644 index 0000000..b2dcf1b --- /dev/null +++ b/DataAnalysis/public/FCNN.hpp @@ -0,0 +1,76 @@ +#pragma once + +#include "Buffer.hpp" + +namespace tp { + // Fully connected neural network + class FCNN { + + struct Layer { + + struct Neuron { + struct Parameter { + Parameter() = default; + + Parameter(halnf in) : + val(in) {} + + halnf val = 0; + halnf grad = 0; + + public: + template + void archive(tArchiver& ar) { + ar % val; + } + }; + + Parameter bias; + Buffer weights; + + halnf activationValue = 0; + halnf activationValueLinear = 0; + + halnf cache; + + public: + template + void archive(tArchiver& ar) { + ar % bias; + ar % weights; + } + }; + + Buffer neurons; + + public: + template + void archive(tArchiver& ar) { + ar % neurons; + } + }; + + public: + FCNN() = default; + explicit FCNN(const Buffer& description); + + void initializeRandom(const Buffer& description); + void evaluate(const Buffer& input, Buffer& output); + + halnf calcCost(const Buffer& output); + + void clearGrad(); + void calcGrad(const Buffer& output); + void applyGrad(halnf step); + + public: + template + void archive(tArchiver& ar) { + ar % mLayers; + } + + public: + Buffer mLayers; + halni mAvgCount = 0; + }; +}; diff --git a/DataAnalysis/tests/Tests.cpp b/DataAnalysis/tests/Tests.cpp new file mode 100644 index 0000000..af7b914 --- /dev/null +++ b/DataAnalysis/tests/Tests.cpp @@ -0,0 +1,64 @@ + +#include "UnitTest++/UnitTest++.h" + +#include "FCNN.hpp" +#include "Utils.hpp" + +#include + +using namespace tp; + +halnf inputLayer[100] = { + 6.50073, 2.41955, 3.57390, 2.54054, 4.01545, 1.27555, 8.93310, 5.98754, 0.83661, 2.30855, 7.70906, 6.53513, 5.92166, + 9.96563, 1.24706, 3.17029, 8.52388, 8.75402, 8.73118, 0.56217, 1.02163, 7.27230, 5.51980, 2.10261, 9.94351, 1.89839, + 4.23003, 3.80691, 9.43242, 2.74919, 0.30270, 9.76303, 5.72574, 7.80288, 8.62568, 6.25799, 0.03797, 2.56737, 5.57602, + 9.85272, 8.81618, 6.40643, 6.51678, 6.28869, 5.20166, 2.39731, 2.18484, 0.61359, 6.27063, 1.89839, 1.38699, 2.49058, + 7.03768, 9.24257, 7.14492, 9.79083, 7.09768, 6.10761, 2.06128, 5.79821, 9.65542, 6.98304, 3.00416, 9.48536, 2.21974, + 4.31504, 0.70457, 4.78254, 1.76592, 6.04608, 2.58798, 4.91384, 8.95884, 8.09472, 7.13455, 9.15459, 1.94269, 5.99912, + 6.79787, 1.03997, 5.23773, 9.31124, 9.44900, 8.06692, 4.86936, 7.97706, 7.48052, 4.77991, 9.32074, 2.11929, 8.23583, + 2.80812, 1.94275, 0.42090, 6.15178, 2.26695, 4.12673, 5.84851, 0.22800, 3.11190 +}; + +halnf outputLayer[20] = { + 1.000000, 0.283636, 0.725544, 1.000000, 0.921875, 0.131610, 0.276638, 0.894206, 0.379333, 0.601731, + 0.074395, 0.598880, 0.454188, 0.424037, 0.961471, 0.930909, 0.681503, 0.734448, 0.123868, 1.000000 +}; + +SUITE(FCNN) { + TEST(Basic) { + Buffer layers = { 100, 70, 50, 30, 20 }; + Buffer input(layers.first()); + Buffer outputExpected(layers.last()); + Buffer output(layers.last()); + + for (auto inputVal : Range(layers.first())) { + input[inputVal] = inputLayer[inputVal]; + } + + for (auto outIdx : Range(layers.last())) { + outputExpected[outIdx] = outputLayer[outIdx]; + } + + FCNN nn(layers); + halnf steppingValue = 0.1; + + halnf cost = 0; + + for (auto i : Range(150)) { + + nn.evaluate(input, output); + + nn.calcGrad(outputExpected); + nn.applyGrad(steppingValue); + + cost = nn.calcCost(outputExpected); + // printf("Loss %f \n", nn.calcCost(outputExpected)); + } + + CHECK(cost < 0.15f); + } +} + +int main() { + return UnitTest::RunAllTests(); +} diff --git a/Externals/CMakeLists.txt b/Externals/CMakeLists.txt new file mode 100644 index 0000000..48984ed --- /dev/null +++ b/Externals/CMakeLists.txt @@ -0,0 +1,83 @@ +# find_package(ALSA REQUIRED) + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + message("Configuring for windows...") + message("Libraries path is - ${WINDOWS_LIBRARIES}") + + set(CMAKE_PREFIX_PATH "${WINDOWS_LIBRARIES}/glew-2.1.0") + find_package(GLEW REQUIRED) + set(GLEW_LIB ${GLEW_STATIC_LIBRARY_RELEASE} opengl32.lib PARENT_SCOPE) + + # Your relative paths + set(RELATIVE_INCLUDE_DIR "${WINDOWS_LIBRARIES}/portaudio/include") + set(RELATIVE_LIB "${WINDOWS_LIBRARIES}/portaudio_build/Debug/portaudio.lib") + + # Convert to absolute paths + get_filename_component(ABSOLUTE_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${RELATIVE_INCLUDE_DIR}" ABSOLUTE) + get_filename_component(ABSOLUTE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/${RELATIVE_LIB}" ABSOLUTE) + + # Set absolute paths with respect to the parent scope + set(PORTAUDIO_INCLUDE_DIR "${ABSOLUTE_INCLUDE_DIR}" PARENT_SCOPE) + set(PORTAUDIO_LIB "${ABSOLUTE_LIB}" PARENT_SCOPE) +else() + find_package(GLEW REQUIRED) + set(GLEW_LIB ${GLEW_LIBRARIES} GL PARENT_SCOPE) + + set(PORTAUDIO_LIB portaudio PARENT_SCOPE) +endif() + +#add_subdirectory(glew/build/cmake/) +#target_compile_definitions(glew_s PUBLIC GLEW_NO_GLU) + +#add_subdirectory(unittest-cpp) +add_subdirectory(lalr) +target_compile_options(UnitTest++ PUBLIC -Wno-error) + +add_subdirectory(glfw) + +project(Imgui) +set(${PROJECT_NAME}_SOURCES + imgui/imgui.cpp + imgui/imgui_draw.cpp + imgui/imgui_tables.cpp + imgui/imgui_widgets.cpp + + imgui/backends/imgui_impl_glfw.cpp + imgui/backends/imgui_impl_opengl3.cpp +) + +add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SOURCES}) +include_directories(${PROJECT_NAME} ./glfw/include) +target_include_directories(${PROJECT_NAME} PUBLIC ./imgui/ ./imgui/backends/) + +project(Nanovg) +set(${PROJECT_NAME}_SOURCES + nanovg/src/nanovg.c +) + +add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SOURCES}) +target_include_directories(${PROJECT_NAME} PUBLIC ./nanovg/src/ ./nanovg/obsolete/) + +project(Lua) + +# Add the Lua source files +#file(GLOB ${PROJECT_NAME}_SOURCES "./lua/luaone.c") +# list(FILTER ${PROJECT_NAME}_SOURCES EXCLUDE REGEX "./lua/lua.c$") + +# Create the Lua library +add_library(${PROJECT_NAME} STATIC "lua/onelua.c") + +target_compile_definitions(${PROJECT_NAME} PUBLIC MAKE_LIB) + +# Include directories for Lua headers +target_include_directories(${PROJECT_NAME} PUBLIC "./lua") + +# Set compilation options, e.g., for compilation with C99 +set_target_properties(${PROJECT_NAME} PROPERTIES + C_STANDARD 99 + C_STANDARD_REQUIRED ON +) + +project(ImageIO) +add_library(${PROJECT_NAME} INTERFACE) +target_include_directories(${PROJECT_NAME} INTERFACE ./imageIO/) diff --git a/Externals/asio b/Externals/asio new file mode 160000 index 0000000..ed5db1b --- /dev/null +++ b/Externals/asio @@ -0,0 +1 @@ +Subproject commit ed5db1b50136bace796062c1a6eab0df9a74f8fa diff --git a/Externals/easytab/easytab.h b/Externals/easytab/easytab.h new file mode 100644 index 0000000..2d39dd4 --- /dev/null +++ b/Externals/easytab/easytab.h @@ -0,0 +1,943 @@ +/* + EasyTab.h - Single-header multi-platform tablet library + https://github.com/ApoorvaJ/EasyTab + + ---------------------------------------------------------------------------- + USAGE + ---------------------------------------------------------------------------- + 1) Add the following lines in exactly one of your cpp files to compile the + implementation. + + #define EASYTAB_IMPLEMENTATION + #include "easytab.h" + + 2) Call EasyTab_Load() with correct parameters to initialize EasyTab. These + parameters vary per OS, so look at the function declarations or examples + below. Function returns EASYTAB_OK if initialization was successful. + + 3) Call EasyTab_HandleEvent() in your message-handling code. The function + returns EASYTAB_OK if the message was a tablet message, and + EASYTAB_EVENT_NOT_HANDLED otherwise. + + 4) Call EasyTab_Unload() in your shutdown code. + + 5) Once initialized, you can query tablet state using the EasyTab pointer. + e.g.: + + EasyTab->PosX // X position of the pen + EasyTab->PosY // Y position of the pen + EasyTab->Pressure // Pressure of the pen ranging from 0.0f to 1.0f + + For more info, have a look at the EasyTabInfo struct below. + + + * Add -lXi to compiler options to link XInput on Linux. + + ---------------------------------------------------------------------------- + EXAMPLES + ---------------------------------------------------------------------------- + 1) Windows: + + int CALLBACK WinMain(...) + { + HWND Window; + + ... + + if (EasyTab_Load(Window) != EASYTAB_OK) // Load + { + OutputDebugStringA("Tablet init failed\n"); + } + + ... + + // Once you've set up EasyTab loading, unloading and event handling, + // use the EasyTab variable at any point in your program to access + // the tablet state: + // EasyTab->PosX + // EasyTab->PosY + // EasyTab->Pressure + // For more tablet information, look at the EasyTabInfo struct. + + ... + + EasyTab_Unload(); // Unload + } + + LRESULT CALLBACK WindowProc( + HWND Window, + UINT Message, + WPARAM WParam, + LPARAM LParam) + { + if (EasyTab_HandleEvent(Window, Message, LParam, WParam) == EASYTAB_OK) // Event + { + return true; // Tablet event handled + } + + switch (Message) + { + ... + } + } + + + 2) Linux: + + int main(...) + { + Display* Disp; + Window Win; + + ... + + if (EasyTab_Load(Disp, Win) != EASYTAB_OK) // Load + { + printf("Tablet init failed\n"); + } + + ... + + while (XPending(Disp)) // Event loop + { + XEvent Event; + XNextEvent(XlibDisplay, &Event); + + if (EasyTab_HandleEvent(&Event) == EASYTAB_OK) // Event + { + continue; // Tablet event handled + } + + switch (Event.type) + { + ... + } + } + + ... + + // Once you've set up EasyTab loading, unloading and event handling, + // use the EasyTab variable at any point in your program to access + // the tablet state: + // EasyTab->PosX + // EasyTab->PosY + // EasyTab->Pressure + // For more tablet information, look at the EasyTabInfo struct. + + ... + + EasyTab_Unload(); // Unload + } + + ---------------------------------------------------------------------------- + CREDITS + ---------------------------------------------------------------------------- + Apoorva Joshi apoorvaj.io + Sergio Gonzalez s3rg.io + + This library is coded in the spirit of the stb libraries and follows the stb + guidelines. + +*/ + +// TODO: Null checks and warnings for EasyTab +// TODO: Differentiate between stylus and eraser in the API +// TODO: Linux support for relative mode +// TODO: Documentation for relative mode + +// ============================================================================= +// EasyTab header section +// ============================================================================= + +#ifndef EASYTAB_H +#define EASYTAB_H + +#include +#include +#include + +#ifdef __linux__ +#include +#endif // __linux__ + +#ifdef _WIN32 +#include +#endif // _WIN32 + +typedef enum +{ + EASYTAB_OK = 0, + + // Errors + EASYTAB_MEMORY_ERROR = -1, + EASYTAB_X11_ERROR = -2, + EASYTAB_DLL_LOAD_ERROR = -3, + EASYTAB_WACOM_WIN32_ERROR = -4, + EASYTAB_INVALID_FUNCTION_ERROR = -5, + + EASYTAB_EVENT_NOT_HANDLED = -16, +} EasyTabResult; + +typedef enum +{ + EASYTAB_TRACKING_MODE_SYSTEM = 0, + EASYTAB_TRACKING_MODE_RELATIVE = 1, +} EasyTabTrackingMode; + +#ifdef WIN32 +// ----------------------------------------------------------------------------- +// wintab.h +// ----------------------------------------------------------------------------- +#if 1 + + DECLARE_HANDLE(HMGR); + DECLARE_HANDLE(HCTX); + + typedef DWORD WTPKT; + typedef DWORD FIX32; + + // Messages + #if 1 + + #define WT_DEFBASE 0x7FF0 + #define WT_MAXOFFSET 0xF + + #define _WT_PACKET(b) ((b)+0) + #define _WT_CTXOPEN(b) ((b)+1) + #define _WT_CTXCLOSE(b) ((b)+2) + #define _WT_CTXUPDATE(b) ((b)+3) + #define _WT_CTXOVERLAP(b) ((b)+4) + #define _WT_PROXIMITY(b) ((b)+5) + #define _WT_INFOCHANGE(b) ((b)+6) + #define _WT_CSRCHANGE(b) ((b)+7) /* 1.1 */ + #define _WT_PACKETEXT(b) ((b)+8) /* 1.4 */ + #define _WT_MAX(b) ((b)+WT_MAXOFFSET) + + #define WT_PACKET _WT_PACKET(WT_DEFBASE) + #define WT_CTXOPEN _WT_CTXOPEN(WT_DEFBASE) + #define WT_CTXCLOSE _WT_CTXCLOSE(WT_DEFBASE) + #define WT_CTXUPDATE _WT_CTXUPDATE(WT_DEFBASE) + #define WT_CTXOVERLAP _WT_CTXOVERLAP(WT_DEFBASE) + #define WT_PROXIMITY _WT_PROXIMITY(WT_DEFBASE) + #define WT_INFOCHANGE _WT_INFOCHANGE(WT_DEFBASE) + #define WT_CSRCHANGE _WT_CSRCHANGE(WT_DEFBASE) /* 1.1 */ + #define WT_PACKETEXT _WT_PACKETEXT(WT_DEFBASE) /* 1.4 */ + #define WT_MAX _WT_MAX(WT_DEFBASE) + + #endif // Messages + + // Flags + #if 1 + + #define CTX_NAME 1 + #define CTX_OPTIONS 2 + #define CTX_STATUS 3 + #define CTX_LOCKS 4 + #define CTX_MSGBASE 5 + #define CTX_DEVICE 6 + #define CTX_PKTRATE 7 + #define CTX_PKTDATA 8 + #define CTX_PKTMODE 9 + #define CTX_MOVEMASK 10 + #define CTX_BTNDNMASK 11 + #define CTX_BTNUPMASK 12 + #define CTX_INORGX 13 + #define CTX_INORGY 14 + #define CTX_INORGZ 15 + #define CTX_INEXTX 16 + #define CTX_INEXTY 17 + #define CTX_INEXTZ 18 + #define CTX_OUTORGX 19 + #define CTX_OUTORGY 20 + #define CTX_OUTORGZ 21 + #define CTX_OUTEXTX 22 + #define CTX_OUTEXTY 23 + #define CTX_OUTEXTZ 24 + #define CTX_SENSX 25 + #define CTX_SENSY 26 + #define CTX_SENSZ 27 + #define CTX_SYSMODE 28 + #define CTX_SYSORGX 29 + #define CTX_SYSORGY 30 + #define CTX_SYSEXTX 31 + #define CTX_SYSEXTY 32 + #define CTX_SYSSENSX 33 + #define CTX_SYSSENSY 34 + #define CTX_MAX 34 + + // Context option values + #define CXO_SYSTEM 0x0001 + #define CXO_PEN 0x0002 + #define CXO_MESSAGES 0x0004 + #define CXO_MARGIN 0x8000 + #define CXO_MGNINSIDE 0x4000 + #define CXO_CSRMESSAGES 0x0008 /* 1.1 */ + + #define DVC_NAME 1 + #define DVC_HARDWARE 2 + #define DVC_NCSRTYPES 3 + #define DVC_FIRSTCSR 4 + #define DVC_PKTRATE 5 + #define DVC_PKTDATA 6 + #define DVC_PKTMODE 7 + #define DVC_CSRDATA 8 + #define DVC_XMARGIN 9 + #define DVC_YMARGIN 10 + #define DVC_ZMARGIN 11 + #define DVC_X 12 + #define DVC_Y 13 + #define DVC_Z 14 + #define DVC_NPRESSURE 15 + #define DVC_TPRESSURE 16 + #define DVC_ORIENTATION 17 + #define DVC_ROTATION 18 /* 1.1 */ + #define DVC_PNPID 19 /* 1.1 */ + #define DVC_MAX 19 + + #define PK_CONTEXT 0x0001 // reporting context + #define PK_STATUS 0x0002 // status bits + #define PK_TIME 0x0004 // time stamp + #define PK_CHANGED 0x0008 // change bit vector + #define PK_SERIAL_NUMBER 0x0010 // packet serial number + #define PK_CURSOR 0x0020 // reporting cursor + #define PK_BUTTONS 0x0040 // button information + #define PK_X 0x0080 // x axis + #define PK_Y 0x0100 // y axis + #define PK_Z 0x0200 // z axis + #define PK_NORMAL_PRESSURE 0x0400 // normal or tip pressure + #define PK_TANGENT_PRESSURE 0x0800 // tangential or barrel pressure + #define PK_ORIENTATION 0x1000 // orientation info: tilts + #define PK_ROTATION 0x2000 // rotation info; 1.1 + + // constants for use with pktdef.h + #define PKEXT_ABSOLUTE 1 + #define PKEXT_RELATIVE 2 + + #define WTI_DEFCONTEXT 3 + #define WTI_DEFSYSCTX 4 + #define WTI_DEVICES 100 + #define WTI_DDCTXS 400 /* 1.1 */ + #define WTI_DSCTXS 500 /* 1.1 */ + + #endif // Flags + + typedef struct tagAXIS { + LONG axMin; + LONG axMax; + UINT axUnits; + FIX32 axResolution; + } AXIS, *PAXIS, NEAR *NPAXIS, FAR *LPAXIS; + + #define LCNAMELEN 40 + typedef struct tagLOGCONTEXTA { + char lcName[LCNAMELEN]; + UINT lcOptions; + UINT lcStatus; + UINT lcLocks; + UINT lcMsgBase; + UINT lcDevice; + UINT lcPktRate; + WTPKT lcPktData; + WTPKT lcPktMode; + WTPKT lcMoveMask; + DWORD lcBtnDnMask; + DWORD lcBtnUpMask; + LONG lcInOrgX; + LONG lcInOrgY; + LONG lcInOrgZ; + LONG lcInExtX; + LONG lcInExtY; + LONG lcInExtZ; + LONG lcOutOrgX; + LONG lcOutOrgY; + LONG lcOutOrgZ; + LONG lcOutExtX; + LONG lcOutExtY; + LONG lcOutExtZ; + FIX32 lcSensX; + FIX32 lcSensY; + FIX32 lcSensZ; + BOOL lcSysMode; + int lcSysOrgX; + int lcSysOrgY; + int lcSysExtX; + int lcSysExtY; + FIX32 lcSysSensX; + FIX32 lcSysSensY; + } LOGCONTEXTA, *PLOGCONTEXTA, NEAR *NPLOGCONTEXTA, FAR *LPLOGCONTEXTA; + + typedef struct tagEXTENSIONBASE { /* 1.4 */ + HCTX nContext; + UINT nStatus; + DWORD nTime; + UINT nSerialNumber; + } EXTENSIONBASE; + +#endif // wintab.h +// ----------------------------------------------------------------------------- + +#define PACKETDATA PK_X | PK_Y | PK_BUTTONS | PK_NORMAL_PRESSURE +#define PACKETMODE 0 + +// ----------------------------------------------------------------------------- +// pktdef.h +// ----------------------------------------------------------------------------- +#if 1 + + // TODO: Simplify this file if we have a fixed packet format. + // The macros here are too ugly. + + #ifndef PACKETNAME + /* if no packet name prefix */ + #define __PFX(x) x + #define __IFX(x,y) x ## y + #else + /* add prefixes and infixes to packet format names */ + #define __PFX(x) __PFX2(PACKETNAME,x) + #define __PFX2(p,x) __PFX3(p,x) + #define __PFX3(p,x) p ## x + #define __IFX(x,y) __IFX2(x,PACKETNAME,y) + #define __IFX2(x,i,y) __IFX3(x,i,y) + #define __IFX3(x,i,y) x ## i ## y + #endif + + #define __SFX2(x,s) __SFX3(x,s) + #define __SFX3(x,s) x ## s + + #define __TAG __IFX(tag,PACKET) + #define __TYPES __PFX(PACKET), * __IFX(P,PACKET), NEAR * __IFX(NP,PACKET), FAR * __IFX(LP,PACKET) + + #define __TAGE __IFX(tag,PACKETEXT) + #define __TYPESE __PFX(PACKETEXT), * __IFX(P,PACKETEXT), NEAR * __IFX(NP,PACKETEXT), FAR * __IFX(LP,PACKETEXT) + + #define __DATA (__PFX(PACKETDATA)) + #define __MODE (__PFX(PACKETMODE)) + #define __EXT(x) __SFX2(__PFX(PACKET),x) + + + typedef struct __TAG { + #if (__DATA & PK_CONTEXT) + HCTX pkContext; + #endif + #if (__DATA & PK_STATUS) + UINT pkStatus; + #endif + #if (__DATA & PK_TIME) + DWORD pkTime; + #endif + #if (__DATA & PK_CHANGED) + WTPKT pkChanged; + #endif + #if (__DATA & PK_SERIAL_NUMBER) + UINT pkSerialNumber; + #endif + #if (__DATA & PK_CURSOR) + UINT pkCursor; + #endif + #if (__DATA & PK_BUTTONS) + DWORD pkButtons; + #endif + #if (__DATA & PK_X) + LONG pkX; + #endif + #if (__DATA & PK_Y) + LONG pkY; + #endif + #if (__DATA & PK_Z) + LONG pkZ; + #endif + #if (__DATA & PK_NORMAL_PRESSURE) + #if (__MODE & PK_NORMAL_PRESSURE) + /* relative */ + int pkNormalPressure; + #else + /* absolute */ + UINT pkNormalPressure; + #endif + #endif + #if (__DATA & PK_TANGENT_PRESSURE) + #if (__MODE & PK_TANGENT_PRESSURE) + /* relative */ + int pkTangentPressure; + #else + /* absolute */ + UINT pkTangentPressure; + #endif + #endif + #if (__DATA & PK_ORIENTATION) + ORIENTATION pkOrientation; + #endif + #if (__DATA & PK_ROTATION) + ROTATION pkRotation; /* 1.1 */ + #endif + + #ifndef NOWTEXTENSIONS + /* extensions begin here. */ + #if (__EXT(FKEYS) == PKEXT_RELATIVE) || (__EXT(FKEYS) == PKEXT_ABSOLUTE) + UINT pkFKeys; + #endif + #if (__EXT(TILT) == PKEXT_RELATIVE) || (__EXT(TILT) == PKEXT_ABSOLUTE) + TILT pkTilt; + #endif + #endif + + } __TYPES; + + #ifndef NOWTEXTENSIONS + typedef struct __TAGE { + EXTENSIONBASE pkBase; + + #if (__EXT(EXPKEYS) == PKEXT_RELATIVE) || (__EXT(EXPKEYS) == PKEXT_ABSOLUTE) + EXPKEYSDATA pkExpKeys; /* 1.4 */ + #endif + #if (__EXT(TOUCHSTRIP) == PKEXT_RELATIVE) || (__EXT(TOUCHSTRIP) == PKEXT_ABSOLUTE) + SLIDERDATA pkTouchStrip; /* 1.4 */ + #endif + #if (__EXT(TOUCHRING) == PKEXT_RELATIVE) || (__EXT(TOUCHRING) == PKEXT_ABSOLUTE) + SLIDERDATA pkTouchRing; /* 1.4 */ + #endif + + } __TYPESE; + #endif + + #undef PACKETNAME + #undef __TAG + #undef __TAGE + #undef __TAG2 + #undef __TYPES + #undef __TYPESE + #undef __TYPES2 + #undef __DATA + #undef __MODE + #undef __PFX + #undef __PFX2 + #undef __PFX3 + #undef __IFX + #undef __IFX2 + #undef __IFX3 + #undef __SFX2 + #undef __SFX3 + +#endif // pktdef.h +// ----------------------------------------------------------------------------- + +typedef UINT (WINAPI * WTINFOA) (UINT, UINT, LPVOID); +typedef HCTX (WINAPI * WTOPENA) (HWND, LPLOGCONTEXTA, BOOL); +typedef BOOL (WINAPI * WTGETA) (HCTX, LPLOGCONTEXTA); +typedef BOOL (WINAPI * WTSETA) (HCTX, LPLOGCONTEXTA); +typedef BOOL (WINAPI * WTCLOSE) (HCTX); +typedef BOOL (WINAPI * WTENABLE) (HCTX, BOOL); +typedef BOOL (WINAPI * WTPACKET) (HCTX, UINT, LPVOID); +typedef BOOL (WINAPI * WTOVERLAP) (HCTX, BOOL); +typedef BOOL (WINAPI * WTSAVE) (HCTX, LPVOID); +typedef BOOL (WINAPI * WTCONFIG) (HCTX, HWND); +typedef HCTX (WINAPI * WTRESTORE) (HWND, LPVOID, BOOL); +typedef BOOL (WINAPI * WTEXTSET) (HCTX, UINT, LPVOID); +typedef BOOL (WINAPI * WTEXTGET) (HCTX, UINT, LPVOID); +typedef BOOL (WINAPI * WTQUEUESIZESET) (HCTX, int); +typedef int (WINAPI * WTDATAPEEK) (HCTX, UINT, UINT, int, LPVOID, LPINT); +typedef int (WINAPI * WTPACKETSGET) (HCTX, int, LPVOID); +typedef HMGR (WINAPI * WTMGROPEN) (HWND, UINT); +typedef BOOL (WINAPI * WTMGRCLOSE) (HMGR); +typedef HCTX (WINAPI * WTMGRDEFCONTEXT) (HMGR, BOOL); +typedef HCTX (WINAPI * WTMGRDEFCONTEXTEX) (HMGR, UINT, BOOL); + +#endif // WIN32 + +// ----------------------------------------------------------------------------- +// Enums +// ----------------------------------------------------------------------------- + +/* + Use this enum in conjunction with EasyTab->Buttons to check for tablet button + presses. + e.g. To check for lower pen button press, use: + + if (EasyTab->Buttons & EasyTab_Buttons_Pen_Lower) + { + // Lower button is pressed + } +*/ +enum EasyTab_Buttons_ +{ + EasyTab_Buttons_Pen_Touch = 1 << 0, // Pen is touching tablet + EasyTab_Buttons_Pen_Lower = 1 << 1, // Lower pen button is pressed + EasyTab_Buttons_Pen_Upper = 1 << 2, // Upper pen button is pressed +}; + +// ----------------------------------------------------------------------------- +// Structs +// ----------------------------------------------------------------------------- +typedef struct +{ + int32_t PosX, PosY; + float Pressure; // Range: 0.0f to 1.0f + int32_t Buttons; // Bit field. Use with the EasyTab_Buttons_ enum. + + int32_t RangeX, RangeY; + int32_t MaxPressure; + +#ifdef __linux__ + XDevice* Device; + uint32_t MotionType; + XEventClass EventClasses[1024]; + uint32_t NumEventClasses; +#endif // __linux__ + +#ifdef WIN32 + HINSTANCE Dll; + HCTX Context; + + WTINFOA WTInfoA; + WTOPENA WTOpenA; + WTGETA WTGetA; + WTSETA WTSetA; + WTCLOSE WTClose; + WTPACKET WTPacket; + WTENABLE WTEnable; + WTOVERLAP WTOverlap; + WTSAVE WTSave; + WTCONFIG WTConfig; + WTRESTORE WTRestore; + WTEXTSET WTExtSet; + WTEXTGET WTExtGet; + WTQUEUESIZESET WTQueueSizeSet; + WTDATAPEEK WTDataPeek; + WTPACKETSGET WTPacketsGet; + WTMGROPEN WTMgrOpen; + WTMGRCLOSE WTMgrClose; + WTMGRDEFCONTEXT WTMgrDefContext; + WTMGRDEFCONTEXTEX WTMgrDefContextEx; +#endif // WIN32 +} EasyTabInfo; + +extern EasyTabInfo* EasyTab; + +// ----------------------------------------------------------------------------- +// Function declarations +// ----------------------------------------------------------------------------- +#if defined(__linux__) + + EasyTabResult EasyTab_Load(Display* Disp, Window Win); + EasyTabResult EasyTab_HandleEvent(XEvent* Event); + void EasyTab_Unload(Display* Disp); + +#elif defined(_WIN32) + + EasyTabResult EasyTab_Load(HWND Window); + EasyTabResult EasyTab_Load_Ex(HWND Window, + EasyTabTrackingMode Mode, + float RelativeModeSensitivity, + int32_t MoveCursor); + EasyTabResult EasyTab_HandleEvent(HWND Window, + UINT Message, + LPARAM LParam, + WPARAM WParam); + void EasyTab_Unload(); + +#else + + // Save some trouble when porting. + #error "Unsupported platform." + +#endif // __linux__ _WIN32 +// ----------------------------------------------------------------------------- + +#endif // EASYTAB_H + + + +// ============================================================================= +// EasyTab implementation section +// ============================================================================= + +#ifdef EASYTAB_IMPLEMENTATION + +EasyTabInfo* EasyTab; + +// ----------------------------------------------------------------------------- +// Linux implementation +// ----------------------------------------------------------------------------- +#ifdef __linux__ + +EasyTabResult EasyTab_Load(Display* Disp, Window Win) +{ + EasyTab = (EasyTabInfo*)calloc(1, sizeof(EasyTabInfo)); // We want init to zero, hence calloc. + if (!EasyTab) { return EASYTAB_MEMORY_ERROR; } + + int32_t Count; + XDeviceInfoPtr Devices = (XDeviceInfoPtr)XListInputDevices(Disp, &Count); + if (!Devices) { return EASYTAB_X11_ERROR; } + + for (int32_t i = 0; i < Count; i++) + { + if (!strstr(Devices[i].name, "stylus") && + !strstr(Devices[i].name, "eraser")) { continue; } + + EasyTab->Device = XOpenDevice(Disp, Devices[i].id); + XAnyClassPtr ClassPtr = Devices[i].inputclassinfo; + + for (int32_t j = 0; j < Devices[i].num_classes; j++) + { +#if defined(__cplusplus) + switch (ClassPtr->c_class) +#else + switch (ClassPtr->class) +#endif + { + case ValuatorClass: + { + XValuatorInfo *Info = (XValuatorInfo *)ClassPtr; + // X + if (Info->num_axes > 0) + { + int32_t min = Info->axes[0].min_value; + EasyTab->RangeX = Info->axes[0].max_value; + //printf("Max/min x values: %d, %d\n", min, EasyTab->RangeX); // TODO: Platform-print macro + } + + // Y + if (Info->num_axes > 1) + { + int32_t min = Info->axes[1].min_value; + EasyTab->RangeY = Info->axes[1].max_value; + //printf("Max/min y values: %d, %d\n", min, EasyTab->RangeY); + } + + // Pressure + if (Info->num_axes > 2) + { + int32_t min = Info->axes[2].min_value; + EasyTab->MaxPressure = Info->axes[2].max_value; + //printf("Max/min pressure values: %d, %d\n", min, EasyTab->MaxPressure); + } + + XEventClass EventClass; + DeviceMotionNotify(EasyTab->Device, EasyTab->MotionType, EventClass); + if (EventClass) + { + EasyTab->EventClasses[EasyTab->NumEventClasses] = EventClass; + EasyTab->NumEventClasses++; + } + } break; + } + + ClassPtr = (XAnyClassPtr) ((uint8_t*)ClassPtr + ClassPtr->length); // TODO: Access this as an array to avoid pointer arithmetic? + } + + XSelectExtensionEvent(Disp, Win, EasyTab->EventClasses, EasyTab->NumEventClasses); + } + + XFreeDeviceList(Devices); + + if (EasyTab->Device != 0) { return EASYTAB_OK; } + else { return EASYTAB_X11_ERROR; } +} + +EasyTabResult EasyTab_HandleEvent(XEvent* Event) +{ + if (Event->type != EasyTab->MotionType) { return EASYTAB_EVENT_NOT_HANDLED; } + + XDeviceMotionEvent* MotionEvent = (XDeviceMotionEvent*)(Event); + EasyTab->PosX = MotionEvent->x; + EasyTab->PosY = MotionEvent->y; + EasyTab->Pressure = (float)MotionEvent->axis_data[2] / (float)EasyTab->MaxPressure; + return EASYTAB_OK; +} + +void EasyTab_Unload(Display* Disp) +{ + XCloseDevice(Disp, EasyTab->Device); + free(EasyTab); + EasyTab = NULL; +} + +#endif // __linux__ + + +// ----------------------------------------------------------------------------- +// Windows implementation +// ----------------------------------------------------------------------------- +#ifdef WIN32 + +#define GETPROCADDRESS(type, func) \ + EasyTab->func = (type)GetProcAddress(EasyTab->Dll, #func); \ + if (!EasyTab->func) \ + { \ + OutputDebugStringA("Function " #func " not found in Wintab32.dll.\n"); \ + return EASYTAB_INVALID_FUNCTION_ERROR; \ + } + + +EasyTabResult EasyTab_Load(HWND Window) +{ + return EasyTab_Load_Ex(Window, EASYTAB_TRACKING_MODE_SYSTEM, 0, 1); +} + +EasyTabResult EasyTab_Load_Ex(HWND Window, + EasyTabTrackingMode TrackingMode, + float RelativeModeSensitivity, + int32_t MoveCursor) +{ + EasyTab = (EasyTabInfo*)calloc(1, sizeof(EasyTabInfo)); // We want init to zero, hence calloc. + if (!EasyTab) { return EASYTAB_MEMORY_ERROR; } + + // Load Wintab DLL and get function addresses + { + EasyTab->Dll = LoadLibraryA("Wintab32.dll"); + if (!EasyTab->Dll) + { + OutputDebugStringA("Wintab32.dll not found.\n"); + return EASYTAB_DLL_LOAD_ERROR; + } + + GETPROCADDRESS(WTINFOA , WTInfoA); + GETPROCADDRESS(WTOPENA , WTOpenA); + GETPROCADDRESS(WTGETA , WTGetA); + GETPROCADDRESS(WTSETA , WTSetA); + GETPROCADDRESS(WTCLOSE , WTClose); + GETPROCADDRESS(WTPACKET , WTPacket); + GETPROCADDRESS(WTENABLE , WTEnable); + GETPROCADDRESS(WTOVERLAP , WTOverlap); + GETPROCADDRESS(WTSAVE , WTSave); + GETPROCADDRESS(WTCONFIG , WTConfig); + GETPROCADDRESS(WTRESTORE , WTRestore); + GETPROCADDRESS(WTEXTSET , WTExtSet); + GETPROCADDRESS(WTEXTGET , WTExtGet); + GETPROCADDRESS(WTQUEUESIZESET , WTQueueSizeSet); + GETPROCADDRESS(WTDATAPEEK , WTDataPeek); + GETPROCADDRESS(WTPACKETSGET , WTPacketsGet); + GETPROCADDRESS(WTMGROPEN , WTMgrOpen); + GETPROCADDRESS(WTMGRCLOSE , WTMgrClose); + GETPROCADDRESS(WTMGRDEFCONTEXT , WTMgrDefContext); + GETPROCADDRESS(WTMGRDEFCONTEXTEX , WTMgrDefContextEx); + } + + if (!EasyTab->WTInfoA(0, 0, NULL)) + { + OutputDebugStringA("Wintab services not available.\n"); + return EASYTAB_WACOM_WIN32_ERROR; + } + + // Open context + { + LOGCONTEXTA LogContext = {0}; + AXIS RangeX = {0}; + AXIS RangeY = {0}; + AXIS Pressure = {0}; + + EasyTab->WTInfoA(WTI_DDCTXS, 0, &LogContext); + EasyTab->WTInfoA(WTI_DEVICES, DVC_X, &RangeX); + EasyTab->WTInfoA(WTI_DEVICES, DVC_Y, &RangeY); + EasyTab->WTInfoA(WTI_DEVICES, DVC_NPRESSURE, &Pressure); + + LogContext.lcPktData = PACKETDATA; // ?? + LogContext.lcOptions |= CXO_MESSAGES; + if (MoveCursor) { LogContext.lcOptions |= CXO_SYSTEM; } + LogContext.lcPktMode = PACKETMODE; + LogContext.lcMoveMask = PACKETDATA; + LogContext.lcBtnUpMask = LogContext.lcBtnDnMask; + + LogContext.lcOutOrgX = 0; + LogContext.lcOutOrgY = 0; + LogContext.lcOutExtX = GetSystemMetrics(SM_CXSCREEN); + LogContext.lcOutExtY = -GetSystemMetrics(SM_CYSCREEN); + + LogContext.lcSysOrgX = 0; + LogContext.lcSysOrgY = 0; + LogContext.lcSysExtX = GetSystemMetrics(SM_CXSCREEN); + LogContext.lcSysExtY = GetSystemMetrics(SM_CYSCREEN); + + if (TrackingMode == EASYTAB_TRACKING_MODE_RELATIVE) + { + LogContext.lcPktMode |= PK_X | PK_Y; // TODO: Should this be included in the + // PACKETMODE macro define up top? + LogContext.lcSysMode = 1; + + if (RelativeModeSensitivity > 1.0f) + { + RelativeModeSensitivity = 1.0f; + } + else if (RelativeModeSensitivity < 0.0f) + { + RelativeModeSensitivity = 0.0f; + } + + // Wintab expects sensitivity to be a 32-bit fixed point number + // with the radix point between the two words. Thus, the type + // contains 16 bits to the left of the radix point and 16 bits to + // the right of it. + // + // 0x10000 Hex + // = 65,536 Decimal + // = 0000 0000 0000 0001 . 0000 0000 0000 0000 Binary + // = 1.0 Fixed Point + uint32_t Sensitivity = (uint32_t)(0x10000 * RelativeModeSensitivity); + + if (MoveCursor) + { + LogContext.lcSysSensX = LogContext.lcSysSensY = Sensitivity; + } + else + { + LogContext.lcSensX = LogContext.lcSensY = Sensitivity; + } + } + + EasyTab->Context = EasyTab->WTOpenA(Window, &LogContext, TRUE); + + if (!EasyTab->Context) + { + OutputDebugStringA("Wintab context couldn't be opened.\n"); + return EASYTAB_WACOM_WIN32_ERROR; + } + + // Get tablet capabilites + { + EasyTab->MaxPressure = Pressure.axMax; + EasyTab->RangeX = RangeX.axMax; + EasyTab->RangeY = RangeY.axMax; + } + } + + return EASYTAB_OK; +} + +#undef GETPROCADDRESS + +EasyTabResult EasyTab_HandleEvent(HWND Window, UINT Message, LPARAM LParam, WPARAM WParam) +{ + PACKET Packet = { 0 }; + + if (Message == WT_PACKET && + (HCTX)LParam == EasyTab->Context && + EasyTab->WTPacket(EasyTab->Context, (UINT)WParam, &Packet)) + { + POINT Point = { 0 }; + Point.x = Packet.pkX; + Point.y = Packet.pkY; + ScreenToClient(Window, &Point); + EasyTab->PosX = Point.x; + EasyTab->PosY = Point.y; + + EasyTab->Pressure = (float)Packet.pkNormalPressure / (float)EasyTab->MaxPressure; + EasyTab->Buttons = Packet.pkButtons; + return EASYTAB_OK; + } + + return EASYTAB_EVENT_NOT_HANDLED; +} + +void EasyTab_Unload() +{ + if (EasyTab->Context) { EasyTab->WTClose(EasyTab->Context); } + if (EasyTab->Dll) { FreeLibrary(EasyTab->Dll); } + free(EasyTab); + EasyTab = NULL; +} + +#endif // WIN32 +// ----------------------------------------------------------------------------- + + +#endif // EASYTAB_IMPLEMENTATION diff --git a/Externals/glfw b/Externals/glfw new file mode 160000 index 0000000..3eaf125 --- /dev/null +++ b/Externals/glfw @@ -0,0 +1 @@ +Subproject commit 3eaf1255b29fdf5c2895856c7be7d7185ef2b241 diff --git a/Externals/imageIO/stb_image.h b/Externals/imageIO/stb_image.h new file mode 100644 index 0000000..5e807a0 --- /dev/null +++ b/Externals/imageIO/stb_image.h @@ -0,0 +1,7987 @@ +/* stb_image - v2.28 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.28 (2023-01-29) many error fixes, security errors, just tons of stuff + 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes + 2.26 (2020-07-13) many minor fixes + 2.25 (2020-02-02) fix warnings + 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically + 2.23 (2019-08-11) fix clang static analysis warning + 2.22 (2019-03-04) gif fixes, fix warnings + 2.21 (2019-02-25) fix typo in comment + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine Simon Breuss (16-bit PNM) + John-Mark Allen + Carmelo J Fdez-Aguera + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Blazej Dariusz Roszkowski + Phil Jordan Dave Moore Roy Eltham + Hayaki Saito Nathan Reed Won Chun + Luke Graham Johan Duparc Nick Verigakis the Horde3D community + Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Eugene Golushkov Laurent Gomila Cort Stratton github:snagar + Aruelien Pocheville Sergio Gonzalez Thibault Reuille github:Zelex + Cass Everitt Ryamond Barbiero github:grim210 + Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw + Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus + Josh Tobin Neil Bickford Matthew Gregan github:poppolopoppo + Julian Raschke Gregory Mullen Christian Floisand github:darealshinji + Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007 + Brad Weinberger Matvey Cherevko github:mosra + Luca Sas Alexander Veselov Zack Middleton [reserved] + Ryan C. Gordon [reserved] [reserved] + DO NOT ADD YOUR NAME HERE + + Jacko Dirks + + To add your name to the credits, pick a random blank space in the middle and fill it. + 80% of merge conflicts on stb PRs are due to people adding their name at the end + of the credits. +*/ + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data); +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// To query the width, height and component count of an image without having to +// decode the full file, you can use the stbi_info family of functions: +// +// int x,y,n,ok; +// ok = stbi_info(filename, &x, &y, &n); +// // returns ok=1 and sets x, y, n if image is a supported format, +// // 0 otherwise. +// +// Note that stb_image pervasively uses ints in its public API for sizes, +// including sizes of memory buffers. This is now part of the API and thus +// hard to change without causing breakage. As a result, the various image +// loaders all have certain limits on image size; these differ somewhat +// by format but generally boil down to either just under 2GB or just under +// 1GB. When the decoded image would be larger than this, stb_image decoding +// will fail. +// +// Additionally, stb_image will reject image files that have any of their +// dimensions set to a larger value than the configurable STBI_MAX_DIMENSIONS, +// which defaults to 2**24 = 16777216 pixels. Due to the above memory limit, +// the only way to have an image with such dimensions load correctly +// is for it to have a rather extreme aspect ratio. Either way, the +// assumption here is that such larger images are likely to be malformed +// or malicious. If you do need to load an image with individual dimensions +// larger than that, and it still fits in the overall size limit, you can +// #define STBI_MAX_DIMENSIONS on your own to be something larger. +// +// =========================================================================== +// +// UNICODE: +// +// If compiling for Windows and you wish to use Unicode filenames, compile +// with +// #define STBI_WINDOWS_UTF8 +// and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert +// Windows wchar_t filenames to utf8. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy-to-use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// provide more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image supports loading HDR images in general, and currently the Radiance +// .HDR file format specifically. You can still load any file through the existing +// interface; if you attempt to load an HDR file, it will be automatically remapped +// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// We optionally support converting iPhone-formatted PNGs (which store +// premultiplied BGRA) back to RGB, even though they're internally encoded +// differently. To enable this conversion, call +// stbi_convert_iphone_png_to_rgb(1). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// +// - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater +// than that size (in either width or height) without further processing. +// This is to let programs in the wild set an upper bound to prevent +// denial-of-service attacks on untrusted data, as one could generate a +// valid image of gigantic dimensions and force stb_image to allocate a +// huge block of memory and spend disproportionate time decoding it. By +// default this is set to (1 << 24), which is 16777216, but that's still +// very big. + +#ifndef STBI_NO_STDIO +#include +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +#include +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef STBIDEF +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +#endif + +#ifdef STBI_WINDOWS_UTF8 +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// on most compilers (and ALL modern mainstream compilers) this is threadsafe +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit (char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// as above, but only applies to images loaded on the thread that calls the function +// this function is only available if your compiler supports thread-local variables; +// calling it will fail to link if your compiler doesn't +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply); +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert); +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include +#include // ptrdiff_t on osx +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + +#ifdef __cplusplus +#define STBI_EXTERN extern "C" +#else +#define STBI_EXTERN extern +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + +#ifndef STBI_NO_THREAD_LOCALS + #if defined(__cplusplus) && __cplusplus >= 201103L + #define STBI_THREAD_LOCAL thread_local + #elif defined(__GNUC__) && __GNUC__ < 5 + #define STBI_THREAD_LOCAL __thread + #elif defined(_MSC_VER) + #define STBI_THREAD_LOCAL __declspec(thread) + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) + #define STBI_THREAD_LOCAL _Thread_local + #endif + + #ifndef STBI_THREAD_LOCAL + #if defined(__GNUC__) + #define STBI_THREAD_LOCAL __thread + #endif + #endif +#endif + +#if defined(_MSC_VER) || defined(__SYMBIAN32__) +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (-(y) & 31))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#endif + +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif + +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +#ifdef _MSC_VER +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name +#else +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +#ifndef STBI_MAX_DIMENSIONS +#define STBI_MAX_DIMENSIONS (1 << 24) +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + int callback_already_read; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + int ch; + fseek((FILE*) user, n, SEEK_CUR); + ch = fgetc((FILE*) user); /* have to read a byte to reset feof()'s flag */ + if (ch != EOF) { + ungetc(ch, (FILE *) user); /* push byte back onto stream if valid. */ + } +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user) || ferror((FILE *) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__pnm_is16(stbi__context *s); +#endif + +static +#ifdef STBI_THREAD_LOCAL +STBI_THREAD_LOCAL +#endif +const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +#ifndef STBI_NO_FAILURE_STRINGS +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} +#endif + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} +#endif + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} +#endif + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} +#endif + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} +#endif + +// returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow. +static int stbi__addints_valid(int a, int b) +{ + if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + return a <= INT_MAX - b; +} + +// returns 1 if the product of two signed shorts is valid, 0 on overflow. +static int stbi__mul2shorts_valid(short a, short b) +{ + if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX/b; // product is positive, so similar to mul2sizes_valid + if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + return a >= SHRT_MIN / b; +} + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load_global = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_global = flag_true_if_should_flip; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +#else +static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; + +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_local = flag_true_if_should_flip; + stbi__vertically_flip_on_load_set = 1; +} + +#define stbi__vertically_flip_on_load (stbi__vertically_flip_on_load_set \ + ? stbi__vertically_flip_on_load_local \ + : stbi__vertically_flip_on_load_global) +#endif // STBI_THREAD_LOCAL + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + // test the formats with a very explicit header first (at least a FOURCC + // or distinctive magic number first) + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #else + STBI_NOTUSED(bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + + // then the formats that can end up attempting to load with just 1 or 2 + // bytes matching expectations; these are prone to false positives, so + // try them later + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h>>1); row++) { + stbi_uc *row0 = bytes + row*bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +#ifndef STBI_NO_GIF +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} +#endif + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 8) { + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 16) { + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *) result; +} + +#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); +#endif + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s,f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + s->callback_already_read += (int) (s->img_buffer - s->img_buffer_original); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +// nothing +#else +static void stbi__skip(stbi__context *s, int n) +{ + if (n == 0) return; // already there! + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +// nothing +#else +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} +#endif + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + z += (stbi__uint32)stbi__get16le(s) << 16; + return z; +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*) stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + } + if (n < comp) { + for (i=0; i < x*y; ++i) { + output[i*comp + n] = data[i*comp + n]/255.0f; + } + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) { + for (j=0; j < count[i]; ++j) { + h->size[k++] = (stbi_uc) (i+1); + if(k >= 257) return stbi__err("bad size list","Corrupt JPEG"); + } + } + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + if(c < 0 || c >= 256) // symbol id out of bounds! + return -1; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & (sgn - 1)); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta","Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short) (dc * (1 << j->succ_low)); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * (1 << shift)); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * (1 << shift)); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0]*4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + if(n > 256) return stbi__err("bad DHT header","Corrupt JPEG"); // Loop over i < n would write past end of values! + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios + // and I've never seen a non-corrupted JPEG file actually use them + for (i=0; i < s->img_n; ++i) { + if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H","Corrupt JPEG"); + if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V","Corrupt JPEG"); + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j) +{ + // some JPEGs have junk at end, skip over it but if we find what looks + // like a valid marker, resume there + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + while (x == 255) { // might be a marker + if (stbi__at_eof(j->s)) return STBI__MARKER_none; + x = stbi__get8(j->s); + if (x != 0x00 && x != 0xff) { + // not a stuffed zero or lead-in to another marker, looks + // like an actual marker, return it + return x; + } + // stuffed zero has x=0 now which ends the loop, meaning we go + // back to regular scan loop. + // repeated 0xff keeps trying to read the next byte of the marker. + } + } + return STBI__MARKER_none; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + j->marker = stbi__skip_jpeg_junk_at_end(j); + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + m = stbi__get_marker(j); + if (STBI__RESTART(m)) + m = stbi__get_marker(j); + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + m = stbi__get_marker(j); + } else { + if (!stbi__process_marker(j, m)) return 1; + m = stbi__get_marker(j); + } + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // nothing to do if no components requested; check this now to avoid + // accessing uninitialized coutput[0] later + if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__errpuc("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + if (!j) return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[STBI__ZNSYMS]; + stbi__uint16 value[STBI__ZNSYMS]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static int stbi__zeof(stbi__zbuf *z) +{ + return (z->zbuffer >= z->zbuffer_end); +} + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + return stbi__zeof(z) ? 0 : *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + if (z->code_buffer >= (1U << z->num_bits)) { + z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + return; + } + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s >= 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! + if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) { + if (stbi__zeof(a)) { + return -1; /* report error for unexpected end of data. */ + } + stbi__fill_bits(a); + } + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + unsigned int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (unsigned int) (z->zout - z->zout_start); + limit = old_limit = (unsigned) (z->zout_end - z->zout_start); + if (UINT_MAX - cur < (unsigned) n) return stbi__err("outofmem", "Out of memory"); + while (cur + n > limit) { + if(limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); + limit *= 2; + } + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static const int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static const int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + if (z >= 286) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0 || z >= 30) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) { + c = stbi__zreceive(a,3)+3; + } else if (c == 18) { + c = stbi__zreceive(a,7)+11; + } else { + return stbi__err("bad codelengths", "Corrupt PNG"); + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + if (a->num_bits < 0) return stbi__err("zlib corrupt","Corrupt PNG"); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if (stbi__zeof(a)) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , STBI__ZNSYMS)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + if (img_width_bytes > x) return stbi__err("invalid width","Corrupt PNG"); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + if (!final) return stbi__err("outofmem", "Out of memory"); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load_global = 0; +static int stbi__de_iphone_flag_global = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_global = flag_true_if_should_convert; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +#define stbi__de_iphone_flag stbi__de_iphone_flag_global +#else +static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; + +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_set = 1; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_local = flag_true_if_should_convert; + stbi__de_iphone_flag_set = 1; +} + +#define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ + ? stbi__unpremultiply_on_load_local \ + : stbi__unpremultiply_on_load_global) +#define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ + ? stbi__de_iphone_flag_local \ + : stbi__de_iphone_flag_global) +#endif // STBI_THREAD_LOCAL + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = ( t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]={0}; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); + s->img_y = stbi__get32be(s); + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + } + // even with SCAN_header, have to scan to see if we have a tRNS + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. + if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { + // header scan definitely stops at first IDAT + if (pal_img_n) + s->img_n = pal_img_n; + return 1; + } + if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); z->expanded = NULL; + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth <= 8) + ri->bits_per_channel = 8; + else if (p->depth == 16) + ri->bits_per_channel = 16; + else + return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) { n += 16; z >>= 16; } + if (z >= 0x00100) { n += 8; z >>= 8; } + if (z >= 0x00010) { n += 4; z >>= 4; } + if (z >= 0x00004) { n += 2; z >>= 2; } + if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(unsigned int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, + 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0,0,1,0,2,4,6,0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v < 256); + v >>= (8-bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; + int extra_read; +} stbi__bmp_data; + +static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) +{ + // BI_BITFIELDS specifies masks explicitly, don't override + if (compress == 3) + return 1; + + if (compress == 0) { + if (info->bpp == 16) { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } else if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + // otherwise, use defaults, which is all-0 + info->mr = info->mg = info->mb = info->ma = 0; + } + return 1; + } + return 0; // error +} + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + info->extra_read = 14; + + if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + stbi__bmp_set_mask_defaults(info, compress); + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->extra_read += 12; + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + // V4/V5 header + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + stbi__bmp_set_mask_defaults(info, compress); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - info.extra_read - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - info.extra_read - info.hsz) >> 2; + } + if (psize == 0) { + // accept some number of extra bytes after the header, but if the offset points either to before + // the header ends or implies a large amount of extra data, reject the file as malformed + int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); + int header_limit = 1024; // max we actually read is below 256 bytes currently. + int extra_data_limit = 256*4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. + if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { + return stbi__errpuc("bad header", "Corrupt BMP"); + } + // we established that bytes_read_so_far is positive and sensible. + // the first half of this test rejects offsets that are either too small positives, or + // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn + // ensures the number computed in the second half of the test can't overflow. + if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { + return stbi__errpuc("bad offset", "Corrupt BMP"); + } else { + stbi__skip(s, info.offset - bytes_read_so_far); + } + } + + if (info.bpp == 24 && ma == 0xff000000) + s->img_n = 3; + else + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + if (info.bpp == 1) { + for (j=0; j < (int) s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i=0; i < (int) s->img_x; ++i) { + int color = (v>>bit_offset)&0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + if((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - info.extra_read - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i]; p1[i] = p2[i]; p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // fallthrough + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + STBI_NOTUSED(tga_x_origin); // @TODO + STBI_NOTUSED(tga_y_origin); // @TODO + + if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + if (tga_palette_len == 0) { /* you have to have at least one entry! */ + STBI_FREE(tga_data); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + STBI_NOTUSED(tga_palette_start); + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) stbi__get16be(s); + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; ytype) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;xchannel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; ichannel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;ichannel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;ichannel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + + if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + if (!result) return stbi__errpuc("outofmem", "Out of memory"); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!g) return stbi__err("outofmem", "Out of memory"); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", "Corrupt GIF"); + } + + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + STBI_NOTUSED(req_comp); + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + return stbi__errpuc("too large", "GIF image is too large"); + pcount = g->w * g->h; + g->out = (stbi_uc *) stbi__malloc(4 * pcount); + g->background = (stbi_uc *) stbi__malloc(4 * pcount); + g->history = (stbi_uc *) stbi__malloc(pcount); + if (!g->out || !g->background || !g->history) + return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "transparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to the color that was there the previous frame. + memset(g->out, 0x00, 4 * pcount); + memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) + memset(g->history, 0x00, pcount); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispose of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy( g->background, g->out, 4 * g->w * g->h ); + } + + // clear my history; + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + // if the width of the specified rectangle is 0, that means + // we may not see *any* pixels or the image is malformed; + // to make sure this is caught, move the current y down to + // max_y (which is what out_gif_code checks). + if (w == 0) + g->cur_y = g->max_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (!o) return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays) +{ + STBI_FREE(g->out); + STBI_FREE(g->history); + STBI_FREE(g->background); + + if (out) STBI_FREE(out); + if (delays && *delays) STBI_FREE(*delays); + return stbi__errpuc("outofmem", "Out of memory"); +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + int out_size = 0; + int delays_size = 0; + + STBI_NOTUSED(out_size); + STBI_NOTUSED(delays_size); + + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride ); + if (!tmp) + return stbi__load_gif_main_outofmem(&g, out, delays); + else { + out = (stbi_uc*) tmp; + out_size = layers * stride; + } + + if (delays) { + int *new_delays = (int*) STBI_REALLOC_SIZED( *delays, delays_size, sizeof(int) * layers ); + if (!new_delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + *delays = new_delays; + delays_size = layers * sizeof(int); + } + } else { + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (!out) + return stbi__load_gif_main_outofmem(&g, out, delays); + out_size = layers * stride; + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); + if (!*delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + delays_size = layers * sizeof(int); + } + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + STBI_NOTUSED(ri); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } else if (g.out) { + // if there was an error and we allocated an image buffer, free it! + STBI_FREE(g.out); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + if (height > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + if (width > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + if (p == NULL) { + stbi__rewind( s ); + return 0; + } + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) { + if (info.bpp == 24 && info.ma == 0xff000000) + *comp = 3; + else + *comp = info.ma ? 4 : 3; + } + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + STBI_NOTUSED(stbi__get32be(s)); + STBI_NOTUSED(stbi__get32be(s)); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind( s ); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + ri->bits_per_channel = stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); + if (ri->bits_per_channel == 0) + return 0; + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { + STBI_FREE(out); + return stbi__errpuc("bad PNM", "PNM file truncated"); + } + + if (req_comp && req_comp != s->img_n) { + if (ri->bits_per_channel == 16) { + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, s->img_n, req_comp, s->img_x, s->img_y); + } else { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + } + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + if((value > 214748364) || (value == 214748364 && *c > '7')) + return stbi__err("integer parse overflow", "Parsing an integer in the PPM header overflowed a 32-bit int"); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + if(*x == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + if (*y == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + if (maxv > 65535) + return stbi__err("max value > 65535", "PPM image supports only 8-bit and 16-bit images"); + else if (maxv > 255) + return 16; + else + return 8; +} + +static int stbi__pnm_is16(stbi__context *s) +{ + if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) + return 1; + return 0; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ + #ifndef STBI_NO_PNG + if (stbi__png_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_is16(s)) return 1; + #endif + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__is_16_main(&s); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/Externals/imageIO/stb_image_write.h b/Externals/imageIO/stb_image_write.h new file mode 100644 index 0000000..e4b32ed --- /dev/null +++ b/Externals/imageIO/stb_image_write.h @@ -0,0 +1,1724 @@ +/* stb_image_write - v1.16 - public domain - http://nothings.org/stb + writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + +ABOUT: + + This header file is a library for writing images to C stdio or a callback. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation; though providing a custom + zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. + This library is designed for source code compactness and simplicity, + not optimal image file size or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can #define STBIW_MEMMOVE() to replace memmove() + You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function + for PNG compression (instead of the builtin one), it must have the following signature: + unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); + The returned data will be freed with STBIW_FREE() (free() by default), + so it must be heap allocated with STBIW_MALLOC() (malloc() by default), + +UNICODE: + + If compiling for Windows and you wish to use Unicode filenames, compile + with + #define STBIW_WINDOWS_UTF8 + and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert + Windows wchar_t filenames to utf8. + +USAGE: + + There are five functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically + + There are also five equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can configure it with these global variables: + int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE + int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression + int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode + + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + PNG allows you to set the deflate compression level by setting the global + variable 'stbi_write_png_compression_level' (it defaults to 8). + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + + JPEG does ignore alpha channels in input data; quality is between 1 and 100. + Higher quality looks better but results in a bigger image. + JPEG baseline (no JPEG progressive). + +CREDITS: + + + Sean Barrett - PNG/BMP/TGA + Baldur Karlsson - HDR + Jean-Sebastien Guay - TGA monochrome + Tim Kelsey - misc enhancements + Alan Hickman - TGA RLE + Emmanuel Julien - initial file IO callback implementation + Jon Olick - original jo_jpeg.cpp code + Daniel Gibson - integrate JPEG, allow external zlib + Aarni Koskela - allow choosing PNG filter + + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + github:xeekworx + Cap Petschulat + Simon Rodriguez + Ivan Tikhonov + github:ignotion + Adam Schackart + Andrew Kensler + +LICENSE + + See end of file for license information. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +#include + +// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' +#ifndef STBIWDEF +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#ifdef __cplusplus +#define STBIWDEF extern "C" +#else +#define STBIWDEF extern +#endif +#endif +#endif + +#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations +STBIWDEF int stbi_write_tga_with_rle; +STBIWDEF int stbi_write_png_compression_level; +STBIWDEF int stbi_write_force_png_filter; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); + +#ifdef STBIW_WINDOWS_UTF8 +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + +STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include +#endif // STBI_WRITE_NO_STDIO + +#include +#include +#include +#include + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi_write_png_compression_level = 8; +static int stbi_write_tga_with_rle = 1; +static int stbi_write_force_png_filter = -1; +#else +int stbi_write_png_compression_level = 8; +int stbi_write_tga_with_rle = 1; +int stbi_write_force_png_filter = -1; +#endif + +static int stbi__flip_vertically_on_write = 0; + +STBIWDEF void stbi_flip_vertically_on_write(int flag) +{ + stbi__flip_vertically_on_write = flag; +} + +typedef struct +{ + stbi_write_func *func; + void *context; + unsigned char buffer[64]; + int buf_used; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) +#ifdef __cplusplus +#define STBIW_EXTERN extern "C" +#else +#define STBIW_EXTERN extern +#endif +STBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); + +STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbiw__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f = stbiw__fopen(filename, "wb"); + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__write_flush(stbi__write_context *s) +{ + if (s->buf_used) { + s->func(s->context, &s->buffer, s->buf_used); + s->buf_used = 0; + } +} + +static void stbiw__putc(stbi__write_context *s, unsigned char c) +{ + s->func(s->context, &c, 1); +} + +static void stbiw__write1(stbi__write_context *s, unsigned char a) +{ + if ((size_t)s->buf_used + 1 > sizeof(s->buffer)) + stbiw__write_flush(s); + s->buffer[s->buf_used++] = a; +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + int n; + if ((size_t)s->buf_used + 3 > sizeof(s->buffer)) + stbiw__write_flush(s); + n = s->buf_used; + s->buf_used = n+3; + s->buffer[n+0] = a; + s->buffer[n+1] = b; + s->buffer[n+2] = c; +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + stbiw__write1(s, d[comp - 1]); + + switch (comp) { + case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case + case 1: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + stbiw__write1(s, d[0]); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + stbiw__write1(s, d[comp - 1]); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (stbi__flip_vertically_on_write) + vdir *= -1; + + if (vdir < 0) { + j_end = -1; j = y-1; + } else { + j_end = y; j = 0; + } + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + stbiw__write_flush(s); + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + if (comp != 4) { + // write RGB bitmap + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header + } else { + // RGBA bitmaps need a v4 header + // use BI_BITFIELDS mode with 32bpp and alpha mask + // (straight BI_RGB with alpha mask doesn't work in most readers) + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *)data,1,0, + "11 4 22 4" "4 44 22 444444 4444 4 444 444 444 444", + 'B', 'M', 14+108+x*y*4, 0, 0, 14+108, // file header + 108, x,y, 1,32, 3,0,0,0,0,0, 0xff0000,0xff00,0xff,0xff000000u, 0, 0,0,0, 0,0,0, 0,0,0, 0,0,0); // bitmap V4 header + } +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif //!STBI_WRITE_NO_STDIO + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + int jend, jdir; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + if (stbi__flip_vertically_on_write) { + j = 0; + jend = y; + jdir = 1; + } else { + j = y-1; + jend = -1; + jdir = -1; + } + for (; j != jend; j += jdir) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + stbiw__write1(s, header); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + stbiw__write1(s, header); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + stbiw__write_flush(s); + } + return 1; +} + +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +#ifndef STBI_WRITE_NO_STDIO + +static void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +static void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +static void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +static void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + +#ifdef __STDC_LIB_EXT1__ + len = sprintf_s(buffer, sizeof(buffer), "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#else + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#endif + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)); + STBIW_FREE(scratch); + return 1; + } +} + +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +////////////////////////////////////////////////////////////////////////////// +// +// PNG writer +// + +#ifndef STBIW_ZLIB_COMPRESS +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (void *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +#endif // STBIW_ZLIB_COMPRESS + +STBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ +#ifdef STBIW_ZLIB_COMPRESS + // user provided a zlib compress implementation, use that + return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality); +#else // use builtin + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**)); + if (hash_table == NULL) + return NULL; + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) { best=d; bestloc=hlist[j]; } + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + // store uncompressed instead if compression was worse + if (stbiw__sbn(out) > data_len + 2 + ((data_len+32766)/32767)*5) { + stbiw__sbn(out) = 2; // truncate to DEFLATE 32K window and FLEVEL = 1 + for (j = 0; j < data_len;) { + int blocklen = data_len - j; + if (blocklen > 32767) blocklen = 32767; + stbiw__sbpush(out, data_len - j == blocklen); // BFINAL = ?, BTYPE = 0 -- no compression + stbiw__sbpush(out, STBIW_UCHAR(blocklen)); // LEN + stbiw__sbpush(out, STBIW_UCHAR(blocklen >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(~blocklen)); // NLEN + stbiw__sbpush(out, STBIW_UCHAR(~blocklen >> 8)); + memcpy(out+stbiw__sbn(out), data+j, blocklen); + stbiw__sbn(out) += blocklen; + j += blocklen; + } + } + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; } + s1 %= 65521; s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +#endif // STBIW_ZLIB_COMPRESS +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ +#ifdef STBIW_CRC32 + return STBIW_CRC32(buffer, len); +#else + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +#endif +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict +static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer) +{ + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = (y != 0) ? mapping : firstmap; + int i; + int type = mymap[filter_type]; + unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y); + int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes; + + if (type==0) { + memcpy(line_buffer, z, width*n); + return; + } + + // first loop isn't optimized since it's just one pixel + for (i = 0; i < n; ++i) { + switch (type) { + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + } + switch (type) { + case 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break; + case 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break; + case 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break; + case 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } +} + +STBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int force_filter = stbi_write_force_png_filter; + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int j,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + if (force_filter >= 5) { + force_filter = -1; + } + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + int filter_type; + if (force_filter > -1) { + filter_type = force_filter; + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer); + } else { // Estimate the best filter by running through all of them: + int best_filter = 0, best_filter_val = 0x7fffffff, est, i; + for (filter_type = 0; filter_type < 5; filter_type++) { + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer); + + // Estimate the entropy of the line using this filter; the less, the better. + est = 0; + for (i = 0; i < x*n; ++i) { + est += abs((signed char) line_buffer[i]); + } + if (est < best_filter_val) { + best_filter_val = est; + best_filter = filter_type; + } + } + if (filter_type != best_filter) { // If the last iteration already got us the best filter, don't redo it + stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer); + filter_type = best_filter; + } + } + // when we get here, filter_type contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) filter_type; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level); + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + + f = stbiw__fopen(filename, "wb"); + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + + +/* *************************************************************************** + * + * JPEG writer + * + * This is based on Jon Olick's jo_jpeg.cpp: + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html + */ + +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, + 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; + +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { + int bitBuf = *bitBufP, bitCnt = *bitCntP; + bitCnt += bs[1]; + bitBuf |= bs[0] << (24 - bitCnt); + while(bitCnt >= 8) { + unsigned char c = (bitBuf >> 16) & 255; + stbiw__putc(s, c); + if(c == 255) { + stbiw__putc(s, 0); + } + bitBuf <<= 8; + bitCnt -= 8; + } + *bitBufP = bitBuf; + *bitCntP = bitCnt; +} + +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { + float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; + float z1, z2, z3, z4, z5, z11, z13; + + float tmp0 = d0 + d7; + float tmp7 = d0 - d7; + float tmp1 = d1 + d6; + float tmp6 = d1 - d6; + float tmp2 = d2 + d5; + float tmp5 = d2 - d5; + float tmp3 = d3 + d4; + float tmp4 = d3 - d4; + + // Even part + float tmp10 = tmp0 + tmp3; // phase 2 + float tmp13 = tmp0 - tmp3; + float tmp11 = tmp1 + tmp2; + float tmp12 = tmp1 - tmp2; + + d0 = tmp10 + tmp11; // phase 3 + d4 = tmp10 - tmp11; + + z1 = (tmp12 + tmp13) * 0.707106781f; // c4 + d2 = tmp13 + z1; // phase 5 + d6 = tmp13 - z1; + + // Odd part + tmp10 = tmp4 + tmp5; // phase 2 + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + // The rotator is modified from fig 4-8 to avoid extra negations. + z5 = (tmp10 - tmp12) * 0.382683433f; // c6 + z2 = tmp10 * 0.541196100f + z5; // c2-c6 + z4 = tmp12 * 1.306562965f + z5; // c2+c6 + z3 = tmp11 * 0.707106781f; // c4 + + z11 = tmp7 + z3; // phase 5 + z13 = tmp7 - z3; + + *d5p = z13 + z2; // phase 6 + *d3p = z13 - z2; + *d1p = z11 + z4; + *d7p = z11 - z4; + + *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; +} + +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { + int tmp1 = val < 0 ? -val : val; + val = val < 0 ? val-1 : val; + bits[1] = 1; + while(tmp1 >>= 1) { + ++bits[1]; + } + bits[0] = val & ((1<0)&&(DU[end0pos]==0); --end0pos) { + } + // end0pos = first element in reverse order !=0 + if(end0pos == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + return DU[0]; + } + for(i = 1; i <= end0pos; ++i) { + int startpos = i; + int nrzeroes; + unsigned short bits[2]; + for (; DU[i]==0 && i<=end0pos; ++i) { + } + nrzeroes = i-startpos; + if ( nrzeroes >= 16 ) { + int lng = nrzeroes>>4; + int nrmarker; + for (nrmarker=1; nrmarker <= lng; ++nrmarker) + stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); + nrzeroes &= 15; + } + stbiw__jpg_calcBits(DU[i], bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + if(end0pos != 63) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + } + return DU[0]; +} + +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { + // Constants that don't pollute global namespace + static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; + static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; + static const unsigned char std_ac_luminance_values[] = { + 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, + 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, + 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, + 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; + static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; + static const unsigned char std_ac_chrominance_values[] = { + 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, + 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, + 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + // Huffman tables + static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; + static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; + static const unsigned short YAC_HT[256][2] = { + {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const unsigned short UVAC_HT[256][2] = { + {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, + 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; + static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, + 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; + static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, + 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; + + int row, col, i, k, subsample; + float fdtbl_Y[64], fdtbl_UV[64]; + unsigned char YTable[64], UVTable[64]; + + if(!data || !width || !height || comp > 4 || comp < 1) { + return 0; + } + + quality = quality ? quality : 90; + subsample = quality <= 90 ? 1 : 0; + quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; + quality = quality < 50 ? 5000 / quality : 200 - quality * 2; + + for(i = 0; i < 64; ++i) { + int uvti, yti = (YQT[i]*quality+50)/100; + YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); + uvti = (UVQT[i]*quality+50)/100; + UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); + } + + for(row = 0, k = 0; row < 8; ++row) { + for(col = 0; col < 8; ++col, ++k) { + fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + } + } + + // Write Headers + { + static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; + static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; + const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width), + 3,1,(unsigned char)(subsample?0x22:0x11),0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; + s->func(s->context, (void*)head0, sizeof(head0)); + s->func(s->context, (void*)YTable, sizeof(YTable)); + stbiw__putc(s, 1); + s->func(s->context, UVTable, sizeof(UVTable)); + s->func(s->context, (void*)head1, sizeof(head1)); + s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); + s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); + stbiw__putc(s, 0x10); // HTYACinfo + s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); + s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); + stbiw__putc(s, 1); // HTUDCinfo + s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); + stbiw__putc(s, 0x11); // HTUACinfo + s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); + s->func(s->context, (void*)head2, sizeof(head2)); + } + + // Encode 8x8 macroblocks + { + static const unsigned short fillBits[] = {0x7F, 7}; + int DCY=0, DCU=0, DCV=0; + int bitBuf=0, bitCnt=0; + // comp == 2 is grey+alpha (alpha is ignored) + int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; + const unsigned char *dataR = (const unsigned char *)data; + const unsigned char *dataG = dataR + ofsG; + const unsigned char *dataB = dataR + ofsB; + int x, y, pos; + if(subsample) { + for(y = 0; y < height; y += 16) { + for(x = 0; x < width; x += 16) { + float Y[256], U[256], V[256]; + for(row = y, pos = 0; row < y+16; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+16; ++col, ++pos) { + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + float r = dataR[p], g = dataG[p], b = dataB[p]; + Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; + U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; + V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; + } + } + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+0, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+8, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+128, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+136, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT); + + // subsample U,V + { + float subU[64], subV[64]; + int yy, xx; + for(yy = 0, pos = 0; yy < 8; ++yy) { + for(xx = 0; xx < 8; ++xx, ++pos) { + int j = yy*32+xx*2; + subU[pos] = (U[j+0] + U[j+1] + U[j+16] + U[j+17]) * 0.25f; + subV[pos] = (V[j+0] + V[j+1] + V[j+16] + V[j+17]) * 0.25f; + } + } + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subU, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subV, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + } + } else { + for(y = 0; y < height; y += 8) { + for(x = 0; x < width; x += 8) { + float Y[64], U[64], V[64]; + for(row = y, pos = 0; row < y+8; ++row) { + // row >= height => use last input row + int clamped_row = (row < height) ? row : height - 1; + int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp; + for(col = x; col < x+8; ++col, ++pos) { + // if col >= width => use pixel from last input column + int p = base_p + ((col < width) ? col : (width-1))*comp; + float r = dataR[p], g = dataG[p], b = dataB[p]; + Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128; + U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b; + V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b; + } + } + + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y, 8, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, U, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, V, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + } + + // Do the bit alignment of the EOI marker + stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); + } + + // EOI + stbiw__putc(s, 0xFF); + stbiw__putc(s, 0xD9); + + return 1; +} + +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s = { 0 }; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); +} + + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s = { 0 }; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.16 (2021-07-11) + make Deflate code emit uncompressed blocks when it would otherwise expand + support writing BMPs with alpha channel + 1.15 (2020-07-13) unknown + 1.14 (2020-02-02) updated JPEG writer to downsample chroma channels + 1.13 + 1.12 + 1.11 (2019-08-11) + + 1.10 (2019-02-07) + support utf8 filenames in Windows; fix warnings and platform ifdefs + 1.09 (2018-02-11) + fix typo in zlib quality API, improve STB_I_W_STATIC in C++ + 1.08 (2018-01-29) + add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter + 1.07 (2017-07-24) + doc fix + 1.06 (2017-07-23) + writing JPEG (using Jon Olick's code) + 1.05 ??? + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git a/Externals/imgui b/Externals/imgui new file mode 160000 index 0000000..4144d7d --- /dev/null +++ b/Externals/imgui @@ -0,0 +1 @@ +Subproject commit 4144d7d772a800f08693b8b13f7c81f1f22a73c4 diff --git a/Externals/lalr b/Externals/lalr new file mode 160000 index 0000000..6d16a6b --- /dev/null +++ b/Externals/lalr @@ -0,0 +1 @@ +Subproject commit 6d16a6bb60490a2ee4e86f689c86e647b300c7fb diff --git a/Externals/lua b/Externals/lua new file mode 160000 index 0000000..6baee9e --- /dev/null +++ b/Externals/lua @@ -0,0 +1 @@ +Subproject commit 6baee9ef9d5657ab582c8a4b9f885ec58ed502d0 diff --git a/Externals/nanovg b/Externals/nanovg new file mode 160000 index 0000000..7544c11 --- /dev/null +++ b/Externals/nanovg @@ -0,0 +1 @@ +Subproject commit 7544c114e83db7cf67bd1c9e012349b70caacc2f diff --git a/Externals/obj/OBJ_LOADER_LICENSE.txt b/Externals/obj/OBJ_LOADER_LICENSE.txt new file mode 100644 index 0000000..7b47e98 --- /dev/null +++ b/Externals/obj/OBJ_LOADER_LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Robert Smith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Externals/obj/OBJ_Loader.h b/Externals/obj/OBJ_Loader.h new file mode 100644 index 0000000..0b7d010 --- /dev/null +++ b/Externals/obj/OBJ_Loader.h @@ -0,0 +1,1167 @@ +// OBJ_Loader.h - A Single Header OBJ Model Loader + +#pragma once + +// Iostream - STD I/O Library +#include + +// Vector - STD Vector/Array Library +#include + +// String - STD String Library +#include + +// fStream - STD File I/O Library +#include + +// Math.h - STD math Library +#include + +// Print progress to console while loading (large models) +#define OBJL_CONSOLE_OUTPUT + +// Namespace: OBJL +// +// Description: The namespace that holds eveyrthing that +// is needed and used for the OBJ Model Loader +namespace objl +{ + // Structure: Vector2 + // + // Description: A 2D Vector that Holds Positional Data + struct Vector2 + { + // Default Constructor + Vector2() + { + X = 0.0f; + Y = 0.0f; + } + // Variable Set Constructor + Vector2(float X_, float Y_) + { + X = X_; + Y = Y_; + } + // Bool Equals Operator Overload + bool operator==(const Vector2& other) const + { + return (this->X == other.X && this->Y == other.Y); + } + // Bool Not Equals Operator Overload + bool operator!=(const Vector2& other) const + { + return !(this->X == other.X && this->Y == other.Y); + } + // Addition Operator Overload + Vector2 operator+(const Vector2& right) const + { + return Vector2(this->X + right.X, this->Y + right.Y); + } + // Subtraction Operator Overload + Vector2 operator-(const Vector2& right) const + { + return Vector2(this->X - right.X, this->Y - right.Y); + } + // Float Multiplication Operator Overload + Vector2 operator*(const float& other) const + { + return Vector2(this->X *other, this->Y * other); + } + + // Positional Variables + float X; + float Y; + }; + + // Structure: Vector3 + // + // Description: A 3D Vector that Holds Positional Data + struct Vector3 + { + // Default Constructor + Vector3() + { + X = 0.0f; + Y = 0.0f; + Z = 0.0f; + } + // Variable Set Constructor + Vector3(float X_, float Y_, float Z_) + { + X = X_; + Y = Y_; + Z = Z_; + } + // Bool Equals Operator Overload + bool operator==(const Vector3& other) const + { + return (this->X == other.X && this->Y == other.Y && this->Z == other.Z); + } + // Bool Not Equals Operator Overload + bool operator!=(const Vector3& other) const + { + return !(this->X == other.X && this->Y == other.Y && this->Z == other.Z); + } + // Addition Operator Overload + Vector3 operator+(const Vector3& right) const + { + return Vector3(this->X + right.X, this->Y + right.Y, this->Z + right.Z); + } + // Subtraction Operator Overload + Vector3 operator-(const Vector3& right) const + { + return Vector3(this->X - right.X, this->Y - right.Y, this->Z - right.Z); + } + // Float Multiplication Operator Overload + Vector3 operator*(const float& other) const + { + return Vector3(this->X * other, this->Y * other, this->Z * other); + } + // Float Division Operator Overload + Vector3 operator/(const float& other) const + { + return Vector3(this->X / other, this->Y / other, this->Z / other); + } + + // Positional Variables + float X; + float Y; + float Z; + }; + + // Structure: Vertex + // + // Description: Model Vertex object that holds + // a Position, Normal, and Texture Coordinate + struct Vertex + { + // Position Vector + Vector3 Position; + + // Normal Vector + Vector3 Normal; + + // Texture Coordinate Vector + Vector2 TextureCoordinate; + }; + + struct Material + { + Material() + { + name; + Ns = 0.0f; + Ni = 0.0f; + d = 0.0f; + illum = 0; + } + + // Material Name + std::string name; + // Ambient Color + Vector3 Ka; + // Diffuse Color + Vector3 Kd; + // Specular Color + Vector3 Ks; + // Specular Exponent + float Ns; + // Optical Density + float Ni; + // Dissolve + float d; + // Illumination + int illum; + // Ambient Texture Map + std::string map_Ka; + // Diffuse Texture Map + std::string map_Kd; + // Specular Texture Map + std::string map_Ks; + // Specular Hightlight Map + std::string map_Ns; + // Alpha Texture Map + std::string map_d; + // Bump Map + std::string map_bump; + }; + + // Structure: Mesh + // + // Description: A Simple Mesh Object that holds + // a name, a vertex list, and an index list + struct Mesh + { + // Default Constructor + Mesh() + { + + } + // Variable Set Constructor + Mesh(std::vector& _Vertices, std::vector& _Indices) + { + Vertices = _Vertices; + Indices = _Indices; + } + // Mesh Name + std::string MeshName; + // Vertex List + std::vector Vertices; + // Index List + std::vector Indices; + + // Material + Material MeshMaterial; + }; + + // Namespace: Math + // + // Description: The namespace that holds all of the math + // functions need for OBJL + namespace math + { + // Vector3 Cross Product + Vector3 CrossV3(const Vector3 a, const Vector3 b) + { + return Vector3(a.Y * b.Z - a.Z * b.Y, + a.Z * b.X - a.X * b.Z, + a.X * b.Y - a.Y * b.X); + } + + // Vector3 Magnitude Calculation + float MagnitudeV3(const Vector3 in) + { + return (sqrtf(powf(in.X, 2) + powf(in.Y, 2) + powf(in.Z, 2))); + } + + // Vector3 DotProduct + float DotV3(const Vector3 a, const Vector3 b) + { + return (a.X * b.X) + (a.Y * b.Y) + (a.Z * b.Z); + } + + // Angle between 2 Vector3 Objects + float AngleBetweenV3(const Vector3 a, const Vector3 b) + { + float angle = DotV3(a, b); + angle /= (MagnitudeV3(a) * MagnitudeV3(b)); + return angle = acosf(angle); + } + + // Projection Calculation of a onto b + Vector3 ProjV3(const Vector3 a, const Vector3 b) + { + Vector3 bn = b / MagnitudeV3(b); + return bn * DotV3(a, bn); + } + } + + // Namespace: Algorithm + // + // Description: The namespace that holds all of the + // Algorithms needed for OBJL + namespace algorithm + { + // Vector3 Multiplication Opertor Overload + Vector3 operator*(const float& left, const Vector3& right) + { + return Vector3(right.X * left, right.Y * left, right.Z * left); + } + + // A test to see if P1 is on the same side as P2 of a line segment ab + bool SameSide(Vector3 p1, Vector3 p2, Vector3 a, Vector3 b) + { + Vector3 cp1 = math::CrossV3(b - a, p1 - a); + Vector3 cp2 = math::CrossV3(b - a, p2 - a); + + if (math::DotV3(cp1, cp2) >= 0) + return true; + else + return false; + } + + // Generate a cross produect normal for a triangle + Vector3 GenTriNormal(Vector3 t1, Vector3 t2, Vector3 t3) + { + Vector3 u = t2 - t1; + Vector3 v = t3 - t1; + + Vector3 normal = math::CrossV3(u,v); + + return normal; + } + + // Check to see if a Vector3 Point is within a 3 Vector3 Triangle + bool inTriangle(Vector3 point, Vector3 tri1, Vector3 tri2, Vector3 tri3) + { + // Test to see if it is within an infinite prism that the triangle outlines. + bool within_tri_prisim = SameSide(point, tri1, tri2, tri3) && SameSide(point, tri2, tri1, tri3) + && SameSide(point, tri3, tri1, tri2); + + // If it isn't it will never be on the triangle + if (!within_tri_prisim) + return false; + + // Calulate Triangle's Normal + Vector3 n = GenTriNormal(tri1, tri2, tri3); + + // Project the point onto this normal + Vector3 proj = math::ProjV3(point, n); + + // If the distance from the triangle to the point is 0 + // it lies on the triangle + if (math::MagnitudeV3(proj) == 0) + return true; + else + return false; + } + + // Split a String into a string array at a given token + inline void split(const std::string &in, + std::vector &out, + std::string token) + { + out.clear(); + + std::string temp; + + for (int i = 0; i < int(in.size()); i++) + { + std::string test = in.substr(i, token.size()); + + if (test == token) + { + if (!temp.empty()) + { + out.push_back(temp); + temp.clear(); + i += (int)token.size() - 1; + } + else + { + out.push_back(""); + } + } + else if (i + token.size() >= in.size()) + { + temp += in.substr(i, token.size()); + out.push_back(temp); + break; + } + else + { + temp += in[i]; + } + } + } + + // Get tail of string after first token and possibly following spaces + inline std::string tail(const std::string &in) + { + size_t token_start = in.find_first_not_of(" \t"); + size_t space_start = in.find_first_of(" \t", token_start); + size_t tail_start = in.find_first_not_of(" \t", space_start); + size_t tail_end = in.find_last_not_of(" \t"); + if (tail_start != std::string::npos && tail_end != std::string::npos) + { + return in.substr(tail_start, tail_end - tail_start + 1); + } + else if (tail_start != std::string::npos) + { + return in.substr(tail_start); + } + return ""; + } + + // Get first token of string + inline std::string firstToken(const std::string &in) + { + if (!in.empty()) + { + size_t token_start = in.find_first_not_of(" \t"); + size_t token_end = in.find_first_of(" \t", token_start); + if (token_start != std::string::npos && token_end != std::string::npos) + { + return in.substr(token_start, token_end - token_start); + } + else if (token_start != std::string::npos) + { + return in.substr(token_start); + } + } + return ""; + } + + // Get element at given index position + template + inline const T & getElement(const std::vector &elements, std::string &index) + { + int idx = std::stoi(index); + if (idx < 0) + idx = int(elements.size()) + idx; + else + idx--; + return elements[idx]; + } + } + + // Class: Loader + // + // Description: The OBJ Model Loader + class Loader + { + public: + // Default Constructor + Loader() + { + + } + ~Loader() + { + LoadedMeshes.clear(); + } + + // Load a file into the loader + // + // If file is loaded return true + // + // If the file is unable to be found + // or unable to be loaded return false + bool LoadFile(std::string Path) + { + // If the file is not an .obj file return false + if (Path.substr(Path.size() - 4, 4) != ".obj") + return false; + + + std::ifstream file(Path); + + if (!file.is_open()) + return false; + + LoadedMeshes.clear(); + LoadedVertices.clear(); + LoadedIndices.clear(); + + std::vector Positions; + std::vector TCoords; + std::vector Normals; + + std::vector Vertices; + std::vector Indices; + + std::vector MeshMatNames; + + bool listening = false; + std::string meshname; + + Mesh tempMesh; + + #ifdef OBJL_CONSOLE_OUTPUT + const unsigned int outputEveryNth = 1000; + unsigned int outputIndicator = outputEveryNth; + #endif + + std::string curline; + while (std::getline(file, curline)) + { + #ifdef OBJL_CONSOLE_OUTPUT + if ((outputIndicator = ((outputIndicator + 1) % outputEveryNth)) == 1) + { + if (!meshname.empty()) + { + std::cout + << "\r- " << meshname + << "\t| vertices > " << Positions.size() + << "\t| texcoords > " << TCoords.size() + << "\t| normals > " << Normals.size() + << "\t| triangles > " << (Vertices.size() / 3) + << (!MeshMatNames.empty() ? "\t| material: " + MeshMatNames.back() : ""); + } + } + #endif + + // Generate a Mesh Object or Prepare for an object to be created + if (algorithm::firstToken(curline) == "o" || algorithm::firstToken(curline) == "g" || curline[0] == 'g') + { + if (!listening) + { + listening = true; + + if (algorithm::firstToken(curline) == "o" || algorithm::firstToken(curline) == "g") + { + meshname = algorithm::tail(curline); + } + else + { + meshname = "unnamed"; + } + } + else + { + // Generate the mesh to put into the array + + if (!Indices.empty() && !Vertices.empty()) + { + // Create Mesh + tempMesh = Mesh(Vertices, Indices); + tempMesh.MeshName = meshname; + + // Insert Mesh + LoadedMeshes.push_back(tempMesh); + + // Cleanup + Vertices.clear(); + Indices.clear(); + meshname.clear(); + + meshname = algorithm::tail(curline); + } + else + { + if (algorithm::firstToken(curline) == "o" || algorithm::firstToken(curline) == "g") + { + meshname = algorithm::tail(curline); + } + else + { + meshname = "unnamed"; + } + } + } + #ifdef OBJL_CONSOLE_OUTPUT + std::cout << std::endl; + outputIndicator = 0; + #endif + } + // Generate a Vertex Position + if (algorithm::firstToken(curline) == "v") + { + std::vector spos; + Vector3 vpos; + algorithm::split(algorithm::tail(curline), spos, " "); + + vpos.X = std::stof(spos[0]); + vpos.Y = std::stof(spos[1]); + vpos.Z = std::stof(spos[2]); + + Positions.push_back(vpos); + } + // Generate a Vertex Texture Coordinate + if (algorithm::firstToken(curline) == "vt") + { + std::vector stex; + Vector2 vtex; + algorithm::split(algorithm::tail(curline), stex, " "); + + vtex.X = std::stof(stex[0]); + vtex.Y = std::stof(stex[1]); + + TCoords.push_back(vtex); + } + // Generate a Vertex Normal; + if (algorithm::firstToken(curline) == "vn") + { + std::vector snor; + Vector3 vnor; + algorithm::split(algorithm::tail(curline), snor, " "); + + vnor.X = std::stof(snor[0]); + vnor.Y = std::stof(snor[1]); + vnor.Z = std::stof(snor[2]); + + Normals.push_back(vnor); + } + // Generate a Face (vertices & indices) + if (algorithm::firstToken(curline) == "f") + { + // Generate the vertices + std::vector vVerts; + GenVerticesFromRawOBJ(vVerts, Positions, TCoords, Normals, curline); + + // Add Vertices + for (int i = 0; i < int(vVerts.size()); i++) + { + Vertices.push_back(vVerts[i]); + + LoadedVertices.push_back(vVerts[i]); + } + + std::vector iIndices; + + VertexTriangluation(iIndices, vVerts); + + // Add Indices + for (int i = 0; i < int(iIndices.size()); i++) + { + unsigned int indnum = (unsigned int)((Vertices.size()) - vVerts.size()) + iIndices[i]; + Indices.push_back(indnum); + + indnum = (unsigned int)((LoadedVertices.size()) - vVerts.size()) + iIndices[i]; + LoadedIndices.push_back(indnum); + + } + } + // Get Mesh Material Name + if (algorithm::firstToken(curline) == "usemtl") + { + MeshMatNames.push_back(algorithm::tail(curline)); + + // Create new Mesh, if Material changes within a group + if (!Indices.empty() && !Vertices.empty()) + { + // Create Mesh + tempMesh = Mesh(Vertices, Indices); + tempMesh.MeshName = meshname; + int i = 2; + while(1) { + tempMesh.MeshName = meshname + "_" + std::to_string(i); + + for (auto &m : LoadedMeshes) + if (m.MeshName == tempMesh.MeshName) + continue; + break; + } + + // Insert Mesh + LoadedMeshes.push_back(tempMesh); + + // Cleanup + Vertices.clear(); + Indices.clear(); + } + + #ifdef OBJL_CONSOLE_OUTPUT + outputIndicator = 0; + #endif + } + // Load Materials + if (algorithm::firstToken(curline) == "mtllib") + { + // Generate LoadedMaterial + + // Generate a path to the material file + std::vector temp; + algorithm::split(Path, temp, "/"); + + std::string pathtomat = ""; + + if (temp.size() != 1) + { + for (int i = 0; i < temp.size() - 1; i++) + { + pathtomat += temp[i] + "/"; + } + } + + + pathtomat += algorithm::tail(curline); + + #ifdef OBJL_CONSOLE_OUTPUT + std::cout << std::endl << "- find materials in: " << pathtomat << std::endl; + #endif + + // Load Materials + LoadMaterials(pathtomat); + } + } + + #ifdef OBJL_CONSOLE_OUTPUT + std::cout << std::endl; + #endif + + // Deal with last mesh + + if (!Indices.empty() && !Vertices.empty()) + { + // Create Mesh + tempMesh = Mesh(Vertices, Indices); + tempMesh.MeshName = meshname; + + // Insert Mesh + LoadedMeshes.push_back(tempMesh); + } + + file.close(); + + // Set Materials for each Mesh + for (int i = 0; i < MeshMatNames.size(); i++) + { + std::string matname = MeshMatNames[i]; + + // Find corresponding material name in loaded materials + // when found copy material variables into mesh material + for (int j = 0; j < LoadedMaterials.size(); j++) + { + if (LoadedMaterials[j].name == matname) + { + LoadedMeshes[i].MeshMaterial = LoadedMaterials[j]; + break; + } + } + } + + if (LoadedMeshes.empty() && LoadedVertices.empty() && LoadedIndices.empty()) + { + return false; + } + else + { + return true; + } + } + + // Loaded Mesh Objects + std::vector LoadedMeshes; + // Loaded Vertex Objects + std::vector LoadedVertices; + // Loaded Index Positions + std::vector LoadedIndices; + // Loaded Material Objects + std::vector LoadedMaterials; + + private: + // Generate vertices from a list of positions, + // tcoords, normals and a face line + void GenVerticesFromRawOBJ(std::vector& oVerts, + const std::vector& iPositions, + const std::vector& iTCoords, + const std::vector& iNormals, + std::string icurline) + { + std::vector sface, svert; + Vertex vVert; + algorithm::split(algorithm::tail(icurline), sface, " "); + + bool noNormal = false; + + // For every given vertex do this + for (int i = 0; i < int(sface.size()); i++) + { + // See What type the vertex is. + int vtype; + + algorithm::split(sface[i], svert, "/"); + + // Check for just position - v1 + if (svert.size() == 1) + { + // Only position + vtype = 1; + } + + // Check for position & texture - v1/vt1 + if (svert.size() == 2) + { + // Position & Texture + vtype = 2; + } + + // Check for Position, Texture and Normal - v1/vt1/vn1 + // or if Position and Normal - v1//vn1 + if (svert.size() == 3) + { + if (svert[1] != "") + { + // Position, Texture, and Normal + vtype = 4; + } + else + { + // Position & Normal + vtype = 3; + } + } + + // Calculate and store the vertex + switch (vtype) + { + case 1: // P + { + vVert.Position = algorithm::getElement(iPositions, svert[0]); + vVert.TextureCoordinate = Vector2(0, 0); + noNormal = true; + oVerts.push_back(vVert); + break; + } + case 2: // P/T + { + vVert.Position = algorithm::getElement(iPositions, svert[0]); + vVert.TextureCoordinate = algorithm::getElement(iTCoords, svert[1]); + noNormal = true; + oVerts.push_back(vVert); + break; + } + case 3: // P//N + { + vVert.Position = algorithm::getElement(iPositions, svert[0]); + vVert.TextureCoordinate = Vector2(0, 0); + vVert.Normal = algorithm::getElement(iNormals, svert[2]); + oVerts.push_back(vVert); + break; + } + case 4: // P/T/N + { + vVert.Position = algorithm::getElement(iPositions, svert[0]); + vVert.TextureCoordinate = algorithm::getElement(iTCoords, svert[1]); + vVert.Normal = algorithm::getElement(iNormals, svert[2]); + oVerts.push_back(vVert); + break; + } + default: + { + break; + } + } + } + + // take care of missing normals + // these may not be truly acurate but it is the + // best they get for not compiling a mesh with normals + if (noNormal) + { + Vector3 A = oVerts[0].Position - oVerts[1].Position; + Vector3 B = oVerts[2].Position - oVerts[1].Position; + + Vector3 normal = math::CrossV3(A, B); + + for (int i = 0; i < int(oVerts.size()); i++) + { + oVerts[i].Normal = normal; + } + } + } + + // Triangulate a list of vertices into a face by printing + // inducies corresponding with triangles within it + void VertexTriangluation(std::vector& oIndices, + const std::vector& iVerts) + { + // If there are 2 or less verts, + // no triangle can be created, + // so exit + if (iVerts.size() < 3) + { + return; + } + // If it is a triangle no need to calculate it + if (iVerts.size() == 3) + { + oIndices.push_back(0); + oIndices.push_back(1); + oIndices.push_back(2); + return; + } + + // Create a list of vertices + std::vector tVerts = iVerts; + + while (true) + { + // For every vertex + for (int i = 0; i < int(tVerts.size()); i++) + { + // pPrev = the previous vertex in the list + Vertex pPrev; + if (i == 0) + { + pPrev = tVerts[tVerts.size() - 1]; + } + else + { + pPrev = tVerts[i - 1]; + } + + // pCur = the current vertex; + Vertex pCur = tVerts[i]; + + // pNext = the next vertex in the list + Vertex pNext; + if (i == tVerts.size() - 1) + { + pNext = tVerts[0]; + } + else + { + pNext = tVerts[i + 1]; + } + + // Check to see if there are only 3 verts left + // if so this is the last triangle + if (tVerts.size() == 3) + { + // Create a triangle from pCur, pPrev, pNext + for (int j = 0; j < int(tVerts.size()); j++) + { + if (iVerts[j].Position == pCur.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pPrev.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pNext.Position) + oIndices.push_back(j); + } + + tVerts.clear(); + break; + } + if (tVerts.size() == 4) + { + // Create a triangle from pCur, pPrev, pNext + for (int j = 0; j < int(iVerts.size()); j++) + { + if (iVerts[j].Position == pCur.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pPrev.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pNext.Position) + oIndices.push_back(j); + } + + Vector3 tempVec; + for (int j = 0; j < int(tVerts.size()); j++) + { + if (tVerts[j].Position != pCur.Position + && tVerts[j].Position != pPrev.Position + && tVerts[j].Position != pNext.Position) + { + tempVec = tVerts[j].Position; + break; + } + } + + // Create a triangle from pCur, pPrev, pNext + for (int j = 0; j < int(iVerts.size()); j++) + { + if (iVerts[j].Position == pPrev.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pNext.Position) + oIndices.push_back(j); + if (iVerts[j].Position == tempVec) + oIndices.push_back(j); + } + + tVerts.clear(); + break; + } + + // If Vertex is not an interior vertex + float angle = math::AngleBetweenV3(pPrev.Position - pCur.Position, pNext.Position - pCur.Position) * (180 / 3.14159265359); + if (angle <= 0 && angle >= 180) + continue; + + // If any vertices are within this triangle + bool inTri = false; + for (int j = 0; j < int(iVerts.size()); j++) + { + if (algorithm::inTriangle(iVerts[j].Position, pPrev.Position, pCur.Position, pNext.Position) + && iVerts[j].Position != pPrev.Position + && iVerts[j].Position != pCur.Position + && iVerts[j].Position != pNext.Position) + { + inTri = true; + break; + } + } + if (inTri) + continue; + + // Create a triangle from pCur, pPrev, pNext + for (int j = 0; j < int(iVerts.size()); j++) + { + if (iVerts[j].Position == pCur.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pPrev.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pNext.Position) + oIndices.push_back(j); + } + + // Delete pCur from the list + for (int j = 0; j < int(tVerts.size()); j++) + { + if (tVerts[j].Position == pCur.Position) + { + tVerts.erase(tVerts.begin() + j); + break; + } + } + + // reset i to the start + // -1 since loop will add 1 to it + i = -1; + } + + // if no triangles were created + if (oIndices.size() == 0) + break; + + // if no more vertices + if (tVerts.size() == 0) + break; + } + } + + // Load Materials from .mtl file + bool LoadMaterials(std::string path) + { + // If the file is not a material file return false + if (path.substr(path.size() - 4, path.size()) != ".mtl") + return false; + + std::ifstream file(path); + + // If the file is not found return false + if (!file.is_open()) + return false; + + Material tempMaterial; + + bool listening = false; + + // Go through each line looking for material variables + std::string curline; + while (std::getline(file, curline)) + { + // new material and material name + if (algorithm::firstToken(curline) == "newmtl") + { + if (!listening) + { + listening = true; + + if (curline.size() > 7) + { + tempMaterial.name = algorithm::tail(curline); + } + else + { + tempMaterial.name = "none"; + } + } + else + { + // Generate the material + + // Push Back loaded Material + LoadedMaterials.push_back(tempMaterial); + + // Clear Loaded Material + tempMaterial = Material(); + + if (curline.size() > 7) + { + tempMaterial.name = algorithm::tail(curline); + } + else + { + tempMaterial.name = "none"; + } + } + } + // Ambient Color + if (algorithm::firstToken(curline) == "Ka") + { + std::vector temp; + algorithm::split(algorithm::tail(curline), temp, " "); + + if (temp.size() != 3) + continue; + + tempMaterial.Ka.X = std::stof(temp[0]); + tempMaterial.Ka.Y = std::stof(temp[1]); + tempMaterial.Ka.Z = std::stof(temp[2]); + } + // Diffuse Color + if (algorithm::firstToken(curline) == "Kd") + { + std::vector temp; + algorithm::split(algorithm::tail(curline), temp, " "); + + if (temp.size() != 3) + continue; + + tempMaterial.Kd.X = std::stof(temp[0]); + tempMaterial.Kd.Y = std::stof(temp[1]); + tempMaterial.Kd.Z = std::stof(temp[2]); + } + // Specular Color + if (algorithm::firstToken(curline) == "Ks") + { + std::vector temp; + algorithm::split(algorithm::tail(curline), temp, " "); + + if (temp.size() != 3) + continue; + + tempMaterial.Ks.X = std::stof(temp[0]); + tempMaterial.Ks.Y = std::stof(temp[1]); + tempMaterial.Ks.Z = std::stof(temp[2]); + } + // Specular Exponent + if (algorithm::firstToken(curline) == "Ns") + { + tempMaterial.Ns = std::stof(algorithm::tail(curline)); + } + // Optical Density + if (algorithm::firstToken(curline) == "Ni") + { + tempMaterial.Ni = std::stof(algorithm::tail(curline)); + } + // Dissolve + if (algorithm::firstToken(curline) == "d") + { + tempMaterial.d = std::stof(algorithm::tail(curline)); + } + // Illumination + if (algorithm::firstToken(curline) == "illum") + { + tempMaterial.illum = std::stoi(algorithm::tail(curline)); + } + // Ambient Texture Map + if (algorithm::firstToken(curline) == "map_Ka") + { + tempMaterial.map_Ka = algorithm::tail(curline); + } + // Diffuse Texture Map + if (algorithm::firstToken(curline) == "map_Kd") + { + tempMaterial.map_Kd = algorithm::tail(curline); + } + // Specular Texture Map + if (algorithm::firstToken(curline) == "map_Ks") + { + tempMaterial.map_Ks = algorithm::tail(curline); + } + // Specular Hightlight Map + if (algorithm::firstToken(curline) == "map_Ns") + { + tempMaterial.map_Ns = algorithm::tail(curline); + } + // Alpha Texture Map + if (algorithm::firstToken(curline) == "map_d") + { + tempMaterial.map_d = algorithm::tail(curline); + } + // Bump Map + if (algorithm::firstToken(curline) == "map_Bump" || algorithm::firstToken(curline) == "map_bump" || algorithm::firstToken(curline) == "bump") + { + tempMaterial.map_bump = algorithm::tail(curline); + } + } + + // Deal with last material + + // Push Back loaded Material + LoadedMaterials.push_back(tempMaterial); + + // Test to see if anything was loaded + // If not return false + if (LoadedMaterials.empty()) + return false; + // If so return true + else + return true; + } + }; +} diff --git a/Externals/unittest-cpp b/Externals/unittest-cpp new file mode 160000 index 0000000..10e50ad --- /dev/null +++ b/Externals/unittest-cpp @@ -0,0 +1 @@ +Subproject commit 10e50ad70c696002b1d5bbefd0ea04b3ea92a03b diff --git a/Graphics/CMakeLists.txt b/Graphics/CMakeLists.txt new file mode 100644 index 0000000..1159d2a --- /dev/null +++ b/Graphics/CMakeLists.txt @@ -0,0 +1,23 @@ +project(Graphics) + +### ---------------------- Externals --------------------- ### +set(BINDINGS_INCLUDE ../Externals/glfw/include ${GLEW_INCLUDE_DIR}) +set(BINDINGS_LIBS glfw Imgui Nanovg ${GLEW_LIB}) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_include_directories(${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE}) +target_link_libraries(${PROJECT_NAME} PUBLIC Math) +target_link_libraries(${PROJECT_NAME} PRIVATE ${BINDINGS_LIBS}) + +### -------------------------- Examples -------------------------- ### +add_executable(Example${PROJECT_NAME} ./examples/Example.cpp) +target_link_libraries(Example${PROJECT_NAME} ${PROJECT_NAME} ${BINDINGS_LIBS}) +target_include_directories(Example${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE}) + + +file(COPY "examples/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") + diff --git a/Graphics/examples/Example.cpp b/Graphics/examples/Example.cpp new file mode 100644 index 0000000..021a159 --- /dev/null +++ b/Graphics/examples/Example.cpp @@ -0,0 +1,26 @@ + +#include "GraphicApplication.hpp" +#include "imgui.h" + +using namespace tp; + +class ExampleApplication : public Application { +public: + ExampleApplication() = default; + + void processFrame(EventHandler* eventHandler) override { + // example + } + + virtual void drawFrame(Canvas* canvas) override { + ImGui::Text("Frames processed per second: %f", this->mFramesProcessedPerSecond); + ImGui::Text("Frames drawn per second: %f", this->mFramesDrawnPerSecond); + } + + virtual ~ExampleApplication() = default; +}; + +int main() { + ExampleApplication app; + app.run(); +} diff --git a/Graphics/examples/Font.ttf b/Graphics/examples/Font.ttf new file mode 100644 index 0000000..8a63054 Binary files /dev/null and b/Graphics/examples/Font.ttf differ diff --git a/Graphics/private/Canvas.cpp b/Graphics/private/Canvas.cpp new file mode 100644 index 0000000..bd74576 --- /dev/null +++ b/Graphics/private/Canvas.cpp @@ -0,0 +1,148 @@ +#include "Window.hpp" + +// -------- OpenGL -------- // +#define GLEW_STATIC +#include + +#include "Graphics.hpp" + +// -------- Canvas -------- // +#define NANOVG_GL3_IMPLEMENTATION +#include +#include + +namespace tp { + class Canvas::Context { + public: + NVGcontext* vg {}; + Window* window {}; + }; +} + +using namespace tp; + +Canvas::Canvas(Window* window) { + mContext = new Context(); + mContext->window = window; + + mContext->vg = nvgCreateGL3(NVG_ANTIALIAS | NVG_STENCIL_STROKES); + + if (nvgCreateFont(mContext->vg, "default", "Font.ttf") == -1) { + ASSERT(!"Cant create NVG font") + } +} + +Canvas::~Canvas() { + nvgDeleteGL3(mContext->vg); + delete mContext; +} + +void Canvas::rect(const RectF& rec, const RGBA& col, halnf round) { + nvgBeginPath(mContext->vg); + + if (round == 0) { + nvgRect(mContext->vg, rec.x, rec.y, rec.z, rec.w); + } else { + nvgRoundedRect(mContext->vg, rec.x, rec.y, rec.z, rec.w, round); + } + + nvgFillColor(mContext->vg, { col.r, col.g, col.b, col.a }); + nvgFill(mContext->vg); +} + +void Canvas::pushClamp(const RectF& rec) { + RectF intersection = rec; + if (mScissors.size()) { + mScissors.last().calcIntersection(rec, intersection); + } + nvgScissor(mContext->vg, intersection.x, intersection.y, intersection.z, intersection.w); + mScissors.append(rec); +} + +void Canvas::popClamp() { + DEBUG_ASSERT(mScissors.size()); + mIsClamping = false; + mScissors.pop(); + if (mScissors.size()) { + const auto& rec = mScissors.last(); + nvgScissor(mContext->vg, rec.x, rec.y, rec.z, rec.w); + } else { + nvgResetScissor(mContext->vg); + } +} + +void Canvas::text( + const char* string, const RectF& aRec, halnf size, Align align, halnf marging, const RGBA& col +) { + RectF rec = { aRec.x + marging, aRec.y + marging, aRec.z - marging * 2, aRec.w - marging * 2 }; + + pushClamp(rec); + + nvgFontSize(mContext->vg, size); + nvgFontFace(mContext->vg, "default"); + nvgFillColor(mContext->vg, { col.r, col.g, col.b, col.a }); + + float centerX = rec.x; + float centerY = rec.y; + int alignNVG = 0; + + if (((int1*) &align)[1] == 0x00) { // center x + alignNVG |= NVG_ALIGN_CENTER; + centerX += rec.z * 0.5f; + } else if (((int1*) &align)[1] == 0x01) { // left x + alignNVG |= NVG_ALIGN_LEFT; + } else if (((int1*) &align)[1] == 0x02) { // right x + alignNVG |= NVG_ALIGN_RIGHT; + centerX += rec.z; + } + + if (((int1*) &align)[0] == 0x00) { // center y + alignNVG |= NVG_ALIGN_MIDDLE; + centerY += rec.w * 0.5f; + } else if (((int1*) &align)[0] == 0x01) { // top y + alignNVG |= NVG_ALIGN_TOP; + centerY += rec.w; + } else if (((int1*) &align)[0] == 0x02) { // bottom y + alignNVG |= NVG_ALIGN_BOTTOM; + } + + nvgTextAlign(mContext->vg, alignNVG); + + nvgText(mContext->vg, centerX, centerY, string, nullptr); + + popClamp(); +} + +void Canvas::drawImage(const RectF& rec, ImageHandle* image, halnf angle, halnf alpha, halnf rounding) { + auto imgPaint = nvgImagePattern(mContext->vg, rec.x, rec.y, rec.z, rec.w, angle, image->id, alpha); + nvgBeginPath(mContext->vg); + nvgRoundedRect(mContext->vg, rec.x, rec.y, rec.z, rec.w, rounding); + nvgFillPaint(mContext->vg, imgPaint); + nvgFill(mContext->vg); +} + + Canvas::ImageHandle Canvas::createImageFromTextId(ualni id, Vec2F size) { +#ifdef ENV_OS_ANDROID + return { (ualni) nvglCreateImageFromHandleGLES3(mContext->vg, id, size.x, size.y, 0) }; +#else + return { (ualni) nvglCreateImageFromHandleGL3(mContext->vg, id, size.x, size.y, 0) }; +#endif +} + +void Canvas::deleteImageHandle(ImageHandle image) { + if (image.id) { + nvgDeleteImage(mContext->vg, image.id); + } +} + +void Canvas::drawBegin() { + const auto size = mContext->window->getSize(); + nvgBeginFrame(mContext->vg, size.x, size.y, 1.0); + glViewport(0, 0, size.x, size.y); +} + +void Canvas::drawEnd() { + const auto size = mContext->window->getSize(); + glViewport(0, 0, size.x, size.y); + nvgEndFrame(mContext->vg); +} diff --git a/Graphics/private/DebugGUI.cpp b/Graphics/private/DebugGUI.cpp new file mode 100644 index 0000000..35d5061 --- /dev/null +++ b/Graphics/private/DebugGUI.cpp @@ -0,0 +1,59 @@ +#include "Window.hpp" +#include "WindowContext.hpp" + +#include "Graphics.hpp" + +// -------- Debug UI -------- // +#include +#include +#include +#include + +namespace tp { + class DebugGUI::Context { + public: + ImGuiIO* io{}; + ImGuiContext* ctx{}; + }; +} + +using namespace tp; + +DebugGUI::DebugGUI(Window* window) { + mContext = new Context(); + + IMGUI_CHECKVERSION(); + mContext->ctx = ImGui::CreateContext(); + mContext->io = &ImGui::GetIO(); + + // Initialize ImGui with GLFW and OpenGL + ImGui_ImplGlfw_InitForOpenGL(window->getContext()->window, true); + + // ImGui_ImplGlfw_GetBackendData(); + + ImGui_ImplOpenGL3_Init("#version 330"); + + ImGuiIO& io = ImGui::GetIO(); + io.Fonts->AddFontFromFileTTF("Font.ttf", 20.f); + + io.ConfigInputTrickleEventQueue = false; +} + +DebugGUI::~DebugGUI() { + ImGui_ImplOpenGL3_Shutdown(); + ImGui_ImplGlfw_Shutdown(); + ImGui::DestroyContext(); + + delete mContext; +} + +void DebugGUI::drawBegin() { + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); + ImGui::NewFrame(); +} + +void DebugGUI::drawEnd() { + ImGui::Render(); + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); +} \ No newline at end of file diff --git a/Graphics/private/EventHandler.cpp b/Graphics/private/EventHandler.cpp new file mode 100644 index 0000000..af7d924 --- /dev/null +++ b/Graphics/private/EventHandler.cpp @@ -0,0 +1,98 @@ + +#include "EventHandler.hpp" + +#include + +using namespace tp; + +EventHandler::EventHandler() = default; +EventHandler::~EventHandler() = default; + +void EventHandler::postEvent(InputID inputID, InputEvent inputEvent) { + mMutex.lock(); + mEventQueue.pushBack({ inputID, inputEvent }); + mMutex.unlock(); +} + +bool EventHandler::isEvents() { + mMutex.lock(); + auto res = mEventQueue.length(); + mMutex.unlock(); + return res; +} + +InputState::State transitions[4][4] = { + { InputState::State::NONE, InputState::State::PRESSED, InputState::State::PRESSED, InputState::State::NONE }, + { InputState::State::PRESSED, InputState::State::PRESSED, InputState::State::HOLD, InputState::State::PRESSED }, + { InputState::State::HOLD, InputState::State::RELEASED, InputState::State::RELEASED, InputState::State::HOLD }, + { InputState::State::RELEASED, InputState::State::NONE, InputState::State::NONE, InputState::State::RELEASED }, +}; + +bool transitionsReduce[4][4] = { + { true, true, false, true }, + { true, true, false, true }, + { true, false, false, true }, + { true, false, true, true }, +}; + + +void EventHandler::processEvent() { + mMutex.lock(); + auto lastEvent = mEventQueue.last(); + + const auto& eventData = lastEvent->data.second; + const auto& inputId = lastEvent->data.first; + + switch (eventData.type) { + case InputEvent::Type::MOUSE_POS: + { + mPointer = eventData.mouseEvent; + mEventQueue.popFront(); + break; + } + + case InputEvent::Type::BUTTON_ACTION: + { + auto currentState = (int) mInputStates[(int) inputId].mCurrentState; + auto reportedEvent = (int) eventData.buttonAction; + + mInputStates[(int) inputId].mCurrentState = transitions[currentState][reportedEvent]; + + if (transitionsReduce[currentState][reportedEvent]) { + mEventQueue.popFront(); + } + + break; + } + + default: + { + mEventQueue.popFront(); + } + } + + mPointerPressure = mInputStates[(int) InputID::MOUSE1].mCurrentState != InputState::State::NONE; + + mMutex.unlock(); +} + +const Vec2F& EventHandler::getPointer() const { return mPointer; } + +bool EventHandler::isPressed(InputID id) const { + return mInputStates[(int) id].mCurrentState == InputState::State::PRESSED; +} + +bool EventHandler::isReleased(InputID id) const { + return mInputStates[(int) id].mCurrentState == InputState::State::RELEASED; +} + +halnf EventHandler::getPointerPressure() const { + return mPointerPressure; +} + +bool EventHandler::isDown(InputID id) const { + return mInputStates[(int) id].mCurrentState == InputState::State::PRESSED || + mInputStates[(int) id].mCurrentState == InputState::State::HOLD; +} + +halnf EventHandler::getScrollY() const { return 0; } \ No newline at end of file diff --git a/Graphics/private/GraphicApplication.cpp b/Graphics/private/GraphicApplication.cpp new file mode 100644 index 0000000..3bfd811 --- /dev/null +++ b/Graphics/private/GraphicApplication.cpp @@ -0,0 +1,84 @@ + +#include "GraphicApplication.hpp" + +using namespace tp; + +Application::Application() { + mWindow = Window::createWindow(); + mGraphics = new Graphics(mWindow); + + mDrawTimer.setDuration(1000.f / mDrawPerSecond); + mProcTimer.setDuration(1000.f / mProcPerSecond); + mPerSecondTimer.setDuration(1000.f); +} + +void Application::run() { + auto eventHandler = new EventHandler(); + + mWindow->setEventHandler(eventHandler); + + mDrawTimer.reset(); + mProcTimer.reset(); + mPerSecondTimer.reset(); + + bool redrawNeeded = false; + + while (!mWindow->shouldClose()) { + if (mProcTimer.isTimeout()) { + + mWindow->processEvents(); + + while (eventHandler->isEvents()) { + eventHandler->processEvent(); + processFrame(eventHandler); + + redrawNeeded = true; + mFramesProcessed++; + } + + mProcTimer.wait(); + mProcTimer.reset(); + } + + if (mDrawTimer.isTimeout()) { + mDrawTimer.reset(); + + if (redrawNeeded) { + mGraphics->drawBegin(); + + drawFrame(mGraphics->getCanvas()); + + mGraphics->drawEnd(); + + mWindow->draw(); + + redrawNeeded = false; + mFramesDrawn++; + } + } + + if (mPerSecondTimer.isTimeout()) { + mPerSecondTimer.reset(); + + mFramesProcessedPerSecond = mFramesProcessed; + mFramesDrawnPerSecond = mFramesDrawn; + + mFramesDrawn = 0; + mFramesProcessed = 0; + } + } + + delete eventHandler; +} + +void Application::processFrame(EventHandler* eventHandler) {} + +void Application::drawFrame(Canvas* canvas) { + // ImGui::Text("Frames processed per second: %f", mFramesProcessedPerSecond); + // ImGui::Text("Frames drawn per second: %f", mFramesDrawnPerSecond); +} + +Application::~Application() { + delete mGraphics; + Window::destroyWindow(mWindow); +} \ No newline at end of file diff --git a/Graphics/private/Window.cpp b/Graphics/private/Window.cpp new file mode 100644 index 0000000..affdea3 --- /dev/null +++ b/Graphics/private/Window.cpp @@ -0,0 +1,171 @@ + +#include "Window.hpp" +#include "WindowContext.hpp" + +#include "Rect.hpp" + +#include + +#ifdef ENV_OS_WINDOWS +#define GLFW_EXPOSE_NATIVE_WIN32 +#endif + +#ifdef ENV_OS_LINUX +#define GLFW_EXPOSE_NATIVE_WAYLAND +#endif + +#include +#include + +using namespace tp; + +static void keyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); +static void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods); +static void scrollCallback(GLFWwindow* window, double xOffset, double yOffset); + +Window::Window(Vec2F size, const char* title) { + mContext = new Context(); + + glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, 1); + + // Create a window and OpenGL context + mContext->window = glfwCreateWindow((int) size.x, (int) size.y, title, nullptr, nullptr); + if (!mContext->window) { + printf("Failed to create GLFW window\n"); + return; + } + + glfwMakeContextCurrent(mContext->window); + + // Initialize GLEW + if (glewInit() != GLEW_OK) { + printf("Failed to initialize GLEW\n"); + return; + } + + // set event bindings + glfwSetWindowUserPointer(mContext->window, this); + glfwSetKeyCallback(mContext->window, keyCallback); + glfwSetMouseButtonCallback(mContext->window, mouseButtonCallback); + glfwSetScrollCallback(mContext->window, scrollCallback); +} + +Window::~Window() { + glfwDestroyWindow(mContext->window); + delete mContext; +} + +Window* Window::createWindow(Vec2F size, const char* title) { + static int count = 1; + if (!count) { + printf("Window class is a singleton\n"); + return nullptr; + } + count--; + + // Initialize GLFW + if (!glfwInit()) { + printf("Failed to initialize GLFW\n"); + return nullptr; + } + + // Set the GLFW error callback + glfwSetErrorCallback([](int error, const char* description) { printf("GLFW Error: %i %s\n", error, description); }); + + auto out = new Window(size, title); + + return out; +} + +void Window::destroyWindow(Window* window) { + delete window; + glfwTerminate(); +} + +bool Window::shouldClose() const { return glfwWindowShouldClose(mContext->window); } + +void Window::processEvents() { + glfwWaitEvents(); + checkAxisUpdates(); +} + +void Window::draw() { + glfwSwapBuffers(mContext->window); +} + +const Vec2F& Window::getSize() const { return mSize; } + +Window::Context* Window::getContext() { return mContext; } + +void Window::setEventHandler(EventHandler* eventHandler) { mEventHandler = eventHandler; } +EventHandler* Window::getEventHandler() { return mEventHandler; } + + +void Window::checkAxisUpdates() { + if (!mEventHandler) return; + + int w, h; + glfwGetWindowSize(mContext->window, &w, &h); + + if (mSize != Vec2F((halnf) w, (halnf) h)) { + mSize = { (halnf) w, (halnf) h }; + mEventHandler->postEvent(InputID::WINDOW_RESIZE, {}); + } + + double x, y; + glfwGetCursorPos(mContext->window, &x, &y); + + int posX, posY; + glfwGetWindowPos(mContext->window, &posX, &posY); + + if (mPointerPos != Vec2F{ (halnf) x, (halnf) y }) { + mPointerPos = { (halnf) x, (halnf) y }; + + auto pos = Vec2F{ (halnf) posX, (halnf) posY }; + RectF windowRec = { { 0, 0 }, mSize }; + + if (windowRec.isInside(mPointerPos)) { + mEventHandler->postEvent(InputID::MOUSE1, { InputEvent::Type::MOUSE_POS, {}, mPointerPos }); + } + } +} + +static void keyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) { + + auto* self = static_cast(glfwGetWindowUserPointer(window)); + if (!self) return; + + EventHandler* eventHandler = self->getEventHandler(); + if (!eventHandler) return; + + self->checkAxisUpdates(); + + if (action == GLFW_PRESS) { + eventHandler->postEvent((InputID) key, { InputEvent::Type::BUTTON_ACTION, InputEvent::ButtonAction::PRESS, {} }); + } else if (action == GLFW_RELEASE) { + eventHandler->postEvent((InputID) key, { InputEvent::Type::BUTTON_ACTION, InputEvent::ButtonAction::RELEASE, {} }); + } +} + +static void mouseButtonCallback(GLFWwindow* window, int button, int action, int mods) { + auto* self = static_cast(glfwGetWindowUserPointer(window)); + if (!self) return; + + EventHandler* eventHandler = self->getEventHandler(); + if (!eventHandler) return; + + self->checkAxisUpdates(); + + auto id = (InputID) ((int) InputID::MOUSE1 + button); + + if (action == GLFW_PRESS) { + eventHandler->postEvent(id, { InputEvent::Type::BUTTON_ACTION, InputEvent::ButtonAction::PRESS, {} } + ); + } else if (action == GLFW_RELEASE) { + eventHandler->postEvent(id, { InputEvent::Type::BUTTON_ACTION, InputEvent::ButtonAction::RELEASE, {} }); + } +} + +static void scrollCallback(GLFWwindow* window, double xOffset, double yOffset) { + // ignore for now +} \ No newline at end of file diff --git a/Graphics/private/WindowContext.hpp b/Graphics/private/WindowContext.hpp new file mode 100644 index 0000000..c237297 --- /dev/null +++ b/Graphics/private/WindowContext.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include "Window.hpp" + +struct GLFWwindow; + +namespace tp { + + class Window::Context { + public: + Context() = default; + GLFWwindow* window = nullptr; + }; +} \ No newline at end of file diff --git a/Graphics/public/EventHandler.hpp b/Graphics/public/EventHandler.hpp new file mode 100644 index 0000000..a44dbf5 --- /dev/null +++ b/Graphics/public/EventHandler.hpp @@ -0,0 +1,93 @@ +#pragma once + +#include "InputCodes.hpp" +#include "Vec.hpp" +#include "List.hpp" +#include "Map.hpp" + +#include + +namespace tp { + + struct InputEvent { + enum class Type { + NONE = 0, + BUTTON_ACTION, + MOUSE_DELTA, + MOUSE_POS, + } type = Type::NONE; + + enum class ButtonAction { + NONE = 0, + PRESS, + RELEASE, + REPEAT, + } buttonAction = ButtonAction::NONE; + + Vec2F mouseEvent = { 0, 0 }; + }; + + class InputState { + public: + InputState() = default; + + void handleEvent(const InputEvent& event); + + bool isStateChanged(); + + // true if event is no longer needed and false if we need to emulate some transitions further + bool isHandled(); + + public: + // Transitions from state to state is strict and defined by state order in the enum + // If posted event conflicts with that automata, we need to emulate intermediate states + enum State { + NONE = 0, // Button is inactive + PRESSED, // Button is pressed + HOLD, // Button is still pressed + RELEASED, // Button is released + }; + + State mCurrentState; + State mPreviousState; + }; + + // Assumes that user and event poster use different threads + // User can add own states for each input and decide how this state changes on specific events + // Event posters has no access to any custom state and only report any changes in any way + class EventHandler { + public: + EventHandler(); + ~EventHandler(); + + public: // Event Poster Interface + + // Record event + void postEvent(InputID inputID, InputEvent inputEvent); + + public: // User interface + bool isEvents(); + void processEvent(); + + [[nodiscard]] const Vec2F& getPointer() const; + [[nodiscard]] bool isPressed(InputID id) const; + [[nodiscard]] bool isReleased(InputID id) const; + [[nodiscard]] bool isDown(InputID id) const; + [[nodiscard]] halnf getScrollY() const; + + [[nodiscard]] halnf getPointerPressure() const; + + private: + std::mutex mMutex = {}; + + // Store thread protected queue of posted events + List> mEventQueue; + + // input states + Vec2F mPointer; + halnf mPointerPressure = 0; + + InputState mInputStates[(int) InputID::LAST_KEY_CODE]{}; + }; + +} \ No newline at end of file diff --git a/Graphics/public/GraphicApplication.hpp b/Graphics/public/GraphicApplication.hpp new file mode 100644 index 0000000..bc9e930 --- /dev/null +++ b/Graphics/public/GraphicApplication.hpp @@ -0,0 +1,39 @@ + +#pragma once + +#include "Window.hpp" +#include "Graphics.hpp" +#include "Timing.hpp" + +namespace tp { + class Application { + public: + Application(); + + void run(); + + virtual void processFrame(EventHandler* eventHandler); + virtual void drawFrame(Canvas* canvas); + + virtual ~Application(); + + protected: + bool mInitialized = false; + + ualni mDrawPerSecond = 60; + ualni mProcPerSecond = 160; + + Timer mDrawTimer; + Timer mProcTimer; + Timer mPerSecondTimer; + + halnf mFramesProcessedPerSecond = 0; + halnf mFramesDrawnPerSecond = 0; + + halnf mFramesProcessed = 0; + halnf mFramesDrawn = 0; + + Graphics* mGraphics = nullptr; + Window* mWindow = nullptr; + }; +} \ No newline at end of file diff --git a/Graphics/public/Graphics.hpp b/Graphics/public/Graphics.hpp new file mode 100644 index 0000000..4d35595 --- /dev/null +++ b/Graphics/public/Graphics.hpp @@ -0,0 +1,104 @@ +#pragma once + +#include "Window.hpp" + +#include "Color.hpp" +#include "Rect.hpp" + +#include "Buffer.hpp" + +namespace tp { + + class DebugGUI { + class Context; + Context* mContext; + + public: + explicit DebugGUI(Window* window); + ~DebugGUI(); + + void procBegin() {} + void procEnd() {} + + void drawBegin(); + void drawEnd(); + }; + + class Canvas { + class Context; + Context* mContext; + + public: + explicit Canvas(Window* window); + ~Canvas(); + + void procBegin() {} + void procEnd() {} + + void drawBegin(); + void drawEnd(); + + public: + enum Align : int2 { + CC = 0x0000, + CT = 0x0001, + CB = 0x0002, + LC = 0x0100, + LT = 0x0101, + LB = 0x0102, + RC = 0x0200, + RT = 0x0201, + RB = 0x0202, + }; + + struct ImageHandle { + ualni id = 0; + }; + + void pushClamp(const RectF& rec); + void popClamp(); + void rect(const RectF& rec, const RGBA& col, halnf round = 0); + void text(const char*, const RectF&, halnf size, Align, halnf padding, const RGBA&); + + ImageHandle createImageFromTextId(ualni id, Vec2F size); + void deleteImageHandle(ImageHandle image); + void drawImage(const RectF& rec, ImageHandle* image, halnf angle = 0, halnf alpha = 1.f, halnf rounding = 0.f); + + private: + Buffer mScissors; + bool mIsClamping = false; + }; + + class Graphics { + public: + explicit Graphics(Window* window) : + mGui(window), + mCanvas(window) {} + + void procBegin() { + mCanvas.procBegin(); + mGui.procBegin(); + } + + void procEnd() { + mCanvas.procEnd(); + mGui.procEnd(); + } + + void drawBegin() { + mCanvas.drawBegin(); + mGui.drawBegin(); + } + + void drawEnd() { + mCanvas.drawEnd(); + mGui.drawEnd(); + } + + Canvas* getCanvas() { return &mCanvas; } + + private: + Canvas mCanvas; + DebugGUI mGui; + }; +} \ No newline at end of file diff --git a/Graphics/public/InputCodes.hpp b/Graphics/public/InputCodes.hpp new file mode 100644 index 0000000..cae8e99 --- /dev/null +++ b/Graphics/public/InputCodes.hpp @@ -0,0 +1,150 @@ + +#pragma once + +#include "Environment.hpp" + +namespace tp { + enum class InputID : ualni { + /* Printable keys */ + SPACE = 32, + APOSTROPHE = 39, /* ' */ + COMMA = 44, /* , */ + MINUS = 45, /* - */ + PERIOD = 46, /* . */ + SLASH = 0xBF, /* \ */ + N0 = 48, + N1 = 49, + N2 = 50, + N3 = 51, + N4 = 52, + N5 = 53, + N6 = 54, + N7 = 55, + N8 = 56, + N9 = 57, + SEMICOLON = 59, /* ; */ + EQUAL = 61, /* = */ + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + LEFT_BRACKET = 91, /* [ */ + BACKSLASH = 92, /* \ */ + RIGHT_BRACKET = 93, /* ] */ + GRAVE_ACCENT = 96, /* ` */ + WORLD_1 = 161, /* non-US #1 */ + WORLD_2 = 162, /* non-US #2 */ + + /* function keys */ + + ESCAPE = 256, + ENTER = 257, + TAB = 258, + BACKSPACE = 259, + INSERT = 260, + DELETE_KEY = 261, + RIGHT = 262, + LEFT = 263, + DOWN = 264, + UP = 265, + PAGE_UP = 266, + PAGE_DOWN = 267, + HOME = 268, + END = 269, + CAPS_LOCK = 280, + SCROLL_LOCK = 281, + NUM_LOCK = 282, + PRINT_SCREEN = 283, + PAUSE = 284, + F1 = 290, + F2 = 291, + F3 = 292, + F4 = 293, + F5 = 294, + F6 = 295, + F7 = 296, + F8 = 297, + F9 = 298, + F10 = 299, + F11 = 300, + F12 = 301, + F13 = 302, + F14 = 303, + F15 = 304, + F16 = 305, + F17 = 306, + F18 = 307, + F19 = 308, + F20 = 309, + F21 = 310, + F22 = 311, + F23 = 312, + F24 = 313, + F25 = 314, + KP_0 = 320, + KP_1 = 321, + KP_2 = 322, + KP_3 = 323, + KP_4 = 324, + KP_5 = 325, + KP_6 = 326, + KP_7 = 327, + KP_8 = 328, + KP_9 = 329, + KP_DECIMAL = 330, + KP_DIVIDE = 331, + KP_MULTIPLY = 332, + KP_SUBTRACT = 333, + KP_ADD = 334, + KP_ENTER = 335, + KP_EQUAL = 336, + LEFT_SHIFT = 340, + LEFT_CONTROL = 341, + LEFT_ALT = 342, + LEFT_SUPER = 343, + RIGHT_SHIFT = 344, + RIGHT_CONTROL = 345, + RIGHT_ALT = 346, + RIGHT_SUPER = 347, + MENU = 348, + + INV_SLASH = 0xDC, + BRA = 0xDB, + KET = 0xDD, + TILDA = 0xC0, + DOUBLE_DOT = 0xBA, + QUOTES = 0xDE, + + MOUSE1 = 501, + MOUSE2 = 502, + MOUSE3 = 503, + MOUSE4 = 504, + MOUSE5 = 505, + + LAST_KEY_CODE = 508, + + WINDOW_RESIZE = 1000, + }; +} \ No newline at end of file diff --git a/Graphics/public/Window.hpp b/Graphics/public/Window.hpp new file mode 100644 index 0000000..3399739 --- /dev/null +++ b/Graphics/public/Window.hpp @@ -0,0 +1,38 @@ +#pragma once + +#include "Buffer.hpp" +#include "EventHandler.hpp" + +namespace tp { + class Window { + class Context; + + private: + Window(Vec2F size, const char* title); + ~Window(); + + public: + static Window* createWindow(Vec2F size = { 1000.f, 900.f }, const char* title = "Window"); + static void destroyWindow(Window* window); + + public: + void draw(); + void processEvents(); + + void setEventHandler(EventHandler* eventHandler); + [[nodiscard]] EventHandler* getEventHandler(); + + Context* getContext(); + [[nodiscard]] bool shouldClose() const; + [[nodiscard]] const Vec2F& getSize() const; + + void checkAxisUpdates(); + + private: + Vec2F mSize; + Vec2F mPointerPos; + + Context* mContext; + EventHandler* mEventHandler = nullptr; + }; +} \ No newline at end of file diff --git a/LICENSE b/LICENSE index 14d823b..d159169 100644 --- a/LICENSE +++ b/LICENSE @@ -1,11 +1,339 @@ -Copyright 2023 Ilya Shurupov + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 -This work is licensed under the Creative Commons Attribution-NonCommercial 4.0 License. -You may obtain a copy of the License at: + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - https://creativecommons.org/licenses/by-nc/4.0/legalcode + Preamble -Unless required by applicable law or agreed to in writing, software distributed under the -License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied. See the License for the specific language governing permissions -and limitations under the License. + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/LibraryViewer/CMakeLists.txt b/LibraryViewer/CMakeLists.txt new file mode 100644 index 0000000..becb208 --- /dev/null +++ b/LibraryViewer/CMakeLists.txt @@ -0,0 +1,23 @@ +project(LibraryViewer) + +### ---------------------- Externals --------------------- ### +set(BINDINGS_INCLUDE ../Externals/glfw/include ${GLEW_INCLUDE_DIR} ${PORTAUDIO_INCLUDE_DIR}) +set(BINDINGS_LIBS glfw Imgui ${GLEW_LIB} ${ALSA_LIBRARY} ${PORTAUDIO_LIB}) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp" "./applications/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ${BINDINGS_INCLUDE} ./ext/) +target_link_libraries(${PROJECT_NAME} PUBLIC Graphics Connection Widgets) +target_link_libraries(${PROJECT_NAME} PUBLIC ${BINDINGS_LIBS}) + +file(COPY "library" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}") +file(COPY "applications/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") + +### -------------------------- Applications -------------------------- ### +add_executable(libView ./applications/Entry.cpp) +target_link_libraries(libView ${PROJECT_NAME}) + diff --git a/LibraryViewer/applications/Entry.cpp b/LibraryViewer/applications/Entry.cpp new file mode 100644 index 0000000..1545d69 --- /dev/null +++ b/LibraryViewer/applications/Entry.cpp @@ -0,0 +1,49 @@ + +#include "GUI.hpp" +#include "Player.hpp" +#include "GraphicApplication.hpp" + +// 1) artworks +// 2) how to easily add more songs? +// 3) GUi : +// - seeker +// - song idx +// - non-existing highlight +// - prev next +// - remove debug gui +// 4) queue & repeat & shuffle... +// 5) new database with history + +using namespace tp; + +class LibraryViewer : public Application { +public: + LibraryViewer() : gui(&library, &player) { + library.loadJson(getHome() + "Library.json"); + library.checkExisting(); + + gui.updateTracks(); + } + + void processFrame(EventHandler* eventHandler) override { + auto rec = RectF{ { 0, 0 }, mWindow->getSize() }; + gui.proc(*eventHandler, rec, rec); + } + + void drawFrame(Canvas* canvas) override { + gui.draw(*canvas); + } + +private: + Player player; + Library library; + LibraryWidget gui; +}; + +int main() { + tp::GlobalGUIConfig config; + tp::gGlobalGUIConfig = &config; + + LibraryViewer lib; + lib.run(); +} diff --git a/LibraryViewer/applications/Font.ttf b/LibraryViewer/applications/Font.ttf new file mode 100644 index 0000000..8a63054 Binary files /dev/null and b/LibraryViewer/applications/Font.ttf differ diff --git a/LibraryViewer/ext/dr_flac.h b/LibraryViewer/ext/dr_flac.h new file mode 100644 index 0000000..14324cf --- /dev/null +++ b/LibraryViewer/ext/dr_flac.h @@ -0,0 +1,12536 @@ +/* +FLAC audio decoder. Choice of public domain or MIT-0. See license statements at the end of this file. +dr_flac - v0.12.42 - 2023-11-02 + +David Reid - mackron@gmail.com + +GitHub: https://github.com/mackron/dr_libs +*/ + +/* +RELEASE NOTES - v0.12.0 +======================= +Version 0.12.0 has breaking API changes including changes to the existing API and the removal of deprecated APIs. + + +Improved Client-Defined Memory Allocation +----------------------------------------- +The main change with this release is the addition of a more flexible way of implementing custom memory allocation routines. The +existing system of DRFLAC_MALLOC, DRFLAC_REALLOC and DRFLAC_FREE are still in place and will be used by default when no custom +allocation callbacks are specified. + +To use the new system, you pass in a pointer to a drflac_allocation_callbacks object to drflac_open() and family, like this: + + void* my_malloc(size_t sz, void* pUserData) + { + return malloc(sz); + } + void* my_realloc(void* p, size_t sz, void* pUserData) + { + return realloc(p, sz); + } + void my_free(void* p, void* pUserData) + { + free(p); + } + + ... + + drflac_allocation_callbacks allocationCallbacks; + allocationCallbacks.pUserData = &myData; + allocationCallbacks.onMalloc = my_malloc; + allocationCallbacks.onRealloc = my_realloc; + allocationCallbacks.onFree = my_free; + drflac* pFlac = drflac_open_file("my_file.flac", &allocationCallbacks); + +The advantage of this new system is that it allows you to specify user data which will be passed in to the allocation routines. + +Passing in null for the allocation callbacks object will cause dr_flac to use defaults which is the same as DRFLAC_MALLOC, +DRFLAC_REALLOC and DRFLAC_FREE and the equivalent of how it worked in previous versions. + +Every API that opens a drflac object now takes this extra parameter. These include the following: + + drflac_open() + drflac_open_relaxed() + drflac_open_with_metadata() + drflac_open_with_metadata_relaxed() + drflac_open_file() + drflac_open_file_with_metadata() + drflac_open_memory() + drflac_open_memory_with_metadata() + drflac_open_and_read_pcm_frames_s32() + drflac_open_and_read_pcm_frames_s16() + drflac_open_and_read_pcm_frames_f32() + drflac_open_file_and_read_pcm_frames_s32() + drflac_open_file_and_read_pcm_frames_s16() + drflac_open_file_and_read_pcm_frames_f32() + drflac_open_memory_and_read_pcm_frames_s32() + drflac_open_memory_and_read_pcm_frames_s16() + drflac_open_memory_and_read_pcm_frames_f32() + + + +Optimizations +------------- +Seeking performance has been greatly improved. A new binary search based seeking algorithm has been introduced which significantly +improves performance over the brute force method which was used when no seek table was present. Seek table based seeking also takes +advantage of the new binary search seeking system to further improve performance there as well. Note that this depends on CRC which +means it will be disabled when DR_FLAC_NO_CRC is used. + +The SSE4.1 pipeline has been cleaned up and optimized. You should see some improvements with decoding speed of 24-bit files in +particular. 16-bit streams should also see some improvement. + +drflac_read_pcm_frames_s16() has been optimized. Previously this sat on top of drflac_read_pcm_frames_s32() and performed it's s32 +to s16 conversion in a second pass. This is now all done in a single pass. This includes SSE2 and ARM NEON optimized paths. + +A minor optimization has been implemented for drflac_read_pcm_frames_s32(). This will now use an SSE2 optimized pipeline for stereo +channel reconstruction which is the last part of the decoding process. + +The ARM build has seen a few improvements. The CLZ (count leading zeroes) and REV (byte swap) instructions are now used when +compiling with GCC and Clang which is achieved using inline assembly. The CLZ instruction requires ARM architecture version 5 at +compile time and the REV instruction requires ARM architecture version 6. + +An ARM NEON optimized pipeline has been implemented. To enable this you'll need to add -mfpu=neon to the command line when compiling. + + +Removed APIs +------------ +The following APIs were deprecated in version 0.11.0 and have been completely removed in version 0.12.0: + + drflac_read_s32() -> drflac_read_pcm_frames_s32() + drflac_read_s16() -> drflac_read_pcm_frames_s16() + drflac_read_f32() -> drflac_read_pcm_frames_f32() + drflac_seek_to_sample() -> drflac_seek_to_pcm_frame() + drflac_open_and_decode_s32() -> drflac_open_and_read_pcm_frames_s32() + drflac_open_and_decode_s16() -> drflac_open_and_read_pcm_frames_s16() + drflac_open_and_decode_f32() -> drflac_open_and_read_pcm_frames_f32() + drflac_open_and_decode_file_s32() -> drflac_open_file_and_read_pcm_frames_s32() + drflac_open_and_decode_file_s16() -> drflac_open_file_and_read_pcm_frames_s16() + drflac_open_and_decode_file_f32() -> drflac_open_file_and_read_pcm_frames_f32() + drflac_open_and_decode_memory_s32() -> drflac_open_memory_and_read_pcm_frames_s32() + drflac_open_and_decode_memory_s16() -> drflac_open_memory_and_read_pcm_frames_s16() + drflac_open_and_decode_memory_f32() -> drflac_open_memroy_and_read_pcm_frames_f32() + +Prior versions of dr_flac operated on a per-sample basis whereas now it operates on PCM frames. The removed APIs all relate +to the old per-sample APIs. You now need to use the "pcm_frame" versions. +*/ + + +/* +Introduction +============ +dr_flac is a single file library. To use it, do something like the following in one .c file. + + ```c + #define DR_FLAC_IMPLEMENTATION + #include "dr_flac.h" + ``` + +You can then #include this file in other parts of the program as you would with any other header file. To decode audio data, do something like the following: + + ```c + drflac* pFlac = drflac_open_file("MySong.flac", NULL); + if (pFlac == NULL) { + // Failed to open FLAC file + } + + drflac_int32* pSamples = malloc(pFlac->totalPCMFrameCount * pFlac->channels * sizeof(drflac_int32)); + drflac_uint64 numberOfInterleavedSamplesActuallyRead = drflac_read_pcm_frames_s32(pFlac, pFlac->totalPCMFrameCount, pSamples); + ``` + +The drflac object represents the decoder. It is a transparent type so all the information you need, such as the number of channels and the bits per sample, +should be directly accessible - just make sure you don't change their values. Samples are always output as interleaved signed 32-bit PCM. In the example above +a native FLAC stream was opened, however dr_flac has seamless support for Ogg encapsulated FLAC streams as well. + +You do not need to decode the entire stream in one go - you just specify how many samples you'd like at any given time and the decoder will give you as many +samples as it can, up to the amount requested. Later on when you need the next batch of samples, just call it again. Example: + + ```c + while (drflac_read_pcm_frames_s32(pFlac, chunkSizeInPCMFrames, pChunkSamples) > 0) { + do_something(); + } + ``` + +You can seek to a specific PCM frame with `drflac_seek_to_pcm_frame()`. + +If you just want to quickly decode an entire FLAC file in one go you can do something like this: + + ```c + unsigned int channels; + unsigned int sampleRate; + drflac_uint64 totalPCMFrameCount; + drflac_int32* pSampleData = drflac_open_file_and_read_pcm_frames_s32("MySong.flac", &channels, &sampleRate, &totalPCMFrameCount, NULL); + if (pSampleData == NULL) { + // Failed to open and decode FLAC file. + } + + ... + + drflac_free(pSampleData, NULL); + ``` + +You can read samples as signed 16-bit integer and 32-bit floating-point PCM with the *_s16() and *_f32() family of APIs respectively, but note that these +should be considered lossy. + + +If you need access to metadata (album art, etc.), use `drflac_open_with_metadata()`, `drflac_open_file_with_metdata()` or `drflac_open_memory_with_metadata()`. +The rationale for keeping these APIs separate is that they're slightly slower than the normal versions and also just a little bit harder to use. dr_flac +reports metadata to the application through the use of a callback, and every metadata block is reported before `drflac_open_with_metdata()` returns. + +The main opening APIs (`drflac_open()`, etc.) will fail if the header is not present. The presents a problem in certain scenarios such as broadcast style +streams or internet radio where the header may not be present because the user has started playback mid-stream. To handle this, use the relaxed APIs: + + `drflac_open_relaxed()` + `drflac_open_with_metadata_relaxed()` + +It is not recommended to use these APIs for file based streams because a missing header would usually indicate a corrupt or perverse file. In addition, these +APIs can take a long time to initialize because they may need to spend a lot of time finding the first frame. + + + +Build Options +============= +#define these options before including this file. + +#define DR_FLAC_NO_STDIO + Disable `drflac_open_file()` and family. + +#define DR_FLAC_NO_OGG + Disables support for Ogg/FLAC streams. + +#define DR_FLAC_BUFFER_SIZE + Defines the size of the internal buffer to store data from onRead(). This buffer is used to reduce the number of calls back to the client for more data. + Larger values means more memory, but better performance. My tests show diminishing returns after about 4KB (which is the default). Consider reducing this if + you have a very efficient implementation of onRead(), or increase it if it's very inefficient. Must be a multiple of 8. + +#define DR_FLAC_NO_CRC + Disables CRC checks. This will offer a performance boost when CRC is unnecessary. This will disable binary search seeking. When seeking, the seek table will + be used if available. Otherwise the seek will be performed using brute force. + +#define DR_FLAC_NO_SIMD + Disables SIMD optimizations (SSE on x86/x64 architectures, NEON on ARM architectures). Use this if you are having compatibility issues with your compiler. + +#define DR_FLAC_NO_WCHAR + Disables all functions ending with `_w`. Use this if your compiler does not provide wchar.h. Not required if DR_FLAC_NO_STDIO is also defined. + + + +Notes +===== +- dr_flac does not support changing the sample rate nor channel count mid stream. +- dr_flac is not thread-safe, but its APIs can be called from any thread so long as you do your own synchronization. +- When using Ogg encapsulation, a corrupted metadata block will result in `drflac_open_with_metadata()` and `drflac_open()` returning inconsistent samples due + to differences in corrupted stream recorvery logic between the two APIs. +*/ + +#ifndef dr_flac_h +#define dr_flac_h + +#ifdef __cplusplus +extern "C" { +#endif + +#define DRFLAC_STRINGIFY(x) #x +#define DRFLAC_XSTRINGIFY(x) DRFLAC_STRINGIFY(x) + +#define DRFLAC_VERSION_MAJOR 0 +#define DRFLAC_VERSION_MINOR 12 +#define DRFLAC_VERSION_REVISION 42 +#define DRFLAC_VERSION_STRING DRFLAC_XSTRINGIFY(DRFLAC_VERSION_MAJOR) "." DRFLAC_XSTRINGIFY(DRFLAC_VERSION_MINOR) "." DRFLAC_XSTRINGIFY(DRFLAC_VERSION_REVISION) + +#include /* For size_t. */ + +/* Sized Types */ +typedef signed char drflac_int8; +typedef unsigned char drflac_uint8; +typedef signed short drflac_int16; +typedef unsigned short drflac_uint16; +typedef signed int drflac_int32; +typedef unsigned int drflac_uint32; +#if defined(_MSC_VER) && !defined(__clang__) + typedef signed __int64 drflac_int64; + typedef unsigned __int64 drflac_uint64; +#else + #if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wlong-long" + #if defined(__clang__) + #pragma GCC diagnostic ignored "-Wc++11-long-long" + #endif + #endif + typedef signed long long drflac_int64; + typedef unsigned long long drflac_uint64; + #if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))) + #pragma GCC diagnostic pop + #endif +#endif +#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__powerpc64__) + typedef drflac_uint64 drflac_uintptr; +#else + typedef drflac_uint32 drflac_uintptr; +#endif +typedef drflac_uint8 drflac_bool8; +typedef drflac_uint32 drflac_bool32; +#define DRFLAC_TRUE 1 +#define DRFLAC_FALSE 0 +/* End Sized Types */ + +/* Decorations */ +#if !defined(DRFLAC_API) + #if defined(DRFLAC_DLL) + #if defined(_WIN32) + #define DRFLAC_DLL_IMPORT __declspec(dllimport) + #define DRFLAC_DLL_EXPORT __declspec(dllexport) + #define DRFLAC_DLL_PRIVATE static + #else + #if defined(__GNUC__) && __GNUC__ >= 4 + #define DRFLAC_DLL_IMPORT __attribute__((visibility("default"))) + #define DRFLAC_DLL_EXPORT __attribute__((visibility("default"))) + #define DRFLAC_DLL_PRIVATE __attribute__((visibility("hidden"))) + #else + #define DRFLAC_DLL_IMPORT + #define DRFLAC_DLL_EXPORT + #define DRFLAC_DLL_PRIVATE static + #endif + #endif + + #if defined(DR_FLAC_IMPLEMENTATION) || defined(DRFLAC_IMPLEMENTATION) + #define DRFLAC_API DRFLAC_DLL_EXPORT + #else + #define DRFLAC_API DRFLAC_DLL_IMPORT + #endif + #define DRFLAC_PRIVATE DRFLAC_DLL_PRIVATE + #else + #define DRFLAC_API extern + #define DRFLAC_PRIVATE static + #endif +#endif +/* End Decorations */ + +#if defined(_MSC_VER) && _MSC_VER >= 1700 /* Visual Studio 2012 */ + #define DRFLAC_DEPRECATED __declspec(deprecated) +#elif (defined(__GNUC__) && __GNUC__ >= 4) /* GCC 4 */ + #define DRFLAC_DEPRECATED __attribute__((deprecated)) +#elif defined(__has_feature) /* Clang */ + #if __has_feature(attribute_deprecated) + #define DRFLAC_DEPRECATED __attribute__((deprecated)) + #else + #define DRFLAC_DEPRECATED + #endif +#else + #define DRFLAC_DEPRECATED +#endif + +DRFLAC_API void drflac_version(drflac_uint32* pMajor, drflac_uint32* pMinor, drflac_uint32* pRevision); +DRFLAC_API const char* drflac_version_string(void); + +/* Allocation Callbacks */ +typedef struct +{ + void* pUserData; + void* (* onMalloc)(size_t sz, void* pUserData); + void* (* onRealloc)(void* p, size_t sz, void* pUserData); + void (* onFree)(void* p, void* pUserData); +} drflac_allocation_callbacks; +/* End Allocation Callbacks */ + +/* +As data is read from the client it is placed into an internal buffer for fast access. This controls the size of that buffer. Larger values means more speed, +but also more memory. In my testing there is diminishing returns after about 4KB, but you can fiddle with this to suit your own needs. Must be a multiple of 8. +*/ +#ifndef DR_FLAC_BUFFER_SIZE +#define DR_FLAC_BUFFER_SIZE 4096 +#endif + + +/* Architecture Detection */ +#if defined(_WIN64) || defined(_LP64) || defined(__LP64__) +#define DRFLAC_64BIT +#endif + +#if defined(__x86_64__) || defined(_M_X64) + #define DRFLAC_X64 +#elif defined(__i386) || defined(_M_IX86) + #define DRFLAC_X86 +#elif defined(__arm__) || defined(_M_ARM) || defined(__arm64) || defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64) + #define DRFLAC_ARM +#endif +/* End Architecture Detection */ + + +#ifdef DRFLAC_64BIT +typedef drflac_uint64 drflac_cache_t; +#else +typedef drflac_uint32 drflac_cache_t; +#endif + +/* The various metadata block types. */ +#define DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO 0 +#define DRFLAC_METADATA_BLOCK_TYPE_PADDING 1 +#define DRFLAC_METADATA_BLOCK_TYPE_APPLICATION 2 +#define DRFLAC_METADATA_BLOCK_TYPE_SEEKTABLE 3 +#define DRFLAC_METADATA_BLOCK_TYPE_VORBIS_COMMENT 4 +#define DRFLAC_METADATA_BLOCK_TYPE_CUESHEET 5 +#define DRFLAC_METADATA_BLOCK_TYPE_PICTURE 6 +#define DRFLAC_METADATA_BLOCK_TYPE_INVALID 127 + +/* The various picture types specified in the PICTURE block. */ +#define DRFLAC_PICTURE_TYPE_OTHER 0 +#define DRFLAC_PICTURE_TYPE_FILE_ICON 1 +#define DRFLAC_PICTURE_TYPE_OTHER_FILE_ICON 2 +#define DRFLAC_PICTURE_TYPE_COVER_FRONT 3 +#define DRFLAC_PICTURE_TYPE_COVER_BACK 4 +#define DRFLAC_PICTURE_TYPE_LEAFLET_PAGE 5 +#define DRFLAC_PICTURE_TYPE_MEDIA 6 +#define DRFLAC_PICTURE_TYPE_LEAD_ARTIST 7 +#define DRFLAC_PICTURE_TYPE_ARTIST 8 +#define DRFLAC_PICTURE_TYPE_CONDUCTOR 9 +#define DRFLAC_PICTURE_TYPE_BAND 10 +#define DRFLAC_PICTURE_TYPE_COMPOSER 11 +#define DRFLAC_PICTURE_TYPE_LYRICIST 12 +#define DRFLAC_PICTURE_TYPE_RECORDING_LOCATION 13 +#define DRFLAC_PICTURE_TYPE_DURING_RECORDING 14 +#define DRFLAC_PICTURE_TYPE_DURING_PERFORMANCE 15 +#define DRFLAC_PICTURE_TYPE_SCREEN_CAPTURE 16 +#define DRFLAC_PICTURE_TYPE_BRIGHT_COLORED_FISH 17 +#define DRFLAC_PICTURE_TYPE_ILLUSTRATION 18 +#define DRFLAC_PICTURE_TYPE_BAND_LOGOTYPE 19 +#define DRFLAC_PICTURE_TYPE_PUBLISHER_LOGOTYPE 20 + +typedef enum +{ + drflac_container_native, + drflac_container_ogg, + drflac_container_unknown +} drflac_container; + +typedef enum +{ + drflac_seek_origin_start, + drflac_seek_origin_current +} drflac_seek_origin; + +/* The order of members in this structure is important because we map this directly to the raw data within the SEEKTABLE metadata block. */ +typedef struct +{ + drflac_uint64 firstPCMFrame; + drflac_uint64 flacFrameOffset; /* The offset from the first byte of the header of the first frame. */ + drflac_uint16 pcmFrameCount; +} drflac_seekpoint; + +typedef struct +{ + drflac_uint16 minBlockSizeInPCMFrames; + drflac_uint16 maxBlockSizeInPCMFrames; + drflac_uint32 minFrameSizeInPCMFrames; + drflac_uint32 maxFrameSizeInPCMFrames; + drflac_uint32 sampleRate; + drflac_uint8 channels; + drflac_uint8 bitsPerSample; + drflac_uint64 totalPCMFrameCount; + drflac_uint8 md5[16]; +} drflac_streaminfo; + +typedef struct +{ + /* + The metadata type. Use this to know how to interpret the data below. Will be set to one of the + DRFLAC_METADATA_BLOCK_TYPE_* tokens. + */ + drflac_uint32 type; + + /* + A pointer to the raw data. This points to a temporary buffer so don't hold on to it. It's best to + not modify the contents of this buffer. Use the structures below for more meaningful and structured + information about the metadata. It's possible for this to be null. + */ + const void* pRawData; + + /* The size in bytes of the block and the buffer pointed to by pRawData if it's non-NULL. */ + drflac_uint32 rawDataSize; + + union + { + drflac_streaminfo streaminfo; + + struct + { + int unused; + } padding; + + struct + { + drflac_uint32 id; + const void* pData; + drflac_uint32 dataSize; + } application; + + struct + { + drflac_uint32 seekpointCount; + const drflac_seekpoint* pSeekpoints; + } seektable; + + struct + { + drflac_uint32 vendorLength; + const char* vendor; + drflac_uint32 commentCount; + const void* pComments; + } vorbis_comment; + + struct + { + char catalog[128]; + drflac_uint64 leadInSampleCount; + drflac_bool32 isCD; + drflac_uint8 trackCount; + const void* pTrackData; + } cuesheet; + + struct + { + drflac_uint32 type; + drflac_uint32 mimeLength; + const char* mime; + drflac_uint32 descriptionLength; + const char* description; + drflac_uint32 width; + drflac_uint32 height; + drflac_uint32 colorDepth; + drflac_uint32 indexColorCount; + drflac_uint32 pictureDataSize; + const drflac_uint8* pPictureData; + } picture; + } data; +} drflac_metadata; + + +/* +Callback for when data needs to be read from the client. + + +Parameters +---------- +pUserData (in) + The user data that was passed to drflac_open() and family. + +pBufferOut (out) + The output buffer. + +bytesToRead (in) + The number of bytes to read. + + +Return Value +------------ +The number of bytes actually read. + + +Remarks +------- +A return value of less than bytesToRead indicates the end of the stream. Do _not_ return from this callback until either the entire bytesToRead is filled or +you have reached the end of the stream. +*/ +typedef size_t (* drflac_read_proc)(void* pUserData, void* pBufferOut, size_t bytesToRead); + +/* +Callback for when data needs to be seeked. + + +Parameters +---------- +pUserData (in) + The user data that was passed to drflac_open() and family. + +offset (in) + The number of bytes to move, relative to the origin. Will never be negative. + +origin (in) + The origin of the seek - the current position or the start of the stream. + + +Return Value +------------ +Whether or not the seek was successful. + + +Remarks +------- +The offset will never be negative. Whether or not it is relative to the beginning or current position is determined by the "origin" parameter which will be +either drflac_seek_origin_start or drflac_seek_origin_current. + +When seeking to a PCM frame using drflac_seek_to_pcm_frame(), dr_flac may call this with an offset beyond the end of the FLAC stream. This needs to be detected +and handled by returning DRFLAC_FALSE. +*/ +typedef drflac_bool32 (* drflac_seek_proc)(void* pUserData, int offset, drflac_seek_origin origin); + +/* +Callback for when a metadata block is read. + + +Parameters +---------- +pUserData (in) + The user data that was passed to drflac_open() and family. + +pMetadata (in) + A pointer to a structure containing the data of the metadata block. + + +Remarks +------- +Use pMetadata->type to determine which metadata block is being handled and how to read the data. This +will be set to one of the DRFLAC_METADATA_BLOCK_TYPE_* tokens. +*/ +typedef void (* drflac_meta_proc)(void* pUserData, drflac_metadata* pMetadata); + + +/* Structure for internal use. Only used for decoders opened with drflac_open_memory. */ +typedef struct +{ + const drflac_uint8* data; + size_t dataSize; + size_t currentReadPos; +} drflac__memory_stream; + +/* Structure for internal use. Used for bit streaming. */ +typedef struct +{ + /* The function to call when more data needs to be read. */ + drflac_read_proc onRead; + + /* The function to call when the current read position needs to be moved. */ + drflac_seek_proc onSeek; + + /* The user data to pass around to onRead and onSeek. */ + void* pUserData; + + + /* + The number of unaligned bytes in the L2 cache. This will always be 0 until the end of the stream is hit. At the end of the + stream there will be a number of bytes that don't cleanly fit in an L1 cache line, so we use this variable to know whether + or not the bistreamer needs to run on a slower path to read those last bytes. This will never be more than sizeof(drflac_cache_t). + */ + size_t unalignedByteCount; + + /* The content of the unaligned bytes. */ + drflac_cache_t unalignedCache; + + /* The index of the next valid cache line in the "L2" cache. */ + drflac_uint32 nextL2Line; + + /* The number of bits that have been consumed by the cache. This is used to determine how many valid bits are remaining. */ + drflac_uint32 consumedBits; + + /* + The cached data which was most recently read from the client. There are two levels of cache. Data flows as such: + Client -> L2 -> L1. The L2 -> L1 movement is aligned and runs on a fast path in just a few instructions. + */ + drflac_cache_t cacheL2[DR_FLAC_BUFFER_SIZE/sizeof(drflac_cache_t)]; + drflac_cache_t cache; + + /* + CRC-16. This is updated whenever bits are read from the bit stream. Manually set this to 0 to reset the CRC. For FLAC, this + is reset to 0 at the beginning of each frame. + */ + drflac_uint16 crc16; + drflac_cache_t crc16Cache; /* A cache for optimizing CRC calculations. This is filled when when the L1 cache is reloaded. */ + drflac_uint32 crc16CacheIgnoredBytes; /* The number of bytes to ignore when updating the CRC-16 from the CRC-16 cache. */ +} drflac_bs; + +typedef struct +{ + /* The type of the subframe: SUBFRAME_CONSTANT, SUBFRAME_VERBATIM, SUBFRAME_FIXED or SUBFRAME_LPC. */ + drflac_uint8 subframeType; + + /* The number of wasted bits per sample as specified by the sub-frame header. */ + drflac_uint8 wastedBitsPerSample; + + /* The order to use for the prediction stage for SUBFRAME_FIXED and SUBFRAME_LPC. */ + drflac_uint8 lpcOrder; + + /* A pointer to the buffer containing the decoded samples in the subframe. This pointer is an offset from drflac::pExtraData. */ + drflac_int32* pSamplesS32; +} drflac_subframe; + +typedef struct +{ + /* + If the stream uses variable block sizes, this will be set to the index of the first PCM frame. If fixed block sizes are used, this will + always be set to 0. This is 64-bit because the decoded PCM frame number will be 36 bits. + */ + drflac_uint64 pcmFrameNumber; + + /* + If the stream uses fixed block sizes, this will be set to the frame number. If variable block sizes are used, this will always be 0. This + is 32-bit because in fixed block sizes, the maximum frame number will be 31 bits. + */ + drflac_uint32 flacFrameNumber; + + /* The sample rate of this frame. */ + drflac_uint32 sampleRate; + + /* The number of PCM frames in each sub-frame within this frame. */ + drflac_uint16 blockSizeInPCMFrames; + + /* + The channel assignment of this frame. This is not always set to the channel count. If interchannel decorrelation is being used this + will be set to DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE, DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE or DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE. + */ + drflac_uint8 channelAssignment; + + /* The number of bits per sample within this frame. */ + drflac_uint8 bitsPerSample; + + /* The frame's CRC. */ + drflac_uint8 crc8; +} drflac_frame_header; + +typedef struct +{ + /* The header. */ + drflac_frame_header header; + + /* + The number of PCM frames left to be read in this FLAC frame. This is initially set to the block size. As PCM frames are read, + this will be decremented. When it reaches 0, the decoder will see this frame as fully consumed and load the next frame. + */ + drflac_uint32 pcmFramesRemaining; + + /* The list of sub-frames within the frame. There is one sub-frame for each channel, and there's a maximum of 8 channels. */ + drflac_subframe subframes[8]; +} drflac_frame; + +typedef struct +{ + /* The function to call when a metadata block is read. */ + drflac_meta_proc onMeta; + + /* The user data posted to the metadata callback function. */ + void* pUserDataMD; + + /* Memory allocation callbacks. */ + drflac_allocation_callbacks allocationCallbacks; + + + /* The sample rate. Will be set to something like 44100. */ + drflac_uint32 sampleRate; + + /* + The number of channels. This will be set to 1 for monaural streams, 2 for stereo, etc. Maximum 8. This is set based on the + value specified in the STREAMINFO block. + */ + drflac_uint8 channels; + + /* The bits per sample. Will be set to something like 16, 24, etc. */ + drflac_uint8 bitsPerSample; + + /* The maximum block size, in samples. This number represents the number of samples in each channel (not combined). */ + drflac_uint16 maxBlockSizeInPCMFrames; + + /* + The total number of PCM Frames making up the stream. Can be 0 in which case it's still a valid stream, but just means + the total PCM frame count is unknown. Likely the case with streams like internet radio. + */ + drflac_uint64 totalPCMFrameCount; + + + /* The container type. This is set based on whether or not the decoder was opened from a native or Ogg stream. */ + drflac_container container; + + /* The number of seekpoints in the seektable. */ + drflac_uint32 seekpointCount; + + + /* Information about the frame the decoder is currently sitting on. */ + drflac_frame currentFLACFrame; + + + /* The index of the PCM frame the decoder is currently sitting on. This is only used for seeking. */ + drflac_uint64 currentPCMFrame; + + /* The position of the first FLAC frame in the stream. This is only ever used for seeking. */ + drflac_uint64 firstFLACFramePosInBytes; + + + /* A hack to avoid a malloc() when opening a decoder with drflac_open_memory(). */ + drflac__memory_stream memoryStream; + + + /* A pointer to the decoded sample data. This is an offset of pExtraData. */ + drflac_int32* pDecodedSamples; + + /* A pointer to the seek table. This is an offset of pExtraData, or NULL if there is no seek table. */ + drflac_seekpoint* pSeekpoints; + + /* Internal use only. Only used with Ogg containers. Points to a drflac_oggbs object. This is an offset of pExtraData. */ + void* _oggbs; + + /* Internal use only. Used for profiling and testing different seeking modes. */ + drflac_bool32 _noSeekTableSeek : 1; + drflac_bool32 _noBinarySearchSeek : 1; + drflac_bool32 _noBruteForceSeek : 1; + + /* The bit streamer. The raw FLAC data is fed through this object. */ + drflac_bs bs; + + /* Variable length extra data. We attach this to the end of the object so we can avoid unnecessary mallocs. */ + drflac_uint8 pExtraData[1]; +} drflac; + + +/* +Opens a FLAC decoder. + + +Parameters +---------- +onRead (in) + The function to call when data needs to be read from the client. + +onSeek (in) + The function to call when the read position of the client data needs to move. + +pUserData (in, optional) + A pointer to application defined data that will be passed to onRead and onSeek. + +pAllocationCallbacks (in, optional) + A pointer to application defined callbacks for managing memory allocations. + + +Return Value +------------ +Returns a pointer to an object representing the decoder. + + +Remarks +------- +Close the decoder with `drflac_close()`. + +`pAllocationCallbacks` can be NULL in which case it will use `DRFLAC_MALLOC`, `DRFLAC_REALLOC` and `DRFLAC_FREE`. + +This function will automatically detect whether or not you are attempting to open a native or Ogg encapsulated FLAC, both of which should work seamlessly +without any manual intervention. Ogg encapsulation also works with multiplexed streams which basically means it can play FLAC encoded audio tracks in videos. + +This is the lowest level function for opening a FLAC stream. You can also use `drflac_open_file()` and `drflac_open_memory()` to open the stream from a file or +from a block of memory respectively. + +The STREAMINFO block must be present for this to succeed. Use `drflac_open_relaxed()` to open a FLAC stream where the header may not be present. + +Use `drflac_open_with_metadata()` if you need access to metadata. + + +Seek Also +--------- +drflac_open_file() +drflac_open_memory() +drflac_open_with_metadata() +drflac_close() +*/ +DRFLAC_API drflac* drflac_open(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* +Opens a FLAC stream with relaxed validation of the header block. + + +Parameters +---------- +onRead (in) + The function to call when data needs to be read from the client. + +onSeek (in) + The function to call when the read position of the client data needs to move. + +container (in) + Whether or not the FLAC stream is encapsulated using standard FLAC encapsulation or Ogg encapsulation. + +pUserData (in, optional) + A pointer to application defined data that will be passed to onRead and onSeek. + +pAllocationCallbacks (in, optional) + A pointer to application defined callbacks for managing memory allocations. + + +Return Value +------------ +A pointer to an object representing the decoder. + + +Remarks +------- +The same as drflac_open(), except attempts to open the stream even when a header block is not present. + +Because the header is not necessarily available, the caller must explicitly define the container (Native or Ogg). Do not set this to `drflac_container_unknown` +as that is for internal use only. + +Opening in relaxed mode will continue reading data from onRead until it finds a valid frame. If a frame is never found it will continue forever. To abort, +force your `onRead` callback to return 0, which dr_flac will use as an indicator that the end of the stream was found. + +Use `drflac_open_with_metadata_relaxed()` if you need access to metadata. +*/ +DRFLAC_API drflac* drflac_open_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* +Opens a FLAC decoder and notifies the caller of the metadata chunks (album art, etc.). + + +Parameters +---------- +onRead (in) + The function to call when data needs to be read from the client. + +onSeek (in) + The function to call when the read position of the client data needs to move. + +onMeta (in) + The function to call for every metadata block. + +pUserData (in, optional) + A pointer to application defined data that will be passed to onRead, onSeek and onMeta. + +pAllocationCallbacks (in, optional) + A pointer to application defined callbacks for managing memory allocations. + + +Return Value +------------ +A pointer to an object representing the decoder. + + +Remarks +------- +Close the decoder with `drflac_close()`. + +`pAllocationCallbacks` can be NULL in which case it will use `DRFLAC_MALLOC`, `DRFLAC_REALLOC` and `DRFLAC_FREE`. + +This is slower than `drflac_open()`, so avoid this one if you don't need metadata. Internally, this will allocate and free memory on the heap for every +metadata block except for STREAMINFO and PADDING blocks. + +The caller is notified of the metadata via the `onMeta` callback. All metadata blocks will be handled before the function returns. This callback takes a +pointer to a `drflac_metadata` object which is a union containing the data of all relevant metadata blocks. Use the `type` member to discriminate against +the different metadata types. + +The STREAMINFO block must be present for this to succeed. Use `drflac_open_with_metadata_relaxed()` to open a FLAC stream where the header may not be present. + +Note that this will behave inconsistently with `drflac_open()` if the stream is an Ogg encapsulated stream and a metadata block is corrupted. This is due to +the way the Ogg stream recovers from corrupted pages. When `drflac_open_with_metadata()` is being used, the open routine will try to read the contents of the +metadata block, whereas `drflac_open()` will simply seek past it (for the sake of efficiency). This inconsistency can result in different samples being +returned depending on whether or not the stream is being opened with metadata. + + +Seek Also +--------- +drflac_open_file_with_metadata() +drflac_open_memory_with_metadata() +drflac_open() +drflac_close() +*/ +DRFLAC_API drflac* drflac_open_with_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* +The same as drflac_open_with_metadata(), except attempts to open the stream even when a header block is not present. + +See Also +-------- +drflac_open_with_metadata() +drflac_open_relaxed() +*/ +DRFLAC_API drflac* drflac_open_with_metadata_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* +Closes the given FLAC decoder. + + +Parameters +---------- +pFlac (in) + The decoder to close. + + +Remarks +------- +This will destroy the decoder object. + + +See Also +-------- +drflac_open() +drflac_open_with_metadata() +drflac_open_file() +drflac_open_file_w() +drflac_open_file_with_metadata() +drflac_open_file_with_metadata_w() +drflac_open_memory() +drflac_open_memory_with_metadata() +*/ +DRFLAC_API void drflac_close(drflac* pFlac); + + +/* +Reads sample data from the given FLAC decoder, output as interleaved signed 32-bit PCM. + + +Parameters +---------- +pFlac (in) + The decoder. + +framesToRead (in) + The number of PCM frames to read. + +pBufferOut (out, optional) + A pointer to the buffer that will receive the decoded samples. + + +Return Value +------------ +Returns the number of PCM frames actually read. If the return value is less than `framesToRead` it has reached the end. + + +Remarks +------- +pBufferOut can be null, in which case the call will act as a seek, and the return value will be the number of frames seeked. +*/ +DRFLAC_API drflac_uint64 drflac_read_pcm_frames_s32(drflac* pFlac, drflac_uint64 framesToRead, drflac_int32* pBufferOut); + + +/* +Reads sample data from the given FLAC decoder, output as interleaved signed 16-bit PCM. + + +Parameters +---------- +pFlac (in) + The decoder. + +framesToRead (in) + The number of PCM frames to read. + +pBufferOut (out, optional) + A pointer to the buffer that will receive the decoded samples. + + +Return Value +------------ +Returns the number of PCM frames actually read. If the return value is less than `framesToRead` it has reached the end. + + +Remarks +------- +pBufferOut can be null, in which case the call will act as a seek, and the return value will be the number of frames seeked. + +Note that this is lossy for streams where the bits per sample is larger than 16. +*/ +DRFLAC_API drflac_uint64 drflac_read_pcm_frames_s16(drflac* pFlac, drflac_uint64 framesToRead, drflac_int16* pBufferOut); + +/* +Reads sample data from the given FLAC decoder, output as interleaved 32-bit floating point PCM. + + +Parameters +---------- +pFlac (in) + The decoder. + +framesToRead (in) + The number of PCM frames to read. + +pBufferOut (out, optional) + A pointer to the buffer that will receive the decoded samples. + + +Return Value +------------ +Returns the number of PCM frames actually read. If the return value is less than `framesToRead` it has reached the end. + + +Remarks +------- +pBufferOut can be null, in which case the call will act as a seek, and the return value will be the number of frames seeked. + +Note that this should be considered lossy due to the nature of floating point numbers not being able to exactly represent every possible number. +*/ +DRFLAC_API drflac_uint64 drflac_read_pcm_frames_f32(drflac* pFlac, drflac_uint64 framesToRead, float* pBufferOut); + +/* +Seeks to the PCM frame at the given index. + + +Parameters +---------- +pFlac (in) + The decoder. + +pcmFrameIndex (in) + The index of the PCM frame to seek to. See notes below. + + +Return Value +------------- +`DRFLAC_TRUE` if successful; `DRFLAC_FALSE` otherwise. +*/ +DRFLAC_API drflac_bool32 drflac_seek_to_pcm_frame(drflac* pFlac, drflac_uint64 pcmFrameIndex); + + + +#ifndef DR_FLAC_NO_STDIO +/* +Opens a FLAC decoder from the file at the given path. + + +Parameters +---------- +pFileName (in) + The path of the file to open, either absolute or relative to the current directory. + +pAllocationCallbacks (in, optional) + A pointer to application defined callbacks for managing memory allocations. + + +Return Value +------------ +A pointer to an object representing the decoder. + + +Remarks +------- +Close the decoder with drflac_close(). + + +Remarks +------- +This will hold a handle to the file until the decoder is closed with drflac_close(). Some platforms will restrict the number of files a process can have open +at any given time, so keep this mind if you have many decoders open at the same time. + + +See Also +-------- +drflac_open_file_with_metadata() +drflac_open() +drflac_close() +*/ +DRFLAC_API drflac* drflac_open_file(const char* pFileName, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API drflac* drflac_open_file_w(const wchar_t* pFileName, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* +Opens a FLAC decoder from the file at the given path and notifies the caller of the metadata chunks (album art, etc.) + + +Parameters +---------- +pFileName (in) + The path of the file to open, either absolute or relative to the current directory. + +pAllocationCallbacks (in, optional) + A pointer to application defined callbacks for managing memory allocations. + +onMeta (in) + The callback to fire for each metadata block. + +pUserData (in) + A pointer to the user data to pass to the metadata callback. + +pAllocationCallbacks (in) + A pointer to application defined callbacks for managing memory allocations. + + +Remarks +------- +Look at the documentation for drflac_open_with_metadata() for more information on how metadata is handled. + + +See Also +-------- +drflac_open_with_metadata() +drflac_open() +drflac_close() +*/ +DRFLAC_API drflac* drflac_open_file_with_metadata(const char* pFileName, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); +DRFLAC_API drflac* drflac_open_file_with_metadata_w(const wchar_t* pFileName, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); +#endif + +/* +Opens a FLAC decoder from a pre-allocated block of memory + + +Parameters +---------- +pData (in) + A pointer to the raw encoded FLAC data. + +dataSize (in) + The size in bytes of `data`. + +pAllocationCallbacks (in) + A pointer to application defined callbacks for managing memory allocations. + + +Return Value +------------ +A pointer to an object representing the decoder. + + +Remarks +------- +This does not create a copy of the data. It is up to the application to ensure the buffer remains valid for the lifetime of the decoder. + + +See Also +-------- +drflac_open() +drflac_close() +*/ +DRFLAC_API drflac* drflac_open_memory(const void* pData, size_t dataSize, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* +Opens a FLAC decoder from a pre-allocated block of memory and notifies the caller of the metadata chunks (album art, etc.) + + +Parameters +---------- +pData (in) + A pointer to the raw encoded FLAC data. + +dataSize (in) + The size in bytes of `data`. + +onMeta (in) + The callback to fire for each metadata block. + +pUserData (in) + A pointer to the user data to pass to the metadata callback. + +pAllocationCallbacks (in) + A pointer to application defined callbacks for managing memory allocations. + + +Remarks +------- +Look at the documentation for drflac_open_with_metadata() for more information on how metadata is handled. + + +See Also +------- +drflac_open_with_metadata() +drflac_open() +drflac_close() +*/ +DRFLAC_API drflac* drflac_open_memory_with_metadata(const void* pData, size_t dataSize, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks); + + + +/* High Level APIs */ + +/* +Opens a FLAC stream from the given callbacks and fully decodes it in a single operation. The return value is a +pointer to the sample data as interleaved signed 32-bit PCM. The returned data must be freed with drflac_free(). + +You can pass in custom memory allocation callbacks via the pAllocationCallbacks parameter. This can be NULL in which +case it will use DRFLAC_MALLOC, DRFLAC_REALLOC and DRFLAC_FREE. + +Sometimes a FLAC file won't keep track of the total sample count. In this situation the function will continuously +read samples into a dynamically sized buffer on the heap until no samples are left. + +Do not call this function on a broadcast type of stream (like internet radio streams and whatnot). +*/ +DRFLAC_API drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* Same as drflac_open_and_read_pcm_frames_s32(), except returns signed 16-bit integer samples. */ +DRFLAC_API drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* Same as drflac_open_and_read_pcm_frames_s32(), except returns 32-bit floating-point samples. */ +DRFLAC_API float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); + +#ifndef DR_FLAC_NO_STDIO +/* Same as drflac_open_and_read_pcm_frames_s32() except opens the decoder from a file. */ +DRFLAC_API drflac_int32* drflac_open_file_and_read_pcm_frames_s32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* Same as drflac_open_file_and_read_pcm_frames_s32(), except returns signed 16-bit integer samples. */ +DRFLAC_API drflac_int16* drflac_open_file_and_read_pcm_frames_s16(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* Same as drflac_open_file_and_read_pcm_frames_s32(), except returns 32-bit floating-point samples. */ +DRFLAC_API float* drflac_open_file_and_read_pcm_frames_f32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); +#endif + +/* Same as drflac_open_and_read_pcm_frames_s32() except opens the decoder from a block of memory. */ +DRFLAC_API drflac_int32* drflac_open_memory_and_read_pcm_frames_s32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* Same as drflac_open_memory_and_read_pcm_frames_s32(), except returns signed 16-bit integer samples. */ +DRFLAC_API drflac_int16* drflac_open_memory_and_read_pcm_frames_s16(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* Same as drflac_open_memory_and_read_pcm_frames_s32(), except returns 32-bit floating-point samples. */ +DRFLAC_API float* drflac_open_memory_and_read_pcm_frames_f32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks); + +/* +Frees memory that was allocated internally by dr_flac. + +Set pAllocationCallbacks to the same object that was passed to drflac_open_*_and_read_pcm_frames_*(). If you originally passed in NULL, pass in NULL for this. +*/ +DRFLAC_API void drflac_free(void* p, const drflac_allocation_callbacks* pAllocationCallbacks); + + +/* Structure representing an iterator for vorbis comments in a VORBIS_COMMENT metadata block. */ +typedef struct +{ + drflac_uint32 countRemaining; + const char* pRunningData; +} drflac_vorbis_comment_iterator; + +/* +Initializes a vorbis comment iterator. This can be used for iterating over the vorbis comments in a VORBIS_COMMENT +metadata block. +*/ +DRFLAC_API void drflac_init_vorbis_comment_iterator(drflac_vorbis_comment_iterator* pIter, drflac_uint32 commentCount, const void* pComments); + +/* +Goes to the next vorbis comment in the given iterator. If null is returned it means there are no more comments. The +returned string is NOT null terminated. +*/ +DRFLAC_API const char* drflac_next_vorbis_comment(drflac_vorbis_comment_iterator* pIter, drflac_uint32* pCommentLengthOut); + + +/* Structure representing an iterator for cuesheet tracks in a CUESHEET metadata block. */ +typedef struct +{ + drflac_uint32 countRemaining; + const char* pRunningData; +} drflac_cuesheet_track_iterator; + +/* The order of members here is important because we map this directly to the raw data within the CUESHEET metadata block. */ +typedef struct +{ + drflac_uint64 offset; + drflac_uint8 index; + drflac_uint8 reserved[3]; +} drflac_cuesheet_track_index; + +typedef struct +{ + drflac_uint64 offset; + drflac_uint8 trackNumber; + char ISRC[12]; + drflac_bool8 isAudio; + drflac_bool8 preEmphasis; + drflac_uint8 indexCount; + const drflac_cuesheet_track_index* pIndexPoints; +} drflac_cuesheet_track; + +/* +Initializes a cuesheet track iterator. This can be used for iterating over the cuesheet tracks in a CUESHEET metadata +block. +*/ +DRFLAC_API void drflac_init_cuesheet_track_iterator(drflac_cuesheet_track_iterator* pIter, drflac_uint32 trackCount, const void* pTrackData); + +/* Goes to the next cuesheet track in the given iterator. If DRFLAC_FALSE is returned it means there are no more comments. */ +DRFLAC_API drflac_bool32 drflac_next_cuesheet_track(drflac_cuesheet_track_iterator* pIter, drflac_cuesheet_track* pCuesheetTrack); + + +#ifdef __cplusplus +} +#endif +#endif /* dr_flac_h */ + + +/************************************************************************************************************************************************************ + ************************************************************************************************************************************************************ + + IMPLEMENTATION + + ************************************************************************************************************************************************************ + ************************************************************************************************************************************************************/ +#if defined(DR_FLAC_IMPLEMENTATION) || defined(DRFLAC_IMPLEMENTATION) +#ifndef dr_flac_c +#define dr_flac_c + +/* Disable some annoying warnings. */ +#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))) + #pragma GCC diagnostic push + #if __GNUC__ >= 7 + #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" + #endif +#endif + +#ifdef __linux__ + #ifndef _BSD_SOURCE + #define _BSD_SOURCE + #endif + #ifndef _DEFAULT_SOURCE + #define _DEFAULT_SOURCE + #endif + #ifndef __USE_BSD + #define __USE_BSD + #endif + #include +#endif + +#include +#include + +/* Inline */ +#ifdef _MSC_VER + #define DRFLAC_INLINE __forceinline +#elif defined(__GNUC__) + /* + I've had a bug report where GCC is emitting warnings about functions possibly not being inlineable. This warning happens when + the __attribute__((always_inline)) attribute is defined without an "inline" statement. I think therefore there must be some + case where "__inline__" is not always defined, thus the compiler emitting these warnings. When using -std=c89 or -ansi on the + command line, we cannot use the "inline" keyword and instead need to use "__inline__". In an attempt to work around this issue + I am using "__inline__" only when we're compiling in strict ANSI mode. + */ + #if defined(__STRICT_ANSI__) + #define DRFLAC_GNUC_INLINE_HINT __inline__ + #else + #define DRFLAC_GNUC_INLINE_HINT inline + #endif + + #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)) || defined(__clang__) + #define DRFLAC_INLINE DRFLAC_GNUC_INLINE_HINT __attribute__((always_inline)) + #else + #define DRFLAC_INLINE DRFLAC_GNUC_INLINE_HINT + #endif +#elif defined(__WATCOMC__) + #define DRFLAC_INLINE __inline +#else + #define DRFLAC_INLINE +#endif +/* End Inline */ + +/* +Intrinsics Support + +There's a bug in GCC 4.2.x which results in an incorrect compilation error when using _mm_slli_epi32() where it complains with + + "error: shift must be an immediate" + +Unfortuantely dr_flac depends on this for a few things so we're just going to disable SSE on GCC 4.2 and below. +*/ +#if !defined(DR_FLAC_NO_SIMD) + #if defined(DRFLAC_X64) || defined(DRFLAC_X86) + #if defined(_MSC_VER) && !defined(__clang__) + /* MSVC. */ + #if _MSC_VER >= 1400 && !defined(DRFLAC_NO_SSE2) /* 2005 */ + #define DRFLAC_SUPPORT_SSE2 + #endif + #if _MSC_VER >= 1600 && !defined(DRFLAC_NO_SSE41) /* 2010 */ + #define DRFLAC_SUPPORT_SSE41 + #endif + #elif defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) + /* Assume GNUC-style. */ + #if defined(__SSE2__) && !defined(DRFLAC_NO_SSE2) + #define DRFLAC_SUPPORT_SSE2 + #endif + #if defined(__SSE4_1__) && !defined(DRFLAC_NO_SSE41) + #define DRFLAC_SUPPORT_SSE41 + #endif + #endif + + /* If at this point we still haven't determined compiler support for the intrinsics just fall back to __has_include. */ + #if !defined(__GNUC__) && !defined(__clang__) && defined(__has_include) + #if !defined(DRFLAC_SUPPORT_SSE2) && !defined(DRFLAC_NO_SSE2) && __has_include() + #define DRFLAC_SUPPORT_SSE2 + #endif + #if !defined(DRFLAC_SUPPORT_SSE41) && !defined(DRFLAC_NO_SSE41) && __has_include() + #define DRFLAC_SUPPORT_SSE41 + #endif + #endif + + #if defined(DRFLAC_SUPPORT_SSE41) + #include + #elif defined(DRFLAC_SUPPORT_SSE2) + #include + #endif + #endif + + #if defined(DRFLAC_ARM) + #if !defined(DRFLAC_NO_NEON) && (defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64)) + #define DRFLAC_SUPPORT_NEON + #include + #endif + #endif +#endif + +/* Compile-time CPU feature support. */ +#if !defined(DR_FLAC_NO_SIMD) && (defined(DRFLAC_X86) || defined(DRFLAC_X64)) + #if defined(_MSC_VER) && !defined(__clang__) + #if _MSC_VER >= 1400 + #include + static void drflac__cpuid(int info[4], int fid) + { + __cpuid(info, fid); + } + #else + #define DRFLAC_NO_CPUID + #endif + #else + #if defined(__GNUC__) || defined(__clang__) + static void drflac__cpuid(int info[4], int fid) + { + /* + It looks like the -fPIC option uses the ebx register which GCC complains about. We can work around this by just using a different register, the + specific register of which I'm letting the compiler decide on. The "k" prefix is used to specify a 32-bit register. The {...} syntax is for + supporting different assembly dialects. + + What's basically happening is that we're saving and restoring the ebx register manually. + */ + #if defined(DRFLAC_X86) && defined(__PIC__) + __asm__ __volatile__ ( + "xchg{l} {%%}ebx, %k1;" + "cpuid;" + "xchg{l} {%%}ebx, %k1;" + : "=a"(info[0]), "=&r"(info[1]), "=c"(info[2]), "=d"(info[3]) : "a"(fid), "c"(0) + ); + #else + __asm__ __volatile__ ( + "cpuid" : "=a"(info[0]), "=b"(info[1]), "=c"(info[2]), "=d"(info[3]) : "a"(fid), "c"(0) + ); + #endif + } + #else + #define DRFLAC_NO_CPUID + #endif + #endif +#else + #define DRFLAC_NO_CPUID +#endif + +static DRFLAC_INLINE drflac_bool32 drflac_has_sse2(void) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + #if (defined(DRFLAC_X64) || defined(DRFLAC_X86)) && !defined(DRFLAC_NO_SSE2) + #if defined(DRFLAC_X64) + return DRFLAC_TRUE; /* 64-bit targets always support SSE2. */ + #elif (defined(_M_IX86_FP) && _M_IX86_FP == 2) || defined(__SSE2__) + return DRFLAC_TRUE; /* If the compiler is allowed to freely generate SSE2 code we can assume support. */ + #else + #if defined(DRFLAC_NO_CPUID) + return DRFLAC_FALSE; + #else + int info[4]; + drflac__cpuid(info, 1); + return (info[3] & (1 << 26)) != 0; + #endif + #endif + #else + return DRFLAC_FALSE; /* SSE2 is only supported on x86 and x64 architectures. */ + #endif +#else + return DRFLAC_FALSE; /* No compiler support. */ +#endif +} + +static DRFLAC_INLINE drflac_bool32 drflac_has_sse41(void) +{ +#if defined(DRFLAC_SUPPORT_SSE41) + #if (defined(DRFLAC_X64) || defined(DRFLAC_X86)) && !defined(DRFLAC_NO_SSE41) + #if defined(__SSE4_1__) || defined(__AVX__) + return DRFLAC_TRUE; /* If the compiler is allowed to freely generate SSE41 code we can assume support. */ + #else + #if defined(DRFLAC_NO_CPUID) + return DRFLAC_FALSE; + #else + int info[4]; + drflac__cpuid(info, 1); + return (info[2] & (1 << 19)) != 0; + #endif + #endif + #else + return DRFLAC_FALSE; /* SSE41 is only supported on x86 and x64 architectures. */ + #endif +#else + return DRFLAC_FALSE; /* No compiler support. */ +#endif +} + + +#if defined(_MSC_VER) && _MSC_VER >= 1500 && (defined(DRFLAC_X86) || defined(DRFLAC_X64)) && !defined(__clang__) + #define DRFLAC_HAS_LZCNT_INTRINSIC +#elif (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) + #define DRFLAC_HAS_LZCNT_INTRINSIC +#elif defined(__clang__) + #if defined(__has_builtin) + #if __has_builtin(__builtin_clzll) || __has_builtin(__builtin_clzl) + #define DRFLAC_HAS_LZCNT_INTRINSIC + #endif + #endif +#endif + +#if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(__clang__) + #define DRFLAC_HAS_BYTESWAP16_INTRINSIC + #define DRFLAC_HAS_BYTESWAP32_INTRINSIC + #define DRFLAC_HAS_BYTESWAP64_INTRINSIC +#elif defined(__clang__) + #if defined(__has_builtin) + #if __has_builtin(__builtin_bswap16) + #define DRFLAC_HAS_BYTESWAP16_INTRINSIC + #endif + #if __has_builtin(__builtin_bswap32) + #define DRFLAC_HAS_BYTESWAP32_INTRINSIC + #endif + #if __has_builtin(__builtin_bswap64) + #define DRFLAC_HAS_BYTESWAP64_INTRINSIC + #endif + #endif +#elif defined(__GNUC__) + #if ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + #define DRFLAC_HAS_BYTESWAP32_INTRINSIC + #define DRFLAC_HAS_BYTESWAP64_INTRINSIC + #endif + #if ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) + #define DRFLAC_HAS_BYTESWAP16_INTRINSIC + #endif +#elif defined(__WATCOMC__) && defined(__386__) + #define DRFLAC_HAS_BYTESWAP16_INTRINSIC + #define DRFLAC_HAS_BYTESWAP32_INTRINSIC + #define DRFLAC_HAS_BYTESWAP64_INTRINSIC + extern __inline drflac_uint16 _watcom_bswap16(drflac_uint16); + extern __inline drflac_uint32 _watcom_bswap32(drflac_uint32); + extern __inline drflac_uint64 _watcom_bswap64(drflac_uint64); +#pragma aux _watcom_bswap16 = \ + "xchg al, ah" \ + parm [ax] \ + value [ax] \ + modify nomemory; +#pragma aux _watcom_bswap32 = \ + "bswap eax" \ + parm [eax] \ + value [eax] \ + modify nomemory; +#pragma aux _watcom_bswap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + value [eax edx] \ + modify nomemory; +#endif + + +/* Standard library stuff. */ +#ifndef DRFLAC_ASSERT +#include +#define DRFLAC_ASSERT(expression) assert(expression) +#endif +#ifndef DRFLAC_MALLOC +#define DRFLAC_MALLOC(sz) malloc((sz)) +#endif +#ifndef DRFLAC_REALLOC +#define DRFLAC_REALLOC(p, sz) realloc((p), (sz)) +#endif +#ifndef DRFLAC_FREE +#define DRFLAC_FREE(p) free((p)) +#endif +#ifndef DRFLAC_COPY_MEMORY +#define DRFLAC_COPY_MEMORY(dst, src, sz) memcpy((dst), (src), (sz)) +#endif +#ifndef DRFLAC_ZERO_MEMORY +#define DRFLAC_ZERO_MEMORY(p, sz) memset((p), 0, (sz)) +#endif +#ifndef DRFLAC_ZERO_OBJECT +#define DRFLAC_ZERO_OBJECT(p) DRFLAC_ZERO_MEMORY((p), sizeof(*(p))) +#endif + +#define DRFLAC_MAX_SIMD_VECTOR_SIZE 64 /* 64 for AVX-512 in the future. */ + +/* Result Codes */ +typedef drflac_int32 drflac_result; +#define DRFLAC_SUCCESS 0 +#define DRFLAC_ERROR -1 /* A generic error. */ +#define DRFLAC_INVALID_ARGS -2 +#define DRFLAC_INVALID_OPERATION -3 +#define DRFLAC_OUT_OF_MEMORY -4 +#define DRFLAC_OUT_OF_RANGE -5 +#define DRFLAC_ACCESS_DENIED -6 +#define DRFLAC_DOES_NOT_EXIST -7 +#define DRFLAC_ALREADY_EXISTS -8 +#define DRFLAC_TOO_MANY_OPEN_FILES -9 +#define DRFLAC_INVALID_FILE -10 +#define DRFLAC_TOO_BIG -11 +#define DRFLAC_PATH_TOO_LONG -12 +#define DRFLAC_NAME_TOO_LONG -13 +#define DRFLAC_NOT_DIRECTORY -14 +#define DRFLAC_IS_DIRECTORY -15 +#define DRFLAC_DIRECTORY_NOT_EMPTY -16 +#define DRFLAC_END_OF_FILE -17 +#define DRFLAC_NO_SPACE -18 +#define DRFLAC_BUSY -19 +#define DRFLAC_IO_ERROR -20 +#define DRFLAC_INTERRUPT -21 +#define DRFLAC_UNAVAILABLE -22 +#define DRFLAC_ALREADY_IN_USE -23 +#define DRFLAC_BAD_ADDRESS -24 +#define DRFLAC_BAD_SEEK -25 +#define DRFLAC_BAD_PIPE -26 +#define DRFLAC_DEADLOCK -27 +#define DRFLAC_TOO_MANY_LINKS -28 +#define DRFLAC_NOT_IMPLEMENTED -29 +#define DRFLAC_NO_MESSAGE -30 +#define DRFLAC_BAD_MESSAGE -31 +#define DRFLAC_NO_DATA_AVAILABLE -32 +#define DRFLAC_INVALID_DATA -33 +#define DRFLAC_TIMEOUT -34 +#define DRFLAC_NO_NETWORK -35 +#define DRFLAC_NOT_UNIQUE -36 +#define DRFLAC_NOT_SOCKET -37 +#define DRFLAC_NO_ADDRESS -38 +#define DRFLAC_BAD_PROTOCOL -39 +#define DRFLAC_PROTOCOL_UNAVAILABLE -40 +#define DRFLAC_PROTOCOL_NOT_SUPPORTED -41 +#define DRFLAC_PROTOCOL_FAMILY_NOT_SUPPORTED -42 +#define DRFLAC_ADDRESS_FAMILY_NOT_SUPPORTED -43 +#define DRFLAC_SOCKET_NOT_SUPPORTED -44 +#define DRFLAC_CONNECTION_RESET -45 +#define DRFLAC_ALREADY_CONNECTED -46 +#define DRFLAC_NOT_CONNECTED -47 +#define DRFLAC_CONNECTION_REFUSED -48 +#define DRFLAC_NO_HOST -49 +#define DRFLAC_IN_PROGRESS -50 +#define DRFLAC_CANCELLED -51 +#define DRFLAC_MEMORY_ALREADY_MAPPED -52 +#define DRFLAC_AT_END -53 + +#define DRFLAC_CRC_MISMATCH -100 +/* End Result Codes */ + + +#define DRFLAC_SUBFRAME_CONSTANT 0 +#define DRFLAC_SUBFRAME_VERBATIM 1 +#define DRFLAC_SUBFRAME_FIXED 8 +#define DRFLAC_SUBFRAME_LPC 32 +#define DRFLAC_SUBFRAME_RESERVED 255 + +#define DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE 0 +#define DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2 1 + +#define DRFLAC_CHANNEL_ASSIGNMENT_INDEPENDENT 0 +#define DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE 8 +#define DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE 9 +#define DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE 10 + +#define DRFLAC_SEEKPOINT_SIZE_IN_BYTES 18 +#define DRFLAC_CUESHEET_TRACK_SIZE_IN_BYTES 36 +#define DRFLAC_CUESHEET_TRACK_INDEX_SIZE_IN_BYTES 12 + +#define drflac_align(x, a) ((((x) + (a) - 1) / (a)) * (a)) + + +DRFLAC_API void drflac_version(drflac_uint32* pMajor, drflac_uint32* pMinor, drflac_uint32* pRevision) +{ + if (pMajor) { + *pMajor = DRFLAC_VERSION_MAJOR; + } + + if (pMinor) { + *pMinor = DRFLAC_VERSION_MINOR; + } + + if (pRevision) { + *pRevision = DRFLAC_VERSION_REVISION; + } +} + +DRFLAC_API const char* drflac_version_string(void) +{ + return DRFLAC_VERSION_STRING; +} + + +/* CPU caps. */ +#if defined(__has_feature) + #if __has_feature(thread_sanitizer) + #define DRFLAC_NO_THREAD_SANITIZE __attribute__((no_sanitize("thread"))) + #else + #define DRFLAC_NO_THREAD_SANITIZE + #endif +#else + #define DRFLAC_NO_THREAD_SANITIZE +#endif + +#if defined(DRFLAC_HAS_LZCNT_INTRINSIC) +static drflac_bool32 drflac__gIsLZCNTSupported = DRFLAC_FALSE; +#endif + +#ifndef DRFLAC_NO_CPUID +static drflac_bool32 drflac__gIsSSE2Supported = DRFLAC_FALSE; +static drflac_bool32 drflac__gIsSSE41Supported = DRFLAC_FALSE; + +/* +I've had a bug report that Clang's ThreadSanitizer presents a warning in this function. Having reviewed this, this does +actually make sense. However, since CPU caps should never differ for a running process, I don't think the trade off of +complicating internal API's by passing around CPU caps versus just disabling the warnings is worthwhile. I'm therefore +just going to disable these warnings. This is disabled via the DRFLAC_NO_THREAD_SANITIZE attribute. +*/ +DRFLAC_NO_THREAD_SANITIZE static void drflac__init_cpu_caps(void) +{ + static drflac_bool32 isCPUCapsInitialized = DRFLAC_FALSE; + + if (!isCPUCapsInitialized) { + /* LZCNT */ +#if defined(DRFLAC_HAS_LZCNT_INTRINSIC) + int info[4] = {0}; + drflac__cpuid(info, 0x80000001); + drflac__gIsLZCNTSupported = (info[2] & (1 << 5)) != 0; +#endif + + /* SSE2 */ + drflac__gIsSSE2Supported = drflac_has_sse2(); + + /* SSE4.1 */ + drflac__gIsSSE41Supported = drflac_has_sse41(); + + /* Initialized. */ + isCPUCapsInitialized = DRFLAC_TRUE; + } +} +#else +static drflac_bool32 drflac__gIsNEONSupported = DRFLAC_FALSE; + +static DRFLAC_INLINE drflac_bool32 drflac__has_neon(void) +{ +#if defined(DRFLAC_SUPPORT_NEON) + #if defined(DRFLAC_ARM) && !defined(DRFLAC_NO_NEON) + #if (defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64)) + return DRFLAC_TRUE; /* If the compiler is allowed to freely generate NEON code we can assume support. */ + #else + /* TODO: Runtime check. */ + return DRFLAC_FALSE; + #endif + #else + return DRFLAC_FALSE; /* NEON is only supported on ARM architectures. */ + #endif +#else + return DRFLAC_FALSE; /* No compiler support. */ +#endif +} + +DRFLAC_NO_THREAD_SANITIZE static void drflac__init_cpu_caps(void) +{ + drflac__gIsNEONSupported = drflac__has_neon(); + +#if defined(DRFLAC_HAS_LZCNT_INTRINSIC) && defined(DRFLAC_ARM) && (defined(__ARM_ARCH) && __ARM_ARCH >= 5) + drflac__gIsLZCNTSupported = DRFLAC_TRUE; +#endif +} +#endif + + +/* Endian Management */ +static DRFLAC_INLINE drflac_bool32 drflac__is_little_endian(void) +{ +#if defined(DRFLAC_X86) || defined(DRFLAC_X64) + return DRFLAC_TRUE; +#elif defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && __BYTE_ORDER == __LITTLE_ENDIAN + return DRFLAC_TRUE; +#else + int n = 1; + return (*(char*)&n) == 1; +#endif +} + +static DRFLAC_INLINE drflac_uint16 drflac__swap_endian_uint16(drflac_uint16 n) +{ +#ifdef DRFLAC_HAS_BYTESWAP16_INTRINSIC + #if defined(_MSC_VER) && !defined(__clang__) + return _byteswap_ushort(n); + #elif defined(__GNUC__) || defined(__clang__) + return __builtin_bswap16(n); + #elif defined(__WATCOMC__) && defined(__386__) + return _watcom_bswap16(n); + #else + #error "This compiler does not support the byte swap intrinsic." + #endif +#else + return ((n & 0xFF00) >> 8) | + ((n & 0x00FF) << 8); +#endif +} + +static DRFLAC_INLINE drflac_uint32 drflac__swap_endian_uint32(drflac_uint32 n) +{ +#ifdef DRFLAC_HAS_BYTESWAP32_INTRINSIC + #if defined(_MSC_VER) && !defined(__clang__) + return _byteswap_ulong(n); + #elif defined(__GNUC__) || defined(__clang__) + #if defined(DRFLAC_ARM) && (defined(__ARM_ARCH) && __ARM_ARCH >= 6) && !defined(__ARM_ARCH_6M__) && !defined(DRFLAC_64BIT) /* <-- 64-bit inline assembly has not been tested, so disabling for now. */ + /* Inline assembly optimized implementation for ARM. In my testing, GCC does not generate optimized code with __builtin_bswap32(). */ + drflac_uint32 r; + __asm__ __volatile__ ( + #if defined(DRFLAC_64BIT) + "rev %w[out], %w[in]" : [out]"=r"(r) : [in]"r"(n) /* <-- This is untested. If someone in the community could test this, that would be appreciated! */ + #else + "rev %[out], %[in]" : [out]"=r"(r) : [in]"r"(n) + #endif + ); + return r; + #else + return __builtin_bswap32(n); + #endif + #elif defined(__WATCOMC__) && defined(__386__) + return _watcom_bswap32(n); + #else + #error "This compiler does not support the byte swap intrinsic." + #endif +#else + return ((n & 0xFF000000) >> 24) | + ((n & 0x00FF0000) >> 8) | + ((n & 0x0000FF00) << 8) | + ((n & 0x000000FF) << 24); +#endif +} + +static DRFLAC_INLINE drflac_uint64 drflac__swap_endian_uint64(drflac_uint64 n) +{ +#ifdef DRFLAC_HAS_BYTESWAP64_INTRINSIC + #if defined(_MSC_VER) && !defined(__clang__) + return _byteswap_uint64(n); + #elif defined(__GNUC__) || defined(__clang__) + return __builtin_bswap64(n); + #elif defined(__WATCOMC__) && defined(__386__) + return _watcom_bswap64(n); + #else + #error "This compiler does not support the byte swap intrinsic." + #endif +#else + /* Weird "<< 32" bitshift is required for C89 because it doesn't support 64-bit constants. Should be optimized out by a good compiler. */ + return ((n & ((drflac_uint64)0xFF000000 << 32)) >> 56) | + ((n & ((drflac_uint64)0x00FF0000 << 32)) >> 40) | + ((n & ((drflac_uint64)0x0000FF00 << 32)) >> 24) | + ((n & ((drflac_uint64)0x000000FF << 32)) >> 8) | + ((n & ((drflac_uint64)0xFF000000 )) << 8) | + ((n & ((drflac_uint64)0x00FF0000 )) << 24) | + ((n & ((drflac_uint64)0x0000FF00 )) << 40) | + ((n & ((drflac_uint64)0x000000FF )) << 56); +#endif +} + + +static DRFLAC_INLINE drflac_uint16 drflac__be2host_16(drflac_uint16 n) +{ + if (drflac__is_little_endian()) { + return drflac__swap_endian_uint16(n); + } + + return n; +} + +static DRFLAC_INLINE drflac_uint32 drflac__be2host_32(drflac_uint32 n) +{ + if (drflac__is_little_endian()) { + return drflac__swap_endian_uint32(n); + } + + return n; +} + +static DRFLAC_INLINE drflac_uint32 drflac__be2host_32_ptr_unaligned(const void* pData) +{ + const drflac_uint8* pNum = (drflac_uint8*)pData; + return *(pNum) << 24 | *(pNum+1) << 16 | *(pNum+2) << 8 | *(pNum+3); +} + +static DRFLAC_INLINE drflac_uint64 drflac__be2host_64(drflac_uint64 n) +{ + if (drflac__is_little_endian()) { + return drflac__swap_endian_uint64(n); + } + + return n; +} + + +static DRFLAC_INLINE drflac_uint32 drflac__le2host_32(drflac_uint32 n) +{ + if (!drflac__is_little_endian()) { + return drflac__swap_endian_uint32(n); + } + + return n; +} + +static DRFLAC_INLINE drflac_uint32 drflac__le2host_32_ptr_unaligned(const void* pData) +{ + const drflac_uint8* pNum = (drflac_uint8*)pData; + return *pNum | *(pNum+1) << 8 | *(pNum+2) << 16 | *(pNum+3) << 24; +} + + +static DRFLAC_INLINE drflac_uint32 drflac__unsynchsafe_32(drflac_uint32 n) +{ + drflac_uint32 result = 0; + result |= (n & 0x7F000000) >> 3; + result |= (n & 0x007F0000) >> 2; + result |= (n & 0x00007F00) >> 1; + result |= (n & 0x0000007F) >> 0; + + return result; +} + + + +/* The CRC code below is based on this document: http://zlib.net/crc_v3.txt */ +static drflac_uint8 drflac__crc8_table[] = { + 0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D, + 0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D, + 0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD, + 0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD, + 0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA, + 0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A, + 0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A, + 0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A, + 0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4, + 0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4, + 0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44, + 0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34, + 0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63, + 0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13, + 0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83, + 0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3 +}; + +static drflac_uint16 drflac__crc16_table[] = { + 0x0000, 0x8005, 0x800F, 0x000A, 0x801B, 0x001E, 0x0014, 0x8011, + 0x8033, 0x0036, 0x003C, 0x8039, 0x0028, 0x802D, 0x8027, 0x0022, + 0x8063, 0x0066, 0x006C, 0x8069, 0x0078, 0x807D, 0x8077, 0x0072, + 0x0050, 0x8055, 0x805F, 0x005A, 0x804B, 0x004E, 0x0044, 0x8041, + 0x80C3, 0x00C6, 0x00CC, 0x80C9, 0x00D8, 0x80DD, 0x80D7, 0x00D2, + 0x00F0, 0x80F5, 0x80FF, 0x00FA, 0x80EB, 0x00EE, 0x00E4, 0x80E1, + 0x00A0, 0x80A5, 0x80AF, 0x00AA, 0x80BB, 0x00BE, 0x00B4, 0x80B1, + 0x8093, 0x0096, 0x009C, 0x8099, 0x0088, 0x808D, 0x8087, 0x0082, + 0x8183, 0x0186, 0x018C, 0x8189, 0x0198, 0x819D, 0x8197, 0x0192, + 0x01B0, 0x81B5, 0x81BF, 0x01BA, 0x81AB, 0x01AE, 0x01A4, 0x81A1, + 0x01E0, 0x81E5, 0x81EF, 0x01EA, 0x81FB, 0x01FE, 0x01F4, 0x81F1, + 0x81D3, 0x01D6, 0x01DC, 0x81D9, 0x01C8, 0x81CD, 0x81C7, 0x01C2, + 0x0140, 0x8145, 0x814F, 0x014A, 0x815B, 0x015E, 0x0154, 0x8151, + 0x8173, 0x0176, 0x017C, 0x8179, 0x0168, 0x816D, 0x8167, 0x0162, + 0x8123, 0x0126, 0x012C, 0x8129, 0x0138, 0x813D, 0x8137, 0x0132, + 0x0110, 0x8115, 0x811F, 0x011A, 0x810B, 0x010E, 0x0104, 0x8101, + 0x8303, 0x0306, 0x030C, 0x8309, 0x0318, 0x831D, 0x8317, 0x0312, + 0x0330, 0x8335, 0x833F, 0x033A, 0x832B, 0x032E, 0x0324, 0x8321, + 0x0360, 0x8365, 0x836F, 0x036A, 0x837B, 0x037E, 0x0374, 0x8371, + 0x8353, 0x0356, 0x035C, 0x8359, 0x0348, 0x834D, 0x8347, 0x0342, + 0x03C0, 0x83C5, 0x83CF, 0x03CA, 0x83DB, 0x03DE, 0x03D4, 0x83D1, + 0x83F3, 0x03F6, 0x03FC, 0x83F9, 0x03E8, 0x83ED, 0x83E7, 0x03E2, + 0x83A3, 0x03A6, 0x03AC, 0x83A9, 0x03B8, 0x83BD, 0x83B7, 0x03B2, + 0x0390, 0x8395, 0x839F, 0x039A, 0x838B, 0x038E, 0x0384, 0x8381, + 0x0280, 0x8285, 0x828F, 0x028A, 0x829B, 0x029E, 0x0294, 0x8291, + 0x82B3, 0x02B6, 0x02BC, 0x82B9, 0x02A8, 0x82AD, 0x82A7, 0x02A2, + 0x82E3, 0x02E6, 0x02EC, 0x82E9, 0x02F8, 0x82FD, 0x82F7, 0x02F2, + 0x02D0, 0x82D5, 0x82DF, 0x02DA, 0x82CB, 0x02CE, 0x02C4, 0x82C1, + 0x8243, 0x0246, 0x024C, 0x8249, 0x0258, 0x825D, 0x8257, 0x0252, + 0x0270, 0x8275, 0x827F, 0x027A, 0x826B, 0x026E, 0x0264, 0x8261, + 0x0220, 0x8225, 0x822F, 0x022A, 0x823B, 0x023E, 0x0234, 0x8231, + 0x8213, 0x0216, 0x021C, 0x8219, 0x0208, 0x820D, 0x8207, 0x0202 +}; + +static DRFLAC_INLINE drflac_uint8 drflac_crc8_byte(drflac_uint8 crc, drflac_uint8 data) +{ + return drflac__crc8_table[crc ^ data]; +} + +static DRFLAC_INLINE drflac_uint8 drflac_crc8(drflac_uint8 crc, drflac_uint32 data, drflac_uint32 count) +{ +#ifdef DR_FLAC_NO_CRC + (void)crc; + (void)data; + (void)count; + return 0; +#else +#if 0 + /* REFERENCE (use of this implementation requires an explicit flush by doing "drflac_crc8(crc, 0, 8);") */ + drflac_uint8 p = 0x07; + for (int i = count-1; i >= 0; --i) { + drflac_uint8 bit = (data & (1 << i)) >> i; + if (crc & 0x80) { + crc = ((crc << 1) | bit) ^ p; + } else { + crc = ((crc << 1) | bit); + } + } + return crc; +#else + drflac_uint32 wholeBytes; + drflac_uint32 leftoverBits; + drflac_uint64 leftoverDataMask; + + static drflac_uint64 leftoverDataMaskTable[8] = { + 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F + }; + + DRFLAC_ASSERT(count <= 32); + + wholeBytes = count >> 3; + leftoverBits = count - (wholeBytes*8); + leftoverDataMask = leftoverDataMaskTable[leftoverBits]; + + switch (wholeBytes) { + case 4: crc = drflac_crc8_byte(crc, (drflac_uint8)((data & (0xFF000000UL << leftoverBits)) >> (24 + leftoverBits))); + case 3: crc = drflac_crc8_byte(crc, (drflac_uint8)((data & (0x00FF0000UL << leftoverBits)) >> (16 + leftoverBits))); + case 2: crc = drflac_crc8_byte(crc, (drflac_uint8)((data & (0x0000FF00UL << leftoverBits)) >> ( 8 + leftoverBits))); + case 1: crc = drflac_crc8_byte(crc, (drflac_uint8)((data & (0x000000FFUL << leftoverBits)) >> ( 0 + leftoverBits))); + case 0: if (leftoverBits > 0) crc = (drflac_uint8)((crc << leftoverBits) ^ drflac__crc8_table[(crc >> (8 - leftoverBits)) ^ (data & leftoverDataMask)]); + } + return crc; +#endif +#endif +} + +static DRFLAC_INLINE drflac_uint16 drflac_crc16_byte(drflac_uint16 crc, drflac_uint8 data) +{ + return (crc << 8) ^ drflac__crc16_table[(drflac_uint8)(crc >> 8) ^ data]; +} + +static DRFLAC_INLINE drflac_uint16 drflac_crc16_cache(drflac_uint16 crc, drflac_cache_t data) +{ +#ifdef DRFLAC_64BIT + crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 56) & 0xFF)); + crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 48) & 0xFF)); + crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 40) & 0xFF)); + crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 32) & 0xFF)); +#endif + crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 24) & 0xFF)); + crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 16) & 0xFF)); + crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 8) & 0xFF)); + crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 0) & 0xFF)); + + return crc; +} + +static DRFLAC_INLINE drflac_uint16 drflac_crc16_bytes(drflac_uint16 crc, drflac_cache_t data, drflac_uint32 byteCount) +{ + switch (byteCount) + { +#ifdef DRFLAC_64BIT + case 8: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 56) & 0xFF)); + case 7: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 48) & 0xFF)); + case 6: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 40) & 0xFF)); + case 5: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 32) & 0xFF)); +#endif + case 4: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 24) & 0xFF)); + case 3: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 16) & 0xFF)); + case 2: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 8) & 0xFF)); + case 1: crc = drflac_crc16_byte(crc, (drflac_uint8)((data >> 0) & 0xFF)); + } + + return crc; +} + +#if 0 +static DRFLAC_INLINE drflac_uint16 drflac_crc16__32bit(drflac_uint16 crc, drflac_uint32 data, drflac_uint32 count) +{ +#ifdef DR_FLAC_NO_CRC + (void)crc; + (void)data; + (void)count; + return 0; +#else +#if 0 + /* REFERENCE (use of this implementation requires an explicit flush by doing "drflac_crc16(crc, 0, 16);") */ + drflac_uint16 p = 0x8005; + for (int i = count-1; i >= 0; --i) { + drflac_uint16 bit = (data & (1ULL << i)) >> i; + if (r & 0x8000) { + r = ((r << 1) | bit) ^ p; + } else { + r = ((r << 1) | bit); + } + } + + return crc; +#else + drflac_uint32 wholeBytes; + drflac_uint32 leftoverBits; + drflac_uint64 leftoverDataMask; + + static drflac_uint64 leftoverDataMaskTable[8] = { + 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F + }; + + DRFLAC_ASSERT(count <= 64); + + wholeBytes = count >> 3; + leftoverBits = count & 7; + leftoverDataMask = leftoverDataMaskTable[leftoverBits]; + + switch (wholeBytes) { + default: + case 4: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (0xFF000000UL << leftoverBits)) >> (24 + leftoverBits))); + case 3: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (0x00FF0000UL << leftoverBits)) >> (16 + leftoverBits))); + case 2: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (0x0000FF00UL << leftoverBits)) >> ( 8 + leftoverBits))); + case 1: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (0x000000FFUL << leftoverBits)) >> ( 0 + leftoverBits))); + case 0: if (leftoverBits > 0) crc = (crc << leftoverBits) ^ drflac__crc16_table[(crc >> (16 - leftoverBits)) ^ (data & leftoverDataMask)]; + } + return crc; +#endif +#endif +} + +static DRFLAC_INLINE drflac_uint16 drflac_crc16__64bit(drflac_uint16 crc, drflac_uint64 data, drflac_uint32 count) +{ +#ifdef DR_FLAC_NO_CRC + (void)crc; + (void)data; + (void)count; + return 0; +#else + drflac_uint32 wholeBytes; + drflac_uint32 leftoverBits; + drflac_uint64 leftoverDataMask; + + static drflac_uint64 leftoverDataMaskTable[8] = { + 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F + }; + + DRFLAC_ASSERT(count <= 64); + + wholeBytes = count >> 3; + leftoverBits = count & 7; + leftoverDataMask = leftoverDataMaskTable[leftoverBits]; + + switch (wholeBytes) { + default: + case 8: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (((drflac_uint64)0xFF000000 << 32) << leftoverBits)) >> (56 + leftoverBits))); /* Weird "<< 32" bitshift is required for C89 because it doesn't support 64-bit constants. Should be optimized out by a good compiler. */ + case 7: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (((drflac_uint64)0x00FF0000 << 32) << leftoverBits)) >> (48 + leftoverBits))); + case 6: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (((drflac_uint64)0x0000FF00 << 32) << leftoverBits)) >> (40 + leftoverBits))); + case 5: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (((drflac_uint64)0x000000FF << 32) << leftoverBits)) >> (32 + leftoverBits))); + case 4: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (((drflac_uint64)0xFF000000 ) << leftoverBits)) >> (24 + leftoverBits))); + case 3: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (((drflac_uint64)0x00FF0000 ) << leftoverBits)) >> (16 + leftoverBits))); + case 2: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (((drflac_uint64)0x0000FF00 ) << leftoverBits)) >> ( 8 + leftoverBits))); + case 1: crc = drflac_crc16_byte(crc, (drflac_uint8)((data & (((drflac_uint64)0x000000FF ) << leftoverBits)) >> ( 0 + leftoverBits))); + case 0: if (leftoverBits > 0) crc = (crc << leftoverBits) ^ drflac__crc16_table[(crc >> (16 - leftoverBits)) ^ (data & leftoverDataMask)]; + } + return crc; +#endif +} + + +static DRFLAC_INLINE drflac_uint16 drflac_crc16(drflac_uint16 crc, drflac_cache_t data, drflac_uint32 count) +{ +#ifdef DRFLAC_64BIT + return drflac_crc16__64bit(crc, data, count); +#else + return drflac_crc16__32bit(crc, data, count); +#endif +} +#endif + + +#ifdef DRFLAC_64BIT +#define drflac__be2host__cache_line drflac__be2host_64 +#else +#define drflac__be2host__cache_line drflac__be2host_32 +#endif + +/* +BIT READING ATTEMPT #2 + +This uses a 32- or 64-bit bit-shifted cache - as bits are read, the cache is shifted such that the first valid bit is sitting +on the most significant bit. It uses the notion of an L1 and L2 cache (borrowed from CPU architecture), where the L1 cache +is a 32- or 64-bit unsigned integer (depending on whether or not a 32- or 64-bit build is being compiled) and the L2 is an +array of "cache lines", with each cache line being the same size as the L1. The L2 is a buffer of about 4KB and is where data +from onRead() is read into. +*/ +#define DRFLAC_CACHE_L1_SIZE_BYTES(bs) (sizeof((bs)->cache)) +#define DRFLAC_CACHE_L1_SIZE_BITS(bs) (sizeof((bs)->cache)*8) +#define DRFLAC_CACHE_L1_BITS_REMAINING(bs) (DRFLAC_CACHE_L1_SIZE_BITS(bs) - (bs)->consumedBits) +#define DRFLAC_CACHE_L1_SELECTION_MASK(_bitCount) (~((~(drflac_cache_t)0) >> (_bitCount))) +#define DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, _bitCount) (DRFLAC_CACHE_L1_SIZE_BITS(bs) - (_bitCount)) +#define DRFLAC_CACHE_L1_SELECT(bs, _bitCount) (((bs)->cache) & DRFLAC_CACHE_L1_SELECTION_MASK(_bitCount)) +#define DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, _bitCount) (DRFLAC_CACHE_L1_SELECT((bs), (_bitCount)) >> DRFLAC_CACHE_L1_SELECTION_SHIFT((bs), (_bitCount))) +#define DRFLAC_CACHE_L1_SELECT_AND_SHIFT_SAFE(bs, _bitCount)(DRFLAC_CACHE_L1_SELECT((bs), (_bitCount)) >> (DRFLAC_CACHE_L1_SELECTION_SHIFT((bs), (_bitCount)) & (DRFLAC_CACHE_L1_SIZE_BITS(bs)-1))) +#define DRFLAC_CACHE_L2_SIZE_BYTES(bs) (sizeof((bs)->cacheL2)) +#define DRFLAC_CACHE_L2_LINE_COUNT(bs) (DRFLAC_CACHE_L2_SIZE_BYTES(bs) / sizeof((bs)->cacheL2[0])) +#define DRFLAC_CACHE_L2_LINES_REMAINING(bs) (DRFLAC_CACHE_L2_LINE_COUNT(bs) - (bs)->nextL2Line) + + +#ifndef DR_FLAC_NO_CRC +static DRFLAC_INLINE void drflac__reset_crc16(drflac_bs* bs) +{ + bs->crc16 = 0; + bs->crc16CacheIgnoredBytes = bs->consumedBits >> 3; +} + +static DRFLAC_INLINE void drflac__update_crc16(drflac_bs* bs) +{ + if (bs->crc16CacheIgnoredBytes == 0) { + bs->crc16 = drflac_crc16_cache(bs->crc16, bs->crc16Cache); + } else { + bs->crc16 = drflac_crc16_bytes(bs->crc16, bs->crc16Cache, DRFLAC_CACHE_L1_SIZE_BYTES(bs) - bs->crc16CacheIgnoredBytes); + bs->crc16CacheIgnoredBytes = 0; + } +} + +static DRFLAC_INLINE drflac_uint16 drflac__flush_crc16(drflac_bs* bs) +{ + /* We should never be flushing in a situation where we are not aligned on a byte boundary. */ + DRFLAC_ASSERT((DRFLAC_CACHE_L1_BITS_REMAINING(bs) & 7) == 0); + + /* + The bits that were read from the L1 cache need to be accumulated. The number of bytes needing to be accumulated is determined + by the number of bits that have been consumed. + */ + if (DRFLAC_CACHE_L1_BITS_REMAINING(bs) == 0) { + drflac__update_crc16(bs); + } else { + /* We only accumulate the consumed bits. */ + bs->crc16 = drflac_crc16_bytes(bs->crc16, bs->crc16Cache >> DRFLAC_CACHE_L1_BITS_REMAINING(bs), (bs->consumedBits >> 3) - bs->crc16CacheIgnoredBytes); + + /* + The bits that we just accumulated should never be accumulated again. We need to keep track of how many bytes were accumulated + so we can handle that later. + */ + bs->crc16CacheIgnoredBytes = bs->consumedBits >> 3; + } + + return bs->crc16; +} +#endif + +static DRFLAC_INLINE drflac_bool32 drflac__reload_l1_cache_from_l2(drflac_bs* bs) +{ + size_t bytesRead; + size_t alignedL1LineCount; + + /* Fast path. Try loading straight from L2. */ + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + bs->cache = bs->cacheL2[bs->nextL2Line++]; + return DRFLAC_TRUE; + } + + /* + If we get here it means we've run out of data in the L2 cache. We'll need to fetch more from the client, if there's + any left. + */ + if (bs->unalignedByteCount > 0) { + return DRFLAC_FALSE; /* If we have any unaligned bytes it means there's no more aligned bytes left in the client. */ + } + + bytesRead = bs->onRead(bs->pUserData, bs->cacheL2, DRFLAC_CACHE_L2_SIZE_BYTES(bs)); + + bs->nextL2Line = 0; + if (bytesRead == DRFLAC_CACHE_L2_SIZE_BYTES(bs)) { + bs->cache = bs->cacheL2[bs->nextL2Line++]; + return DRFLAC_TRUE; + } + + + /* + If we get here it means we were unable to retrieve enough data to fill the entire L2 cache. It probably + means we've just reached the end of the file. We need to move the valid data down to the end of the buffer + and adjust the index of the next line accordingly. Also keep in mind that the L2 cache must be aligned to + the size of the L1 so we'll need to seek backwards by any misaligned bytes. + */ + alignedL1LineCount = bytesRead / DRFLAC_CACHE_L1_SIZE_BYTES(bs); + + /* We need to keep track of any unaligned bytes for later use. */ + bs->unalignedByteCount = bytesRead - (alignedL1LineCount * DRFLAC_CACHE_L1_SIZE_BYTES(bs)); + if (bs->unalignedByteCount > 0) { + bs->unalignedCache = bs->cacheL2[alignedL1LineCount]; + } + + if (alignedL1LineCount > 0) { + size_t offset = DRFLAC_CACHE_L2_LINE_COUNT(bs) - alignedL1LineCount; + size_t i; + for (i = alignedL1LineCount; i > 0; --i) { + bs->cacheL2[i-1 + offset] = bs->cacheL2[i-1]; + } + + bs->nextL2Line = (drflac_uint32)offset; + bs->cache = bs->cacheL2[bs->nextL2Line++]; + return DRFLAC_TRUE; + } else { + /* If we get into this branch it means we weren't able to load any L1-aligned data. */ + bs->nextL2Line = DRFLAC_CACHE_L2_LINE_COUNT(bs); + return DRFLAC_FALSE; + } +} + +static drflac_bool32 drflac__reload_cache(drflac_bs* bs) +{ + size_t bytesRead; + +#ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); +#endif + + /* Fast path. Try just moving the next value in the L2 cache to the L1 cache. */ + if (drflac__reload_l1_cache_from_l2(bs)) { + bs->cache = drflac__be2host__cache_line(bs->cache); + bs->consumedBits = 0; +#ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs->cache; +#endif + return DRFLAC_TRUE; + } + + /* Slow path. */ + + /* + If we get here it means we have failed to load the L1 cache from the L2. Likely we've just reached the end of the stream and the last + few bytes did not meet the alignment requirements for the L2 cache. In this case we need to fall back to a slower path and read the + data from the unaligned cache. + */ + bytesRead = bs->unalignedByteCount; + if (bytesRead == 0) { + bs->consumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs); /* <-- The stream has been exhausted, so marked the bits as consumed. */ + return DRFLAC_FALSE; + } + + DRFLAC_ASSERT(bytesRead < DRFLAC_CACHE_L1_SIZE_BYTES(bs)); + bs->consumedBits = (drflac_uint32)(DRFLAC_CACHE_L1_SIZE_BYTES(bs) - bytesRead) * 8; + + bs->cache = drflac__be2host__cache_line(bs->unalignedCache); + bs->cache &= DRFLAC_CACHE_L1_SELECTION_MASK(DRFLAC_CACHE_L1_BITS_REMAINING(bs)); /* <-- Make sure the consumed bits are always set to zero. Other parts of the library depend on this property. */ + bs->unalignedByteCount = 0; /* <-- At this point the unaligned bytes have been moved into the cache and we thus have no more unaligned bytes. */ + +#ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs->cache >> bs->consumedBits; + bs->crc16CacheIgnoredBytes = bs->consumedBits >> 3; +#endif + return DRFLAC_TRUE; +} + +static void drflac__reset_cache(drflac_bs* bs) +{ + bs->nextL2Line = DRFLAC_CACHE_L2_LINE_COUNT(bs); /* <-- This clears the L2 cache. */ + bs->consumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs); /* <-- This clears the L1 cache. */ + bs->cache = 0; + bs->unalignedByteCount = 0; /* <-- This clears the trailing unaligned bytes. */ + bs->unalignedCache = 0; + +#ifndef DR_FLAC_NO_CRC + bs->crc16Cache = 0; + bs->crc16CacheIgnoredBytes = 0; +#endif +} + + +static DRFLAC_INLINE drflac_bool32 drflac__read_uint32(drflac_bs* bs, unsigned int bitCount, drflac_uint32* pResultOut) +{ + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pResultOut != NULL); + DRFLAC_ASSERT(bitCount > 0); + DRFLAC_ASSERT(bitCount <= 32); + + if (bs->consumedBits == DRFLAC_CACHE_L1_SIZE_BITS(bs)) { + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + } + + if (bitCount <= DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + /* + If we want to load all 32-bits from a 32-bit cache we need to do it slightly differently because we can't do + a 32-bit shift on a 32-bit integer. This will never be the case on 64-bit caches, so we can have a slightly + more optimal solution for this. + */ +#ifdef DRFLAC_64BIT + *pResultOut = (drflac_uint32)DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, bitCount); + bs->consumedBits += bitCount; + bs->cache <<= bitCount; +#else + if (bitCount < DRFLAC_CACHE_L1_SIZE_BITS(bs)) { + *pResultOut = (drflac_uint32)DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, bitCount); + bs->consumedBits += bitCount; + bs->cache <<= bitCount; + } else { + /* Cannot shift by 32-bits, so need to do it differently. */ + *pResultOut = (drflac_uint32)bs->cache; + bs->consumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs); + bs->cache = 0; + } +#endif + + return DRFLAC_TRUE; + } else { + /* It straddles the cached data. It will never cover more than the next chunk. We just read the number in two parts and combine them. */ + drflac_uint32 bitCountHi = DRFLAC_CACHE_L1_BITS_REMAINING(bs); + drflac_uint32 bitCountLo = bitCount - bitCountHi; + drflac_uint32 resultHi; + + DRFLAC_ASSERT(bitCountHi > 0); + DRFLAC_ASSERT(bitCountHi < 32); + resultHi = (drflac_uint32)DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, bitCountHi); + + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + if (bitCountLo > DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + /* This happens when we get to end of stream */ + return DRFLAC_FALSE; + } + + *pResultOut = (resultHi << bitCountLo) | (drflac_uint32)DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, bitCountLo); + bs->consumedBits += bitCountLo; + bs->cache <<= bitCountLo; + return DRFLAC_TRUE; + } +} + +static drflac_bool32 drflac__read_int32(drflac_bs* bs, unsigned int bitCount, drflac_int32* pResult) +{ + drflac_uint32 result; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pResult != NULL); + DRFLAC_ASSERT(bitCount > 0); + DRFLAC_ASSERT(bitCount <= 32); + + if (!drflac__read_uint32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + /* Do not attempt to shift by 32 as it's undefined. */ + if (bitCount < 32) { + drflac_uint32 signbit; + signbit = ((result >> (bitCount-1)) & 0x01); + result |= (~signbit + 1) << bitCount; + } + + *pResult = (drflac_int32)result; + return DRFLAC_TRUE; +} + +#ifdef DRFLAC_64BIT +static drflac_bool32 drflac__read_uint64(drflac_bs* bs, unsigned int bitCount, drflac_uint64* pResultOut) +{ + drflac_uint32 resultHi; + drflac_uint32 resultLo; + + DRFLAC_ASSERT(bitCount <= 64); + DRFLAC_ASSERT(bitCount > 32); + + if (!drflac__read_uint32(bs, bitCount - 32, &resultHi)) { + return DRFLAC_FALSE; + } + + if (!drflac__read_uint32(bs, 32, &resultLo)) { + return DRFLAC_FALSE; + } + + *pResultOut = (((drflac_uint64)resultHi) << 32) | ((drflac_uint64)resultLo); + return DRFLAC_TRUE; +} +#endif + +/* Function below is unused, but leaving it here in case I need to quickly add it again. */ +#if 0 +static drflac_bool32 drflac__read_int64(drflac_bs* bs, unsigned int bitCount, drflac_int64* pResultOut) +{ + drflac_uint64 result; + drflac_uint64 signbit; + + DRFLAC_ASSERT(bitCount <= 64); + + if (!drflac__read_uint64(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + signbit = ((result >> (bitCount-1)) & 0x01); + result |= (~signbit + 1) << bitCount; + + *pResultOut = (drflac_int64)result; + return DRFLAC_TRUE; +} +#endif + +static drflac_bool32 drflac__read_uint16(drflac_bs* bs, unsigned int bitCount, drflac_uint16* pResult) +{ + drflac_uint32 result; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pResult != NULL); + DRFLAC_ASSERT(bitCount > 0); + DRFLAC_ASSERT(bitCount <= 16); + + if (!drflac__read_uint32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + *pResult = (drflac_uint16)result; + return DRFLAC_TRUE; +} + +#if 0 +static drflac_bool32 drflac__read_int16(drflac_bs* bs, unsigned int bitCount, drflac_int16* pResult) +{ + drflac_int32 result; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pResult != NULL); + DRFLAC_ASSERT(bitCount > 0); + DRFLAC_ASSERT(bitCount <= 16); + + if (!drflac__read_int32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + *pResult = (drflac_int16)result; + return DRFLAC_TRUE; +} +#endif + +static drflac_bool32 drflac__read_uint8(drflac_bs* bs, unsigned int bitCount, drflac_uint8* pResult) +{ + drflac_uint32 result; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pResult != NULL); + DRFLAC_ASSERT(bitCount > 0); + DRFLAC_ASSERT(bitCount <= 8); + + if (!drflac__read_uint32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + *pResult = (drflac_uint8)result; + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__read_int8(drflac_bs* bs, unsigned int bitCount, drflac_int8* pResult) +{ + drflac_int32 result; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pResult != NULL); + DRFLAC_ASSERT(bitCount > 0); + DRFLAC_ASSERT(bitCount <= 8); + + if (!drflac__read_int32(bs, bitCount, &result)) { + return DRFLAC_FALSE; + } + + *pResult = (drflac_int8)result; + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac__seek_bits(drflac_bs* bs, size_t bitsToSeek) +{ + if (bitsToSeek <= DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + bs->consumedBits += (drflac_uint32)bitsToSeek; + bs->cache <<= bitsToSeek; + return DRFLAC_TRUE; + } else { + /* It straddles the cached data. This function isn't called too frequently so I'm favouring simplicity here. */ + bitsToSeek -= DRFLAC_CACHE_L1_BITS_REMAINING(bs); + bs->consumedBits += DRFLAC_CACHE_L1_BITS_REMAINING(bs); + bs->cache = 0; + + /* Simple case. Seek in groups of the same number as bits that fit within a cache line. */ +#ifdef DRFLAC_64BIT + while (bitsToSeek >= DRFLAC_CACHE_L1_SIZE_BITS(bs)) { + drflac_uint64 bin; + if (!drflac__read_uint64(bs, DRFLAC_CACHE_L1_SIZE_BITS(bs), &bin)) { + return DRFLAC_FALSE; + } + bitsToSeek -= DRFLAC_CACHE_L1_SIZE_BITS(bs); + } +#else + while (bitsToSeek >= DRFLAC_CACHE_L1_SIZE_BITS(bs)) { + drflac_uint32 bin; + if (!drflac__read_uint32(bs, DRFLAC_CACHE_L1_SIZE_BITS(bs), &bin)) { + return DRFLAC_FALSE; + } + bitsToSeek -= DRFLAC_CACHE_L1_SIZE_BITS(bs); + } +#endif + + /* Whole leftover bytes. */ + while (bitsToSeek >= 8) { + drflac_uint8 bin; + if (!drflac__read_uint8(bs, 8, &bin)) { + return DRFLAC_FALSE; + } + bitsToSeek -= 8; + } + + /* Leftover bits. */ + if (bitsToSeek > 0) { + drflac_uint8 bin; + if (!drflac__read_uint8(bs, (drflac_uint32)bitsToSeek, &bin)) { + return DRFLAC_FALSE; + } + bitsToSeek = 0; /* <-- Necessary for the assert below. */ + } + + DRFLAC_ASSERT(bitsToSeek == 0); + return DRFLAC_TRUE; + } +} + + +/* This function moves the bit streamer to the first bit after the sync code (bit 15 of the of the frame header). It will also update the CRC-16. */ +static drflac_bool32 drflac__find_and_seek_to_next_sync_code(drflac_bs* bs) +{ + DRFLAC_ASSERT(bs != NULL); + + /* + The sync code is always aligned to 8 bits. This is convenient for us because it means we can do byte-aligned movements. The first + thing to do is align to the next byte. + */ + if (!drflac__seek_bits(bs, DRFLAC_CACHE_L1_BITS_REMAINING(bs) & 7)) { + return DRFLAC_FALSE; + } + + for (;;) { + drflac_uint8 hi; + +#ifndef DR_FLAC_NO_CRC + drflac__reset_crc16(bs); +#endif + + if (!drflac__read_uint8(bs, 8, &hi)) { + return DRFLAC_FALSE; + } + + if (hi == 0xFF) { + drflac_uint8 lo; + if (!drflac__read_uint8(bs, 6, &lo)) { + return DRFLAC_FALSE; + } + + if (lo == 0x3E) { + return DRFLAC_TRUE; + } else { + if (!drflac__seek_bits(bs, DRFLAC_CACHE_L1_BITS_REMAINING(bs) & 7)) { + return DRFLAC_FALSE; + } + } + } + } + + /* Should never get here. */ + /*return DRFLAC_FALSE;*/ +} + + +#if defined(DRFLAC_HAS_LZCNT_INTRINSIC) +#define DRFLAC_IMPLEMENT_CLZ_LZCNT +#endif +#if defined(_MSC_VER) && _MSC_VER >= 1400 && (defined(DRFLAC_X64) || defined(DRFLAC_X86)) && !defined(__clang__) +#define DRFLAC_IMPLEMENT_CLZ_MSVC +#endif +#if defined(__WATCOMC__) && defined(__386__) +#define DRFLAC_IMPLEMENT_CLZ_WATCOM +#endif +#ifdef __MRC__ +#include +#define DRFLAC_IMPLEMENT_CLZ_MRC +#endif + +static DRFLAC_INLINE drflac_uint32 drflac__clz_software(drflac_cache_t x) +{ + drflac_uint32 n; + static drflac_uint32 clz_table_4[] = { + 0, + 4, + 3, 3, + 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1 + }; + + if (x == 0) { + return sizeof(x)*8; + } + + n = clz_table_4[x >> (sizeof(x)*8 - 4)]; + if (n == 0) { +#ifdef DRFLAC_64BIT + if ((x & ((drflac_uint64)0xFFFFFFFF << 32)) == 0) { n = 32; x <<= 32; } + if ((x & ((drflac_uint64)0xFFFF0000 << 32)) == 0) { n += 16; x <<= 16; } + if ((x & ((drflac_uint64)0xFF000000 << 32)) == 0) { n += 8; x <<= 8; } + if ((x & ((drflac_uint64)0xF0000000 << 32)) == 0) { n += 4; x <<= 4; } +#else + if ((x & 0xFFFF0000) == 0) { n = 16; x <<= 16; } + if ((x & 0xFF000000) == 0) { n += 8; x <<= 8; } + if ((x & 0xF0000000) == 0) { n += 4; x <<= 4; } +#endif + n += clz_table_4[x >> (sizeof(x)*8 - 4)]; + } + + return n - 1; +} + +#ifdef DRFLAC_IMPLEMENT_CLZ_LZCNT +static DRFLAC_INLINE drflac_bool32 drflac__is_lzcnt_supported(void) +{ + /* Fast compile time check for ARM. */ +#if defined(DRFLAC_HAS_LZCNT_INTRINSIC) && defined(DRFLAC_ARM) && (defined(__ARM_ARCH) && __ARM_ARCH >= 5) + return DRFLAC_TRUE; +#elif defined(__MRC__) + return DRFLAC_TRUE; +#else + /* If the compiler itself does not support the intrinsic then we'll need to return false. */ + #ifdef DRFLAC_HAS_LZCNT_INTRINSIC + return drflac__gIsLZCNTSupported; + #else + return DRFLAC_FALSE; + #endif +#endif +} + +static DRFLAC_INLINE drflac_uint32 drflac__clz_lzcnt(drflac_cache_t x) +{ + /* + It's critical for competitive decoding performance that this function be highly optimal. With MSVC we can use the __lzcnt64() and __lzcnt() intrinsics + to achieve good performance, however on GCC and Clang it's a little bit more annoying. The __builtin_clzl() and __builtin_clzll() intrinsics leave + it undefined as to the return value when `x` is 0. We need this to be well defined as returning 32 or 64, depending on whether or not it's a 32- or + 64-bit build. To work around this we would need to add a conditional to check for the x = 0 case, but this creates unnecessary inefficiency. To work + around this problem I have written some inline assembly to emit the LZCNT (x86) or CLZ (ARM) instruction directly which removes the need to include + the conditional. This has worked well in the past, but for some reason Clang's MSVC compatible driver, clang-cl, does not seem to be handling this + in the same way as the normal Clang driver. It seems that `clang-cl` is just outputting the wrong results sometimes, maybe due to some register + getting clobbered? + + I'm not sure if this is a bug with dr_flac's inlined assembly (most likely), a bug in `clang-cl` or just a misunderstanding on my part with inline + assembly rules for `clang-cl`. If somebody can identify an error in dr_flac's inlined assembly I'm happy to get that fixed. + + Fortunately there is an easy workaround for this. Clang implements MSVC-specific intrinsics for compatibility. It also defines _MSC_VER for extra + compatibility. We can therefore just check for _MSC_VER and use the MSVC intrinsic which, fortunately for us, Clang supports. It would still be nice + to know how to fix the inlined assembly for correctness sake, however. + */ + +#if defined(_MSC_VER) /*&& !defined(__clang__)*/ /* <-- Intentionally wanting Clang to use the MSVC __lzcnt64/__lzcnt intrinsics due to above ^. */ + #ifdef DRFLAC_64BIT + return (drflac_uint32)__lzcnt64(x); + #else + return (drflac_uint32)__lzcnt(x); + #endif +#else + #if defined(__GNUC__) || defined(__clang__) + #if defined(DRFLAC_X64) + { + drflac_uint64 r; + __asm__ __volatile__ ( + "lzcnt{ %1, %0| %0, %1}" : "=r"(r) : "r"(x) : "cc" + ); + + return (drflac_uint32)r; + } + #elif defined(DRFLAC_X86) + { + drflac_uint32 r; + __asm__ __volatile__ ( + "lzcnt{l %1, %0| %0, %1}" : "=r"(r) : "r"(x) : "cc" + ); + + return r; + } + #elif defined(DRFLAC_ARM) && (defined(__ARM_ARCH) && __ARM_ARCH >= 5) && !defined(__ARM_ARCH_6M__) && !defined(DRFLAC_64BIT) /* <-- I haven't tested 64-bit inline assembly, so only enabling this for the 32-bit build for now. */ + { + unsigned int r; + __asm__ __volatile__ ( + #if defined(DRFLAC_64BIT) + "clz %w[out], %w[in]" : [out]"=r"(r) : [in]"r"(x) /* <-- This is untested. If someone in the community could test this, that would be appreciated! */ + #else + "clz %[out], %[in]" : [out]"=r"(r) : [in]"r"(x) + #endif + ); + + return r; + } + #else + if (x == 0) { + return sizeof(x)*8; + } + #ifdef DRFLAC_64BIT + return (drflac_uint32)__builtin_clzll((drflac_uint64)x); + #else + return (drflac_uint32)__builtin_clzl((drflac_uint32)x); + #endif + #endif + #else + /* Unsupported compiler. */ + #error "This compiler does not support the lzcnt intrinsic." + #endif +#endif +} +#endif + +#ifdef DRFLAC_IMPLEMENT_CLZ_MSVC +#include /* For BitScanReverse(). */ + +static DRFLAC_INLINE drflac_uint32 drflac__clz_msvc(drflac_cache_t x) +{ + drflac_uint32 n; + + if (x == 0) { + return sizeof(x)*8; + } + +#ifdef DRFLAC_64BIT + _BitScanReverse64((unsigned long*)&n, x); +#else + _BitScanReverse((unsigned long*)&n, x); +#endif + return sizeof(x)*8 - n - 1; +} +#endif + +#ifdef DRFLAC_IMPLEMENT_CLZ_WATCOM +static __inline drflac_uint32 drflac__clz_watcom (drflac_uint32); +#ifdef DRFLAC_IMPLEMENT_CLZ_WATCOM_LZCNT +/* Use the LZCNT instruction (only available on some processors since the 2010s). */ +#pragma aux drflac__clz_watcom_lzcnt = \ + "db 0F3h, 0Fh, 0BDh, 0C0h" /* lzcnt eax, eax */ \ + parm [eax] \ + value [eax] \ + modify nomemory; +#else +/* Use the 386+-compatible implementation. */ +#pragma aux drflac__clz_watcom = \ + "bsr eax, eax" \ + "xor eax, 31" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif +#endif + +static DRFLAC_INLINE drflac_uint32 drflac__clz(drflac_cache_t x) +{ +#ifdef DRFLAC_IMPLEMENT_CLZ_LZCNT + if (drflac__is_lzcnt_supported()) { + return drflac__clz_lzcnt(x); + } else +#endif + { +#ifdef DRFLAC_IMPLEMENT_CLZ_MSVC + return drflac__clz_msvc(x); +#elif defined(DRFLAC_IMPLEMENT_CLZ_WATCOM_LZCNT) + return drflac__clz_watcom_lzcnt(x); +#elif defined(DRFLAC_IMPLEMENT_CLZ_WATCOM) + return (x == 0) ? sizeof(x)*8 : drflac__clz_watcom(x); +#elif defined(__MRC__) + return __cntlzw(x); +#else + return drflac__clz_software(x); +#endif + } +} + + +static DRFLAC_INLINE drflac_bool32 drflac__seek_past_next_set_bit(drflac_bs* bs, unsigned int* pOffsetOut) +{ + drflac_uint32 zeroCounter = 0; + drflac_uint32 setBitOffsetPlus1; + + while (bs->cache == 0) { + zeroCounter += (drflac_uint32)DRFLAC_CACHE_L1_BITS_REMAINING(bs); + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + } + + if (bs->cache == 1) { + /* Not catching this would lead to undefined behaviour: a shift of a 32-bit number by 32 or more is undefined */ + *pOffsetOut = zeroCounter + (drflac_uint32)DRFLAC_CACHE_L1_BITS_REMAINING(bs) - 1; + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; + } + + setBitOffsetPlus1 = drflac__clz(bs->cache); + setBitOffsetPlus1 += 1; + + if (setBitOffsetPlus1 > DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + /* This happens when we get to end of stream */ + return DRFLAC_FALSE; + } + + bs->consumedBits += setBitOffsetPlus1; + bs->cache <<= setBitOffsetPlus1; + + *pOffsetOut = zeroCounter + setBitOffsetPlus1 - 1; + return DRFLAC_TRUE; +} + + + +static drflac_bool32 drflac__seek_to_byte(drflac_bs* bs, drflac_uint64 offsetFromStart) +{ + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(offsetFromStart > 0); + + /* + Seeking from the start is not quite as trivial as it sounds because the onSeek callback takes a signed 32-bit integer (which + is intentional because it simplifies the implementation of the onSeek callbacks), however offsetFromStart is unsigned 64-bit. + To resolve we just need to do an initial seek from the start, and then a series of offset seeks to make up the remainder. + */ + if (offsetFromStart > 0x7FFFFFFF) { + drflac_uint64 bytesRemaining = offsetFromStart; + if (!bs->onSeek(bs->pUserData, 0x7FFFFFFF, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + bytesRemaining -= 0x7FFFFFFF; + + while (bytesRemaining > 0x7FFFFFFF) { + if (!bs->onSeek(bs->pUserData, 0x7FFFFFFF, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + bytesRemaining -= 0x7FFFFFFF; + } + + if (bytesRemaining > 0) { + if (!bs->onSeek(bs->pUserData, (int)bytesRemaining, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + } + } else { + if (!bs->onSeek(bs->pUserData, (int)offsetFromStart, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + } + + /* The cache should be reset to force a reload of fresh data from the client. */ + drflac__reset_cache(bs); + return DRFLAC_TRUE; +} + + +static drflac_result drflac__read_utf8_coded_number(drflac_bs* bs, drflac_uint64* pNumberOut, drflac_uint8* pCRCOut) +{ + drflac_uint8 crc; + drflac_uint64 result; + drflac_uint8 utf8[7] = {0}; + int byteCount; + int i; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pNumberOut != NULL); + DRFLAC_ASSERT(pCRCOut != NULL); + + crc = *pCRCOut; + + if (!drflac__read_uint8(bs, 8, utf8)) { + *pNumberOut = 0; + return DRFLAC_AT_END; + } + crc = drflac_crc8(crc, utf8[0], 8); + + if ((utf8[0] & 0x80) == 0) { + *pNumberOut = utf8[0]; + *pCRCOut = crc; + return DRFLAC_SUCCESS; + } + + /*byteCount = 1;*/ + if ((utf8[0] & 0xE0) == 0xC0) { + byteCount = 2; + } else if ((utf8[0] & 0xF0) == 0xE0) { + byteCount = 3; + } else if ((utf8[0] & 0xF8) == 0xF0) { + byteCount = 4; + } else if ((utf8[0] & 0xFC) == 0xF8) { + byteCount = 5; + } else if ((utf8[0] & 0xFE) == 0xFC) { + byteCount = 6; + } else if ((utf8[0] & 0xFF) == 0xFE) { + byteCount = 7; + } else { + *pNumberOut = 0; + return DRFLAC_CRC_MISMATCH; /* Bad UTF-8 encoding. */ + } + + /* Read extra bytes. */ + DRFLAC_ASSERT(byteCount > 1); + + result = (drflac_uint64)(utf8[0] & (0xFF >> (byteCount + 1))); + for (i = 1; i < byteCount; ++i) { + if (!drflac__read_uint8(bs, 8, utf8 + i)) { + *pNumberOut = 0; + return DRFLAC_AT_END; + } + crc = drflac_crc8(crc, utf8[i], 8); + + result = (result << 6) | (utf8[i] & 0x3F); + } + + *pNumberOut = result; + *pCRCOut = crc; + return DRFLAC_SUCCESS; +} + + +static DRFLAC_INLINE drflac_uint32 drflac__ilog2_u32(drflac_uint32 x) +{ +#if 1 /* Needs optimizing. */ + drflac_uint32 result = 0; + while (x > 0) { + result += 1; + x >>= 1; + } + + return result; +#endif +} + +static DRFLAC_INLINE drflac_bool32 drflac__use_64_bit_prediction(drflac_uint32 bitsPerSample, drflac_uint32 order, drflac_uint32 precision) +{ + /* https://web.archive.org/web/20220205005724/https://github.com/ietf-wg-cellar/flac-specification/blob/37a49aa48ba4ba12e8757badfc59c0df35435fec/rfc_backmatter.md */ + return bitsPerSample + precision + drflac__ilog2_u32(order) > 32; +} + + +/* +The next two functions are responsible for calculating the prediction. + +When the bits per sample is >16 we need to use 64-bit integer arithmetic because otherwise we'll run out of precision. It's +safe to assume this will be slower on 32-bit platforms so we use a more optimal solution when the bits per sample is <=16. +*/ +#if defined(__clang__) +__attribute__((no_sanitize("signed-integer-overflow"))) +#endif +static DRFLAC_INLINE drflac_int32 drflac__calculate_prediction_32(drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pDecodedSamples) +{ + drflac_int32 prediction = 0; + + DRFLAC_ASSERT(order <= 32); + + /* 32-bit version. */ + + /* VC++ optimizes this to a single jmp. I've not yet verified this for other compilers. */ + switch (order) + { + case 32: prediction += coefficients[31] * pDecodedSamples[-32]; + case 31: prediction += coefficients[30] * pDecodedSamples[-31]; + case 30: prediction += coefficients[29] * pDecodedSamples[-30]; + case 29: prediction += coefficients[28] * pDecodedSamples[-29]; + case 28: prediction += coefficients[27] * pDecodedSamples[-28]; + case 27: prediction += coefficients[26] * pDecodedSamples[-27]; + case 26: prediction += coefficients[25] * pDecodedSamples[-26]; + case 25: prediction += coefficients[24] * pDecodedSamples[-25]; + case 24: prediction += coefficients[23] * pDecodedSamples[-24]; + case 23: prediction += coefficients[22] * pDecodedSamples[-23]; + case 22: prediction += coefficients[21] * pDecodedSamples[-22]; + case 21: prediction += coefficients[20] * pDecodedSamples[-21]; + case 20: prediction += coefficients[19] * pDecodedSamples[-20]; + case 19: prediction += coefficients[18] * pDecodedSamples[-19]; + case 18: prediction += coefficients[17] * pDecodedSamples[-18]; + case 17: prediction += coefficients[16] * pDecodedSamples[-17]; + case 16: prediction += coefficients[15] * pDecodedSamples[-16]; + case 15: prediction += coefficients[14] * pDecodedSamples[-15]; + case 14: prediction += coefficients[13] * pDecodedSamples[-14]; + case 13: prediction += coefficients[12] * pDecodedSamples[-13]; + case 12: prediction += coefficients[11] * pDecodedSamples[-12]; + case 11: prediction += coefficients[10] * pDecodedSamples[-11]; + case 10: prediction += coefficients[ 9] * pDecodedSamples[-10]; + case 9: prediction += coefficients[ 8] * pDecodedSamples[- 9]; + case 8: prediction += coefficients[ 7] * pDecodedSamples[- 8]; + case 7: prediction += coefficients[ 6] * pDecodedSamples[- 7]; + case 6: prediction += coefficients[ 5] * pDecodedSamples[- 6]; + case 5: prediction += coefficients[ 4] * pDecodedSamples[- 5]; + case 4: prediction += coefficients[ 3] * pDecodedSamples[- 4]; + case 3: prediction += coefficients[ 2] * pDecodedSamples[- 3]; + case 2: prediction += coefficients[ 1] * pDecodedSamples[- 2]; + case 1: prediction += coefficients[ 0] * pDecodedSamples[- 1]; + } + + return (drflac_int32)(prediction >> shift); +} + +static DRFLAC_INLINE drflac_int32 drflac__calculate_prediction_64(drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pDecodedSamples) +{ + drflac_int64 prediction; + + DRFLAC_ASSERT(order <= 32); + + /* 64-bit version. */ + + /* This method is faster on the 32-bit build when compiling with VC++. See note below. */ +#ifndef DRFLAC_64BIT + if (order == 8) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + } + else if (order == 7) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + } + else if (order == 3) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + } + else if (order == 6) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + } + else if (order == 5) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + } + else if (order == 4) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + } + else if (order == 12) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + prediction += coefficients[8] * (drflac_int64)pDecodedSamples[-9]; + prediction += coefficients[9] * (drflac_int64)pDecodedSamples[-10]; + prediction += coefficients[10] * (drflac_int64)pDecodedSamples[-11]; + prediction += coefficients[11] * (drflac_int64)pDecodedSamples[-12]; + } + else if (order == 2) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + } + else if (order == 1) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + } + else if (order == 10) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + prediction += coefficients[8] * (drflac_int64)pDecodedSamples[-9]; + prediction += coefficients[9] * (drflac_int64)pDecodedSamples[-10]; + } + else if (order == 9) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + prediction += coefficients[8] * (drflac_int64)pDecodedSamples[-9]; + } + else if (order == 11) + { + prediction = coefficients[0] * (drflac_int64)pDecodedSamples[-1]; + prediction += coefficients[1] * (drflac_int64)pDecodedSamples[-2]; + prediction += coefficients[2] * (drflac_int64)pDecodedSamples[-3]; + prediction += coefficients[3] * (drflac_int64)pDecodedSamples[-4]; + prediction += coefficients[4] * (drflac_int64)pDecodedSamples[-5]; + prediction += coefficients[5] * (drflac_int64)pDecodedSamples[-6]; + prediction += coefficients[6] * (drflac_int64)pDecodedSamples[-7]; + prediction += coefficients[7] * (drflac_int64)pDecodedSamples[-8]; + prediction += coefficients[8] * (drflac_int64)pDecodedSamples[-9]; + prediction += coefficients[9] * (drflac_int64)pDecodedSamples[-10]; + prediction += coefficients[10] * (drflac_int64)pDecodedSamples[-11]; + } + else + { + int j; + + prediction = 0; + for (j = 0; j < (int)order; ++j) { + prediction += coefficients[j] * (drflac_int64)pDecodedSamples[-j-1]; + } + } +#endif + + /* + VC++ optimizes this to a single jmp instruction, but only the 64-bit build. The 32-bit build generates less efficient code for some + reason. The ugly version above is faster so we'll just switch between the two depending on the target platform. + */ +#ifdef DRFLAC_64BIT + prediction = 0; + switch (order) + { + case 32: prediction += coefficients[31] * (drflac_int64)pDecodedSamples[-32]; + case 31: prediction += coefficients[30] * (drflac_int64)pDecodedSamples[-31]; + case 30: prediction += coefficients[29] * (drflac_int64)pDecodedSamples[-30]; + case 29: prediction += coefficients[28] * (drflac_int64)pDecodedSamples[-29]; + case 28: prediction += coefficients[27] * (drflac_int64)pDecodedSamples[-28]; + case 27: prediction += coefficients[26] * (drflac_int64)pDecodedSamples[-27]; + case 26: prediction += coefficients[25] * (drflac_int64)pDecodedSamples[-26]; + case 25: prediction += coefficients[24] * (drflac_int64)pDecodedSamples[-25]; + case 24: prediction += coefficients[23] * (drflac_int64)pDecodedSamples[-24]; + case 23: prediction += coefficients[22] * (drflac_int64)pDecodedSamples[-23]; + case 22: prediction += coefficients[21] * (drflac_int64)pDecodedSamples[-22]; + case 21: prediction += coefficients[20] * (drflac_int64)pDecodedSamples[-21]; + case 20: prediction += coefficients[19] * (drflac_int64)pDecodedSamples[-20]; + case 19: prediction += coefficients[18] * (drflac_int64)pDecodedSamples[-19]; + case 18: prediction += coefficients[17] * (drflac_int64)pDecodedSamples[-18]; + case 17: prediction += coefficients[16] * (drflac_int64)pDecodedSamples[-17]; + case 16: prediction += coefficients[15] * (drflac_int64)pDecodedSamples[-16]; + case 15: prediction += coefficients[14] * (drflac_int64)pDecodedSamples[-15]; + case 14: prediction += coefficients[13] * (drflac_int64)pDecodedSamples[-14]; + case 13: prediction += coefficients[12] * (drflac_int64)pDecodedSamples[-13]; + case 12: prediction += coefficients[11] * (drflac_int64)pDecodedSamples[-12]; + case 11: prediction += coefficients[10] * (drflac_int64)pDecodedSamples[-11]; + case 10: prediction += coefficients[ 9] * (drflac_int64)pDecodedSamples[-10]; + case 9: prediction += coefficients[ 8] * (drflac_int64)pDecodedSamples[- 9]; + case 8: prediction += coefficients[ 7] * (drflac_int64)pDecodedSamples[- 8]; + case 7: prediction += coefficients[ 6] * (drflac_int64)pDecodedSamples[- 7]; + case 6: prediction += coefficients[ 5] * (drflac_int64)pDecodedSamples[- 6]; + case 5: prediction += coefficients[ 4] * (drflac_int64)pDecodedSamples[- 5]; + case 4: prediction += coefficients[ 3] * (drflac_int64)pDecodedSamples[- 4]; + case 3: prediction += coefficients[ 2] * (drflac_int64)pDecodedSamples[- 3]; + case 2: prediction += coefficients[ 1] * (drflac_int64)pDecodedSamples[- 2]; + case 1: prediction += coefficients[ 0] * (drflac_int64)pDecodedSamples[- 1]; + } +#endif + + return (drflac_int32)(prediction >> shift); +} + + +#if 0 +/* +Reference implementation for reading and decoding samples with residual. This is intentionally left unoptimized for the +sake of readability and should only be used as a reference. +*/ +static drflac_bool32 drflac__decode_samples_with_residual__rice__reference(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 lpcOrder, drflac_int32 lpcShift, drflac_uint32 lpcPrecision, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + drflac_uint32 i; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pSamplesOut != NULL); + + for (i = 0; i < count; ++i) { + drflac_uint32 zeroCounter = 0; + for (;;) { + drflac_uint8 bit; + if (!drflac__read_uint8(bs, 1, &bit)) { + return DRFLAC_FALSE; + } + + if (bit == 0) { + zeroCounter += 1; + } else { + break; + } + } + + drflac_uint32 decodedRice; + if (riceParam > 0) { + if (!drflac__read_uint32(bs, riceParam, &decodedRice)) { + return DRFLAC_FALSE; + } + } else { + decodedRice = 0; + } + + decodedRice |= (zeroCounter << riceParam); + if ((decodedRice & 0x01)) { + decodedRice = ~(decodedRice >> 1); + } else { + decodedRice = (decodedRice >> 1); + } + + + if (drflac__use_64_bit_prediction(bitsPerSample, lpcOrder, lpcPrecision)) { + pSamplesOut[i] = decodedRice + drflac__calculate_prediction_64(lpcOrder, lpcShift, coefficients, pSamplesOut + i); + } else { + pSamplesOut[i] = decodedRice + drflac__calculate_prediction_32(lpcOrder, lpcShift, coefficients, pSamplesOut + i); + } + } + + return DRFLAC_TRUE; +} +#endif + +#if 0 +static drflac_bool32 drflac__read_rice_parts__reference(drflac_bs* bs, drflac_uint8 riceParam, drflac_uint32* pZeroCounterOut, drflac_uint32* pRiceParamPartOut) +{ + drflac_uint32 zeroCounter = 0; + drflac_uint32 decodedRice; + + for (;;) { + drflac_uint8 bit; + if (!drflac__read_uint8(bs, 1, &bit)) { + return DRFLAC_FALSE; + } + + if (bit == 0) { + zeroCounter += 1; + } else { + break; + } + } + + if (riceParam > 0) { + if (!drflac__read_uint32(bs, riceParam, &decodedRice)) { + return DRFLAC_FALSE; + } + } else { + decodedRice = 0; + } + + *pZeroCounterOut = zeroCounter; + *pRiceParamPartOut = decodedRice; + return DRFLAC_TRUE; +} +#endif + +#if 0 +static DRFLAC_INLINE drflac_bool32 drflac__read_rice_parts(drflac_bs* bs, drflac_uint8 riceParam, drflac_uint32* pZeroCounterOut, drflac_uint32* pRiceParamPartOut) +{ + drflac_cache_t riceParamMask; + drflac_uint32 zeroCounter; + drflac_uint32 setBitOffsetPlus1; + drflac_uint32 riceParamPart; + drflac_uint32 riceLength; + + DRFLAC_ASSERT(riceParam > 0); /* <-- riceParam should never be 0. drflac__read_rice_parts__param_equals_zero() should be used instead for this case. */ + + riceParamMask = DRFLAC_CACHE_L1_SELECTION_MASK(riceParam); + + zeroCounter = 0; + while (bs->cache == 0) { + zeroCounter += (drflac_uint32)DRFLAC_CACHE_L1_BITS_REMAINING(bs); + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + } + + setBitOffsetPlus1 = drflac__clz(bs->cache); + zeroCounter += setBitOffsetPlus1; + setBitOffsetPlus1 += 1; + + riceLength = setBitOffsetPlus1 + riceParam; + if (riceLength < DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + riceParamPart = (drflac_uint32)((bs->cache & (riceParamMask >> setBitOffsetPlus1)) >> DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, riceLength)); + + bs->consumedBits += riceLength; + bs->cache <<= riceLength; + } else { + drflac_uint32 bitCountLo; + drflac_cache_t resultHi; + + bs->consumedBits += riceLength; + bs->cache <<= setBitOffsetPlus1 & (DRFLAC_CACHE_L1_SIZE_BITS(bs)-1); /* <-- Equivalent to "if (setBitOffsetPlus1 < DRFLAC_CACHE_L1_SIZE_BITS(bs)) { bs->cache <<= setBitOffsetPlus1; }" */ + + /* It straddles the cached data. It will never cover more than the next chunk. We just read the number in two parts and combine them. */ + bitCountLo = bs->consumedBits - DRFLAC_CACHE_L1_SIZE_BITS(bs); + resultHi = DRFLAC_CACHE_L1_SELECT_AND_SHIFT(bs, riceParam); /* <-- Use DRFLAC_CACHE_L1_SELECT_AND_SHIFT_SAFE() if ever this function allows riceParam=0. */ + + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { +#ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); +#endif + bs->cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs->consumedBits = 0; +#ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs->cache; +#endif + } else { + /* Slow path. We need to fetch more data from the client. */ + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + if (bitCountLo > DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + /* This happens when we get to end of stream */ + return DRFLAC_FALSE; + } + } + + riceParamPart = (drflac_uint32)(resultHi | DRFLAC_CACHE_L1_SELECT_AND_SHIFT_SAFE(bs, bitCountLo)); + + bs->consumedBits += bitCountLo; + bs->cache <<= bitCountLo; + } + + pZeroCounterOut[0] = zeroCounter; + pRiceParamPartOut[0] = riceParamPart; + + return DRFLAC_TRUE; +} +#endif + +static DRFLAC_INLINE drflac_bool32 drflac__read_rice_parts_x1(drflac_bs* bs, drflac_uint8 riceParam, drflac_uint32* pZeroCounterOut, drflac_uint32* pRiceParamPartOut) +{ + drflac_uint32 riceParamPlus1 = riceParam + 1; + /*drflac_cache_t riceParamPlus1Mask = DRFLAC_CACHE_L1_SELECTION_MASK(riceParamPlus1);*/ + drflac_uint32 riceParamPlus1Shift = DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, riceParamPlus1); + drflac_uint32 riceParamPlus1MaxConsumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs) - riceParamPlus1; + + /* + The idea here is to use local variables for the cache in an attempt to encourage the compiler to store them in registers. I have + no idea how this will work in practice... + */ + drflac_cache_t bs_cache = bs->cache; + drflac_uint32 bs_consumedBits = bs->consumedBits; + + /* The first thing to do is find the first unset bit. Most likely a bit will be set in the current cache line. */ + drflac_uint32 lzcount = drflac__clz(bs_cache); + if (lzcount < sizeof(bs_cache)*8) { + pZeroCounterOut[0] = lzcount; + + /* + It is most likely that the riceParam part (which comes after the zero counter) is also on this cache line. When extracting + this, we include the set bit from the unary coded part because it simplifies cache management. This bit will be handled + outside of this function at a higher level. + */ + extract_rice_param_part: + bs_cache <<= lzcount; + bs_consumedBits += lzcount; + + if (bs_consumedBits <= riceParamPlus1MaxConsumedBits) { + /* Getting here means the rice parameter part is wholly contained within the current cache line. */ + pRiceParamPartOut[0] = (drflac_uint32)(bs_cache >> riceParamPlus1Shift); + bs_cache <<= riceParamPlus1; + bs_consumedBits += riceParamPlus1; + } else { + drflac_uint32 riceParamPartHi; + drflac_uint32 riceParamPartLo; + drflac_uint32 riceParamPartLoBitCount; + + /* + Getting here means the rice parameter part straddles the cache line. We need to read from the tail of the current cache + line, reload the cache, and then combine it with the head of the next cache line. + */ + + /* Grab the high part of the rice parameter part. */ + riceParamPartHi = (drflac_uint32)(bs_cache >> riceParamPlus1Shift); + + /* Before reloading the cache we need to grab the size in bits of the low part. */ + riceParamPartLoBitCount = bs_consumedBits - riceParamPlus1MaxConsumedBits; + DRFLAC_ASSERT(riceParamPartLoBitCount > 0 && riceParamPartLoBitCount < 32); + + /* Now reload the cache. */ + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = riceParamPartLoBitCount; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + /* Slow path. We need to fetch more data from the client. */ + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + if (riceParamPartLoBitCount > DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + /* This happens when we get to end of stream */ + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits + riceParamPartLoBitCount; + } + + /* We should now have enough information to construct the rice parameter part. */ + riceParamPartLo = (drflac_uint32)(bs_cache >> (DRFLAC_CACHE_L1_SELECTION_SHIFT(bs, riceParamPartLoBitCount))); + pRiceParamPartOut[0] = riceParamPartHi | riceParamPartLo; + + bs_cache <<= riceParamPartLoBitCount; + } + } else { + /* + Getting here means there are no bits set on the cache line. This is a less optimal case because we just wasted a call + to drflac__clz() and we need to reload the cache. + */ + drflac_uint32 zeroCounter = (drflac_uint32)(DRFLAC_CACHE_L1_SIZE_BITS(bs) - bs_consumedBits); + for (;;) { + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = 0; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + /* Slow path. We need to fetch more data from the client. */ + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits; + } + + lzcount = drflac__clz(bs_cache); + zeroCounter += lzcount; + + if (lzcount < sizeof(bs_cache)*8) { + break; + } + } + + pZeroCounterOut[0] = zeroCounter; + goto extract_rice_param_part; + } + + /* Make sure the cache is restored at the end of it all. */ + bs->cache = bs_cache; + bs->consumedBits = bs_consumedBits; + + return DRFLAC_TRUE; +} + +static DRFLAC_INLINE drflac_bool32 drflac__seek_rice_parts(drflac_bs* bs, drflac_uint8 riceParam) +{ + drflac_uint32 riceParamPlus1 = riceParam + 1; + drflac_uint32 riceParamPlus1MaxConsumedBits = DRFLAC_CACHE_L1_SIZE_BITS(bs) - riceParamPlus1; + + /* + The idea here is to use local variables for the cache in an attempt to encourage the compiler to store them in registers. I have + no idea how this will work in practice... + */ + drflac_cache_t bs_cache = bs->cache; + drflac_uint32 bs_consumedBits = bs->consumedBits; + + /* The first thing to do is find the first unset bit. Most likely a bit will be set in the current cache line. */ + drflac_uint32 lzcount = drflac__clz(bs_cache); + if (lzcount < sizeof(bs_cache)*8) { + /* + It is most likely that the riceParam part (which comes after the zero counter) is also on this cache line. When extracting + this, we include the set bit from the unary coded part because it simplifies cache management. This bit will be handled + outside of this function at a higher level. + */ + extract_rice_param_part: + bs_cache <<= lzcount; + bs_consumedBits += lzcount; + + if (bs_consumedBits <= riceParamPlus1MaxConsumedBits) { + /* Getting here means the rice parameter part is wholly contained within the current cache line. */ + bs_cache <<= riceParamPlus1; + bs_consumedBits += riceParamPlus1; + } else { + /* + Getting here means the rice parameter part straddles the cache line. We need to read from the tail of the current cache + line, reload the cache, and then combine it with the head of the next cache line. + */ + + /* Before reloading the cache we need to grab the size in bits of the low part. */ + drflac_uint32 riceParamPartLoBitCount = bs_consumedBits - riceParamPlus1MaxConsumedBits; + DRFLAC_ASSERT(riceParamPartLoBitCount > 0 && riceParamPartLoBitCount < 32); + + /* Now reload the cache. */ + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = riceParamPartLoBitCount; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + /* Slow path. We need to fetch more data from the client. */ + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + if (riceParamPartLoBitCount > DRFLAC_CACHE_L1_BITS_REMAINING(bs)) { + /* This happens when we get to end of stream */ + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits + riceParamPartLoBitCount; + } + + bs_cache <<= riceParamPartLoBitCount; + } + } else { + /* + Getting here means there are no bits set on the cache line. This is a less optimal case because we just wasted a call + to drflac__clz() and we need to reload the cache. + */ + for (;;) { + if (bs->nextL2Line < DRFLAC_CACHE_L2_LINE_COUNT(bs)) { + #ifndef DR_FLAC_NO_CRC + drflac__update_crc16(bs); + #endif + bs_cache = drflac__be2host__cache_line(bs->cacheL2[bs->nextL2Line++]); + bs_consumedBits = 0; + #ifndef DR_FLAC_NO_CRC + bs->crc16Cache = bs_cache; + #endif + } else { + /* Slow path. We need to fetch more data from the client. */ + if (!drflac__reload_cache(bs)) { + return DRFLAC_FALSE; + } + + bs_cache = bs->cache; + bs_consumedBits = bs->consumedBits; + } + + lzcount = drflac__clz(bs_cache); + if (lzcount < sizeof(bs_cache)*8) { + break; + } + } + + goto extract_rice_param_part; + } + + /* Make sure the cache is restored at the end of it all. */ + bs->cache = bs_cache; + bs->consumedBits = bs_consumedBits; + + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac__decode_samples_with_residual__rice__scalar_zeroorder(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + drflac_uint32 t[2] = {0x00000000, 0xFFFFFFFF}; + drflac_uint32 zeroCountPart0; + drflac_uint32 riceParamPart0; + drflac_uint32 riceParamMask; + drflac_uint32 i; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pSamplesOut != NULL); + + (void)bitsPerSample; + (void)order; + (void)shift; + (void)coefficients; + + riceParamMask = (drflac_uint32)~((~0UL) << riceParam); + + i = 0; + while (i < count) { + /* Rice extraction. */ + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart0, &riceParamPart0)) { + return DRFLAC_FALSE; + } + + /* Rice reconstruction. */ + riceParamPart0 &= riceParamMask; + riceParamPart0 |= (zeroCountPart0 << riceParam); + riceParamPart0 = (riceParamPart0 >> 1) ^ t[riceParamPart0 & 0x01]; + + pSamplesOut[i] = riceParamPart0; + + i += 1; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples_with_residual__rice__scalar(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 lpcOrder, drflac_int32 lpcShift, drflac_uint32 lpcPrecision, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + drflac_uint32 t[2] = {0x00000000, 0xFFFFFFFF}; + drflac_uint32 zeroCountPart0 = 0; + drflac_uint32 zeroCountPart1 = 0; + drflac_uint32 zeroCountPart2 = 0; + drflac_uint32 zeroCountPart3 = 0; + drflac_uint32 riceParamPart0 = 0; + drflac_uint32 riceParamPart1 = 0; + drflac_uint32 riceParamPart2 = 0; + drflac_uint32 riceParamPart3 = 0; + drflac_uint32 riceParamMask; + const drflac_int32* pSamplesOutEnd; + drflac_uint32 i; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pSamplesOut != NULL); + + if (lpcOrder == 0) { + return drflac__decode_samples_with_residual__rice__scalar_zeroorder(bs, bitsPerSample, count, riceParam, lpcOrder, lpcShift, coefficients, pSamplesOut); + } + + riceParamMask = (drflac_uint32)~((~0UL) << riceParam); + pSamplesOutEnd = pSamplesOut + (count & ~3); + + if (drflac__use_64_bit_prediction(bitsPerSample, lpcOrder, lpcPrecision)) { + while (pSamplesOut < pSamplesOutEnd) { + /* + Rice extraction. It's faster to do this one at a time against local variables than it is to use the x4 version + against an array. Not sure why, but perhaps it's making more efficient use of registers? + */ + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart0, &riceParamPart0) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart1, &riceParamPart1) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart2, &riceParamPart2) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart3, &riceParamPart3)) { + return DRFLAC_FALSE; + } + + riceParamPart0 &= riceParamMask; + riceParamPart1 &= riceParamMask; + riceParamPart2 &= riceParamMask; + riceParamPart3 &= riceParamMask; + + riceParamPart0 |= (zeroCountPart0 << riceParam); + riceParamPart1 |= (zeroCountPart1 << riceParam); + riceParamPart2 |= (zeroCountPart2 << riceParam); + riceParamPart3 |= (zeroCountPart3 << riceParam); + + riceParamPart0 = (riceParamPart0 >> 1) ^ t[riceParamPart0 & 0x01]; + riceParamPart1 = (riceParamPart1 >> 1) ^ t[riceParamPart1 & 0x01]; + riceParamPart2 = (riceParamPart2 >> 1) ^ t[riceParamPart2 & 0x01]; + riceParamPart3 = (riceParamPart3 >> 1) ^ t[riceParamPart3 & 0x01]; + + pSamplesOut[0] = riceParamPart0 + drflac__calculate_prediction_64(lpcOrder, lpcShift, coefficients, pSamplesOut + 0); + pSamplesOut[1] = riceParamPart1 + drflac__calculate_prediction_64(lpcOrder, lpcShift, coefficients, pSamplesOut + 1); + pSamplesOut[2] = riceParamPart2 + drflac__calculate_prediction_64(lpcOrder, lpcShift, coefficients, pSamplesOut + 2); + pSamplesOut[3] = riceParamPart3 + drflac__calculate_prediction_64(lpcOrder, lpcShift, coefficients, pSamplesOut + 3); + + pSamplesOut += 4; + } + } else { + while (pSamplesOut < pSamplesOutEnd) { + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart0, &riceParamPart0) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart1, &riceParamPart1) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart2, &riceParamPart2) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart3, &riceParamPart3)) { + return DRFLAC_FALSE; + } + + riceParamPart0 &= riceParamMask; + riceParamPart1 &= riceParamMask; + riceParamPart2 &= riceParamMask; + riceParamPart3 &= riceParamMask; + + riceParamPart0 |= (zeroCountPart0 << riceParam); + riceParamPart1 |= (zeroCountPart1 << riceParam); + riceParamPart2 |= (zeroCountPart2 << riceParam); + riceParamPart3 |= (zeroCountPart3 << riceParam); + + riceParamPart0 = (riceParamPart0 >> 1) ^ t[riceParamPart0 & 0x01]; + riceParamPart1 = (riceParamPart1 >> 1) ^ t[riceParamPart1 & 0x01]; + riceParamPart2 = (riceParamPart2 >> 1) ^ t[riceParamPart2 & 0x01]; + riceParamPart3 = (riceParamPart3 >> 1) ^ t[riceParamPart3 & 0x01]; + + pSamplesOut[0] = riceParamPart0 + drflac__calculate_prediction_32(lpcOrder, lpcShift, coefficients, pSamplesOut + 0); + pSamplesOut[1] = riceParamPart1 + drflac__calculate_prediction_32(lpcOrder, lpcShift, coefficients, pSamplesOut + 1); + pSamplesOut[2] = riceParamPart2 + drflac__calculate_prediction_32(lpcOrder, lpcShift, coefficients, pSamplesOut + 2); + pSamplesOut[3] = riceParamPart3 + drflac__calculate_prediction_32(lpcOrder, lpcShift, coefficients, pSamplesOut + 3); + + pSamplesOut += 4; + } + } + + i = (count & ~3); + while (i < count) { + /* Rice extraction. */ + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountPart0, &riceParamPart0)) { + return DRFLAC_FALSE; + } + + /* Rice reconstruction. */ + riceParamPart0 &= riceParamMask; + riceParamPart0 |= (zeroCountPart0 << riceParam); + riceParamPart0 = (riceParamPart0 >> 1) ^ t[riceParamPart0 & 0x01]; + /*riceParamPart0 = (riceParamPart0 >> 1) ^ (~(riceParamPart0 & 0x01) + 1);*/ + + /* Sample reconstruction. */ + if (drflac__use_64_bit_prediction(bitsPerSample, lpcOrder, lpcPrecision)) { + pSamplesOut[0] = riceParamPart0 + drflac__calculate_prediction_64(lpcOrder, lpcShift, coefficients, pSamplesOut + 0); + } else { + pSamplesOut[0] = riceParamPart0 + drflac__calculate_prediction_32(lpcOrder, lpcShift, coefficients, pSamplesOut + 0); + } + + i += 1; + pSamplesOut += 1; + } + + return DRFLAC_TRUE; +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE __m128i drflac__mm_packs_interleaved_epi32(__m128i a, __m128i b) +{ + __m128i r; + + /* Pack. */ + r = _mm_packs_epi32(a, b); + + /* a3a2 a1a0 b3b2 b1b0 -> a3a2 b3b2 a1a0 b1b0 */ + r = _mm_shuffle_epi32(r, _MM_SHUFFLE(3, 1, 2, 0)); + + /* a3a2 b3b2 a1a0 b1b0 -> a3b3 a2b2 a1b1 a0b0 */ + r = _mm_shufflehi_epi16(r, _MM_SHUFFLE(3, 1, 2, 0)); + r = _mm_shufflelo_epi16(r, _MM_SHUFFLE(3, 1, 2, 0)); + + return r; +} +#endif + +#if defined(DRFLAC_SUPPORT_SSE41) +static DRFLAC_INLINE __m128i drflac__mm_not_si128(__m128i a) +{ + return _mm_xor_si128(a, _mm_cmpeq_epi32(_mm_setzero_si128(), _mm_setzero_si128())); +} + +static DRFLAC_INLINE __m128i drflac__mm_hadd_epi32(__m128i x) +{ + __m128i x64 = _mm_add_epi32(x, _mm_shuffle_epi32(x, _MM_SHUFFLE(1, 0, 3, 2))); + __m128i x32 = _mm_shufflelo_epi16(x64, _MM_SHUFFLE(1, 0, 3, 2)); + return _mm_add_epi32(x64, x32); +} + +static DRFLAC_INLINE __m128i drflac__mm_hadd_epi64(__m128i x) +{ + return _mm_add_epi64(x, _mm_shuffle_epi32(x, _MM_SHUFFLE(1, 0, 3, 2))); +} + +static DRFLAC_INLINE __m128i drflac__mm_srai_epi64(__m128i x, int count) +{ + /* + To simplify this we are assuming count < 32. This restriction allows us to work on a low side and a high side. The low side + is shifted with zero bits, whereas the right side is shifted with sign bits. + */ + __m128i lo = _mm_srli_epi64(x, count); + __m128i hi = _mm_srai_epi32(x, count); + + hi = _mm_and_si128(hi, _mm_set_epi32(0xFFFFFFFF, 0, 0xFFFFFFFF, 0)); /* The high part needs to have the low part cleared. */ + + return _mm_or_si128(lo, hi); +} + +static drflac_bool32 drflac__decode_samples_with_residual__rice__sse41_32(drflac_bs* bs, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + int i; + drflac_uint32 riceParamMask; + drflac_int32* pDecodedSamples = pSamplesOut; + drflac_int32* pDecodedSamplesEnd = pSamplesOut + (count & ~3); + drflac_uint32 zeroCountParts0 = 0; + drflac_uint32 zeroCountParts1 = 0; + drflac_uint32 zeroCountParts2 = 0; + drflac_uint32 zeroCountParts3 = 0; + drflac_uint32 riceParamParts0 = 0; + drflac_uint32 riceParamParts1 = 0; + drflac_uint32 riceParamParts2 = 0; + drflac_uint32 riceParamParts3 = 0; + __m128i coefficients128_0; + __m128i coefficients128_4; + __m128i coefficients128_8; + __m128i samples128_0; + __m128i samples128_4; + __m128i samples128_8; + __m128i riceParamMask128; + + const drflac_uint32 t[2] = {0x00000000, 0xFFFFFFFF}; + + riceParamMask = (drflac_uint32)~((~0UL) << riceParam); + riceParamMask128 = _mm_set1_epi32(riceParamMask); + + /* Pre-load. */ + coefficients128_0 = _mm_setzero_si128(); + coefficients128_4 = _mm_setzero_si128(); + coefficients128_8 = _mm_setzero_si128(); + + samples128_0 = _mm_setzero_si128(); + samples128_4 = _mm_setzero_si128(); + samples128_8 = _mm_setzero_si128(); + + /* + Pre-loading the coefficients and prior samples is annoying because we need to ensure we don't try reading more than + what's available in the input buffers. It would be convenient to use a fall-through switch to do this, but this results + in strict aliasing warnings with GCC. To work around this I'm just doing something hacky. This feels a bit convoluted + so I think there's opportunity for this to be simplified. + */ +#if 1 + { + int runningOrder = order; + + /* 0 - 3. */ + if (runningOrder >= 4) { + coefficients128_0 = _mm_loadu_si128((const __m128i*)(coefficients + 0)); + samples128_0 = _mm_loadu_si128((const __m128i*)(pSamplesOut - 4)); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: coefficients128_0 = _mm_set_epi32(0, coefficients[2], coefficients[1], coefficients[0]); samples128_0 = _mm_set_epi32(pSamplesOut[-1], pSamplesOut[-2], pSamplesOut[-3], 0); break; + case 2: coefficients128_0 = _mm_set_epi32(0, 0, coefficients[1], coefficients[0]); samples128_0 = _mm_set_epi32(pSamplesOut[-1], pSamplesOut[-2], 0, 0); break; + case 1: coefficients128_0 = _mm_set_epi32(0, 0, 0, coefficients[0]); samples128_0 = _mm_set_epi32(pSamplesOut[-1], 0, 0, 0); break; + } + runningOrder = 0; + } + + /* 4 - 7 */ + if (runningOrder >= 4) { + coefficients128_4 = _mm_loadu_si128((const __m128i*)(coefficients + 4)); + samples128_4 = _mm_loadu_si128((const __m128i*)(pSamplesOut - 8)); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: coefficients128_4 = _mm_set_epi32(0, coefficients[6], coefficients[5], coefficients[4]); samples128_4 = _mm_set_epi32(pSamplesOut[-5], pSamplesOut[-6], pSamplesOut[-7], 0); break; + case 2: coefficients128_4 = _mm_set_epi32(0, 0, coefficients[5], coefficients[4]); samples128_4 = _mm_set_epi32(pSamplesOut[-5], pSamplesOut[-6], 0, 0); break; + case 1: coefficients128_4 = _mm_set_epi32(0, 0, 0, coefficients[4]); samples128_4 = _mm_set_epi32(pSamplesOut[-5], 0, 0, 0); break; + } + runningOrder = 0; + } + + /* 8 - 11 */ + if (runningOrder == 4) { + coefficients128_8 = _mm_loadu_si128((const __m128i*)(coefficients + 8)); + samples128_8 = _mm_loadu_si128((const __m128i*)(pSamplesOut - 12)); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: coefficients128_8 = _mm_set_epi32(0, coefficients[10], coefficients[9], coefficients[8]); samples128_8 = _mm_set_epi32(pSamplesOut[-9], pSamplesOut[-10], pSamplesOut[-11], 0); break; + case 2: coefficients128_8 = _mm_set_epi32(0, 0, coefficients[9], coefficients[8]); samples128_8 = _mm_set_epi32(pSamplesOut[-9], pSamplesOut[-10], 0, 0); break; + case 1: coefficients128_8 = _mm_set_epi32(0, 0, 0, coefficients[8]); samples128_8 = _mm_set_epi32(pSamplesOut[-9], 0, 0, 0); break; + } + runningOrder = 0; + } + + /* Coefficients need to be shuffled for our streaming algorithm below to work. Samples are already in the correct order from the loading routine above. */ + coefficients128_0 = _mm_shuffle_epi32(coefficients128_0, _MM_SHUFFLE(0, 1, 2, 3)); + coefficients128_4 = _mm_shuffle_epi32(coefficients128_4, _MM_SHUFFLE(0, 1, 2, 3)); + coefficients128_8 = _mm_shuffle_epi32(coefficients128_8, _MM_SHUFFLE(0, 1, 2, 3)); + } +#else + /* This causes strict-aliasing warnings with GCC. */ + switch (order) + { + case 12: ((drflac_int32*)&coefficients128_8)[0] = coefficients[11]; ((drflac_int32*)&samples128_8)[0] = pDecodedSamples[-12]; + case 11: ((drflac_int32*)&coefficients128_8)[1] = coefficients[10]; ((drflac_int32*)&samples128_8)[1] = pDecodedSamples[-11]; + case 10: ((drflac_int32*)&coefficients128_8)[2] = coefficients[ 9]; ((drflac_int32*)&samples128_8)[2] = pDecodedSamples[-10]; + case 9: ((drflac_int32*)&coefficients128_8)[3] = coefficients[ 8]; ((drflac_int32*)&samples128_8)[3] = pDecodedSamples[- 9]; + case 8: ((drflac_int32*)&coefficients128_4)[0] = coefficients[ 7]; ((drflac_int32*)&samples128_4)[0] = pDecodedSamples[- 8]; + case 7: ((drflac_int32*)&coefficients128_4)[1] = coefficients[ 6]; ((drflac_int32*)&samples128_4)[1] = pDecodedSamples[- 7]; + case 6: ((drflac_int32*)&coefficients128_4)[2] = coefficients[ 5]; ((drflac_int32*)&samples128_4)[2] = pDecodedSamples[- 6]; + case 5: ((drflac_int32*)&coefficients128_4)[3] = coefficients[ 4]; ((drflac_int32*)&samples128_4)[3] = pDecodedSamples[- 5]; + case 4: ((drflac_int32*)&coefficients128_0)[0] = coefficients[ 3]; ((drflac_int32*)&samples128_0)[0] = pDecodedSamples[- 4]; + case 3: ((drflac_int32*)&coefficients128_0)[1] = coefficients[ 2]; ((drflac_int32*)&samples128_0)[1] = pDecodedSamples[- 3]; + case 2: ((drflac_int32*)&coefficients128_0)[2] = coefficients[ 1]; ((drflac_int32*)&samples128_0)[2] = pDecodedSamples[- 2]; + case 1: ((drflac_int32*)&coefficients128_0)[3] = coefficients[ 0]; ((drflac_int32*)&samples128_0)[3] = pDecodedSamples[- 1]; + } +#endif + + /* For this version we are doing one sample at a time. */ + while (pDecodedSamples < pDecodedSamplesEnd) { + __m128i prediction128; + __m128i zeroCountPart128; + __m128i riceParamPart128; + + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts0, &riceParamParts0) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts1, &riceParamParts1) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts2, &riceParamParts2) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts3, &riceParamParts3)) { + return DRFLAC_FALSE; + } + + zeroCountPart128 = _mm_set_epi32(zeroCountParts3, zeroCountParts2, zeroCountParts1, zeroCountParts0); + riceParamPart128 = _mm_set_epi32(riceParamParts3, riceParamParts2, riceParamParts1, riceParamParts0); + + riceParamPart128 = _mm_and_si128(riceParamPart128, riceParamMask128); + riceParamPart128 = _mm_or_si128(riceParamPart128, _mm_slli_epi32(zeroCountPart128, riceParam)); + riceParamPart128 = _mm_xor_si128(_mm_srli_epi32(riceParamPart128, 1), _mm_add_epi32(drflac__mm_not_si128(_mm_and_si128(riceParamPart128, _mm_set1_epi32(0x01))), _mm_set1_epi32(0x01))); /* <-- SSE2 compatible */ + /*riceParamPart128 = _mm_xor_si128(_mm_srli_epi32(riceParamPart128, 1), _mm_mullo_epi32(_mm_and_si128(riceParamPart128, _mm_set1_epi32(0x01)), _mm_set1_epi32(0xFFFFFFFF)));*/ /* <-- Only supported from SSE4.1 and is slower in my testing... */ + + if (order <= 4) { + for (i = 0; i < 4; i += 1) { + prediction128 = _mm_mullo_epi32(coefficients128_0, samples128_0); + + /* Horizontal add and shift. */ + prediction128 = drflac__mm_hadd_epi32(prediction128); + prediction128 = _mm_srai_epi32(prediction128, shift); + prediction128 = _mm_add_epi32(riceParamPart128, prediction128); + + samples128_0 = _mm_alignr_epi8(prediction128, samples128_0, 4); + riceParamPart128 = _mm_alignr_epi8(_mm_setzero_si128(), riceParamPart128, 4); + } + } else if (order <= 8) { + for (i = 0; i < 4; i += 1) { + prediction128 = _mm_mullo_epi32(coefficients128_4, samples128_4); + prediction128 = _mm_add_epi32(prediction128, _mm_mullo_epi32(coefficients128_0, samples128_0)); + + /* Horizontal add and shift. */ + prediction128 = drflac__mm_hadd_epi32(prediction128); + prediction128 = _mm_srai_epi32(prediction128, shift); + prediction128 = _mm_add_epi32(riceParamPart128, prediction128); + + samples128_4 = _mm_alignr_epi8(samples128_0, samples128_4, 4); + samples128_0 = _mm_alignr_epi8(prediction128, samples128_0, 4); + riceParamPart128 = _mm_alignr_epi8(_mm_setzero_si128(), riceParamPart128, 4); + } + } else { + for (i = 0; i < 4; i += 1) { + prediction128 = _mm_mullo_epi32(coefficients128_8, samples128_8); + prediction128 = _mm_add_epi32(prediction128, _mm_mullo_epi32(coefficients128_4, samples128_4)); + prediction128 = _mm_add_epi32(prediction128, _mm_mullo_epi32(coefficients128_0, samples128_0)); + + /* Horizontal add and shift. */ + prediction128 = drflac__mm_hadd_epi32(prediction128); + prediction128 = _mm_srai_epi32(prediction128, shift); + prediction128 = _mm_add_epi32(riceParamPart128, prediction128); + + samples128_8 = _mm_alignr_epi8(samples128_4, samples128_8, 4); + samples128_4 = _mm_alignr_epi8(samples128_0, samples128_4, 4); + samples128_0 = _mm_alignr_epi8(prediction128, samples128_0, 4); + riceParamPart128 = _mm_alignr_epi8(_mm_setzero_si128(), riceParamPart128, 4); + } + } + + /* We store samples in groups of 4. */ + _mm_storeu_si128((__m128i*)pDecodedSamples, samples128_0); + pDecodedSamples += 4; + } + + /* Make sure we process the last few samples. */ + i = (count & ~3); + while (i < (int)count) { + /* Rice extraction. */ + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts0, &riceParamParts0)) { + return DRFLAC_FALSE; + } + + /* Rice reconstruction. */ + riceParamParts0 &= riceParamMask; + riceParamParts0 |= (zeroCountParts0 << riceParam); + riceParamParts0 = (riceParamParts0 >> 1) ^ t[riceParamParts0 & 0x01]; + + /* Sample reconstruction. */ + pDecodedSamples[0] = riceParamParts0 + drflac__calculate_prediction_32(order, shift, coefficients, pDecodedSamples); + + i += 1; + pDecodedSamples += 1; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples_with_residual__rice__sse41_64(drflac_bs* bs, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + int i; + drflac_uint32 riceParamMask; + drflac_int32* pDecodedSamples = pSamplesOut; + drflac_int32* pDecodedSamplesEnd = pSamplesOut + (count & ~3); + drflac_uint32 zeroCountParts0 = 0; + drflac_uint32 zeroCountParts1 = 0; + drflac_uint32 zeroCountParts2 = 0; + drflac_uint32 zeroCountParts3 = 0; + drflac_uint32 riceParamParts0 = 0; + drflac_uint32 riceParamParts1 = 0; + drflac_uint32 riceParamParts2 = 0; + drflac_uint32 riceParamParts3 = 0; + __m128i coefficients128_0; + __m128i coefficients128_4; + __m128i coefficients128_8; + __m128i samples128_0; + __m128i samples128_4; + __m128i samples128_8; + __m128i prediction128; + __m128i riceParamMask128; + + const drflac_uint32 t[2] = {0x00000000, 0xFFFFFFFF}; + + DRFLAC_ASSERT(order <= 12); + + riceParamMask = (drflac_uint32)~((~0UL) << riceParam); + riceParamMask128 = _mm_set1_epi32(riceParamMask); + + prediction128 = _mm_setzero_si128(); + + /* Pre-load. */ + coefficients128_0 = _mm_setzero_si128(); + coefficients128_4 = _mm_setzero_si128(); + coefficients128_8 = _mm_setzero_si128(); + + samples128_0 = _mm_setzero_si128(); + samples128_4 = _mm_setzero_si128(); + samples128_8 = _mm_setzero_si128(); + +#if 1 + { + int runningOrder = order; + + /* 0 - 3. */ + if (runningOrder >= 4) { + coefficients128_0 = _mm_loadu_si128((const __m128i*)(coefficients + 0)); + samples128_0 = _mm_loadu_si128((const __m128i*)(pSamplesOut - 4)); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: coefficients128_0 = _mm_set_epi32(0, coefficients[2], coefficients[1], coefficients[0]); samples128_0 = _mm_set_epi32(pSamplesOut[-1], pSamplesOut[-2], pSamplesOut[-3], 0); break; + case 2: coefficients128_0 = _mm_set_epi32(0, 0, coefficients[1], coefficients[0]); samples128_0 = _mm_set_epi32(pSamplesOut[-1], pSamplesOut[-2], 0, 0); break; + case 1: coefficients128_0 = _mm_set_epi32(0, 0, 0, coefficients[0]); samples128_0 = _mm_set_epi32(pSamplesOut[-1], 0, 0, 0); break; + } + runningOrder = 0; + } + + /* 4 - 7 */ + if (runningOrder >= 4) { + coefficients128_4 = _mm_loadu_si128((const __m128i*)(coefficients + 4)); + samples128_4 = _mm_loadu_si128((const __m128i*)(pSamplesOut - 8)); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: coefficients128_4 = _mm_set_epi32(0, coefficients[6], coefficients[5], coefficients[4]); samples128_4 = _mm_set_epi32(pSamplesOut[-5], pSamplesOut[-6], pSamplesOut[-7], 0); break; + case 2: coefficients128_4 = _mm_set_epi32(0, 0, coefficients[5], coefficients[4]); samples128_4 = _mm_set_epi32(pSamplesOut[-5], pSamplesOut[-6], 0, 0); break; + case 1: coefficients128_4 = _mm_set_epi32(0, 0, 0, coefficients[4]); samples128_4 = _mm_set_epi32(pSamplesOut[-5], 0, 0, 0); break; + } + runningOrder = 0; + } + + /* 8 - 11 */ + if (runningOrder == 4) { + coefficients128_8 = _mm_loadu_si128((const __m128i*)(coefficients + 8)); + samples128_8 = _mm_loadu_si128((const __m128i*)(pSamplesOut - 12)); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: coefficients128_8 = _mm_set_epi32(0, coefficients[10], coefficients[9], coefficients[8]); samples128_8 = _mm_set_epi32(pSamplesOut[-9], pSamplesOut[-10], pSamplesOut[-11], 0); break; + case 2: coefficients128_8 = _mm_set_epi32(0, 0, coefficients[9], coefficients[8]); samples128_8 = _mm_set_epi32(pSamplesOut[-9], pSamplesOut[-10], 0, 0); break; + case 1: coefficients128_8 = _mm_set_epi32(0, 0, 0, coefficients[8]); samples128_8 = _mm_set_epi32(pSamplesOut[-9], 0, 0, 0); break; + } + runningOrder = 0; + } + + /* Coefficients need to be shuffled for our streaming algorithm below to work. Samples are already in the correct order from the loading routine above. */ + coefficients128_0 = _mm_shuffle_epi32(coefficients128_0, _MM_SHUFFLE(0, 1, 2, 3)); + coefficients128_4 = _mm_shuffle_epi32(coefficients128_4, _MM_SHUFFLE(0, 1, 2, 3)); + coefficients128_8 = _mm_shuffle_epi32(coefficients128_8, _MM_SHUFFLE(0, 1, 2, 3)); + } +#else + switch (order) + { + case 12: ((drflac_int32*)&coefficients128_8)[0] = coefficients[11]; ((drflac_int32*)&samples128_8)[0] = pDecodedSamples[-12]; + case 11: ((drflac_int32*)&coefficients128_8)[1] = coefficients[10]; ((drflac_int32*)&samples128_8)[1] = pDecodedSamples[-11]; + case 10: ((drflac_int32*)&coefficients128_8)[2] = coefficients[ 9]; ((drflac_int32*)&samples128_8)[2] = pDecodedSamples[-10]; + case 9: ((drflac_int32*)&coefficients128_8)[3] = coefficients[ 8]; ((drflac_int32*)&samples128_8)[3] = pDecodedSamples[- 9]; + case 8: ((drflac_int32*)&coefficients128_4)[0] = coefficients[ 7]; ((drflac_int32*)&samples128_4)[0] = pDecodedSamples[- 8]; + case 7: ((drflac_int32*)&coefficients128_4)[1] = coefficients[ 6]; ((drflac_int32*)&samples128_4)[1] = pDecodedSamples[- 7]; + case 6: ((drflac_int32*)&coefficients128_4)[2] = coefficients[ 5]; ((drflac_int32*)&samples128_4)[2] = pDecodedSamples[- 6]; + case 5: ((drflac_int32*)&coefficients128_4)[3] = coefficients[ 4]; ((drflac_int32*)&samples128_4)[3] = pDecodedSamples[- 5]; + case 4: ((drflac_int32*)&coefficients128_0)[0] = coefficients[ 3]; ((drflac_int32*)&samples128_0)[0] = pDecodedSamples[- 4]; + case 3: ((drflac_int32*)&coefficients128_0)[1] = coefficients[ 2]; ((drflac_int32*)&samples128_0)[1] = pDecodedSamples[- 3]; + case 2: ((drflac_int32*)&coefficients128_0)[2] = coefficients[ 1]; ((drflac_int32*)&samples128_0)[2] = pDecodedSamples[- 2]; + case 1: ((drflac_int32*)&coefficients128_0)[3] = coefficients[ 0]; ((drflac_int32*)&samples128_0)[3] = pDecodedSamples[- 1]; + } +#endif + + /* For this version we are doing one sample at a time. */ + while (pDecodedSamples < pDecodedSamplesEnd) { + __m128i zeroCountPart128; + __m128i riceParamPart128; + + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts0, &riceParamParts0) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts1, &riceParamParts1) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts2, &riceParamParts2) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts3, &riceParamParts3)) { + return DRFLAC_FALSE; + } + + zeroCountPart128 = _mm_set_epi32(zeroCountParts3, zeroCountParts2, zeroCountParts1, zeroCountParts0); + riceParamPart128 = _mm_set_epi32(riceParamParts3, riceParamParts2, riceParamParts1, riceParamParts0); + + riceParamPart128 = _mm_and_si128(riceParamPart128, riceParamMask128); + riceParamPart128 = _mm_or_si128(riceParamPart128, _mm_slli_epi32(zeroCountPart128, riceParam)); + riceParamPart128 = _mm_xor_si128(_mm_srli_epi32(riceParamPart128, 1), _mm_add_epi32(drflac__mm_not_si128(_mm_and_si128(riceParamPart128, _mm_set1_epi32(1))), _mm_set1_epi32(1))); + + for (i = 0; i < 4; i += 1) { + prediction128 = _mm_xor_si128(prediction128, prediction128); /* Reset to 0. */ + + switch (order) + { + case 12: + case 11: prediction128 = _mm_add_epi64(prediction128, _mm_mul_epi32(_mm_shuffle_epi32(coefficients128_8, _MM_SHUFFLE(1, 1, 0, 0)), _mm_shuffle_epi32(samples128_8, _MM_SHUFFLE(1, 1, 0, 0)))); + case 10: + case 9: prediction128 = _mm_add_epi64(prediction128, _mm_mul_epi32(_mm_shuffle_epi32(coefficients128_8, _MM_SHUFFLE(3, 3, 2, 2)), _mm_shuffle_epi32(samples128_8, _MM_SHUFFLE(3, 3, 2, 2)))); + case 8: + case 7: prediction128 = _mm_add_epi64(prediction128, _mm_mul_epi32(_mm_shuffle_epi32(coefficients128_4, _MM_SHUFFLE(1, 1, 0, 0)), _mm_shuffle_epi32(samples128_4, _MM_SHUFFLE(1, 1, 0, 0)))); + case 6: + case 5: prediction128 = _mm_add_epi64(prediction128, _mm_mul_epi32(_mm_shuffle_epi32(coefficients128_4, _MM_SHUFFLE(3, 3, 2, 2)), _mm_shuffle_epi32(samples128_4, _MM_SHUFFLE(3, 3, 2, 2)))); + case 4: + case 3: prediction128 = _mm_add_epi64(prediction128, _mm_mul_epi32(_mm_shuffle_epi32(coefficients128_0, _MM_SHUFFLE(1, 1, 0, 0)), _mm_shuffle_epi32(samples128_0, _MM_SHUFFLE(1, 1, 0, 0)))); + case 2: + case 1: prediction128 = _mm_add_epi64(prediction128, _mm_mul_epi32(_mm_shuffle_epi32(coefficients128_0, _MM_SHUFFLE(3, 3, 2, 2)), _mm_shuffle_epi32(samples128_0, _MM_SHUFFLE(3, 3, 2, 2)))); + } + + /* Horizontal add and shift. */ + prediction128 = drflac__mm_hadd_epi64(prediction128); + prediction128 = drflac__mm_srai_epi64(prediction128, shift); + prediction128 = _mm_add_epi32(riceParamPart128, prediction128); + + /* Our value should be sitting in prediction128[0]. We need to combine this with our SSE samples. */ + samples128_8 = _mm_alignr_epi8(samples128_4, samples128_8, 4); + samples128_4 = _mm_alignr_epi8(samples128_0, samples128_4, 4); + samples128_0 = _mm_alignr_epi8(prediction128, samples128_0, 4); + + /* Slide our rice parameter down so that the value in position 0 contains the next one to process. */ + riceParamPart128 = _mm_alignr_epi8(_mm_setzero_si128(), riceParamPart128, 4); + } + + /* We store samples in groups of 4. */ + _mm_storeu_si128((__m128i*)pDecodedSamples, samples128_0); + pDecodedSamples += 4; + } + + /* Make sure we process the last few samples. */ + i = (count & ~3); + while (i < (int)count) { + /* Rice extraction. */ + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts0, &riceParamParts0)) { + return DRFLAC_FALSE; + } + + /* Rice reconstruction. */ + riceParamParts0 &= riceParamMask; + riceParamParts0 |= (zeroCountParts0 << riceParam); + riceParamParts0 = (riceParamParts0 >> 1) ^ t[riceParamParts0 & 0x01]; + + /* Sample reconstruction. */ + pDecodedSamples[0] = riceParamParts0 + drflac__calculate_prediction_64(order, shift, coefficients, pDecodedSamples); + + i += 1; + pDecodedSamples += 1; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples_with_residual__rice__sse41(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 lpcOrder, drflac_int32 lpcShift, drflac_uint32 lpcPrecision, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pSamplesOut != NULL); + + /* In my testing the order is rarely > 12, so in this case I'm going to simplify the SSE implementation by only handling order <= 12. */ + if (lpcOrder > 0 && lpcOrder <= 12) { + if (drflac__use_64_bit_prediction(bitsPerSample, lpcOrder, lpcPrecision)) { + return drflac__decode_samples_with_residual__rice__sse41_64(bs, count, riceParam, lpcOrder, lpcShift, coefficients, pSamplesOut); + } else { + return drflac__decode_samples_with_residual__rice__sse41_32(bs, count, riceParam, lpcOrder, lpcShift, coefficients, pSamplesOut); + } + } else { + return drflac__decode_samples_with_residual__rice__scalar(bs, bitsPerSample, count, riceParam, lpcOrder, lpcShift, lpcPrecision, coefficients, pSamplesOut); + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac__vst2q_s32(drflac_int32* p, int32x4x2_t x) +{ + vst1q_s32(p+0, x.val[0]); + vst1q_s32(p+4, x.val[1]); +} + +static DRFLAC_INLINE void drflac__vst2q_u32(drflac_uint32* p, uint32x4x2_t x) +{ + vst1q_u32(p+0, x.val[0]); + vst1q_u32(p+4, x.val[1]); +} + +static DRFLAC_INLINE void drflac__vst2q_f32(float* p, float32x4x2_t x) +{ + vst1q_f32(p+0, x.val[0]); + vst1q_f32(p+4, x.val[1]); +} + +static DRFLAC_INLINE void drflac__vst2q_s16(drflac_int16* p, int16x4x2_t x) +{ + vst1q_s16(p, vcombine_s16(x.val[0], x.val[1])); +} + +static DRFLAC_INLINE void drflac__vst2q_u16(drflac_uint16* p, uint16x4x2_t x) +{ + vst1q_u16(p, vcombine_u16(x.val[0], x.val[1])); +} + +static DRFLAC_INLINE int32x4_t drflac__vdupq_n_s32x4(drflac_int32 x3, drflac_int32 x2, drflac_int32 x1, drflac_int32 x0) +{ + drflac_int32 x[4]; + x[3] = x3; + x[2] = x2; + x[1] = x1; + x[0] = x0; + return vld1q_s32(x); +} + +static DRFLAC_INLINE int32x4_t drflac__valignrq_s32_1(int32x4_t a, int32x4_t b) +{ + /* Equivalent to SSE's _mm_alignr_epi8(a, b, 4) */ + + /* Reference */ + /*return drflac__vdupq_n_s32x4( + vgetq_lane_s32(a, 0), + vgetq_lane_s32(b, 3), + vgetq_lane_s32(b, 2), + vgetq_lane_s32(b, 1) + );*/ + + return vextq_s32(b, a, 1); +} + +static DRFLAC_INLINE uint32x4_t drflac__valignrq_u32_1(uint32x4_t a, uint32x4_t b) +{ + /* Equivalent to SSE's _mm_alignr_epi8(a, b, 4) */ + + /* Reference */ + /*return drflac__vdupq_n_s32x4( + vgetq_lane_s32(a, 0), + vgetq_lane_s32(b, 3), + vgetq_lane_s32(b, 2), + vgetq_lane_s32(b, 1) + );*/ + + return vextq_u32(b, a, 1); +} + +static DRFLAC_INLINE int32x2_t drflac__vhaddq_s32(int32x4_t x) +{ + /* The sum must end up in position 0. */ + + /* Reference */ + /*return vdupq_n_s32( + vgetq_lane_s32(x, 3) + + vgetq_lane_s32(x, 2) + + vgetq_lane_s32(x, 1) + + vgetq_lane_s32(x, 0) + );*/ + + int32x2_t r = vadd_s32(vget_high_s32(x), vget_low_s32(x)); + return vpadd_s32(r, r); +} + +static DRFLAC_INLINE int64x1_t drflac__vhaddq_s64(int64x2_t x) +{ + return vadd_s64(vget_high_s64(x), vget_low_s64(x)); +} + +static DRFLAC_INLINE int32x4_t drflac__vrevq_s32(int32x4_t x) +{ + /* Reference */ + /*return drflac__vdupq_n_s32x4( + vgetq_lane_s32(x, 0), + vgetq_lane_s32(x, 1), + vgetq_lane_s32(x, 2), + vgetq_lane_s32(x, 3) + );*/ + + return vrev64q_s32(vcombine_s32(vget_high_s32(x), vget_low_s32(x))); +} + +static DRFLAC_INLINE int32x4_t drflac__vnotq_s32(int32x4_t x) +{ + return veorq_s32(x, vdupq_n_s32(0xFFFFFFFF)); +} + +static DRFLAC_INLINE uint32x4_t drflac__vnotq_u32(uint32x4_t x) +{ + return veorq_u32(x, vdupq_n_u32(0xFFFFFFFF)); +} + +static drflac_bool32 drflac__decode_samples_with_residual__rice__neon_32(drflac_bs* bs, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + int i; + drflac_uint32 riceParamMask; + drflac_int32* pDecodedSamples = pSamplesOut; + drflac_int32* pDecodedSamplesEnd = pSamplesOut + (count & ~3); + drflac_uint32 zeroCountParts[4]; + drflac_uint32 riceParamParts[4]; + int32x4_t coefficients128_0; + int32x4_t coefficients128_4; + int32x4_t coefficients128_8; + int32x4_t samples128_0; + int32x4_t samples128_4; + int32x4_t samples128_8; + uint32x4_t riceParamMask128; + int32x4_t riceParam128; + int32x2_t shift64; + uint32x4_t one128; + + const drflac_uint32 t[2] = {0x00000000, 0xFFFFFFFF}; + + riceParamMask = (drflac_uint32)~((~0UL) << riceParam); + riceParamMask128 = vdupq_n_u32(riceParamMask); + + riceParam128 = vdupq_n_s32(riceParam); + shift64 = vdup_n_s32(-shift); /* Negate the shift because we'll be doing a variable shift using vshlq_s32(). */ + one128 = vdupq_n_u32(1); + + /* + Pre-loading the coefficients and prior samples is annoying because we need to ensure we don't try reading more than + what's available in the input buffers. It would be conenient to use a fall-through switch to do this, but this results + in strict aliasing warnings with GCC. To work around this I'm just doing something hacky. This feels a bit convoluted + so I think there's opportunity for this to be simplified. + */ + { + int runningOrder = order; + drflac_int32 tempC[4] = {0, 0, 0, 0}; + drflac_int32 tempS[4] = {0, 0, 0, 0}; + + /* 0 - 3. */ + if (runningOrder >= 4) { + coefficients128_0 = vld1q_s32(coefficients + 0); + samples128_0 = vld1q_s32(pSamplesOut - 4); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: tempC[2] = coefficients[2]; tempS[1] = pSamplesOut[-3]; /* fallthrough */ + case 2: tempC[1] = coefficients[1]; tempS[2] = pSamplesOut[-2]; /* fallthrough */ + case 1: tempC[0] = coefficients[0]; tempS[3] = pSamplesOut[-1]; /* fallthrough */ + } + + coefficients128_0 = vld1q_s32(tempC); + samples128_0 = vld1q_s32(tempS); + runningOrder = 0; + } + + /* 4 - 7 */ + if (runningOrder >= 4) { + coefficients128_4 = vld1q_s32(coefficients + 4); + samples128_4 = vld1q_s32(pSamplesOut - 8); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: tempC[2] = coefficients[6]; tempS[1] = pSamplesOut[-7]; /* fallthrough */ + case 2: tempC[1] = coefficients[5]; tempS[2] = pSamplesOut[-6]; /* fallthrough */ + case 1: tempC[0] = coefficients[4]; tempS[3] = pSamplesOut[-5]; /* fallthrough */ + } + + coefficients128_4 = vld1q_s32(tempC); + samples128_4 = vld1q_s32(tempS); + runningOrder = 0; + } + + /* 8 - 11 */ + if (runningOrder == 4) { + coefficients128_8 = vld1q_s32(coefficients + 8); + samples128_8 = vld1q_s32(pSamplesOut - 12); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: tempC[2] = coefficients[10]; tempS[1] = pSamplesOut[-11]; /* fallthrough */ + case 2: tempC[1] = coefficients[ 9]; tempS[2] = pSamplesOut[-10]; /* fallthrough */ + case 1: tempC[0] = coefficients[ 8]; tempS[3] = pSamplesOut[- 9]; /* fallthrough */ + } + + coefficients128_8 = vld1q_s32(tempC); + samples128_8 = vld1q_s32(tempS); + runningOrder = 0; + } + + /* Coefficients need to be shuffled for our streaming algorithm below to work. Samples are already in the correct order from the loading routine above. */ + coefficients128_0 = drflac__vrevq_s32(coefficients128_0); + coefficients128_4 = drflac__vrevq_s32(coefficients128_4); + coefficients128_8 = drflac__vrevq_s32(coefficients128_8); + } + + /* For this version we are doing one sample at a time. */ + while (pDecodedSamples < pDecodedSamplesEnd) { + int32x4_t prediction128; + int32x2_t prediction64; + uint32x4_t zeroCountPart128; + uint32x4_t riceParamPart128; + + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[0], &riceParamParts[0]) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[1], &riceParamParts[1]) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[2], &riceParamParts[2]) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[3], &riceParamParts[3])) { + return DRFLAC_FALSE; + } + + zeroCountPart128 = vld1q_u32(zeroCountParts); + riceParamPart128 = vld1q_u32(riceParamParts); + + riceParamPart128 = vandq_u32(riceParamPart128, riceParamMask128); + riceParamPart128 = vorrq_u32(riceParamPart128, vshlq_u32(zeroCountPart128, riceParam128)); + riceParamPart128 = veorq_u32(vshrq_n_u32(riceParamPart128, 1), vaddq_u32(drflac__vnotq_u32(vandq_u32(riceParamPart128, one128)), one128)); + + if (order <= 4) { + for (i = 0; i < 4; i += 1) { + prediction128 = vmulq_s32(coefficients128_0, samples128_0); + + /* Horizontal add and shift. */ + prediction64 = drflac__vhaddq_s32(prediction128); + prediction64 = vshl_s32(prediction64, shift64); + prediction64 = vadd_s32(prediction64, vget_low_s32(vreinterpretq_s32_u32(riceParamPart128))); + + samples128_0 = drflac__valignrq_s32_1(vcombine_s32(prediction64, vdup_n_s32(0)), samples128_0); + riceParamPart128 = drflac__valignrq_u32_1(vdupq_n_u32(0), riceParamPart128); + } + } else if (order <= 8) { + for (i = 0; i < 4; i += 1) { + prediction128 = vmulq_s32(coefficients128_4, samples128_4); + prediction128 = vmlaq_s32(prediction128, coefficients128_0, samples128_0); + + /* Horizontal add and shift. */ + prediction64 = drflac__vhaddq_s32(prediction128); + prediction64 = vshl_s32(prediction64, shift64); + prediction64 = vadd_s32(prediction64, vget_low_s32(vreinterpretq_s32_u32(riceParamPart128))); + + samples128_4 = drflac__valignrq_s32_1(samples128_0, samples128_4); + samples128_0 = drflac__valignrq_s32_1(vcombine_s32(prediction64, vdup_n_s32(0)), samples128_0); + riceParamPart128 = drflac__valignrq_u32_1(vdupq_n_u32(0), riceParamPart128); + } + } else { + for (i = 0; i < 4; i += 1) { + prediction128 = vmulq_s32(coefficients128_8, samples128_8); + prediction128 = vmlaq_s32(prediction128, coefficients128_4, samples128_4); + prediction128 = vmlaq_s32(prediction128, coefficients128_0, samples128_0); + + /* Horizontal add and shift. */ + prediction64 = drflac__vhaddq_s32(prediction128); + prediction64 = vshl_s32(prediction64, shift64); + prediction64 = vadd_s32(prediction64, vget_low_s32(vreinterpretq_s32_u32(riceParamPart128))); + + samples128_8 = drflac__valignrq_s32_1(samples128_4, samples128_8); + samples128_4 = drflac__valignrq_s32_1(samples128_0, samples128_4); + samples128_0 = drflac__valignrq_s32_1(vcombine_s32(prediction64, vdup_n_s32(0)), samples128_0); + riceParamPart128 = drflac__valignrq_u32_1(vdupq_n_u32(0), riceParamPart128); + } + } + + /* We store samples in groups of 4. */ + vst1q_s32(pDecodedSamples, samples128_0); + pDecodedSamples += 4; + } + + /* Make sure we process the last few samples. */ + i = (count & ~3); + while (i < (int)count) { + /* Rice extraction. */ + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[0], &riceParamParts[0])) { + return DRFLAC_FALSE; + } + + /* Rice reconstruction. */ + riceParamParts[0] &= riceParamMask; + riceParamParts[0] |= (zeroCountParts[0] << riceParam); + riceParamParts[0] = (riceParamParts[0] >> 1) ^ t[riceParamParts[0] & 0x01]; + + /* Sample reconstruction. */ + pDecodedSamples[0] = riceParamParts[0] + drflac__calculate_prediction_32(order, shift, coefficients, pDecodedSamples); + + i += 1; + pDecodedSamples += 1; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples_with_residual__rice__neon_64(drflac_bs* bs, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 order, drflac_int32 shift, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + int i; + drflac_uint32 riceParamMask; + drflac_int32* pDecodedSamples = pSamplesOut; + drflac_int32* pDecodedSamplesEnd = pSamplesOut + (count & ~3); + drflac_uint32 zeroCountParts[4]; + drflac_uint32 riceParamParts[4]; + int32x4_t coefficients128_0; + int32x4_t coefficients128_4; + int32x4_t coefficients128_8; + int32x4_t samples128_0; + int32x4_t samples128_4; + int32x4_t samples128_8; + uint32x4_t riceParamMask128; + int32x4_t riceParam128; + int64x1_t shift64; + uint32x4_t one128; + int64x2_t prediction128 = { 0 }; + uint32x4_t zeroCountPart128; + uint32x4_t riceParamPart128; + + const drflac_uint32 t[2] = {0x00000000, 0xFFFFFFFF}; + + riceParamMask = (drflac_uint32)~((~0UL) << riceParam); + riceParamMask128 = vdupq_n_u32(riceParamMask); + + riceParam128 = vdupq_n_s32(riceParam); + shift64 = vdup_n_s64(-shift); /* Negate the shift because we'll be doing a variable shift using vshlq_s32(). */ + one128 = vdupq_n_u32(1); + + /* + Pre-loading the coefficients and prior samples is annoying because we need to ensure we don't try reading more than + what's available in the input buffers. It would be convenient to use a fall-through switch to do this, but this results + in strict aliasing warnings with GCC. To work around this I'm just doing something hacky. This feels a bit convoluted + so I think there's opportunity for this to be simplified. + */ + { + int runningOrder = order; + drflac_int32 tempC[4] = {0, 0, 0, 0}; + drflac_int32 tempS[4] = {0, 0, 0, 0}; + + /* 0 - 3. */ + if (runningOrder >= 4) { + coefficients128_0 = vld1q_s32(coefficients + 0); + samples128_0 = vld1q_s32(pSamplesOut - 4); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: tempC[2] = coefficients[2]; tempS[1] = pSamplesOut[-3]; /* fallthrough */ + case 2: tempC[1] = coefficients[1]; tempS[2] = pSamplesOut[-2]; /* fallthrough */ + case 1: tempC[0] = coefficients[0]; tempS[3] = pSamplesOut[-1]; /* fallthrough */ + } + + coefficients128_0 = vld1q_s32(tempC); + samples128_0 = vld1q_s32(tempS); + runningOrder = 0; + } + + /* 4 - 7 */ + if (runningOrder >= 4) { + coefficients128_4 = vld1q_s32(coefficients + 4); + samples128_4 = vld1q_s32(pSamplesOut - 8); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: tempC[2] = coefficients[6]; tempS[1] = pSamplesOut[-7]; /* fallthrough */ + case 2: tempC[1] = coefficients[5]; tempS[2] = pSamplesOut[-6]; /* fallthrough */ + case 1: tempC[0] = coefficients[4]; tempS[3] = pSamplesOut[-5]; /* fallthrough */ + } + + coefficients128_4 = vld1q_s32(tempC); + samples128_4 = vld1q_s32(tempS); + runningOrder = 0; + } + + /* 8 - 11 */ + if (runningOrder == 4) { + coefficients128_8 = vld1q_s32(coefficients + 8); + samples128_8 = vld1q_s32(pSamplesOut - 12); + runningOrder -= 4; + } else { + switch (runningOrder) { + case 3: tempC[2] = coefficients[10]; tempS[1] = pSamplesOut[-11]; /* fallthrough */ + case 2: tempC[1] = coefficients[ 9]; tempS[2] = pSamplesOut[-10]; /* fallthrough */ + case 1: tempC[0] = coefficients[ 8]; tempS[3] = pSamplesOut[- 9]; /* fallthrough */ + } + + coefficients128_8 = vld1q_s32(tempC); + samples128_8 = vld1q_s32(tempS); + runningOrder = 0; + } + + /* Coefficients need to be shuffled for our streaming algorithm below to work. Samples are already in the correct order from the loading routine above. */ + coefficients128_0 = drflac__vrevq_s32(coefficients128_0); + coefficients128_4 = drflac__vrevq_s32(coefficients128_4); + coefficients128_8 = drflac__vrevq_s32(coefficients128_8); + } + + /* For this version we are doing one sample at a time. */ + while (pDecodedSamples < pDecodedSamplesEnd) { + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[0], &riceParamParts[0]) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[1], &riceParamParts[1]) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[2], &riceParamParts[2]) || + !drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[3], &riceParamParts[3])) { + return DRFLAC_FALSE; + } + + zeroCountPart128 = vld1q_u32(zeroCountParts); + riceParamPart128 = vld1q_u32(riceParamParts); + + riceParamPart128 = vandq_u32(riceParamPart128, riceParamMask128); + riceParamPart128 = vorrq_u32(riceParamPart128, vshlq_u32(zeroCountPart128, riceParam128)); + riceParamPart128 = veorq_u32(vshrq_n_u32(riceParamPart128, 1), vaddq_u32(drflac__vnotq_u32(vandq_u32(riceParamPart128, one128)), one128)); + + for (i = 0; i < 4; i += 1) { + int64x1_t prediction64; + + prediction128 = veorq_s64(prediction128, prediction128); /* Reset to 0. */ + switch (order) + { + case 12: + case 11: prediction128 = vaddq_s64(prediction128, vmull_s32(vget_low_s32(coefficients128_8), vget_low_s32(samples128_8))); + case 10: + case 9: prediction128 = vaddq_s64(prediction128, vmull_s32(vget_high_s32(coefficients128_8), vget_high_s32(samples128_8))); + case 8: + case 7: prediction128 = vaddq_s64(prediction128, vmull_s32(vget_low_s32(coefficients128_4), vget_low_s32(samples128_4))); + case 6: + case 5: prediction128 = vaddq_s64(prediction128, vmull_s32(vget_high_s32(coefficients128_4), vget_high_s32(samples128_4))); + case 4: + case 3: prediction128 = vaddq_s64(prediction128, vmull_s32(vget_low_s32(coefficients128_0), vget_low_s32(samples128_0))); + case 2: + case 1: prediction128 = vaddq_s64(prediction128, vmull_s32(vget_high_s32(coefficients128_0), vget_high_s32(samples128_0))); + } + + /* Horizontal add and shift. */ + prediction64 = drflac__vhaddq_s64(prediction128); + prediction64 = vshl_s64(prediction64, shift64); + prediction64 = vadd_s64(prediction64, vdup_n_s64(vgetq_lane_u32(riceParamPart128, 0))); + + /* Our value should be sitting in prediction64[0]. We need to combine this with our SSE samples. */ + samples128_8 = drflac__valignrq_s32_1(samples128_4, samples128_8); + samples128_4 = drflac__valignrq_s32_1(samples128_0, samples128_4); + samples128_0 = drflac__valignrq_s32_1(vcombine_s32(vreinterpret_s32_s64(prediction64), vdup_n_s32(0)), samples128_0); + + /* Slide our rice parameter down so that the value in position 0 contains the next one to process. */ + riceParamPart128 = drflac__valignrq_u32_1(vdupq_n_u32(0), riceParamPart128); + } + + /* We store samples in groups of 4. */ + vst1q_s32(pDecodedSamples, samples128_0); + pDecodedSamples += 4; + } + + /* Make sure we process the last few samples. */ + i = (count & ~3); + while (i < (int)count) { + /* Rice extraction. */ + if (!drflac__read_rice_parts_x1(bs, riceParam, &zeroCountParts[0], &riceParamParts[0])) { + return DRFLAC_FALSE; + } + + /* Rice reconstruction. */ + riceParamParts[0] &= riceParamMask; + riceParamParts[0] |= (zeroCountParts[0] << riceParam); + riceParamParts[0] = (riceParamParts[0] >> 1) ^ t[riceParamParts[0] & 0x01]; + + /* Sample reconstruction. */ + pDecodedSamples[0] = riceParamParts[0] + drflac__calculate_prediction_64(order, shift, coefficients, pDecodedSamples); + + i += 1; + pDecodedSamples += 1; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples_with_residual__rice__neon(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 lpcOrder, drflac_int32 lpcShift, drflac_uint32 lpcPrecision, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(pSamplesOut != NULL); + + /* In my testing the order is rarely > 12, so in this case I'm going to simplify the NEON implementation by only handling order <= 12. */ + if (lpcOrder > 0 && lpcOrder <= 12) { + if (drflac__use_64_bit_prediction(bitsPerSample, lpcOrder, lpcPrecision)) { + return drflac__decode_samples_with_residual__rice__neon_64(bs, count, riceParam, lpcOrder, lpcShift, coefficients, pSamplesOut); + } else { + return drflac__decode_samples_with_residual__rice__neon_32(bs, count, riceParam, lpcOrder, lpcShift, coefficients, pSamplesOut); + } + } else { + return drflac__decode_samples_with_residual__rice__scalar(bs, bitsPerSample, count, riceParam, lpcOrder, lpcShift, lpcPrecision, coefficients, pSamplesOut); + } +} +#endif + +static drflac_bool32 drflac__decode_samples_with_residual__rice(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 riceParam, drflac_uint32 lpcOrder, drflac_int32 lpcShift, drflac_uint32 lpcPrecision, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ +#if defined(DRFLAC_SUPPORT_SSE41) + if (drflac__gIsSSE41Supported) { + return drflac__decode_samples_with_residual__rice__sse41(bs, bitsPerSample, count, riceParam, lpcOrder, lpcShift, lpcPrecision, coefficients, pSamplesOut); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported) { + return drflac__decode_samples_with_residual__rice__neon(bs, bitsPerSample, count, riceParam, lpcOrder, lpcShift, lpcPrecision, coefficients, pSamplesOut); + } else +#endif + { + /* Scalar fallback. */ + #if 0 + return drflac__decode_samples_with_residual__rice__reference(bs, bitsPerSample, count, riceParam, lpcOrder, lpcShift, lpcPrecision, coefficients, pSamplesOut); + #else + return drflac__decode_samples_with_residual__rice__scalar(bs, bitsPerSample, count, riceParam, lpcOrder, lpcShift, lpcPrecision, coefficients, pSamplesOut); + #endif + } +} + +/* Reads and seeks past a string of residual values as Rice codes. The decoder should be sitting on the first bit of the Rice codes. */ +static drflac_bool32 drflac__read_and_seek_residual__rice(drflac_bs* bs, drflac_uint32 count, drflac_uint8 riceParam) +{ + drflac_uint32 i; + + DRFLAC_ASSERT(bs != NULL); + + for (i = 0; i < count; ++i) { + if (!drflac__seek_rice_parts(bs, riceParam)) { + return DRFLAC_FALSE; + } + } + + return DRFLAC_TRUE; +} + +#if defined(__clang__) +__attribute__((no_sanitize("signed-integer-overflow"))) +#endif +static drflac_bool32 drflac__decode_samples_with_residual__unencoded(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 count, drflac_uint8 unencodedBitsPerSample, drflac_uint32 lpcOrder, drflac_int32 lpcShift, drflac_uint32 lpcPrecision, const drflac_int32* coefficients, drflac_int32* pSamplesOut) +{ + drflac_uint32 i; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(unencodedBitsPerSample <= 31); /* <-- unencodedBitsPerSample is a 5 bit number, so cannot exceed 31. */ + DRFLAC_ASSERT(pSamplesOut != NULL); + + for (i = 0; i < count; ++i) { + if (unencodedBitsPerSample > 0) { + if (!drflac__read_int32(bs, unencodedBitsPerSample, pSamplesOut + i)) { + return DRFLAC_FALSE; + } + } else { + pSamplesOut[i] = 0; + } + + if (drflac__use_64_bit_prediction(bitsPerSample, lpcOrder, lpcPrecision)) { + pSamplesOut[i] += drflac__calculate_prediction_64(lpcOrder, lpcShift, coefficients, pSamplesOut + i); + } else { + pSamplesOut[i] += drflac__calculate_prediction_32(lpcOrder, lpcShift, coefficients, pSamplesOut + i); + } + } + + return DRFLAC_TRUE; +} + + +/* +Reads and decodes the residual for the sub-frame the decoder is currently sitting on. This function should be called +when the decoder is sitting at the very start of the RESIDUAL block. The first residuals will be ignored. The + and parameters are used to determine how many residual values need to be decoded. +*/ +static drflac_bool32 drflac__decode_samples_with_residual(drflac_bs* bs, drflac_uint32 bitsPerSample, drflac_uint32 blockSize, drflac_uint32 lpcOrder, drflac_int32 lpcShift, drflac_uint32 lpcPrecision, const drflac_int32* coefficients, drflac_int32* pDecodedSamples) +{ + drflac_uint8 residualMethod; + drflac_uint8 partitionOrder; + drflac_uint32 samplesInPartition; + drflac_uint32 partitionsRemaining; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(blockSize != 0); + DRFLAC_ASSERT(pDecodedSamples != NULL); /* <-- Should we allow NULL, in which case we just seek past the residual rather than do a full decode? */ + + if (!drflac__read_uint8(bs, 2, &residualMethod)) { + return DRFLAC_FALSE; + } + + if (residualMethod != DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE && residualMethod != DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) { + return DRFLAC_FALSE; /* Unknown or unsupported residual coding method. */ + } + + /* Ignore the first values. */ + pDecodedSamples += lpcOrder; + + if (!drflac__read_uint8(bs, 4, &partitionOrder)) { + return DRFLAC_FALSE; + } + + /* + From the FLAC spec: + The Rice partition order in a Rice-coded residual section must be less than or equal to 8. + */ + if (partitionOrder > 8) { + return DRFLAC_FALSE; + } + + /* Validation check. */ + if ((blockSize / (1 << partitionOrder)) < lpcOrder) { + return DRFLAC_FALSE; + } + + samplesInPartition = (blockSize / (1 << partitionOrder)) - lpcOrder; + partitionsRemaining = (1 << partitionOrder); + for (;;) { + drflac_uint8 riceParam = 0; + if (residualMethod == DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE) { + if (!drflac__read_uint8(bs, 4, &riceParam)) { + return DRFLAC_FALSE; + } + if (riceParam == 15) { + riceParam = 0xFF; + } + } else if (residualMethod == DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) { + if (!drflac__read_uint8(bs, 5, &riceParam)) { + return DRFLAC_FALSE; + } + if (riceParam == 31) { + riceParam = 0xFF; + } + } + + if (riceParam != 0xFF) { + if (!drflac__decode_samples_with_residual__rice(bs, bitsPerSample, samplesInPartition, riceParam, lpcOrder, lpcShift, lpcPrecision, coefficients, pDecodedSamples)) { + return DRFLAC_FALSE; + } + } else { + drflac_uint8 unencodedBitsPerSample = 0; + if (!drflac__read_uint8(bs, 5, &unencodedBitsPerSample)) { + return DRFLAC_FALSE; + } + + if (!drflac__decode_samples_with_residual__unencoded(bs, bitsPerSample, samplesInPartition, unencodedBitsPerSample, lpcOrder, lpcShift, lpcPrecision, coefficients, pDecodedSamples)) { + return DRFLAC_FALSE; + } + } + + pDecodedSamples += samplesInPartition; + + if (partitionsRemaining == 1) { + break; + } + + partitionsRemaining -= 1; + + if (partitionOrder != 0) { + samplesInPartition = blockSize / (1 << partitionOrder); + } + } + + return DRFLAC_TRUE; +} + +/* +Reads and seeks past the residual for the sub-frame the decoder is currently sitting on. This function should be called +when the decoder is sitting at the very start of the RESIDUAL block. The first residuals will be set to 0. The + and parameters are used to determine how many residual values need to be decoded. +*/ +static drflac_bool32 drflac__read_and_seek_residual(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 order) +{ + drflac_uint8 residualMethod; + drflac_uint8 partitionOrder; + drflac_uint32 samplesInPartition; + drflac_uint32 partitionsRemaining; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(blockSize != 0); + + if (!drflac__read_uint8(bs, 2, &residualMethod)) { + return DRFLAC_FALSE; + } + + if (residualMethod != DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE && residualMethod != DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) { + return DRFLAC_FALSE; /* Unknown or unsupported residual coding method. */ + } + + if (!drflac__read_uint8(bs, 4, &partitionOrder)) { + return DRFLAC_FALSE; + } + + /* + From the FLAC spec: + The Rice partition order in a Rice-coded residual section must be less than or equal to 8. + */ + if (partitionOrder > 8) { + return DRFLAC_FALSE; + } + + /* Validation check. */ + if ((blockSize / (1 << partitionOrder)) <= order) { + return DRFLAC_FALSE; + } + + samplesInPartition = (blockSize / (1 << partitionOrder)) - order; + partitionsRemaining = (1 << partitionOrder); + for (;;) + { + drflac_uint8 riceParam = 0; + if (residualMethod == DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE) { + if (!drflac__read_uint8(bs, 4, &riceParam)) { + return DRFLAC_FALSE; + } + if (riceParam == 15) { + riceParam = 0xFF; + } + } else if (residualMethod == DRFLAC_RESIDUAL_CODING_METHOD_PARTITIONED_RICE2) { + if (!drflac__read_uint8(bs, 5, &riceParam)) { + return DRFLAC_FALSE; + } + if (riceParam == 31) { + riceParam = 0xFF; + } + } + + if (riceParam != 0xFF) { + if (!drflac__read_and_seek_residual__rice(bs, samplesInPartition, riceParam)) { + return DRFLAC_FALSE; + } + } else { + drflac_uint8 unencodedBitsPerSample = 0; + if (!drflac__read_uint8(bs, 5, &unencodedBitsPerSample)) { + return DRFLAC_FALSE; + } + + if (!drflac__seek_bits(bs, unencodedBitsPerSample * samplesInPartition)) { + return DRFLAC_FALSE; + } + } + + + if (partitionsRemaining == 1) { + break; + } + + partitionsRemaining -= 1; + samplesInPartition = blockSize / (1 << partitionOrder); + } + + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac__decode_samples__constant(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 subframeBitsPerSample, drflac_int32* pDecodedSamples) +{ + drflac_uint32 i; + + /* Only a single sample needs to be decoded here. */ + drflac_int32 sample; + if (!drflac__read_int32(bs, subframeBitsPerSample, &sample)) { + return DRFLAC_FALSE; + } + + /* + We don't really need to expand this, but it does simplify the process of reading samples. If this becomes a performance issue (unlikely) + we'll want to look at a more efficient way. + */ + for (i = 0; i < blockSize; ++i) { + pDecodedSamples[i] = sample; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples__verbatim(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 subframeBitsPerSample, drflac_int32* pDecodedSamples) +{ + drflac_uint32 i; + + for (i = 0; i < blockSize; ++i) { + drflac_int32 sample; + if (!drflac__read_int32(bs, subframeBitsPerSample, &sample)) { + return DRFLAC_FALSE; + } + + pDecodedSamples[i] = sample; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples__fixed(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 subframeBitsPerSample, drflac_uint8 lpcOrder, drflac_int32* pDecodedSamples) +{ + drflac_uint32 i; + + static drflac_int32 lpcCoefficientsTable[5][4] = { + {0, 0, 0, 0}, + {1, 0, 0, 0}, + {2, -1, 0, 0}, + {3, -3, 1, 0}, + {4, -6, 4, -1} + }; + + /* Warm up samples and coefficients. */ + for (i = 0; i < lpcOrder; ++i) { + drflac_int32 sample; + if (!drflac__read_int32(bs, subframeBitsPerSample, &sample)) { + return DRFLAC_FALSE; + } + + pDecodedSamples[i] = sample; + } + + if (!drflac__decode_samples_with_residual(bs, subframeBitsPerSample, blockSize, lpcOrder, 0, 4, lpcCoefficientsTable[lpcOrder], pDecodedSamples)) { + return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_samples__lpc(drflac_bs* bs, drflac_uint32 blockSize, drflac_uint32 bitsPerSample, drflac_uint8 lpcOrder, drflac_int32* pDecodedSamples) +{ + drflac_uint8 i; + drflac_uint8 lpcPrecision; + drflac_int8 lpcShift; + drflac_int32 coefficients[32]; + + /* Warm up samples. */ + for (i = 0; i < lpcOrder; ++i) { + drflac_int32 sample; + if (!drflac__read_int32(bs, bitsPerSample, &sample)) { + return DRFLAC_FALSE; + } + + pDecodedSamples[i] = sample; + } + + if (!drflac__read_uint8(bs, 4, &lpcPrecision)) { + return DRFLAC_FALSE; + } + if (lpcPrecision == 15) { + return DRFLAC_FALSE; /* Invalid. */ + } + lpcPrecision += 1; + + if (!drflac__read_int8(bs, 5, &lpcShift)) { + return DRFLAC_FALSE; + } + + /* + From the FLAC specification: + + Quantized linear predictor coefficient shift needed in bits (NOTE: this number is signed two's-complement) + + Emphasis on the "signed two's-complement". In practice there does not seem to be any encoders nor decoders supporting negative shifts. For now dr_flac is + not going to support negative shifts as I don't have any reference files. However, when a reference file comes through I will consider adding support. + */ + if (lpcShift < 0) { + return DRFLAC_FALSE; + } + + DRFLAC_ZERO_MEMORY(coefficients, sizeof(coefficients)); + for (i = 0; i < lpcOrder; ++i) { + if (!drflac__read_int32(bs, lpcPrecision, coefficients + i)) { + return DRFLAC_FALSE; + } + } + + if (!drflac__decode_samples_with_residual(bs, bitsPerSample, blockSize, lpcOrder, lpcShift, lpcPrecision, coefficients, pDecodedSamples)) { + return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac__read_next_flac_frame_header(drflac_bs* bs, drflac_uint8 streaminfoBitsPerSample, drflac_frame_header* header) +{ + const drflac_uint32 sampleRateTable[12] = {0, 88200, 176400, 192000, 8000, 16000, 22050, 24000, 32000, 44100, 48000, 96000}; + const drflac_uint8 bitsPerSampleTable[8] = {0, 8, 12, (drflac_uint8)-1, 16, 20, 24, (drflac_uint8)-1}; /* -1 = reserved. */ + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(header != NULL); + + /* Keep looping until we find a valid sync code. */ + for (;;) { + drflac_uint8 crc8 = 0xCE; /* 0xCE = drflac_crc8(0, 0x3FFE, 14); */ + drflac_uint8 reserved = 0; + drflac_uint8 blockingStrategy = 0; + drflac_uint8 blockSize = 0; + drflac_uint8 sampleRate = 0; + drflac_uint8 channelAssignment = 0; + drflac_uint8 bitsPerSample = 0; + drflac_bool32 isVariableBlockSize; + + if (!drflac__find_and_seek_to_next_sync_code(bs)) { + return DRFLAC_FALSE; + } + + if (!drflac__read_uint8(bs, 1, &reserved)) { + return DRFLAC_FALSE; + } + if (reserved == 1) { + continue; + } + crc8 = drflac_crc8(crc8, reserved, 1); + + if (!drflac__read_uint8(bs, 1, &blockingStrategy)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, blockingStrategy, 1); + + if (!drflac__read_uint8(bs, 4, &blockSize)) { + return DRFLAC_FALSE; + } + if (blockSize == 0) { + continue; + } + crc8 = drflac_crc8(crc8, blockSize, 4); + + if (!drflac__read_uint8(bs, 4, &sampleRate)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, sampleRate, 4); + + if (!drflac__read_uint8(bs, 4, &channelAssignment)) { + return DRFLAC_FALSE; + } + if (channelAssignment > 10) { + continue; + } + crc8 = drflac_crc8(crc8, channelAssignment, 4); + + if (!drflac__read_uint8(bs, 3, &bitsPerSample)) { + return DRFLAC_FALSE; + } + if (bitsPerSample == 3 || bitsPerSample == 7) { + continue; + } + crc8 = drflac_crc8(crc8, bitsPerSample, 3); + + + if (!drflac__read_uint8(bs, 1, &reserved)) { + return DRFLAC_FALSE; + } + if (reserved == 1) { + continue; + } + crc8 = drflac_crc8(crc8, reserved, 1); + + + isVariableBlockSize = blockingStrategy == 1; + if (isVariableBlockSize) { + drflac_uint64 pcmFrameNumber; + drflac_result result = drflac__read_utf8_coded_number(bs, &pcmFrameNumber, &crc8); + if (result != DRFLAC_SUCCESS) { + if (result == DRFLAC_AT_END) { + return DRFLAC_FALSE; + } else { + continue; + } + } + header->flacFrameNumber = 0; + header->pcmFrameNumber = pcmFrameNumber; + } else { + drflac_uint64 flacFrameNumber = 0; + drflac_result result = drflac__read_utf8_coded_number(bs, &flacFrameNumber, &crc8); + if (result != DRFLAC_SUCCESS) { + if (result == DRFLAC_AT_END) { + return DRFLAC_FALSE; + } else { + continue; + } + } + header->flacFrameNumber = (drflac_uint32)flacFrameNumber; /* <-- Safe cast. */ + header->pcmFrameNumber = 0; + } + + + DRFLAC_ASSERT(blockSize > 0); + if (blockSize == 1) { + header->blockSizeInPCMFrames = 192; + } else if (blockSize <= 5) { + DRFLAC_ASSERT(blockSize >= 2); + header->blockSizeInPCMFrames = 576 * (1 << (blockSize - 2)); + } else if (blockSize == 6) { + if (!drflac__read_uint16(bs, 8, &header->blockSizeInPCMFrames)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->blockSizeInPCMFrames, 8); + header->blockSizeInPCMFrames += 1; + } else if (blockSize == 7) { + if (!drflac__read_uint16(bs, 16, &header->blockSizeInPCMFrames)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->blockSizeInPCMFrames, 16); + if (header->blockSizeInPCMFrames == 0xFFFF) { + return DRFLAC_FALSE; /* Frame is too big. This is the size of the frame minus 1. The STREAMINFO block defines the max block size which is 16-bits. Adding one will make it 17 bits and therefore too big. */ + } + header->blockSizeInPCMFrames += 1; + } else { + DRFLAC_ASSERT(blockSize >= 8); + header->blockSizeInPCMFrames = 256 * (1 << (blockSize - 8)); + } + + + if (sampleRate <= 11) { + header->sampleRate = sampleRateTable[sampleRate]; + } else if (sampleRate == 12) { + if (!drflac__read_uint32(bs, 8, &header->sampleRate)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->sampleRate, 8); + header->sampleRate *= 1000; + } else if (sampleRate == 13) { + if (!drflac__read_uint32(bs, 16, &header->sampleRate)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->sampleRate, 16); + } else if (sampleRate == 14) { + if (!drflac__read_uint32(bs, 16, &header->sampleRate)) { + return DRFLAC_FALSE; + } + crc8 = drflac_crc8(crc8, header->sampleRate, 16); + header->sampleRate *= 10; + } else { + continue; /* Invalid. Assume an invalid block. */ + } + + + header->channelAssignment = channelAssignment; + + header->bitsPerSample = bitsPerSampleTable[bitsPerSample]; + if (header->bitsPerSample == 0) { + header->bitsPerSample = streaminfoBitsPerSample; + } + + if (header->bitsPerSample != streaminfoBitsPerSample) { + /* If this subframe has a different bitsPerSample then streaminfo or the first frame, reject it */ + return DRFLAC_FALSE; + } + + if (!drflac__read_uint8(bs, 8, &header->crc8)) { + return DRFLAC_FALSE; + } + +#ifndef DR_FLAC_NO_CRC + if (header->crc8 != crc8) { + continue; /* CRC mismatch. Loop back to the top and find the next sync code. */ + } +#endif + return DRFLAC_TRUE; + } +} + +static drflac_bool32 drflac__read_subframe_header(drflac_bs* bs, drflac_subframe* pSubframe) +{ + drflac_uint8 header; + int type; + + if (!drflac__read_uint8(bs, 8, &header)) { + return DRFLAC_FALSE; + } + + /* First bit should always be 0. */ + if ((header & 0x80) != 0) { + return DRFLAC_FALSE; + } + + type = (header & 0x7E) >> 1; + if (type == 0) { + pSubframe->subframeType = DRFLAC_SUBFRAME_CONSTANT; + } else if (type == 1) { + pSubframe->subframeType = DRFLAC_SUBFRAME_VERBATIM; + } else { + if ((type & 0x20) != 0) { + pSubframe->subframeType = DRFLAC_SUBFRAME_LPC; + pSubframe->lpcOrder = (drflac_uint8)(type & 0x1F) + 1; + } else if ((type & 0x08) != 0) { + pSubframe->subframeType = DRFLAC_SUBFRAME_FIXED; + pSubframe->lpcOrder = (drflac_uint8)(type & 0x07); + if (pSubframe->lpcOrder > 4) { + pSubframe->subframeType = DRFLAC_SUBFRAME_RESERVED; + pSubframe->lpcOrder = 0; + } + } else { + pSubframe->subframeType = DRFLAC_SUBFRAME_RESERVED; + } + } + + if (pSubframe->subframeType == DRFLAC_SUBFRAME_RESERVED) { + return DRFLAC_FALSE; + } + + /* Wasted bits per sample. */ + pSubframe->wastedBitsPerSample = 0; + if ((header & 0x01) == 1) { + unsigned int wastedBitsPerSample; + if (!drflac__seek_past_next_set_bit(bs, &wastedBitsPerSample)) { + return DRFLAC_FALSE; + } + pSubframe->wastedBitsPerSample = (drflac_uint8)wastedBitsPerSample + 1; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_subframe(drflac_bs* bs, drflac_frame* frame, int subframeIndex, drflac_int32* pDecodedSamplesOut) +{ + drflac_subframe* pSubframe; + drflac_uint32 subframeBitsPerSample; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(frame != NULL); + + pSubframe = frame->subframes + subframeIndex; + if (!drflac__read_subframe_header(bs, pSubframe)) { + return DRFLAC_FALSE; + } + + /* Side channels require an extra bit per sample. Took a while to figure that one out... */ + subframeBitsPerSample = frame->header.bitsPerSample; + if ((frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE || frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE) && subframeIndex == 1) { + subframeBitsPerSample += 1; + } else if (frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE && subframeIndex == 0) { + subframeBitsPerSample += 1; + } + + if (subframeBitsPerSample > 32) { + /* libFLAC and ffmpeg reject 33-bit subframes as well */ + return DRFLAC_FALSE; + } + + /* Need to handle wasted bits per sample. */ + if (pSubframe->wastedBitsPerSample >= subframeBitsPerSample) { + return DRFLAC_FALSE; + } + subframeBitsPerSample -= pSubframe->wastedBitsPerSample; + + pSubframe->pSamplesS32 = pDecodedSamplesOut; + + switch (pSubframe->subframeType) + { + case DRFLAC_SUBFRAME_CONSTANT: + { + drflac__decode_samples__constant(bs, frame->header.blockSizeInPCMFrames, subframeBitsPerSample, pSubframe->pSamplesS32); + } break; + + case DRFLAC_SUBFRAME_VERBATIM: + { + drflac__decode_samples__verbatim(bs, frame->header.blockSizeInPCMFrames, subframeBitsPerSample, pSubframe->pSamplesS32); + } break; + + case DRFLAC_SUBFRAME_FIXED: + { + drflac__decode_samples__fixed(bs, frame->header.blockSizeInPCMFrames, subframeBitsPerSample, pSubframe->lpcOrder, pSubframe->pSamplesS32); + } break; + + case DRFLAC_SUBFRAME_LPC: + { + drflac__decode_samples__lpc(bs, frame->header.blockSizeInPCMFrames, subframeBitsPerSample, pSubframe->lpcOrder, pSubframe->pSamplesS32); + } break; + + default: return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__seek_subframe(drflac_bs* bs, drflac_frame* frame, int subframeIndex) +{ + drflac_subframe* pSubframe; + drflac_uint32 subframeBitsPerSample; + + DRFLAC_ASSERT(bs != NULL); + DRFLAC_ASSERT(frame != NULL); + + pSubframe = frame->subframes + subframeIndex; + if (!drflac__read_subframe_header(bs, pSubframe)) { + return DRFLAC_FALSE; + } + + /* Side channels require an extra bit per sample. Took a while to figure that one out... */ + subframeBitsPerSample = frame->header.bitsPerSample; + if ((frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE || frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE) && subframeIndex == 1) { + subframeBitsPerSample += 1; + } else if (frame->header.channelAssignment == DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE && subframeIndex == 0) { + subframeBitsPerSample += 1; + } + + /* Need to handle wasted bits per sample. */ + if (pSubframe->wastedBitsPerSample >= subframeBitsPerSample) { + return DRFLAC_FALSE; + } + subframeBitsPerSample -= pSubframe->wastedBitsPerSample; + + pSubframe->pSamplesS32 = NULL; + + switch (pSubframe->subframeType) + { + case DRFLAC_SUBFRAME_CONSTANT: + { + if (!drflac__seek_bits(bs, subframeBitsPerSample)) { + return DRFLAC_FALSE; + } + } break; + + case DRFLAC_SUBFRAME_VERBATIM: + { + unsigned int bitsToSeek = frame->header.blockSizeInPCMFrames * subframeBitsPerSample; + if (!drflac__seek_bits(bs, bitsToSeek)) { + return DRFLAC_FALSE; + } + } break; + + case DRFLAC_SUBFRAME_FIXED: + { + unsigned int bitsToSeek = pSubframe->lpcOrder * subframeBitsPerSample; + if (!drflac__seek_bits(bs, bitsToSeek)) { + return DRFLAC_FALSE; + } + + if (!drflac__read_and_seek_residual(bs, frame->header.blockSizeInPCMFrames, pSubframe->lpcOrder)) { + return DRFLAC_FALSE; + } + } break; + + case DRFLAC_SUBFRAME_LPC: + { + drflac_uint8 lpcPrecision; + + unsigned int bitsToSeek = pSubframe->lpcOrder * subframeBitsPerSample; + if (!drflac__seek_bits(bs, bitsToSeek)) { + return DRFLAC_FALSE; + } + + if (!drflac__read_uint8(bs, 4, &lpcPrecision)) { + return DRFLAC_FALSE; + } + if (lpcPrecision == 15) { + return DRFLAC_FALSE; /* Invalid. */ + } + lpcPrecision += 1; + + + bitsToSeek = (pSubframe->lpcOrder * lpcPrecision) + 5; /* +5 for shift. */ + if (!drflac__seek_bits(bs, bitsToSeek)) { + return DRFLAC_FALSE; + } + + if (!drflac__read_and_seek_residual(bs, frame->header.blockSizeInPCMFrames, pSubframe->lpcOrder)) { + return DRFLAC_FALSE; + } + } break; + + default: return DRFLAC_FALSE; + } + + return DRFLAC_TRUE; +} + + +static DRFLAC_INLINE drflac_uint8 drflac__get_channel_count_from_channel_assignment(drflac_int8 channelAssignment) +{ + drflac_uint8 lookup[] = {1, 2, 3, 4, 5, 6, 7, 8, 2, 2, 2}; + + DRFLAC_ASSERT(channelAssignment <= 10); + return lookup[channelAssignment]; +} + +static drflac_result drflac__decode_flac_frame(drflac* pFlac) +{ + int channelCount; + int i; + drflac_uint8 paddingSizeInBits; + drflac_uint16 desiredCRC16; +#ifndef DR_FLAC_NO_CRC + drflac_uint16 actualCRC16; +#endif + + /* This function should be called while the stream is sitting on the first byte after the frame header. */ + DRFLAC_ZERO_MEMORY(pFlac->currentFLACFrame.subframes, sizeof(pFlac->currentFLACFrame.subframes)); + + /* The frame block size must never be larger than the maximum block size defined by the FLAC stream. */ + if (pFlac->currentFLACFrame.header.blockSizeInPCMFrames > pFlac->maxBlockSizeInPCMFrames) { + return DRFLAC_ERROR; + } + + /* The number of channels in the frame must match the channel count from the STREAMINFO block. */ + channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFLACFrame.header.channelAssignment); + if (channelCount != (int)pFlac->channels) { + return DRFLAC_ERROR; + } + + for (i = 0; i < channelCount; ++i) { + if (!drflac__decode_subframe(&pFlac->bs, &pFlac->currentFLACFrame, i, pFlac->pDecodedSamples + (pFlac->currentFLACFrame.header.blockSizeInPCMFrames * i))) { + return DRFLAC_ERROR; + } + } + + paddingSizeInBits = (drflac_uint8)(DRFLAC_CACHE_L1_BITS_REMAINING(&pFlac->bs) & 7); + if (paddingSizeInBits > 0) { + drflac_uint8 padding = 0; + if (!drflac__read_uint8(&pFlac->bs, paddingSizeInBits, &padding)) { + return DRFLAC_AT_END; + } + } + +#ifndef DR_FLAC_NO_CRC + actualCRC16 = drflac__flush_crc16(&pFlac->bs); +#endif + if (!drflac__read_uint16(&pFlac->bs, 16, &desiredCRC16)) { + return DRFLAC_AT_END; + } + +#ifndef DR_FLAC_NO_CRC + if (actualCRC16 != desiredCRC16) { + return DRFLAC_CRC_MISMATCH; /* CRC mismatch. */ + } +#endif + + pFlac->currentFLACFrame.pcmFramesRemaining = pFlac->currentFLACFrame.header.blockSizeInPCMFrames; + + return DRFLAC_SUCCESS; +} + +static drflac_result drflac__seek_flac_frame(drflac* pFlac) +{ + int channelCount; + int i; + drflac_uint16 desiredCRC16; +#ifndef DR_FLAC_NO_CRC + drflac_uint16 actualCRC16; +#endif + + channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFLACFrame.header.channelAssignment); + for (i = 0; i < channelCount; ++i) { + if (!drflac__seek_subframe(&pFlac->bs, &pFlac->currentFLACFrame, i)) { + return DRFLAC_ERROR; + } + } + + /* Padding. */ + if (!drflac__seek_bits(&pFlac->bs, DRFLAC_CACHE_L1_BITS_REMAINING(&pFlac->bs) & 7)) { + return DRFLAC_ERROR; + } + + /* CRC. */ +#ifndef DR_FLAC_NO_CRC + actualCRC16 = drflac__flush_crc16(&pFlac->bs); +#endif + if (!drflac__read_uint16(&pFlac->bs, 16, &desiredCRC16)) { + return DRFLAC_AT_END; + } + +#ifndef DR_FLAC_NO_CRC + if (actualCRC16 != desiredCRC16) { + return DRFLAC_CRC_MISMATCH; /* CRC mismatch. */ + } +#endif + + return DRFLAC_SUCCESS; +} + +static drflac_bool32 drflac__read_and_decode_next_flac_frame(drflac* pFlac) +{ + DRFLAC_ASSERT(pFlac != NULL); + + for (;;) { + drflac_result result; + + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + return DRFLAC_FALSE; + } + + result = drflac__decode_flac_frame(pFlac); + if (result != DRFLAC_SUCCESS) { + if (result == DRFLAC_CRC_MISMATCH) { + continue; /* CRC mismatch. Skip to the next frame. */ + } else { + return DRFLAC_FALSE; + } + } + + return DRFLAC_TRUE; + } +} + +static void drflac__get_pcm_frame_range_of_current_flac_frame(drflac* pFlac, drflac_uint64* pFirstPCMFrame, drflac_uint64* pLastPCMFrame) +{ + drflac_uint64 firstPCMFrame; + drflac_uint64 lastPCMFrame; + + DRFLAC_ASSERT(pFlac != NULL); + + firstPCMFrame = pFlac->currentFLACFrame.header.pcmFrameNumber; + if (firstPCMFrame == 0) { + firstPCMFrame = ((drflac_uint64)pFlac->currentFLACFrame.header.flacFrameNumber) * pFlac->maxBlockSizeInPCMFrames; + } + + lastPCMFrame = firstPCMFrame + pFlac->currentFLACFrame.header.blockSizeInPCMFrames; + if (lastPCMFrame > 0) { + lastPCMFrame -= 1; /* Needs to be zero based. */ + } + + if (pFirstPCMFrame) { + *pFirstPCMFrame = firstPCMFrame; + } + if (pLastPCMFrame) { + *pLastPCMFrame = lastPCMFrame; + } +} + +static drflac_bool32 drflac__seek_to_first_frame(drflac* pFlac) +{ + drflac_bool32 result; + + DRFLAC_ASSERT(pFlac != NULL); + + result = drflac__seek_to_byte(&pFlac->bs, pFlac->firstFLACFramePosInBytes); + + DRFLAC_ZERO_MEMORY(&pFlac->currentFLACFrame, sizeof(pFlac->currentFLACFrame)); + pFlac->currentPCMFrame = 0; + + return result; +} + +static DRFLAC_INLINE drflac_result drflac__seek_to_next_flac_frame(drflac* pFlac) +{ + /* This function should only ever be called while the decoder is sitting on the first byte past the FRAME_HEADER section. */ + DRFLAC_ASSERT(pFlac != NULL); + return drflac__seek_flac_frame(pFlac); +} + + +static drflac_uint64 drflac__seek_forward_by_pcm_frames(drflac* pFlac, drflac_uint64 pcmFramesToSeek) +{ + drflac_uint64 pcmFramesRead = 0; + while (pcmFramesToSeek > 0) { + if (pFlac->currentFLACFrame.pcmFramesRemaining == 0) { + if (!drflac__read_and_decode_next_flac_frame(pFlac)) { + break; /* Couldn't read the next frame, so just break from the loop and return. */ + } + } else { + if (pFlac->currentFLACFrame.pcmFramesRemaining > pcmFramesToSeek) { + pcmFramesRead += pcmFramesToSeek; + pFlac->currentFLACFrame.pcmFramesRemaining -= (drflac_uint32)pcmFramesToSeek; /* <-- Safe cast. Will always be < currentFrame.pcmFramesRemaining < 65536. */ + pcmFramesToSeek = 0; + } else { + pcmFramesRead += pFlac->currentFLACFrame.pcmFramesRemaining; + pcmFramesToSeek -= pFlac->currentFLACFrame.pcmFramesRemaining; + pFlac->currentFLACFrame.pcmFramesRemaining = 0; + } + } + } + + pFlac->currentPCMFrame += pcmFramesRead; + return pcmFramesRead; +} + + +static drflac_bool32 drflac__seek_to_pcm_frame__brute_force(drflac* pFlac, drflac_uint64 pcmFrameIndex) +{ + drflac_bool32 isMidFrame = DRFLAC_FALSE; + drflac_uint64 runningPCMFrameCount; + + DRFLAC_ASSERT(pFlac != NULL); + + /* If we are seeking forward we start from the current position. Otherwise we need to start all the way from the start of the file. */ + if (pcmFrameIndex >= pFlac->currentPCMFrame) { + /* Seeking forward. Need to seek from the current position. */ + runningPCMFrameCount = pFlac->currentPCMFrame; + + /* The frame header for the first frame may not yet have been read. We need to do that if necessary. */ + if (pFlac->currentPCMFrame == 0 && pFlac->currentFLACFrame.pcmFramesRemaining == 0) { + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + return DRFLAC_FALSE; + } + } else { + isMidFrame = DRFLAC_TRUE; + } + } else { + /* Seeking backwards. Need to seek from the start of the file. */ + runningPCMFrameCount = 0; + + /* Move back to the start. */ + if (!drflac__seek_to_first_frame(pFlac)) { + return DRFLAC_FALSE; + } + + /* Decode the first frame in preparation for sample-exact seeking below. */ + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + return DRFLAC_FALSE; + } + } + + /* + We need to as quickly as possible find the frame that contains the target sample. To do this, we iterate over each frame and inspect its + header. If based on the header we can determine that the frame contains the sample, we do a full decode of that frame. + */ + for (;;) { + drflac_uint64 pcmFrameCountInThisFLACFrame; + drflac_uint64 firstPCMFrameInFLACFrame = 0; + drflac_uint64 lastPCMFrameInFLACFrame = 0; + + drflac__get_pcm_frame_range_of_current_flac_frame(pFlac, &firstPCMFrameInFLACFrame, &lastPCMFrameInFLACFrame); + + pcmFrameCountInThisFLACFrame = (lastPCMFrameInFLACFrame - firstPCMFrameInFLACFrame) + 1; + if (pcmFrameIndex < (runningPCMFrameCount + pcmFrameCountInThisFLACFrame)) { + /* + The sample should be in this frame. We need to fully decode it, however if it's an invalid frame (a CRC mismatch), we need to pretend + it never existed and keep iterating. + */ + drflac_uint64 pcmFramesToDecode = pcmFrameIndex - runningPCMFrameCount; + + if (!isMidFrame) { + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + /* The frame is valid. We just need to skip over some samples to ensure it's sample-exact. */ + return drflac__seek_forward_by_pcm_frames(pFlac, pcmFramesToDecode) == pcmFramesToDecode; /* <-- If this fails, something bad has happened (it should never fail). */ + } else { + if (result == DRFLAC_CRC_MISMATCH) { + goto next_iteration; /* CRC mismatch. Pretend this frame never existed. */ + } else { + return DRFLAC_FALSE; + } + } + } else { + /* We started seeking mid-frame which means we need to skip the frame decoding part. */ + return drflac__seek_forward_by_pcm_frames(pFlac, pcmFramesToDecode) == pcmFramesToDecode; + } + } else { + /* + It's not in this frame. We need to seek past the frame, but check if there was a CRC mismatch. If so, we pretend this + frame never existed and leave the running sample count untouched. + */ + if (!isMidFrame) { + drflac_result result = drflac__seek_to_next_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + runningPCMFrameCount += pcmFrameCountInThisFLACFrame; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + goto next_iteration; /* CRC mismatch. Pretend this frame never existed. */ + } else { + return DRFLAC_FALSE; + } + } + } else { + /* + We started seeking mid-frame which means we need to seek by reading to the end of the frame instead of with + drflac__seek_to_next_flac_frame() which only works if the decoder is sitting on the byte just after the frame header. + */ + runningPCMFrameCount += pFlac->currentFLACFrame.pcmFramesRemaining; + pFlac->currentFLACFrame.pcmFramesRemaining = 0; + isMidFrame = DRFLAC_FALSE; + } + + /* If we are seeking to the end of the file and we've just hit it, we're done. */ + if (pcmFrameIndex == pFlac->totalPCMFrameCount && runningPCMFrameCount == pFlac->totalPCMFrameCount) { + return DRFLAC_TRUE; + } + } + + next_iteration: + /* Grab the next frame in preparation for the next iteration. */ + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + return DRFLAC_FALSE; + } + } +} + + +#if !defined(DR_FLAC_NO_CRC) +/* +We use an average compression ratio to determine our approximate start location. FLAC files are generally about 50%-70% the size of their +uncompressed counterparts so we'll use this as a basis. I'm going to split the middle and use a factor of 0.6 to determine the starting +location. +*/ +#define DRFLAC_BINARY_SEARCH_APPROX_COMPRESSION_RATIO 0.6f + +static drflac_bool32 drflac__seek_to_approximate_flac_frame_to_byte(drflac* pFlac, drflac_uint64 targetByte, drflac_uint64 rangeLo, drflac_uint64 rangeHi, drflac_uint64* pLastSuccessfulSeekOffset) +{ + DRFLAC_ASSERT(pFlac != NULL); + DRFLAC_ASSERT(pLastSuccessfulSeekOffset != NULL); + DRFLAC_ASSERT(targetByte >= rangeLo); + DRFLAC_ASSERT(targetByte <= rangeHi); + + *pLastSuccessfulSeekOffset = pFlac->firstFLACFramePosInBytes; + + for (;;) { + /* After rangeLo == rangeHi == targetByte fails, we need to break out. */ + drflac_uint64 lastTargetByte = targetByte; + + /* When seeking to a byte, failure probably means we've attempted to seek beyond the end of the stream. To counter this we just halve it each attempt. */ + if (!drflac__seek_to_byte(&pFlac->bs, targetByte)) { + /* If we couldn't even seek to the first byte in the stream we have a problem. Just abandon the whole thing. */ + if (targetByte == 0) { + drflac__seek_to_first_frame(pFlac); /* Try to recover. */ + return DRFLAC_FALSE; + } + + /* Halve the byte location and continue. */ + targetByte = rangeLo + ((rangeHi - rangeLo)/2); + rangeHi = targetByte; + } else { + /* Getting here should mean that we have seeked to an appropriate byte. */ + + /* Clear the details of the FLAC frame so we don't misreport data. */ + DRFLAC_ZERO_MEMORY(&pFlac->currentFLACFrame, sizeof(pFlac->currentFLACFrame)); + + /* + Now seek to the next FLAC frame. We need to decode the entire frame (not just the header) because it's possible for the header to incorrectly pass the + CRC check and return bad data. We need to decode the entire frame to be more certain. Although this seems unlikely, this has happened to me in testing + so it needs to stay this way for now. + */ +#if 1 + if (!drflac__read_and_decode_next_flac_frame(pFlac)) { + /* Halve the byte location and continue. */ + targetByte = rangeLo + ((rangeHi - rangeLo)/2); + rangeHi = targetByte; + } else { + break; + } +#else + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + /* Halve the byte location and continue. */ + targetByte = rangeLo + ((rangeHi - rangeLo)/2); + rangeHi = targetByte; + } else { + break; + } +#endif + } + + /* We already tried this byte and there are no more to try, break out. */ + if(targetByte == lastTargetByte) { + return DRFLAC_FALSE; + } + } + + /* The current PCM frame needs to be updated based on the frame we just seeked to. */ + drflac__get_pcm_frame_range_of_current_flac_frame(pFlac, &pFlac->currentPCMFrame, NULL); + + DRFLAC_ASSERT(targetByte <= rangeHi); + + *pLastSuccessfulSeekOffset = targetByte; + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__decode_flac_frame_and_seek_forward_by_pcm_frames(drflac* pFlac, drflac_uint64 offset) +{ + /* This section of code would be used if we were only decoding the FLAC frame header when calling drflac__seek_to_approximate_flac_frame_to_byte(). */ +#if 0 + if (drflac__decode_flac_frame(pFlac) != DRFLAC_SUCCESS) { + /* We failed to decode this frame which may be due to it being corrupt. We'll just use the next valid FLAC frame. */ + if (drflac__read_and_decode_next_flac_frame(pFlac) == DRFLAC_FALSE) { + return DRFLAC_FALSE; + } + } +#endif + + return drflac__seek_forward_by_pcm_frames(pFlac, offset) == offset; +} + + +static drflac_bool32 drflac__seek_to_pcm_frame__binary_search_internal(drflac* pFlac, drflac_uint64 pcmFrameIndex, drflac_uint64 byteRangeLo, drflac_uint64 byteRangeHi) +{ + /* This assumes pFlac->currentPCMFrame is sitting on byteRangeLo upon entry. */ + + drflac_uint64 targetByte; + drflac_uint64 pcmRangeLo = pFlac->totalPCMFrameCount; + drflac_uint64 pcmRangeHi = 0; + drflac_uint64 lastSuccessfulSeekOffset = (drflac_uint64)-1; + drflac_uint64 closestSeekOffsetBeforeTargetPCMFrame = byteRangeLo; + drflac_uint32 seekForwardThreshold = (pFlac->maxBlockSizeInPCMFrames != 0) ? pFlac->maxBlockSizeInPCMFrames*2 : 4096; + + targetByte = byteRangeLo + (drflac_uint64)(((drflac_int64)((pcmFrameIndex - pFlac->currentPCMFrame) * pFlac->channels * pFlac->bitsPerSample)/8.0f) * DRFLAC_BINARY_SEARCH_APPROX_COMPRESSION_RATIO); + if (targetByte > byteRangeHi) { + targetByte = byteRangeHi; + } + + for (;;) { + if (drflac__seek_to_approximate_flac_frame_to_byte(pFlac, targetByte, byteRangeLo, byteRangeHi, &lastSuccessfulSeekOffset)) { + /* We found a FLAC frame. We need to check if it contains the sample we're looking for. */ + drflac_uint64 newPCMRangeLo; + drflac_uint64 newPCMRangeHi; + drflac__get_pcm_frame_range_of_current_flac_frame(pFlac, &newPCMRangeLo, &newPCMRangeHi); + + /* If we selected the same frame, it means we should be pretty close. Just decode the rest. */ + if (pcmRangeLo == newPCMRangeLo) { + if (!drflac__seek_to_approximate_flac_frame_to_byte(pFlac, closestSeekOffsetBeforeTargetPCMFrame, closestSeekOffsetBeforeTargetPCMFrame, byteRangeHi, &lastSuccessfulSeekOffset)) { + break; /* Failed to seek to closest frame. */ + } + + if (drflac__decode_flac_frame_and_seek_forward_by_pcm_frames(pFlac, pcmFrameIndex - pFlac->currentPCMFrame)) { + return DRFLAC_TRUE; + } else { + break; /* Failed to seek forward. */ + } + } + + pcmRangeLo = newPCMRangeLo; + pcmRangeHi = newPCMRangeHi; + + if (pcmRangeLo <= pcmFrameIndex && pcmRangeHi >= pcmFrameIndex) { + /* The target PCM frame is in this FLAC frame. */ + if (drflac__decode_flac_frame_and_seek_forward_by_pcm_frames(pFlac, pcmFrameIndex - pFlac->currentPCMFrame) ) { + return DRFLAC_TRUE; + } else { + break; /* Failed to seek to FLAC frame. */ + } + } else { + const float approxCompressionRatio = (drflac_int64)(lastSuccessfulSeekOffset - pFlac->firstFLACFramePosInBytes) / ((drflac_int64)(pcmRangeLo * pFlac->channels * pFlac->bitsPerSample)/8.0f); + + if (pcmRangeLo > pcmFrameIndex) { + /* We seeked too far forward. We need to move our target byte backward and try again. */ + byteRangeHi = lastSuccessfulSeekOffset; + if (byteRangeLo > byteRangeHi) { + byteRangeLo = byteRangeHi; + } + + targetByte = byteRangeLo + ((byteRangeHi - byteRangeLo) / 2); + if (targetByte < byteRangeLo) { + targetByte = byteRangeLo; + } + } else /*if (pcmRangeHi < pcmFrameIndex)*/ { + /* We didn't seek far enough. We need to move our target byte forward and try again. */ + + /* If we're close enough we can just seek forward. */ + if ((pcmFrameIndex - pcmRangeLo) < seekForwardThreshold) { + if (drflac__decode_flac_frame_and_seek_forward_by_pcm_frames(pFlac, pcmFrameIndex - pFlac->currentPCMFrame)) { + return DRFLAC_TRUE; + } else { + break; /* Failed to seek to FLAC frame. */ + } + } else { + byteRangeLo = lastSuccessfulSeekOffset; + if (byteRangeHi < byteRangeLo) { + byteRangeHi = byteRangeLo; + } + + targetByte = lastSuccessfulSeekOffset + (drflac_uint64)(((drflac_int64)((pcmFrameIndex-pcmRangeLo) * pFlac->channels * pFlac->bitsPerSample)/8.0f) * approxCompressionRatio); + if (targetByte > byteRangeHi) { + targetByte = byteRangeHi; + } + + if (closestSeekOffsetBeforeTargetPCMFrame < lastSuccessfulSeekOffset) { + closestSeekOffsetBeforeTargetPCMFrame = lastSuccessfulSeekOffset; + } + } + } + } + } else { + /* Getting here is really bad. We just recover as best we can, but moving to the first frame in the stream, and then abort. */ + break; + } + } + + drflac__seek_to_first_frame(pFlac); /* <-- Try to recover. */ + return DRFLAC_FALSE; +} + +static drflac_bool32 drflac__seek_to_pcm_frame__binary_search(drflac* pFlac, drflac_uint64 pcmFrameIndex) +{ + drflac_uint64 byteRangeLo; + drflac_uint64 byteRangeHi; + drflac_uint32 seekForwardThreshold = (pFlac->maxBlockSizeInPCMFrames != 0) ? pFlac->maxBlockSizeInPCMFrames*2 : 4096; + + /* Our algorithm currently assumes the FLAC stream is currently sitting at the start. */ + if (drflac__seek_to_first_frame(pFlac) == DRFLAC_FALSE) { + return DRFLAC_FALSE; + } + + /* If we're close enough to the start, just move to the start and seek forward. */ + if (pcmFrameIndex < seekForwardThreshold) { + return drflac__seek_forward_by_pcm_frames(pFlac, pcmFrameIndex) == pcmFrameIndex; + } + + /* + Our starting byte range is the byte position of the first FLAC frame and the approximate end of the file as if it were completely uncompressed. This ensures + the entire file is included, even though most of the time it'll exceed the end of the actual stream. This is OK as the frame searching logic will handle it. + */ + byteRangeLo = pFlac->firstFLACFramePosInBytes; + byteRangeHi = pFlac->firstFLACFramePosInBytes + (drflac_uint64)((drflac_int64)(pFlac->totalPCMFrameCount * pFlac->channels * pFlac->bitsPerSample)/8.0f); + + return drflac__seek_to_pcm_frame__binary_search_internal(pFlac, pcmFrameIndex, byteRangeLo, byteRangeHi); +} +#endif /* !DR_FLAC_NO_CRC */ + +static drflac_bool32 drflac__seek_to_pcm_frame__seek_table(drflac* pFlac, drflac_uint64 pcmFrameIndex) +{ + drflac_uint32 iClosestSeekpoint = 0; + drflac_bool32 isMidFrame = DRFLAC_FALSE; + drflac_uint64 runningPCMFrameCount; + drflac_uint32 iSeekpoint; + + + DRFLAC_ASSERT(pFlac != NULL); + + if (pFlac->pSeekpoints == NULL || pFlac->seekpointCount == 0) { + return DRFLAC_FALSE; + } + + /* Do not use the seektable if pcmFramIndex is not coverd by it. */ + if (pFlac->pSeekpoints[0].firstPCMFrame > pcmFrameIndex) { + return DRFLAC_FALSE; + } + + for (iSeekpoint = 0; iSeekpoint < pFlac->seekpointCount; ++iSeekpoint) { + if (pFlac->pSeekpoints[iSeekpoint].firstPCMFrame >= pcmFrameIndex) { + break; + } + + iClosestSeekpoint = iSeekpoint; + } + + /* There's been cases where the seek table contains only zeros. We need to do some basic validation on the closest seekpoint. */ + if (pFlac->pSeekpoints[iClosestSeekpoint].pcmFrameCount == 0 || pFlac->pSeekpoints[iClosestSeekpoint].pcmFrameCount > pFlac->maxBlockSizeInPCMFrames) { + return DRFLAC_FALSE; + } + if (pFlac->pSeekpoints[iClosestSeekpoint].firstPCMFrame > pFlac->totalPCMFrameCount && pFlac->totalPCMFrameCount > 0) { + return DRFLAC_FALSE; + } + +#if !defined(DR_FLAC_NO_CRC) + /* At this point we should know the closest seek point. We can use a binary search for this. We need to know the total sample count for this. */ + if (pFlac->totalPCMFrameCount > 0) { + drflac_uint64 byteRangeLo; + drflac_uint64 byteRangeHi; + + byteRangeHi = pFlac->firstFLACFramePosInBytes + (drflac_uint64)((drflac_int64)(pFlac->totalPCMFrameCount * pFlac->channels * pFlac->bitsPerSample)/8.0f); + byteRangeLo = pFlac->firstFLACFramePosInBytes + pFlac->pSeekpoints[iClosestSeekpoint].flacFrameOffset; + + /* + If our closest seek point is not the last one, we only need to search between it and the next one. The section below calculates an appropriate starting + value for byteRangeHi which will clamp it appropriately. + + Note that the next seekpoint must have an offset greater than the closest seekpoint because otherwise our binary search algorithm will break down. There + have been cases where a seektable consists of seek points where every byte offset is set to 0 which causes problems. If this happens we need to abort. + */ + if (iClosestSeekpoint < pFlac->seekpointCount-1) { + drflac_uint32 iNextSeekpoint = iClosestSeekpoint + 1; + + /* Basic validation on the seekpoints to ensure they're usable. */ + if (pFlac->pSeekpoints[iClosestSeekpoint].flacFrameOffset >= pFlac->pSeekpoints[iNextSeekpoint].flacFrameOffset || pFlac->pSeekpoints[iNextSeekpoint].pcmFrameCount == 0) { + return DRFLAC_FALSE; /* The next seekpoint doesn't look right. The seek table cannot be trusted from here. Abort. */ + } + + if (pFlac->pSeekpoints[iNextSeekpoint].firstPCMFrame != (((drflac_uint64)0xFFFFFFFF << 32) | 0xFFFFFFFF)) { /* Make sure it's not a placeholder seekpoint. */ + byteRangeHi = pFlac->firstFLACFramePosInBytes + pFlac->pSeekpoints[iNextSeekpoint].flacFrameOffset - 1; /* byteRangeHi must be zero based. */ + } + } + + if (drflac__seek_to_byte(&pFlac->bs, pFlac->firstFLACFramePosInBytes + pFlac->pSeekpoints[iClosestSeekpoint].flacFrameOffset)) { + if (drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + drflac__get_pcm_frame_range_of_current_flac_frame(pFlac, &pFlac->currentPCMFrame, NULL); + + if (drflac__seek_to_pcm_frame__binary_search_internal(pFlac, pcmFrameIndex, byteRangeLo, byteRangeHi)) { + return DRFLAC_TRUE; + } + } + } + } +#endif /* !DR_FLAC_NO_CRC */ + + /* Getting here means we need to use a slower algorithm because the binary search method failed or cannot be used. */ + + /* + If we are seeking forward and the closest seekpoint is _before_ the current sample, we just seek forward from where we are. Otherwise we start seeking + from the seekpoint's first sample. + */ + if (pcmFrameIndex >= pFlac->currentPCMFrame && pFlac->pSeekpoints[iClosestSeekpoint].firstPCMFrame <= pFlac->currentPCMFrame) { + /* Optimized case. Just seek forward from where we are. */ + runningPCMFrameCount = pFlac->currentPCMFrame; + + /* The frame header for the first frame may not yet have been read. We need to do that if necessary. */ + if (pFlac->currentPCMFrame == 0 && pFlac->currentFLACFrame.pcmFramesRemaining == 0) { + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + return DRFLAC_FALSE; + } + } else { + isMidFrame = DRFLAC_TRUE; + } + } else { + /* Slower case. Seek to the start of the seekpoint and then seek forward from there. */ + runningPCMFrameCount = pFlac->pSeekpoints[iClosestSeekpoint].firstPCMFrame; + + if (!drflac__seek_to_byte(&pFlac->bs, pFlac->firstFLACFramePosInBytes + pFlac->pSeekpoints[iClosestSeekpoint].flacFrameOffset)) { + return DRFLAC_FALSE; + } + + /* Grab the frame the seekpoint is sitting on in preparation for the sample-exact seeking below. */ + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + return DRFLAC_FALSE; + } + } + + for (;;) { + drflac_uint64 pcmFrameCountInThisFLACFrame; + drflac_uint64 firstPCMFrameInFLACFrame = 0; + drflac_uint64 lastPCMFrameInFLACFrame = 0; + + drflac__get_pcm_frame_range_of_current_flac_frame(pFlac, &firstPCMFrameInFLACFrame, &lastPCMFrameInFLACFrame); + + pcmFrameCountInThisFLACFrame = (lastPCMFrameInFLACFrame - firstPCMFrameInFLACFrame) + 1; + if (pcmFrameIndex < (runningPCMFrameCount + pcmFrameCountInThisFLACFrame)) { + /* + The sample should be in this frame. We need to fully decode it, but if it's an invalid frame (a CRC mismatch) we need to pretend + it never existed and keep iterating. + */ + drflac_uint64 pcmFramesToDecode = pcmFrameIndex - runningPCMFrameCount; + + if (!isMidFrame) { + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + /* The frame is valid. We just need to skip over some samples to ensure it's sample-exact. */ + return drflac__seek_forward_by_pcm_frames(pFlac, pcmFramesToDecode) == pcmFramesToDecode; /* <-- If this fails, something bad has happened (it should never fail). */ + } else { + if (result == DRFLAC_CRC_MISMATCH) { + goto next_iteration; /* CRC mismatch. Pretend this frame never existed. */ + } else { + return DRFLAC_FALSE; + } + } + } else { + /* We started seeking mid-frame which means we need to skip the frame decoding part. */ + return drflac__seek_forward_by_pcm_frames(pFlac, pcmFramesToDecode) == pcmFramesToDecode; + } + } else { + /* + It's not in this frame. We need to seek past the frame, but check if there was a CRC mismatch. If so, we pretend this + frame never existed and leave the running sample count untouched. + */ + if (!isMidFrame) { + drflac_result result = drflac__seek_to_next_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + runningPCMFrameCount += pcmFrameCountInThisFLACFrame; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + goto next_iteration; /* CRC mismatch. Pretend this frame never existed. */ + } else { + return DRFLAC_FALSE; + } + } + } else { + /* + We started seeking mid-frame which means we need to seek by reading to the end of the frame instead of with + drflac__seek_to_next_flac_frame() which only works if the decoder is sitting on the byte just after the frame header. + */ + runningPCMFrameCount += pFlac->currentFLACFrame.pcmFramesRemaining; + pFlac->currentFLACFrame.pcmFramesRemaining = 0; + isMidFrame = DRFLAC_FALSE; + } + + /* If we are seeking to the end of the file and we've just hit it, we're done. */ + if (pcmFrameIndex == pFlac->totalPCMFrameCount && runningPCMFrameCount == pFlac->totalPCMFrameCount) { + return DRFLAC_TRUE; + } + } + + next_iteration: + /* Grab the next frame in preparation for the next iteration. */ + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + return DRFLAC_FALSE; + } + } +} + + +#ifndef DR_FLAC_NO_OGG +typedef struct +{ + drflac_uint8 capturePattern[4]; /* Should be "OggS" */ + drflac_uint8 structureVersion; /* Always 0. */ + drflac_uint8 headerType; + drflac_uint64 granulePosition; + drflac_uint32 serialNumber; + drflac_uint32 sequenceNumber; + drflac_uint32 checksum; + drflac_uint8 segmentCount; + drflac_uint8 segmentTable[255]; +} drflac_ogg_page_header; +#endif + +typedef struct +{ + drflac_read_proc onRead; + drflac_seek_proc onSeek; + drflac_meta_proc onMeta; + drflac_container container; + void* pUserData; + void* pUserDataMD; + drflac_uint32 sampleRate; + drflac_uint8 channels; + drflac_uint8 bitsPerSample; + drflac_uint64 totalPCMFrameCount; + drflac_uint16 maxBlockSizeInPCMFrames; + drflac_uint64 runningFilePos; + drflac_bool32 hasStreamInfoBlock; + drflac_bool32 hasMetadataBlocks; + drflac_bs bs; /* <-- A bit streamer is required for loading data during initialization. */ + drflac_frame_header firstFrameHeader; /* <-- The header of the first frame that was read during relaxed initalization. Only set if there is no STREAMINFO block. */ + +#ifndef DR_FLAC_NO_OGG + drflac_uint32 oggSerial; + drflac_uint64 oggFirstBytePos; + drflac_ogg_page_header oggBosHeader; +#endif +} drflac_init_info; + +static DRFLAC_INLINE void drflac__decode_block_header(drflac_uint32 blockHeader, drflac_uint8* isLastBlock, drflac_uint8* blockType, drflac_uint32* blockSize) +{ + blockHeader = drflac__be2host_32(blockHeader); + *isLastBlock = (drflac_uint8)((blockHeader & 0x80000000UL) >> 31); + *blockType = (drflac_uint8)((blockHeader & 0x7F000000UL) >> 24); + *blockSize = (blockHeader & 0x00FFFFFFUL); +} + +static DRFLAC_INLINE drflac_bool32 drflac__read_and_decode_block_header(drflac_read_proc onRead, void* pUserData, drflac_uint8* isLastBlock, drflac_uint8* blockType, drflac_uint32* blockSize) +{ + drflac_uint32 blockHeader; + + *blockSize = 0; + if (onRead(pUserData, &blockHeader, 4) != 4) { + return DRFLAC_FALSE; + } + + drflac__decode_block_header(blockHeader, isLastBlock, blockType, blockSize); + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__read_streaminfo(drflac_read_proc onRead, void* pUserData, drflac_streaminfo* pStreamInfo) +{ + drflac_uint32 blockSizes; + drflac_uint64 frameSizes = 0; + drflac_uint64 importantProps; + drflac_uint8 md5[16]; + + /* min/max block size. */ + if (onRead(pUserData, &blockSizes, 4) != 4) { + return DRFLAC_FALSE; + } + + /* min/max frame size. */ + if (onRead(pUserData, &frameSizes, 6) != 6) { + return DRFLAC_FALSE; + } + + /* Sample rate, channels, bits per sample and total sample count. */ + if (onRead(pUserData, &importantProps, 8) != 8) { + return DRFLAC_FALSE; + } + + /* MD5 */ + if (onRead(pUserData, md5, sizeof(md5)) != sizeof(md5)) { + return DRFLAC_FALSE; + } + + blockSizes = drflac__be2host_32(blockSizes); + frameSizes = drflac__be2host_64(frameSizes); + importantProps = drflac__be2host_64(importantProps); + + pStreamInfo->minBlockSizeInPCMFrames = (drflac_uint16)((blockSizes & 0xFFFF0000) >> 16); + pStreamInfo->maxBlockSizeInPCMFrames = (drflac_uint16) (blockSizes & 0x0000FFFF); + pStreamInfo->minFrameSizeInPCMFrames = (drflac_uint32)((frameSizes & (((drflac_uint64)0x00FFFFFF << 16) << 24)) >> 40); + pStreamInfo->maxFrameSizeInPCMFrames = (drflac_uint32)((frameSizes & (((drflac_uint64)0x00FFFFFF << 16) << 0)) >> 16); + pStreamInfo->sampleRate = (drflac_uint32)((importantProps & (((drflac_uint64)0x000FFFFF << 16) << 28)) >> 44); + pStreamInfo->channels = (drflac_uint8 )((importantProps & (((drflac_uint64)0x0000000E << 16) << 24)) >> 41) + 1; + pStreamInfo->bitsPerSample = (drflac_uint8 )((importantProps & (((drflac_uint64)0x0000001F << 16) << 20)) >> 36) + 1; + pStreamInfo->totalPCMFrameCount = ((importantProps & ((((drflac_uint64)0x0000000F << 16) << 16) | 0xFFFFFFFF))); + DRFLAC_COPY_MEMORY(pStreamInfo->md5, md5, sizeof(md5)); + + return DRFLAC_TRUE; +} + + +static void* drflac__malloc_default(size_t sz, void* pUserData) +{ + (void)pUserData; + return DRFLAC_MALLOC(sz); +} + +static void* drflac__realloc_default(void* p, size_t sz, void* pUserData) +{ + (void)pUserData; + return DRFLAC_REALLOC(p, sz); +} + +static void drflac__free_default(void* p, void* pUserData) +{ + (void)pUserData; + DRFLAC_FREE(p); +} + + +static void* drflac__malloc_from_callbacks(size_t sz, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + if (pAllocationCallbacks == NULL) { + return NULL; + } + + if (pAllocationCallbacks->onMalloc != NULL) { + return pAllocationCallbacks->onMalloc(sz, pAllocationCallbacks->pUserData); + } + + /* Try using realloc(). */ + if (pAllocationCallbacks->onRealloc != NULL) { + return pAllocationCallbacks->onRealloc(NULL, sz, pAllocationCallbacks->pUserData); + } + + return NULL; +} + +static void* drflac__realloc_from_callbacks(void* p, size_t szNew, size_t szOld, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + if (pAllocationCallbacks == NULL) { + return NULL; + } + + if (pAllocationCallbacks->onRealloc != NULL) { + return pAllocationCallbacks->onRealloc(p, szNew, pAllocationCallbacks->pUserData); + } + + /* Try emulating realloc() in terms of malloc()/free(). */ + if (pAllocationCallbacks->onMalloc != NULL && pAllocationCallbacks->onFree != NULL) { + void* p2; + + p2 = pAllocationCallbacks->onMalloc(szNew, pAllocationCallbacks->pUserData); + if (p2 == NULL) { + return NULL; + } + + if (p != NULL) { + DRFLAC_COPY_MEMORY(p2, p, szOld); + pAllocationCallbacks->onFree(p, pAllocationCallbacks->pUserData); + } + + return p2; + } + + return NULL; +} + +static void drflac__free_from_callbacks(void* p, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + if (p == NULL || pAllocationCallbacks == NULL) { + return; + } + + if (pAllocationCallbacks->onFree != NULL) { + pAllocationCallbacks->onFree(p, pAllocationCallbacks->pUserData); + } +} + + +static drflac_bool32 drflac__read_and_decode_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_uint64* pFirstFramePos, drflac_uint64* pSeektablePos, drflac_uint32* pSeekpointCount, drflac_allocation_callbacks* pAllocationCallbacks) +{ + /* + We want to keep track of the byte position in the stream of the seektable. At the time of calling this function we know that + we'll be sitting on byte 42. + */ + drflac_uint64 runningFilePos = 42; + drflac_uint64 seektablePos = 0; + drflac_uint32 seektableSize = 0; + + for (;;) { + drflac_metadata metadata; + drflac_uint8 isLastBlock = 0; + drflac_uint8 blockType = 0; + drflac_uint32 blockSize; + if (drflac__read_and_decode_block_header(onRead, pUserData, &isLastBlock, &blockType, &blockSize) == DRFLAC_FALSE) { + return DRFLAC_FALSE; + } + runningFilePos += 4; + + metadata.type = blockType; + metadata.pRawData = NULL; + metadata.rawDataSize = 0; + + switch (blockType) + { + case DRFLAC_METADATA_BLOCK_TYPE_APPLICATION: + { + if (blockSize < 4) { + return DRFLAC_FALSE; + } + + if (onMeta) { + void* pRawData = drflac__malloc_from_callbacks(blockSize, pAllocationCallbacks); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + metadata.data.application.id = drflac__be2host_32(*(drflac_uint32*)pRawData); + metadata.data.application.pData = (const void*)((drflac_uint8*)pRawData + sizeof(drflac_uint32)); + metadata.data.application.dataSize = blockSize - sizeof(drflac_uint32); + onMeta(pUserDataMD, &metadata); + + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_SEEKTABLE: + { + seektablePos = runningFilePos; + seektableSize = blockSize; + + if (onMeta) { + drflac_uint32 seekpointCount; + drflac_uint32 iSeekpoint; + void* pRawData; + + seekpointCount = blockSize/DRFLAC_SEEKPOINT_SIZE_IN_BYTES; + + pRawData = drflac__malloc_from_callbacks(seekpointCount * sizeof(drflac_seekpoint), pAllocationCallbacks); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + /* We need to read seekpoint by seekpoint and do some processing. */ + for (iSeekpoint = 0; iSeekpoint < seekpointCount; ++iSeekpoint) { + drflac_seekpoint* pSeekpoint = (drflac_seekpoint*)pRawData + iSeekpoint; + + if (onRead(pUserData, pSeekpoint, DRFLAC_SEEKPOINT_SIZE_IN_BYTES) != DRFLAC_SEEKPOINT_SIZE_IN_BYTES) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + /* Endian swap. */ + pSeekpoint->firstPCMFrame = drflac__be2host_64(pSeekpoint->firstPCMFrame); + pSeekpoint->flacFrameOffset = drflac__be2host_64(pSeekpoint->flacFrameOffset); + pSeekpoint->pcmFrameCount = drflac__be2host_16(pSeekpoint->pcmFrameCount); + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + metadata.data.seektable.seekpointCount = seekpointCount; + metadata.data.seektable.pSeekpoints = (const drflac_seekpoint*)pRawData; + + onMeta(pUserDataMD, &metadata); + + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_VORBIS_COMMENT: + { + if (blockSize < 8) { + return DRFLAC_FALSE; + } + + if (onMeta) { + void* pRawData; + const char* pRunningData; + const char* pRunningDataEnd; + drflac_uint32 i; + + pRawData = drflac__malloc_from_callbacks(blockSize, pAllocationCallbacks); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + + pRunningData = (const char*)pRawData; + pRunningDataEnd = (const char*)pRawData + blockSize; + + metadata.data.vorbis_comment.vendorLength = drflac__le2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + + /* Need space for the rest of the block */ + if ((pRunningDataEnd - pRunningData) - 4 < (drflac_int64)metadata.data.vorbis_comment.vendorLength) { /* <-- Note the order of operations to avoid overflow to a valid value */ + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + metadata.data.vorbis_comment.vendor = pRunningData; pRunningData += metadata.data.vorbis_comment.vendorLength; + metadata.data.vorbis_comment.commentCount = drflac__le2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + + /* Need space for 'commentCount' comments after the block, which at minimum is a drflac_uint32 per comment */ + if ((pRunningDataEnd - pRunningData) / sizeof(drflac_uint32) < metadata.data.vorbis_comment.commentCount) { /* <-- Note the order of operations to avoid overflow to a valid value */ + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + metadata.data.vorbis_comment.pComments = pRunningData; + + /* Check that the comments section is valid before passing it to the callback */ + for (i = 0; i < metadata.data.vorbis_comment.commentCount; ++i) { + drflac_uint32 commentLength; + + if (pRunningDataEnd - pRunningData < 4) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + commentLength = drflac__le2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + if (pRunningDataEnd - pRunningData < (drflac_int64)commentLength) { /* <-- Note the order of operations to avoid overflow to a valid value */ + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + pRunningData += commentLength; + } + + onMeta(pUserDataMD, &metadata); + + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_CUESHEET: + { + if (blockSize < 396) { + return DRFLAC_FALSE; + } + + if (onMeta) { + void* pRawData; + const char* pRunningData; + const char* pRunningDataEnd; + size_t bufferSize; + drflac_uint8 iTrack; + drflac_uint8 iIndex; + void* pTrackData; + + /* + This needs to be loaded in two passes. The first pass is used to calculate the size of the memory allocation + we need for storing the necessary data. The second pass will fill that buffer with usable data. + */ + pRawData = drflac__malloc_from_callbacks(blockSize, pAllocationCallbacks); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + + pRunningData = (const char*)pRawData; + pRunningDataEnd = (const char*)pRawData + blockSize; + + DRFLAC_COPY_MEMORY(metadata.data.cuesheet.catalog, pRunningData, 128); pRunningData += 128; + metadata.data.cuesheet.leadInSampleCount = drflac__be2host_64(*(const drflac_uint64*)pRunningData); pRunningData += 8; + metadata.data.cuesheet.isCD = (pRunningData[0] & 0x80) != 0; pRunningData += 259; + metadata.data.cuesheet.trackCount = pRunningData[0]; pRunningData += 1; + metadata.data.cuesheet.pTrackData = NULL; /* Will be filled later. */ + + /* Pass 1: Calculate the size of the buffer for the track data. */ + { + const char* pRunningDataSaved = pRunningData; /* Will be restored at the end in preparation for the second pass. */ + + bufferSize = metadata.data.cuesheet.trackCount * DRFLAC_CUESHEET_TRACK_SIZE_IN_BYTES; + + for (iTrack = 0; iTrack < metadata.data.cuesheet.trackCount; ++iTrack) { + drflac_uint8 indexCount; + drflac_uint32 indexPointSize; + + if (pRunningDataEnd - pRunningData < DRFLAC_CUESHEET_TRACK_SIZE_IN_BYTES) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + /* Skip to the index point count */ + pRunningData += 35; + + indexCount = pRunningData[0]; + pRunningData += 1; + + bufferSize += indexCount * sizeof(drflac_cuesheet_track_index); + + /* Quick validation check. */ + indexPointSize = indexCount * DRFLAC_CUESHEET_TRACK_INDEX_SIZE_IN_BYTES; + if (pRunningDataEnd - pRunningData < (drflac_int64)indexPointSize) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + pRunningData += indexPointSize; + } + + pRunningData = pRunningDataSaved; + } + + /* Pass 2: Allocate a buffer and fill the data. Validation was done in the step above so can be skipped. */ + { + char* pRunningTrackData; + + pTrackData = drflac__malloc_from_callbacks(bufferSize, pAllocationCallbacks); + if (pTrackData == NULL) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + pRunningTrackData = (char*)pTrackData; + + for (iTrack = 0; iTrack < metadata.data.cuesheet.trackCount; ++iTrack) { + drflac_uint8 indexCount; + + DRFLAC_COPY_MEMORY(pRunningTrackData, pRunningData, DRFLAC_CUESHEET_TRACK_SIZE_IN_BYTES); + pRunningData += DRFLAC_CUESHEET_TRACK_SIZE_IN_BYTES-1; /* Skip forward, but not beyond the last byte in the CUESHEET_TRACK block which is the index count. */ + pRunningTrackData += DRFLAC_CUESHEET_TRACK_SIZE_IN_BYTES-1; + + /* Grab the index count for the next part. */ + indexCount = pRunningData[0]; + pRunningData += 1; + pRunningTrackData += 1; + + /* Extract each track index. */ + for (iIndex = 0; iIndex < indexCount; ++iIndex) { + drflac_cuesheet_track_index* pTrackIndex = (drflac_cuesheet_track_index*)pRunningTrackData; + + DRFLAC_COPY_MEMORY(pRunningTrackData, pRunningData, DRFLAC_CUESHEET_TRACK_INDEX_SIZE_IN_BYTES); + pRunningData += DRFLAC_CUESHEET_TRACK_INDEX_SIZE_IN_BYTES; + pRunningTrackData += sizeof(drflac_cuesheet_track_index); + + pTrackIndex->offset = drflac__be2host_64(pTrackIndex->offset); + } + } + + metadata.data.cuesheet.pTrackData = pTrackData; + } + + /* The original data is no longer needed. */ + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + pRawData = NULL; + + onMeta(pUserDataMD, &metadata); + + drflac__free_from_callbacks(pTrackData, pAllocationCallbacks); + pTrackData = NULL; + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_PICTURE: + { + if (blockSize < 32) { + return DRFLAC_FALSE; + } + + if (onMeta) { + void* pRawData; + const char* pRunningData; + const char* pRunningDataEnd; + + pRawData = drflac__malloc_from_callbacks(blockSize, pAllocationCallbacks); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + + pRunningData = (const char*)pRawData; + pRunningDataEnd = (const char*)pRawData + blockSize; + + metadata.data.picture.type = drflac__be2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + metadata.data.picture.mimeLength = drflac__be2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + + /* Need space for the rest of the block */ + if ((pRunningDataEnd - pRunningData) - 24 < (drflac_int64)metadata.data.picture.mimeLength) { /* <-- Note the order of operations to avoid overflow to a valid value */ + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + metadata.data.picture.mime = pRunningData; pRunningData += metadata.data.picture.mimeLength; + metadata.data.picture.descriptionLength = drflac__be2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + + /* Need space for the rest of the block */ + if ((pRunningDataEnd - pRunningData) - 20 < (drflac_int64)metadata.data.picture.descriptionLength) { /* <-- Note the order of operations to avoid overflow to a valid value */ + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + metadata.data.picture.description = pRunningData; pRunningData += metadata.data.picture.descriptionLength; + metadata.data.picture.width = drflac__be2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + metadata.data.picture.height = drflac__be2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + metadata.data.picture.colorDepth = drflac__be2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + metadata.data.picture.indexColorCount = drflac__be2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + metadata.data.picture.pictureDataSize = drflac__be2host_32_ptr_unaligned(pRunningData); pRunningData += 4; + metadata.data.picture.pPictureData = (const drflac_uint8*)pRunningData; + + /* Need space for the picture after the block */ + if (pRunningDataEnd - pRunningData < (drflac_int64)metadata.data.picture.pictureDataSize) { /* <-- Note the order of operations to avoid overflow to a valid value */ + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + onMeta(pUserDataMD, &metadata); + + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_PADDING: + { + if (onMeta) { + metadata.data.padding.unused = 0; + + /* Padding doesn't have anything meaningful in it, so just skip over it, but make sure the caller is aware of it by firing the callback. */ + if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + isLastBlock = DRFLAC_TRUE; /* An error occurred while seeking. Attempt to recover by treating this as the last block which will in turn terminate the loop. */ + } else { + onMeta(pUserDataMD, &metadata); + } + } + } break; + + case DRFLAC_METADATA_BLOCK_TYPE_INVALID: + { + /* Invalid chunk. Just skip over this one. */ + if (onMeta) { + if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + isLastBlock = DRFLAC_TRUE; /* An error occurred while seeking. Attempt to recover by treating this as the last block which will in turn terminate the loop. */ + } + } + } break; + + default: + { + /* + It's an unknown chunk, but not necessarily invalid. There's a chance more metadata blocks might be defined later on, so we + can at the very least report the chunk to the application and let it look at the raw data. + */ + if (onMeta) { + void* pRawData = drflac__malloc_from_callbacks(blockSize, pAllocationCallbacks); + if (pRawData == NULL) { + return DRFLAC_FALSE; + } + + if (onRead(pUserData, pRawData, blockSize) != blockSize) { + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + return DRFLAC_FALSE; + } + + metadata.pRawData = pRawData; + metadata.rawDataSize = blockSize; + onMeta(pUserDataMD, &metadata); + + drflac__free_from_callbacks(pRawData, pAllocationCallbacks); + } + } break; + } + + /* If we're not handling metadata, just skip over the block. If we are, it will have been handled earlier in the switch statement above. */ + if (onMeta == NULL && blockSize > 0) { + if (!onSeek(pUserData, blockSize, drflac_seek_origin_current)) { + isLastBlock = DRFLAC_TRUE; + } + } + + runningFilePos += blockSize; + if (isLastBlock) { + break; + } + } + + *pSeektablePos = seektablePos; + *pSeekpointCount = seektableSize / DRFLAC_SEEKPOINT_SIZE_IN_BYTES; + *pFirstFramePos = runningFilePos; + + return DRFLAC_TRUE; +} + +static drflac_bool32 drflac__init_private__native(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_bool32 relaxed) +{ + /* Pre Condition: The bit stream should be sitting just past the 4-byte id header. */ + + drflac_uint8 isLastBlock; + drflac_uint8 blockType; + drflac_uint32 blockSize; + + (void)onSeek; + + pInit->container = drflac_container_native; + + /* The first metadata block should be the STREAMINFO block. */ + if (!drflac__read_and_decode_block_header(onRead, pUserData, &isLastBlock, &blockType, &blockSize)) { + return DRFLAC_FALSE; + } + + if (blockType != DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO || blockSize != 34) { + if (!relaxed) { + /* We're opening in strict mode and the first block is not the STREAMINFO block. Error. */ + return DRFLAC_FALSE; + } else { + /* + Relaxed mode. To open from here we need to just find the first frame and set the sample rate, etc. to whatever is defined + for that frame. + */ + pInit->hasStreamInfoBlock = DRFLAC_FALSE; + pInit->hasMetadataBlocks = DRFLAC_FALSE; + + if (!drflac__read_next_flac_frame_header(&pInit->bs, 0, &pInit->firstFrameHeader)) { + return DRFLAC_FALSE; /* Couldn't find a frame. */ + } + + if (pInit->firstFrameHeader.bitsPerSample == 0) { + return DRFLAC_FALSE; /* Failed to initialize because the first frame depends on the STREAMINFO block, which does not exist. */ + } + + pInit->sampleRate = pInit->firstFrameHeader.sampleRate; + pInit->channels = drflac__get_channel_count_from_channel_assignment(pInit->firstFrameHeader.channelAssignment); + pInit->bitsPerSample = pInit->firstFrameHeader.bitsPerSample; + pInit->maxBlockSizeInPCMFrames = 65535; /* <-- See notes here: https://xiph.org/flac/format.html#metadata_block_streaminfo */ + return DRFLAC_TRUE; + } + } else { + drflac_streaminfo streaminfo; + if (!drflac__read_streaminfo(onRead, pUserData, &streaminfo)) { + return DRFLAC_FALSE; + } + + pInit->hasStreamInfoBlock = DRFLAC_TRUE; + pInit->sampleRate = streaminfo.sampleRate; + pInit->channels = streaminfo.channels; + pInit->bitsPerSample = streaminfo.bitsPerSample; + pInit->totalPCMFrameCount = streaminfo.totalPCMFrameCount; + pInit->maxBlockSizeInPCMFrames = streaminfo.maxBlockSizeInPCMFrames; /* Don't care about the min block size - only the max (used for determining the size of the memory allocation). */ + pInit->hasMetadataBlocks = !isLastBlock; + + if (onMeta) { + drflac_metadata metadata; + metadata.type = DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO; + metadata.pRawData = NULL; + metadata.rawDataSize = 0; + metadata.data.streaminfo = streaminfo; + onMeta(pUserDataMD, &metadata); + } + + return DRFLAC_TRUE; + } +} + +#ifndef DR_FLAC_NO_OGG +#define DRFLAC_OGG_MAX_PAGE_SIZE 65307 +#define DRFLAC_OGG_CAPTURE_PATTERN_CRC32 1605413199 /* CRC-32 of "OggS". */ + +typedef enum +{ + drflac_ogg_recover_on_crc_mismatch, + drflac_ogg_fail_on_crc_mismatch +} drflac_ogg_crc_mismatch_recovery; + +#ifndef DR_FLAC_NO_CRC +static drflac_uint32 drflac__crc32_table[] = { + 0x00000000L, 0x04C11DB7L, 0x09823B6EL, 0x0D4326D9L, + 0x130476DCL, 0x17C56B6BL, 0x1A864DB2L, 0x1E475005L, + 0x2608EDB8L, 0x22C9F00FL, 0x2F8AD6D6L, 0x2B4BCB61L, + 0x350C9B64L, 0x31CD86D3L, 0x3C8EA00AL, 0x384FBDBDL, + 0x4C11DB70L, 0x48D0C6C7L, 0x4593E01EL, 0x4152FDA9L, + 0x5F15ADACL, 0x5BD4B01BL, 0x569796C2L, 0x52568B75L, + 0x6A1936C8L, 0x6ED82B7FL, 0x639B0DA6L, 0x675A1011L, + 0x791D4014L, 0x7DDC5DA3L, 0x709F7B7AL, 0x745E66CDL, + 0x9823B6E0L, 0x9CE2AB57L, 0x91A18D8EL, 0x95609039L, + 0x8B27C03CL, 0x8FE6DD8BL, 0x82A5FB52L, 0x8664E6E5L, + 0xBE2B5B58L, 0xBAEA46EFL, 0xB7A96036L, 0xB3687D81L, + 0xAD2F2D84L, 0xA9EE3033L, 0xA4AD16EAL, 0xA06C0B5DL, + 0xD4326D90L, 0xD0F37027L, 0xDDB056FEL, 0xD9714B49L, + 0xC7361B4CL, 0xC3F706FBL, 0xCEB42022L, 0xCA753D95L, + 0xF23A8028L, 0xF6FB9D9FL, 0xFBB8BB46L, 0xFF79A6F1L, + 0xE13EF6F4L, 0xE5FFEB43L, 0xE8BCCD9AL, 0xEC7DD02DL, + 0x34867077L, 0x30476DC0L, 0x3D044B19L, 0x39C556AEL, + 0x278206ABL, 0x23431B1CL, 0x2E003DC5L, 0x2AC12072L, + 0x128E9DCFL, 0x164F8078L, 0x1B0CA6A1L, 0x1FCDBB16L, + 0x018AEB13L, 0x054BF6A4L, 0x0808D07DL, 0x0CC9CDCAL, + 0x7897AB07L, 0x7C56B6B0L, 0x71159069L, 0x75D48DDEL, + 0x6B93DDDBL, 0x6F52C06CL, 0x6211E6B5L, 0x66D0FB02L, + 0x5E9F46BFL, 0x5A5E5B08L, 0x571D7DD1L, 0x53DC6066L, + 0x4D9B3063L, 0x495A2DD4L, 0x44190B0DL, 0x40D816BAL, + 0xACA5C697L, 0xA864DB20L, 0xA527FDF9L, 0xA1E6E04EL, + 0xBFA1B04BL, 0xBB60ADFCL, 0xB6238B25L, 0xB2E29692L, + 0x8AAD2B2FL, 0x8E6C3698L, 0x832F1041L, 0x87EE0DF6L, + 0x99A95DF3L, 0x9D684044L, 0x902B669DL, 0x94EA7B2AL, + 0xE0B41DE7L, 0xE4750050L, 0xE9362689L, 0xEDF73B3EL, + 0xF3B06B3BL, 0xF771768CL, 0xFA325055L, 0xFEF34DE2L, + 0xC6BCF05FL, 0xC27DEDE8L, 0xCF3ECB31L, 0xCBFFD686L, + 0xD5B88683L, 0xD1799B34L, 0xDC3ABDEDL, 0xD8FBA05AL, + 0x690CE0EEL, 0x6DCDFD59L, 0x608EDB80L, 0x644FC637L, + 0x7A089632L, 0x7EC98B85L, 0x738AAD5CL, 0x774BB0EBL, + 0x4F040D56L, 0x4BC510E1L, 0x46863638L, 0x42472B8FL, + 0x5C007B8AL, 0x58C1663DL, 0x558240E4L, 0x51435D53L, + 0x251D3B9EL, 0x21DC2629L, 0x2C9F00F0L, 0x285E1D47L, + 0x36194D42L, 0x32D850F5L, 0x3F9B762CL, 0x3B5A6B9BL, + 0x0315D626L, 0x07D4CB91L, 0x0A97ED48L, 0x0E56F0FFL, + 0x1011A0FAL, 0x14D0BD4DL, 0x19939B94L, 0x1D528623L, + 0xF12F560EL, 0xF5EE4BB9L, 0xF8AD6D60L, 0xFC6C70D7L, + 0xE22B20D2L, 0xE6EA3D65L, 0xEBA91BBCL, 0xEF68060BL, + 0xD727BBB6L, 0xD3E6A601L, 0xDEA580D8L, 0xDA649D6FL, + 0xC423CD6AL, 0xC0E2D0DDL, 0xCDA1F604L, 0xC960EBB3L, + 0xBD3E8D7EL, 0xB9FF90C9L, 0xB4BCB610L, 0xB07DABA7L, + 0xAE3AFBA2L, 0xAAFBE615L, 0xA7B8C0CCL, 0xA379DD7BL, + 0x9B3660C6L, 0x9FF77D71L, 0x92B45BA8L, 0x9675461FL, + 0x8832161AL, 0x8CF30BADL, 0x81B02D74L, 0x857130C3L, + 0x5D8A9099L, 0x594B8D2EL, 0x5408ABF7L, 0x50C9B640L, + 0x4E8EE645L, 0x4A4FFBF2L, 0x470CDD2BL, 0x43CDC09CL, + 0x7B827D21L, 0x7F436096L, 0x7200464FL, 0x76C15BF8L, + 0x68860BFDL, 0x6C47164AL, 0x61043093L, 0x65C52D24L, + 0x119B4BE9L, 0x155A565EL, 0x18197087L, 0x1CD86D30L, + 0x029F3D35L, 0x065E2082L, 0x0B1D065BL, 0x0FDC1BECL, + 0x3793A651L, 0x3352BBE6L, 0x3E119D3FL, 0x3AD08088L, + 0x2497D08DL, 0x2056CD3AL, 0x2D15EBE3L, 0x29D4F654L, + 0xC5A92679L, 0xC1683BCEL, 0xCC2B1D17L, 0xC8EA00A0L, + 0xD6AD50A5L, 0xD26C4D12L, 0xDF2F6BCBL, 0xDBEE767CL, + 0xE3A1CBC1L, 0xE760D676L, 0xEA23F0AFL, 0xEEE2ED18L, + 0xF0A5BD1DL, 0xF464A0AAL, 0xF9278673L, 0xFDE69BC4L, + 0x89B8FD09L, 0x8D79E0BEL, 0x803AC667L, 0x84FBDBD0L, + 0x9ABC8BD5L, 0x9E7D9662L, 0x933EB0BBL, 0x97FFAD0CL, + 0xAFB010B1L, 0xAB710D06L, 0xA6322BDFL, 0xA2F33668L, + 0xBCB4666DL, 0xB8757BDAL, 0xB5365D03L, 0xB1F740B4L +}; +#endif + +static DRFLAC_INLINE drflac_uint32 drflac_crc32_byte(drflac_uint32 crc32, drflac_uint8 data) +{ +#ifndef DR_FLAC_NO_CRC + return (crc32 << 8) ^ drflac__crc32_table[(drflac_uint8)((crc32 >> 24) & 0xFF) ^ data]; +#else + (void)data; + return crc32; +#endif +} + +#if 0 +static DRFLAC_INLINE drflac_uint32 drflac_crc32_uint32(drflac_uint32 crc32, drflac_uint32 data) +{ + crc32 = drflac_crc32_byte(crc32, (drflac_uint8)((data >> 24) & 0xFF)); + crc32 = drflac_crc32_byte(crc32, (drflac_uint8)((data >> 16) & 0xFF)); + crc32 = drflac_crc32_byte(crc32, (drflac_uint8)((data >> 8) & 0xFF)); + crc32 = drflac_crc32_byte(crc32, (drflac_uint8)((data >> 0) & 0xFF)); + return crc32; +} + +static DRFLAC_INLINE drflac_uint32 drflac_crc32_uint64(drflac_uint32 crc32, drflac_uint64 data) +{ + crc32 = drflac_crc32_uint32(crc32, (drflac_uint32)((data >> 32) & 0xFFFFFFFF)); + crc32 = drflac_crc32_uint32(crc32, (drflac_uint32)((data >> 0) & 0xFFFFFFFF)); + return crc32; +} +#endif + +static DRFLAC_INLINE drflac_uint32 drflac_crc32_buffer(drflac_uint32 crc32, drflac_uint8* pData, drflac_uint32 dataSize) +{ + /* This can be optimized. */ + drflac_uint32 i; + for (i = 0; i < dataSize; ++i) { + crc32 = drflac_crc32_byte(crc32, pData[i]); + } + return crc32; +} + + +static DRFLAC_INLINE drflac_bool32 drflac_ogg__is_capture_pattern(drflac_uint8 pattern[4]) +{ + return pattern[0] == 'O' && pattern[1] == 'g' && pattern[2] == 'g' && pattern[3] == 'S'; +} + +static DRFLAC_INLINE drflac_uint32 drflac_ogg__get_page_header_size(drflac_ogg_page_header* pHeader) +{ + return 27 + pHeader->segmentCount; +} + +static DRFLAC_INLINE drflac_uint32 drflac_ogg__get_page_body_size(drflac_ogg_page_header* pHeader) +{ + drflac_uint32 pageBodySize = 0; + int i; + + for (i = 0; i < pHeader->segmentCount; ++i) { + pageBodySize += pHeader->segmentTable[i]; + } + + return pageBodySize; +} + +static drflac_result drflac_ogg__read_page_header_after_capture_pattern(drflac_read_proc onRead, void* pUserData, drflac_ogg_page_header* pHeader, drflac_uint32* pBytesRead, drflac_uint32* pCRC32) +{ + drflac_uint8 data[23]; + drflac_uint32 i; + + DRFLAC_ASSERT(*pCRC32 == DRFLAC_OGG_CAPTURE_PATTERN_CRC32); + + if (onRead(pUserData, data, 23) != 23) { + return DRFLAC_AT_END; + } + *pBytesRead += 23; + + /* + It's not actually used, but set the capture pattern to 'OggS' for completeness. Not doing this will cause static analysers to complain about + us trying to access uninitialized data. We could alternatively just comment out this member of the drflac_ogg_page_header structure, but I + like to have it map to the structure of the underlying data. + */ + pHeader->capturePattern[0] = 'O'; + pHeader->capturePattern[1] = 'g'; + pHeader->capturePattern[2] = 'g'; + pHeader->capturePattern[3] = 'S'; + + pHeader->structureVersion = data[0]; + pHeader->headerType = data[1]; + DRFLAC_COPY_MEMORY(&pHeader->granulePosition, &data[ 2], 8); + DRFLAC_COPY_MEMORY(&pHeader->serialNumber, &data[10], 4); + DRFLAC_COPY_MEMORY(&pHeader->sequenceNumber, &data[14], 4); + DRFLAC_COPY_MEMORY(&pHeader->checksum, &data[18], 4); + pHeader->segmentCount = data[22]; + + /* Calculate the CRC. Note that for the calculation the checksum part of the page needs to be set to 0. */ + data[18] = 0; + data[19] = 0; + data[20] = 0; + data[21] = 0; + + for (i = 0; i < 23; ++i) { + *pCRC32 = drflac_crc32_byte(*pCRC32, data[i]); + } + + + if (onRead(pUserData, pHeader->segmentTable, pHeader->segmentCount) != pHeader->segmentCount) { + return DRFLAC_AT_END; + } + *pBytesRead += pHeader->segmentCount; + + for (i = 0; i < pHeader->segmentCount; ++i) { + *pCRC32 = drflac_crc32_byte(*pCRC32, pHeader->segmentTable[i]); + } + + return DRFLAC_SUCCESS; +} + +static drflac_result drflac_ogg__read_page_header(drflac_read_proc onRead, void* pUserData, drflac_ogg_page_header* pHeader, drflac_uint32* pBytesRead, drflac_uint32* pCRC32) +{ + drflac_uint8 id[4]; + + *pBytesRead = 0; + + if (onRead(pUserData, id, 4) != 4) { + return DRFLAC_AT_END; + } + *pBytesRead += 4; + + /* We need to read byte-by-byte until we find the OggS capture pattern. */ + for (;;) { + if (drflac_ogg__is_capture_pattern(id)) { + drflac_result result; + + *pCRC32 = DRFLAC_OGG_CAPTURE_PATTERN_CRC32; + + result = drflac_ogg__read_page_header_after_capture_pattern(onRead, pUserData, pHeader, pBytesRead, pCRC32); + if (result == DRFLAC_SUCCESS) { + return DRFLAC_SUCCESS; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + continue; + } else { + return result; + } + } + } else { + /* The first 4 bytes did not equal the capture pattern. Read the next byte and try again. */ + id[0] = id[1]; + id[1] = id[2]; + id[2] = id[3]; + if (onRead(pUserData, &id[3], 1) != 1) { + return DRFLAC_AT_END; + } + *pBytesRead += 1; + } + } +} + + +/* +The main part of the Ogg encapsulation is the conversion from the physical Ogg bitstream to the native FLAC bitstream. It works +in three general stages: Ogg Physical Bitstream -> Ogg/FLAC Logical Bitstream -> FLAC Native Bitstream. dr_flac is designed +in such a way that the core sections assume everything is delivered in native format. Therefore, for each encapsulation type +dr_flac is supporting there needs to be a layer sitting on top of the onRead and onSeek callbacks that ensures the bits read from +the physical Ogg bitstream are converted and delivered in native FLAC format. +*/ +typedef struct +{ + drflac_read_proc onRead; /* The original onRead callback from drflac_open() and family. */ + drflac_seek_proc onSeek; /* The original onSeek callback from drflac_open() and family. */ + void* pUserData; /* The user data passed on onRead and onSeek. This is the user data that was passed on drflac_open() and family. */ + drflac_uint64 currentBytePos; /* The position of the byte we are sitting on in the physical byte stream. Used for efficient seeking. */ + drflac_uint64 firstBytePos; /* The position of the first byte in the physical bitstream. Points to the start of the "OggS" identifier of the FLAC bos page. */ + drflac_uint32 serialNumber; /* The serial number of the FLAC audio pages. This is determined by the initial header page that was read during initialization. */ + drflac_ogg_page_header bosPageHeader; /* Used for seeking. */ + drflac_ogg_page_header currentPageHeader; + drflac_uint32 bytesRemainingInPage; + drflac_uint32 pageDataSize; + drflac_uint8 pageData[DRFLAC_OGG_MAX_PAGE_SIZE]; +} drflac_oggbs; /* oggbs = Ogg Bitstream */ + +static size_t drflac_oggbs__read_physical(drflac_oggbs* oggbs, void* bufferOut, size_t bytesToRead) +{ + size_t bytesActuallyRead = oggbs->onRead(oggbs->pUserData, bufferOut, bytesToRead); + oggbs->currentBytePos += bytesActuallyRead; + + return bytesActuallyRead; +} + +static drflac_bool32 drflac_oggbs__seek_physical(drflac_oggbs* oggbs, drflac_uint64 offset, drflac_seek_origin origin) +{ + if (origin == drflac_seek_origin_start) { + if (offset <= 0x7FFFFFFF) { + if (!oggbs->onSeek(oggbs->pUserData, (int)offset, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + oggbs->currentBytePos = offset; + + return DRFLAC_TRUE; + } else { + if (!oggbs->onSeek(oggbs->pUserData, 0x7FFFFFFF, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + oggbs->currentBytePos = offset; + + return drflac_oggbs__seek_physical(oggbs, offset - 0x7FFFFFFF, drflac_seek_origin_current); + } + } else { + while (offset > 0x7FFFFFFF) { + if (!oggbs->onSeek(oggbs->pUserData, 0x7FFFFFFF, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + oggbs->currentBytePos += 0x7FFFFFFF; + offset -= 0x7FFFFFFF; + } + + if (!oggbs->onSeek(oggbs->pUserData, (int)offset, drflac_seek_origin_current)) { /* <-- Safe cast thanks to the loop above. */ + return DRFLAC_FALSE; + } + oggbs->currentBytePos += offset; + + return DRFLAC_TRUE; + } +} + +static drflac_bool32 drflac_oggbs__goto_next_page(drflac_oggbs* oggbs, drflac_ogg_crc_mismatch_recovery recoveryMethod) +{ + drflac_ogg_page_header header; + for (;;) { + drflac_uint32 crc32 = 0; + drflac_uint32 bytesRead; + drflac_uint32 pageBodySize; +#ifndef DR_FLAC_NO_CRC + drflac_uint32 actualCRC32; +#endif + + if (drflac_ogg__read_page_header(oggbs->onRead, oggbs->pUserData, &header, &bytesRead, &crc32) != DRFLAC_SUCCESS) { + return DRFLAC_FALSE; + } + oggbs->currentBytePos += bytesRead; + + pageBodySize = drflac_ogg__get_page_body_size(&header); + if (pageBodySize > DRFLAC_OGG_MAX_PAGE_SIZE) { + continue; /* Invalid page size. Assume it's corrupted and just move to the next page. */ + } + + if (header.serialNumber != oggbs->serialNumber) { + /* It's not a FLAC page. Skip it. */ + if (pageBodySize > 0 && !drflac_oggbs__seek_physical(oggbs, pageBodySize, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + continue; + } + + + /* We need to read the entire page and then do a CRC check on it. If there's a CRC mismatch we need to skip this page. */ + if (drflac_oggbs__read_physical(oggbs, oggbs->pageData, pageBodySize) != pageBodySize) { + return DRFLAC_FALSE; + } + oggbs->pageDataSize = pageBodySize; + +#ifndef DR_FLAC_NO_CRC + actualCRC32 = drflac_crc32_buffer(crc32, oggbs->pageData, oggbs->pageDataSize); + if (actualCRC32 != header.checksum) { + if (recoveryMethod == drflac_ogg_recover_on_crc_mismatch) { + continue; /* CRC mismatch. Skip this page. */ + } else { + /* + Even though we are failing on a CRC mismatch, we still want our stream to be in a good state. Therefore we + go to the next valid page to ensure we're in a good state, but return false to let the caller know that the + seek did not fully complete. + */ + drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch); + return DRFLAC_FALSE; + } + } +#else + (void)recoveryMethod; /* <-- Silence a warning. */ +#endif + + oggbs->currentPageHeader = header; + oggbs->bytesRemainingInPage = pageBodySize; + return DRFLAC_TRUE; + } +} + +/* Function below is unused at the moment, but I might be re-adding it later. */ +#if 0 +static drflac_uint8 drflac_oggbs__get_current_segment_index(drflac_oggbs* oggbs, drflac_uint8* pBytesRemainingInSeg) +{ + drflac_uint32 bytesConsumedInPage = drflac_ogg__get_page_body_size(&oggbs->currentPageHeader) - oggbs->bytesRemainingInPage; + drflac_uint8 iSeg = 0; + drflac_uint32 iByte = 0; + while (iByte < bytesConsumedInPage) { + drflac_uint8 segmentSize = oggbs->currentPageHeader.segmentTable[iSeg]; + if (iByte + segmentSize > bytesConsumedInPage) { + break; + } else { + iSeg += 1; + iByte += segmentSize; + } + } + + *pBytesRemainingInSeg = oggbs->currentPageHeader.segmentTable[iSeg] - (drflac_uint8)(bytesConsumedInPage - iByte); + return iSeg; +} + +static drflac_bool32 drflac_oggbs__seek_to_next_packet(drflac_oggbs* oggbs) +{ + /* The current packet ends when we get to the segment with a lacing value of < 255 which is not at the end of a page. */ + for (;;) { + drflac_bool32 atEndOfPage = DRFLAC_FALSE; + + drflac_uint8 bytesRemainingInSeg; + drflac_uint8 iFirstSeg = drflac_oggbs__get_current_segment_index(oggbs, &bytesRemainingInSeg); + + drflac_uint32 bytesToEndOfPacketOrPage = bytesRemainingInSeg; + for (drflac_uint8 iSeg = iFirstSeg; iSeg < oggbs->currentPageHeader.segmentCount; ++iSeg) { + drflac_uint8 segmentSize = oggbs->currentPageHeader.segmentTable[iSeg]; + if (segmentSize < 255) { + if (iSeg == oggbs->currentPageHeader.segmentCount-1) { + atEndOfPage = DRFLAC_TRUE; + } + + break; + } + + bytesToEndOfPacketOrPage += segmentSize; + } + + /* + At this point we will have found either the packet or the end of the page. If were at the end of the page we'll + want to load the next page and keep searching for the end of the packet. + */ + drflac_oggbs__seek_physical(oggbs, bytesToEndOfPacketOrPage, drflac_seek_origin_current); + oggbs->bytesRemainingInPage -= bytesToEndOfPacketOrPage; + + if (atEndOfPage) { + /* + We're potentially at the next packet, but we need to check the next page first to be sure because the packet may + straddle pages. + */ + if (!drflac_oggbs__goto_next_page(oggbs)) { + return DRFLAC_FALSE; + } + + /* If it's a fresh packet it most likely means we're at the next packet. */ + if ((oggbs->currentPageHeader.headerType & 0x01) == 0) { + return DRFLAC_TRUE; + } + } else { + /* We're at the next packet. */ + return DRFLAC_TRUE; + } + } +} + +static drflac_bool32 drflac_oggbs__seek_to_next_frame(drflac_oggbs* oggbs) +{ + /* The bitstream should be sitting on the first byte just after the header of the frame. */ + + /* What we're actually doing here is seeking to the start of the next packet. */ + return drflac_oggbs__seek_to_next_packet(oggbs); +} +#endif + +static size_t drflac__on_read_ogg(void* pUserData, void* bufferOut, size_t bytesToRead) +{ + drflac_oggbs* oggbs = (drflac_oggbs*)pUserData; + drflac_uint8* pRunningBufferOut = (drflac_uint8*)bufferOut; + size_t bytesRead = 0; + + DRFLAC_ASSERT(oggbs != NULL); + DRFLAC_ASSERT(pRunningBufferOut != NULL); + + /* Reading is done page-by-page. If we've run out of bytes in the page we need to move to the next one. */ + while (bytesRead < bytesToRead) { + size_t bytesRemainingToRead = bytesToRead - bytesRead; + + if (oggbs->bytesRemainingInPage >= bytesRemainingToRead) { + DRFLAC_COPY_MEMORY(pRunningBufferOut, oggbs->pageData + (oggbs->pageDataSize - oggbs->bytesRemainingInPage), bytesRemainingToRead); + bytesRead += bytesRemainingToRead; + oggbs->bytesRemainingInPage -= (drflac_uint32)bytesRemainingToRead; + break; + } + + /* If we get here it means some of the requested data is contained in the next pages. */ + if (oggbs->bytesRemainingInPage > 0) { + DRFLAC_COPY_MEMORY(pRunningBufferOut, oggbs->pageData + (oggbs->pageDataSize - oggbs->bytesRemainingInPage), oggbs->bytesRemainingInPage); + bytesRead += oggbs->bytesRemainingInPage; + pRunningBufferOut += oggbs->bytesRemainingInPage; + oggbs->bytesRemainingInPage = 0; + } + + DRFLAC_ASSERT(bytesRemainingToRead > 0); + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) { + break; /* Failed to go to the next page. Might have simply hit the end of the stream. */ + } + } + + return bytesRead; +} + +static drflac_bool32 drflac__on_seek_ogg(void* pUserData, int offset, drflac_seek_origin origin) +{ + drflac_oggbs* oggbs = (drflac_oggbs*)pUserData; + int bytesSeeked = 0; + + DRFLAC_ASSERT(oggbs != NULL); + DRFLAC_ASSERT(offset >= 0); /* <-- Never seek backwards. */ + + /* Seeking is always forward which makes things a lot simpler. */ + if (origin == drflac_seek_origin_start) { + if (!drflac_oggbs__seek_physical(oggbs, (int)oggbs->firstBytePos, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_fail_on_crc_mismatch)) { + return DRFLAC_FALSE; + } + + return drflac__on_seek_ogg(pUserData, offset, drflac_seek_origin_current); + } + + DRFLAC_ASSERT(origin == drflac_seek_origin_current); + + while (bytesSeeked < offset) { + int bytesRemainingToSeek = offset - bytesSeeked; + DRFLAC_ASSERT(bytesRemainingToSeek >= 0); + + if (oggbs->bytesRemainingInPage >= (size_t)bytesRemainingToSeek) { + bytesSeeked += bytesRemainingToSeek; + (void)bytesSeeked; /* <-- Silence a dead store warning emitted by Clang Static Analyzer. */ + oggbs->bytesRemainingInPage -= bytesRemainingToSeek; + break; + } + + /* If we get here it means some of the requested data is contained in the next pages. */ + if (oggbs->bytesRemainingInPage > 0) { + bytesSeeked += (int)oggbs->bytesRemainingInPage; + oggbs->bytesRemainingInPage = 0; + } + + DRFLAC_ASSERT(bytesRemainingToSeek > 0); + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_fail_on_crc_mismatch)) { + /* Failed to go to the next page. We either hit the end of the stream or had a CRC mismatch. */ + return DRFLAC_FALSE; + } + } + + return DRFLAC_TRUE; +} + + +static drflac_bool32 drflac_ogg__seek_to_pcm_frame(drflac* pFlac, drflac_uint64 pcmFrameIndex) +{ + drflac_oggbs* oggbs = (drflac_oggbs*)pFlac->_oggbs; + drflac_uint64 originalBytePos; + drflac_uint64 runningGranulePosition; + drflac_uint64 runningFrameBytePos; + drflac_uint64 runningPCMFrameCount; + + DRFLAC_ASSERT(oggbs != NULL); + + originalBytePos = oggbs->currentBytePos; /* For recovery. Points to the OggS identifier. */ + + /* First seek to the first frame. */ + if (!drflac__seek_to_byte(&pFlac->bs, pFlac->firstFLACFramePosInBytes)) { + return DRFLAC_FALSE; + } + oggbs->bytesRemainingInPage = 0; + + runningGranulePosition = 0; + for (;;) { + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) { + drflac_oggbs__seek_physical(oggbs, originalBytePos, drflac_seek_origin_start); + return DRFLAC_FALSE; /* Never did find that sample... */ + } + + runningFrameBytePos = oggbs->currentBytePos - drflac_ogg__get_page_header_size(&oggbs->currentPageHeader) - oggbs->pageDataSize; + if (oggbs->currentPageHeader.granulePosition >= pcmFrameIndex) { + break; /* The sample is somewhere in the previous page. */ + } + + /* + At this point we know the sample is not in the previous page. It could possibly be in this page. For simplicity we + disregard any pages that do not begin a fresh packet. + */ + if ((oggbs->currentPageHeader.headerType & 0x01) == 0) { /* <-- Is it a fresh page? */ + if (oggbs->currentPageHeader.segmentTable[0] >= 2) { + drflac_uint8 firstBytesInPage[2]; + firstBytesInPage[0] = oggbs->pageData[0]; + firstBytesInPage[1] = oggbs->pageData[1]; + + if ((firstBytesInPage[0] == 0xFF) && (firstBytesInPage[1] & 0xFC) == 0xF8) { /* <-- Does the page begin with a frame's sync code? */ + runningGranulePosition = oggbs->currentPageHeader.granulePosition; + } + + continue; + } + } + } + + /* + We found the page that that is closest to the sample, so now we need to find it. The first thing to do is seek to the + start of that page. In the loop above we checked that it was a fresh page which means this page is also the start of + a new frame. This property means that after we've seeked to the page we can immediately start looping over frames until + we find the one containing the target sample. + */ + if (!drflac_oggbs__seek_physical(oggbs, runningFrameBytePos, drflac_seek_origin_start)) { + return DRFLAC_FALSE; + } + if (!drflac_oggbs__goto_next_page(oggbs, drflac_ogg_recover_on_crc_mismatch)) { + return DRFLAC_FALSE; + } + + /* + At this point we'll be sitting on the first byte of the frame header of the first frame in the page. We just keep + looping over these frames until we find the one containing the sample we're after. + */ + runningPCMFrameCount = runningGranulePosition; + for (;;) { + /* + There are two ways to find the sample and seek past irrelevant frames: + 1) Use the native FLAC decoder. + 2) Use Ogg's framing system. + + Both of these options have their own pros and cons. Using the native FLAC decoder is slower because it needs to + do a full decode of the frame. Using Ogg's framing system is faster, but more complicated and involves some code + duplication for the decoding of frame headers. + + Another thing to consider is that using the Ogg framing system will perform direct seeking of the physical Ogg + bitstream. This is important to consider because it means we cannot read data from the drflac_bs object using the + standard drflac__*() APIs because that will read in extra data for its own internal caching which in turn breaks + the positioning of the read pointer of the physical Ogg bitstream. Therefore, anything that would normally be read + using the native FLAC decoding APIs, such as drflac__read_next_flac_frame_header(), need to be re-implemented so as to + avoid the use of the drflac_bs object. + + Considering these issues, I have decided to use the slower native FLAC decoding method for the following reasons: + 1) Seeking is already partially accelerated using Ogg's paging system in the code block above. + 2) Seeking in an Ogg encapsulated FLAC stream is probably quite uncommon. + 3) Simplicity. + */ + drflac_uint64 firstPCMFrameInFLACFrame = 0; + drflac_uint64 lastPCMFrameInFLACFrame = 0; + drflac_uint64 pcmFrameCountInThisFrame; + + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + return DRFLAC_FALSE; + } + + drflac__get_pcm_frame_range_of_current_flac_frame(pFlac, &firstPCMFrameInFLACFrame, &lastPCMFrameInFLACFrame); + + pcmFrameCountInThisFrame = (lastPCMFrameInFLACFrame - firstPCMFrameInFLACFrame) + 1; + + /* If we are seeking to the end of the file and we've just hit it, we're done. */ + if (pcmFrameIndex == pFlac->totalPCMFrameCount && (runningPCMFrameCount + pcmFrameCountInThisFrame) == pFlac->totalPCMFrameCount) { + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + pFlac->currentPCMFrame = pcmFrameIndex; + pFlac->currentFLACFrame.pcmFramesRemaining = 0; + return DRFLAC_TRUE; + } else { + return DRFLAC_FALSE; + } + } + + if (pcmFrameIndex < (runningPCMFrameCount + pcmFrameCountInThisFrame)) { + /* + The sample should be in this FLAC frame. We need to fully decode it, however if it's an invalid frame (a CRC mismatch), we need to pretend + it never existed and keep iterating. + */ + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + /* The frame is valid. We just need to skip over some samples to ensure it's sample-exact. */ + drflac_uint64 pcmFramesToDecode = (size_t)(pcmFrameIndex - runningPCMFrameCount); /* <-- Safe cast because the maximum number of samples in a frame is 65535. */ + if (pcmFramesToDecode == 0) { + return DRFLAC_TRUE; + } + + pFlac->currentPCMFrame = runningPCMFrameCount; + + return drflac__seek_forward_by_pcm_frames(pFlac, pcmFramesToDecode) == pcmFramesToDecode; /* <-- If this fails, something bad has happened (it should never fail). */ + } else { + if (result == DRFLAC_CRC_MISMATCH) { + continue; /* CRC mismatch. Pretend this frame never existed. */ + } else { + return DRFLAC_FALSE; + } + } + } else { + /* + It's not in this frame. We need to seek past the frame, but check if there was a CRC mismatch. If so, we pretend this + frame never existed and leave the running sample count untouched. + */ + drflac_result result = drflac__seek_to_next_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + runningPCMFrameCount += pcmFrameCountInThisFrame; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + continue; /* CRC mismatch. Pretend this frame never existed. */ + } else { + return DRFLAC_FALSE; + } + } + } + } +} + + + +static drflac_bool32 drflac__init_private__ogg(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, void* pUserDataMD, drflac_bool32 relaxed) +{ + drflac_ogg_page_header header; + drflac_uint32 crc32 = DRFLAC_OGG_CAPTURE_PATTERN_CRC32; + drflac_uint32 bytesRead = 0; + + /* Pre Condition: The bit stream should be sitting just past the 4-byte OggS capture pattern. */ + (void)relaxed; + + pInit->container = drflac_container_ogg; + pInit->oggFirstBytePos = 0; + + /* + We'll get here if the first 4 bytes of the stream were the OggS capture pattern, however it doesn't necessarily mean the + stream includes FLAC encoded audio. To check for this we need to scan the beginning-of-stream page markers and check if + any match the FLAC specification. Important to keep in mind that the stream may be multiplexed. + */ + if (drflac_ogg__read_page_header_after_capture_pattern(onRead, pUserData, &header, &bytesRead, &crc32) != DRFLAC_SUCCESS) { + return DRFLAC_FALSE; + } + pInit->runningFilePos += bytesRead; + + for (;;) { + int pageBodySize; + + /* Break if we're past the beginning of stream page. */ + if ((header.headerType & 0x02) == 0) { + return DRFLAC_FALSE; + } + + /* Check if it's a FLAC header. */ + pageBodySize = drflac_ogg__get_page_body_size(&header); + if (pageBodySize == 51) { /* 51 = the lacing value of the FLAC header packet. */ + /* It could be a FLAC page... */ + drflac_uint32 bytesRemainingInPage = pageBodySize; + drflac_uint8 packetType; + + if (onRead(pUserData, &packetType, 1) != 1) { + return DRFLAC_FALSE; + } + + bytesRemainingInPage -= 1; + if (packetType == 0x7F) { + /* Increasingly more likely to be a FLAC page... */ + drflac_uint8 sig[4]; + if (onRead(pUserData, sig, 4) != 4) { + return DRFLAC_FALSE; + } + + bytesRemainingInPage -= 4; + if (sig[0] == 'F' && sig[1] == 'L' && sig[2] == 'A' && sig[3] == 'C') { + /* Almost certainly a FLAC page... */ + drflac_uint8 mappingVersion[2]; + if (onRead(pUserData, mappingVersion, 2) != 2) { + return DRFLAC_FALSE; + } + + if (mappingVersion[0] != 1) { + return DRFLAC_FALSE; /* Only supporting version 1.x of the Ogg mapping. */ + } + + /* + The next 2 bytes are the non-audio packets, not including this one. We don't care about this because we're going to + be handling it in a generic way based on the serial number and packet types. + */ + if (!onSeek(pUserData, 2, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + + /* Expecting the native FLAC signature "fLaC". */ + if (onRead(pUserData, sig, 4) != 4) { + return DRFLAC_FALSE; + } + + if (sig[0] == 'f' && sig[1] == 'L' && sig[2] == 'a' && sig[3] == 'C') { + /* The remaining data in the page should be the STREAMINFO block. */ + drflac_streaminfo streaminfo; + drflac_uint8 isLastBlock; + drflac_uint8 blockType; + drflac_uint32 blockSize; + if (!drflac__read_and_decode_block_header(onRead, pUserData, &isLastBlock, &blockType, &blockSize)) { + return DRFLAC_FALSE; + } + + if (blockType != DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO || blockSize != 34) { + return DRFLAC_FALSE; /* Invalid block type. First block must be the STREAMINFO block. */ + } + + if (drflac__read_streaminfo(onRead, pUserData, &streaminfo)) { + /* Success! */ + pInit->hasStreamInfoBlock = DRFLAC_TRUE; + pInit->sampleRate = streaminfo.sampleRate; + pInit->channels = streaminfo.channels; + pInit->bitsPerSample = streaminfo.bitsPerSample; + pInit->totalPCMFrameCount = streaminfo.totalPCMFrameCount; + pInit->maxBlockSizeInPCMFrames = streaminfo.maxBlockSizeInPCMFrames; + pInit->hasMetadataBlocks = !isLastBlock; + + if (onMeta) { + drflac_metadata metadata; + metadata.type = DRFLAC_METADATA_BLOCK_TYPE_STREAMINFO; + metadata.pRawData = NULL; + metadata.rawDataSize = 0; + metadata.data.streaminfo = streaminfo; + onMeta(pUserDataMD, &metadata); + } + + pInit->runningFilePos += pageBodySize; + pInit->oggFirstBytePos = pInit->runningFilePos - 79; /* Subtracting 79 will place us right on top of the "OggS" identifier of the FLAC bos page. */ + pInit->oggSerial = header.serialNumber; + pInit->oggBosHeader = header; + break; + } else { + /* Failed to read STREAMINFO block. Aww, so close... */ + return DRFLAC_FALSE; + } + } else { + /* Invalid file. */ + return DRFLAC_FALSE; + } + } else { + /* Not a FLAC header. Skip it. */ + if (!onSeek(pUserData, bytesRemainingInPage, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + } + } else { + /* Not a FLAC header. Seek past the entire page and move on to the next. */ + if (!onSeek(pUserData, bytesRemainingInPage, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + } + } else { + if (!onSeek(pUserData, pageBodySize, drflac_seek_origin_current)) { + return DRFLAC_FALSE; + } + } + + pInit->runningFilePos += pageBodySize; + + + /* Read the header of the next page. */ + if (drflac_ogg__read_page_header(onRead, pUserData, &header, &bytesRead, &crc32) != DRFLAC_SUCCESS) { + return DRFLAC_FALSE; + } + pInit->runningFilePos += bytesRead; + } + + /* + If we get here it means we found a FLAC audio stream. We should be sitting on the first byte of the header of the next page. The next + packets in the FLAC logical stream contain the metadata. The only thing left to do in the initialization phase for Ogg is to create the + Ogg bistream object. + */ + pInit->hasMetadataBlocks = DRFLAC_TRUE; /* <-- Always have at least VORBIS_COMMENT metadata block. */ + return DRFLAC_TRUE; +} +#endif + +static drflac_bool32 drflac__init_private(drflac_init_info* pInit, drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, void* pUserDataMD) +{ + drflac_bool32 relaxed; + drflac_uint8 id[4]; + + if (pInit == NULL || onRead == NULL || onSeek == NULL) { + return DRFLAC_FALSE; + } + + DRFLAC_ZERO_MEMORY(pInit, sizeof(*pInit)); + pInit->onRead = onRead; + pInit->onSeek = onSeek; + pInit->onMeta = onMeta; + pInit->container = container; + pInit->pUserData = pUserData; + pInit->pUserDataMD = pUserDataMD; + + pInit->bs.onRead = onRead; + pInit->bs.onSeek = onSeek; + pInit->bs.pUserData = pUserData; + drflac__reset_cache(&pInit->bs); + + + /* If the container is explicitly defined then we can try opening in relaxed mode. */ + relaxed = container != drflac_container_unknown; + + /* Skip over any ID3 tags. */ + for (;;) { + if (onRead(pUserData, id, 4) != 4) { + return DRFLAC_FALSE; /* Ran out of data. */ + } + pInit->runningFilePos += 4; + + if (id[0] == 'I' && id[1] == 'D' && id[2] == '3') { + drflac_uint8 header[6]; + drflac_uint8 flags; + drflac_uint32 headerSize; + + if (onRead(pUserData, header, 6) != 6) { + return DRFLAC_FALSE; /* Ran out of data. */ + } + pInit->runningFilePos += 6; + + flags = header[1]; + + DRFLAC_COPY_MEMORY(&headerSize, header+2, 4); + headerSize = drflac__unsynchsafe_32(drflac__be2host_32(headerSize)); + if (flags & 0x10) { + headerSize += 10; + } + + if (!onSeek(pUserData, headerSize, drflac_seek_origin_current)) { + return DRFLAC_FALSE; /* Failed to seek past the tag. */ + } + pInit->runningFilePos += headerSize; + } else { + break; + } + } + + if (id[0] == 'f' && id[1] == 'L' && id[2] == 'a' && id[3] == 'C') { + return drflac__init_private__native(pInit, onRead, onSeek, onMeta, pUserData, pUserDataMD, relaxed); + } +#ifndef DR_FLAC_NO_OGG + if (id[0] == 'O' && id[1] == 'g' && id[2] == 'g' && id[3] == 'S') { + return drflac__init_private__ogg(pInit, onRead, onSeek, onMeta, pUserData, pUserDataMD, relaxed); + } +#endif + + /* If we get here it means we likely don't have a header. Try opening in relaxed mode, if applicable. */ + if (relaxed) { + if (container == drflac_container_native) { + return drflac__init_private__native(pInit, onRead, onSeek, onMeta, pUserData, pUserDataMD, relaxed); + } +#ifndef DR_FLAC_NO_OGG + if (container == drflac_container_ogg) { + return drflac__init_private__ogg(pInit, onRead, onSeek, onMeta, pUserData, pUserDataMD, relaxed); + } +#endif + } + + /* Unsupported container. */ + return DRFLAC_FALSE; +} + +static void drflac__init_from_info(drflac* pFlac, const drflac_init_info* pInit) +{ + DRFLAC_ASSERT(pFlac != NULL); + DRFLAC_ASSERT(pInit != NULL); + + DRFLAC_ZERO_MEMORY(pFlac, sizeof(*pFlac)); + pFlac->bs = pInit->bs; + pFlac->onMeta = pInit->onMeta; + pFlac->pUserDataMD = pInit->pUserDataMD; + pFlac->maxBlockSizeInPCMFrames = pInit->maxBlockSizeInPCMFrames; + pFlac->sampleRate = pInit->sampleRate; + pFlac->channels = (drflac_uint8)pInit->channels; + pFlac->bitsPerSample = (drflac_uint8)pInit->bitsPerSample; + pFlac->totalPCMFrameCount = pInit->totalPCMFrameCount; + pFlac->container = pInit->container; +} + + +static drflac* drflac_open_with_metadata_private(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, void* pUserDataMD, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac_init_info init; + drflac_uint32 allocationSize; + drflac_uint32 wholeSIMDVectorCountPerChannel; + drflac_uint32 decodedSamplesAllocationSize; +#ifndef DR_FLAC_NO_OGG + drflac_oggbs* pOggbs = NULL; +#endif + drflac_uint64 firstFramePos; + drflac_uint64 seektablePos; + drflac_uint32 seekpointCount; + drflac_allocation_callbacks allocationCallbacks; + drflac* pFlac; + + /* CPU support first. */ + drflac__init_cpu_caps(); + + if (!drflac__init_private(&init, onRead, onSeek, onMeta, container, pUserData, pUserDataMD)) { + return NULL; + } + + if (pAllocationCallbacks != NULL) { + allocationCallbacks = *pAllocationCallbacks; + if (allocationCallbacks.onFree == NULL || (allocationCallbacks.onMalloc == NULL && allocationCallbacks.onRealloc == NULL)) { + return NULL; /* Invalid allocation callbacks. */ + } + } else { + allocationCallbacks.pUserData = NULL; + allocationCallbacks.onMalloc = drflac__malloc_default; + allocationCallbacks.onRealloc = drflac__realloc_default; + allocationCallbacks.onFree = drflac__free_default; + } + + + /* + The size of the allocation for the drflac object needs to be large enough to fit the following: + 1) The main members of the drflac structure + 2) A block of memory large enough to store the decoded samples of the largest frame in the stream + 3) If the container is Ogg, a drflac_oggbs object + + The complicated part of the allocation is making sure there's enough room the decoded samples, taking into consideration + the different SIMD instruction sets. + */ + allocationSize = sizeof(drflac); + + /* + The allocation size for decoded frames depends on the number of 32-bit integers that fit inside the largest SIMD vector + we are supporting. + */ + if ((init.maxBlockSizeInPCMFrames % (DRFLAC_MAX_SIMD_VECTOR_SIZE / sizeof(drflac_int32))) == 0) { + wholeSIMDVectorCountPerChannel = (init.maxBlockSizeInPCMFrames / (DRFLAC_MAX_SIMD_VECTOR_SIZE / sizeof(drflac_int32))); + } else { + wholeSIMDVectorCountPerChannel = (init.maxBlockSizeInPCMFrames / (DRFLAC_MAX_SIMD_VECTOR_SIZE / sizeof(drflac_int32))) + 1; + } + + decodedSamplesAllocationSize = wholeSIMDVectorCountPerChannel * DRFLAC_MAX_SIMD_VECTOR_SIZE * init.channels; + + allocationSize += decodedSamplesAllocationSize; + allocationSize += DRFLAC_MAX_SIMD_VECTOR_SIZE; /* Allocate extra bytes to ensure we have enough for alignment. */ + +#ifndef DR_FLAC_NO_OGG + /* There's additional data required for Ogg streams. */ + if (init.container == drflac_container_ogg) { + allocationSize += sizeof(drflac_oggbs); + + pOggbs = (drflac_oggbs*)drflac__malloc_from_callbacks(sizeof(*pOggbs), &allocationCallbacks); + if (pOggbs == NULL) { + return NULL; /*DRFLAC_OUT_OF_MEMORY;*/ + } + + DRFLAC_ZERO_MEMORY(pOggbs, sizeof(*pOggbs)); + pOggbs->onRead = onRead; + pOggbs->onSeek = onSeek; + pOggbs->pUserData = pUserData; + pOggbs->currentBytePos = init.oggFirstBytePos; + pOggbs->firstBytePos = init.oggFirstBytePos; + pOggbs->serialNumber = init.oggSerial; + pOggbs->bosPageHeader = init.oggBosHeader; + pOggbs->bytesRemainingInPage = 0; + } +#endif + + /* + This part is a bit awkward. We need to load the seektable so that it can be referenced in-memory, but I want the drflac object to + consist of only a single heap allocation. To this, the size of the seek table needs to be known, which we determine when reading + and decoding the metadata. + */ + firstFramePos = 42; /* <-- We know we are at byte 42 at this point. */ + seektablePos = 0; + seekpointCount = 0; + if (init.hasMetadataBlocks) { + drflac_read_proc onReadOverride = onRead; + drflac_seek_proc onSeekOverride = onSeek; + void* pUserDataOverride = pUserData; + +#ifndef DR_FLAC_NO_OGG + if (init.container == drflac_container_ogg) { + onReadOverride = drflac__on_read_ogg; + onSeekOverride = drflac__on_seek_ogg; + pUserDataOverride = (void*)pOggbs; + } +#endif + + if (!drflac__read_and_decode_metadata(onReadOverride, onSeekOverride, onMeta, pUserDataOverride, pUserDataMD, &firstFramePos, &seektablePos, &seekpointCount, &allocationCallbacks)) { + #ifndef DR_FLAC_NO_OGG + drflac__free_from_callbacks(pOggbs, &allocationCallbacks); + #endif + return NULL; + } + + allocationSize += seekpointCount * sizeof(drflac_seekpoint); + } + + + pFlac = (drflac*)drflac__malloc_from_callbacks(allocationSize, &allocationCallbacks); + if (pFlac == NULL) { + #ifndef DR_FLAC_NO_OGG + drflac__free_from_callbacks(pOggbs, &allocationCallbacks); + #endif + return NULL; + } + + drflac__init_from_info(pFlac, &init); + pFlac->allocationCallbacks = allocationCallbacks; + pFlac->pDecodedSamples = (drflac_int32*)drflac_align((size_t)pFlac->pExtraData, DRFLAC_MAX_SIMD_VECTOR_SIZE); + +#ifndef DR_FLAC_NO_OGG + if (init.container == drflac_container_ogg) { + drflac_oggbs* pInternalOggbs = (drflac_oggbs*)((drflac_uint8*)pFlac->pDecodedSamples + decodedSamplesAllocationSize + (seekpointCount * sizeof(drflac_seekpoint))); + DRFLAC_COPY_MEMORY(pInternalOggbs, pOggbs, sizeof(*pOggbs)); + + /* At this point the pOggbs object has been handed over to pInternalOggbs and can be freed. */ + drflac__free_from_callbacks(pOggbs, &allocationCallbacks); + pOggbs = NULL; + + /* The Ogg bistream needs to be layered on top of the original bitstream. */ + pFlac->bs.onRead = drflac__on_read_ogg; + pFlac->bs.onSeek = drflac__on_seek_ogg; + pFlac->bs.pUserData = (void*)pInternalOggbs; + pFlac->_oggbs = (void*)pInternalOggbs; + } +#endif + + pFlac->firstFLACFramePosInBytes = firstFramePos; + + /* NOTE: Seektables are not currently compatible with Ogg encapsulation (Ogg has its own accelerated seeking system). I may change this later, so I'm leaving this here for now. */ +#ifndef DR_FLAC_NO_OGG + if (init.container == drflac_container_ogg) + { + pFlac->pSeekpoints = NULL; + pFlac->seekpointCount = 0; + } + else +#endif + { + /* If we have a seektable we need to load it now, making sure we move back to where we were previously. */ + if (seektablePos != 0) { + pFlac->seekpointCount = seekpointCount; + pFlac->pSeekpoints = (drflac_seekpoint*)((drflac_uint8*)pFlac->pDecodedSamples + decodedSamplesAllocationSize); + + DRFLAC_ASSERT(pFlac->bs.onSeek != NULL); + DRFLAC_ASSERT(pFlac->bs.onRead != NULL); + + /* Seek to the seektable, then just read directly into our seektable buffer. */ + if (pFlac->bs.onSeek(pFlac->bs.pUserData, (int)seektablePos, drflac_seek_origin_start)) { + drflac_uint32 iSeekpoint; + + for (iSeekpoint = 0; iSeekpoint < seekpointCount; iSeekpoint += 1) { + if (pFlac->bs.onRead(pFlac->bs.pUserData, pFlac->pSeekpoints + iSeekpoint, DRFLAC_SEEKPOINT_SIZE_IN_BYTES) == DRFLAC_SEEKPOINT_SIZE_IN_BYTES) { + /* Endian swap. */ + pFlac->pSeekpoints[iSeekpoint].firstPCMFrame = drflac__be2host_64(pFlac->pSeekpoints[iSeekpoint].firstPCMFrame); + pFlac->pSeekpoints[iSeekpoint].flacFrameOffset = drflac__be2host_64(pFlac->pSeekpoints[iSeekpoint].flacFrameOffset); + pFlac->pSeekpoints[iSeekpoint].pcmFrameCount = drflac__be2host_16(pFlac->pSeekpoints[iSeekpoint].pcmFrameCount); + } else { + /* Failed to read the seektable. Pretend we don't have one. */ + pFlac->pSeekpoints = NULL; + pFlac->seekpointCount = 0; + break; + } + } + + /* We need to seek back to where we were. If this fails it's a critical error. */ + if (!pFlac->bs.onSeek(pFlac->bs.pUserData, (int)pFlac->firstFLACFramePosInBytes, drflac_seek_origin_start)) { + drflac__free_from_callbacks(pFlac, &allocationCallbacks); + return NULL; + } + } else { + /* Failed to seek to the seektable. Ominous sign, but for now we can just pretend we don't have one. */ + pFlac->pSeekpoints = NULL; + pFlac->seekpointCount = 0; + } + } + } + + + /* + If we get here, but don't have a STREAMINFO block, it means we've opened the stream in relaxed mode and need to decode + the first frame. + */ + if (!init.hasStreamInfoBlock) { + pFlac->currentFLACFrame.header = init.firstFrameHeader; + for (;;) { + drflac_result result = drflac__decode_flac_frame(pFlac); + if (result == DRFLAC_SUCCESS) { + break; + } else { + if (result == DRFLAC_CRC_MISMATCH) { + if (!drflac__read_next_flac_frame_header(&pFlac->bs, pFlac->bitsPerSample, &pFlac->currentFLACFrame.header)) { + drflac__free_from_callbacks(pFlac, &allocationCallbacks); + return NULL; + } + continue; + } else { + drflac__free_from_callbacks(pFlac, &allocationCallbacks); + return NULL; + } + } + } + } + + return pFlac; +} + + + +#ifndef DR_FLAC_NO_STDIO +#include +#ifndef DR_FLAC_NO_WCHAR +#include /* For wcslen(), wcsrtombs() */ +#endif + +/* Errno */ +/* drflac_result_from_errno() is only used for fopen() and wfopen() so putting it inside DR_WAV_NO_STDIO for now. If something else needs this later we can move it out. */ +#include +static drflac_result drflac_result_from_errno(int e) +{ + switch (e) + { + case 0: return DRFLAC_SUCCESS; + #ifdef EPERM + case EPERM: return DRFLAC_INVALID_OPERATION; + #endif + #ifdef ENOENT + case ENOENT: return DRFLAC_DOES_NOT_EXIST; + #endif + #ifdef ESRCH + case ESRCH: return DRFLAC_DOES_NOT_EXIST; + #endif + #ifdef EINTR + case EINTR: return DRFLAC_INTERRUPT; + #endif + #ifdef EIO + case EIO: return DRFLAC_IO_ERROR; + #endif + #ifdef ENXIO + case ENXIO: return DRFLAC_DOES_NOT_EXIST; + #endif + #ifdef E2BIG + case E2BIG: return DRFLAC_INVALID_ARGS; + #endif + #ifdef ENOEXEC + case ENOEXEC: return DRFLAC_INVALID_FILE; + #endif + #ifdef EBADF + case EBADF: return DRFLAC_INVALID_FILE; + #endif + #ifdef ECHILD + case ECHILD: return DRFLAC_ERROR; + #endif + #ifdef EAGAIN + case EAGAIN: return DRFLAC_UNAVAILABLE; + #endif + #ifdef ENOMEM + case ENOMEM: return DRFLAC_OUT_OF_MEMORY; + #endif + #ifdef EACCES + case EACCES: return DRFLAC_ACCESS_DENIED; + #endif + #ifdef EFAULT + case EFAULT: return DRFLAC_BAD_ADDRESS; + #endif + #ifdef ENOTBLK + case ENOTBLK: return DRFLAC_ERROR; + #endif + #ifdef EBUSY + case EBUSY: return DRFLAC_BUSY; + #endif + #ifdef EEXIST + case EEXIST: return DRFLAC_ALREADY_EXISTS; + #endif + #ifdef EXDEV + case EXDEV: return DRFLAC_ERROR; + #endif + #ifdef ENODEV + case ENODEV: return DRFLAC_DOES_NOT_EXIST; + #endif + #ifdef ENOTDIR + case ENOTDIR: return DRFLAC_NOT_DIRECTORY; + #endif + #ifdef EISDIR + case EISDIR: return DRFLAC_IS_DIRECTORY; + #endif + #ifdef EINVAL + case EINVAL: return DRFLAC_INVALID_ARGS; + #endif + #ifdef ENFILE + case ENFILE: return DRFLAC_TOO_MANY_OPEN_FILES; + #endif + #ifdef EMFILE + case EMFILE: return DRFLAC_TOO_MANY_OPEN_FILES; + #endif + #ifdef ENOTTY + case ENOTTY: return DRFLAC_INVALID_OPERATION; + #endif + #ifdef ETXTBSY + case ETXTBSY: return DRFLAC_BUSY; + #endif + #ifdef EFBIG + case EFBIG: return DRFLAC_TOO_BIG; + #endif + #ifdef ENOSPC + case ENOSPC: return DRFLAC_NO_SPACE; + #endif + #ifdef ESPIPE + case ESPIPE: return DRFLAC_BAD_SEEK; + #endif + #ifdef EROFS + case EROFS: return DRFLAC_ACCESS_DENIED; + #endif + #ifdef EMLINK + case EMLINK: return DRFLAC_TOO_MANY_LINKS; + #endif + #ifdef EPIPE + case EPIPE: return DRFLAC_BAD_PIPE; + #endif + #ifdef EDOM + case EDOM: return DRFLAC_OUT_OF_RANGE; + #endif + #ifdef ERANGE + case ERANGE: return DRFLAC_OUT_OF_RANGE; + #endif + #ifdef EDEADLK + case EDEADLK: return DRFLAC_DEADLOCK; + #endif + #ifdef ENAMETOOLONG + case ENAMETOOLONG: return DRFLAC_PATH_TOO_LONG; + #endif + #ifdef ENOLCK + case ENOLCK: return DRFLAC_ERROR; + #endif + #ifdef ENOSYS + case ENOSYS: return DRFLAC_NOT_IMPLEMENTED; + #endif + #ifdef ENOTEMPTY + case ENOTEMPTY: return DRFLAC_DIRECTORY_NOT_EMPTY; + #endif + #ifdef ELOOP + case ELOOP: return DRFLAC_TOO_MANY_LINKS; + #endif + #ifdef ENOMSG + case ENOMSG: return DRFLAC_NO_MESSAGE; + #endif + #ifdef EIDRM + case EIDRM: return DRFLAC_ERROR; + #endif + #ifdef ECHRNG + case ECHRNG: return DRFLAC_ERROR; + #endif + #ifdef EL2NSYNC + case EL2NSYNC: return DRFLAC_ERROR; + #endif + #ifdef EL3HLT + case EL3HLT: return DRFLAC_ERROR; + #endif + #ifdef EL3RST + case EL3RST: return DRFLAC_ERROR; + #endif + #ifdef ELNRNG + case ELNRNG: return DRFLAC_OUT_OF_RANGE; + #endif + #ifdef EUNATCH + case EUNATCH: return DRFLAC_ERROR; + #endif + #ifdef ENOCSI + case ENOCSI: return DRFLAC_ERROR; + #endif + #ifdef EL2HLT + case EL2HLT: return DRFLAC_ERROR; + #endif + #ifdef EBADE + case EBADE: return DRFLAC_ERROR; + #endif + #ifdef EBADR + case EBADR: return DRFLAC_ERROR; + #endif + #ifdef EXFULL + case EXFULL: return DRFLAC_ERROR; + #endif + #ifdef ENOANO + case ENOANO: return DRFLAC_ERROR; + #endif + #ifdef EBADRQC + case EBADRQC: return DRFLAC_ERROR; + #endif + #ifdef EBADSLT + case EBADSLT: return DRFLAC_ERROR; + #endif + #ifdef EBFONT + case EBFONT: return DRFLAC_INVALID_FILE; + #endif + #ifdef ENOSTR + case ENOSTR: return DRFLAC_ERROR; + #endif + #ifdef ENODATA + case ENODATA: return DRFLAC_NO_DATA_AVAILABLE; + #endif + #ifdef ETIME + case ETIME: return DRFLAC_TIMEOUT; + #endif + #ifdef ENOSR + case ENOSR: return DRFLAC_NO_DATA_AVAILABLE; + #endif + #ifdef ENONET + case ENONET: return DRFLAC_NO_NETWORK; + #endif + #ifdef ENOPKG + case ENOPKG: return DRFLAC_ERROR; + #endif + #ifdef EREMOTE + case EREMOTE: return DRFLAC_ERROR; + #endif + #ifdef ENOLINK + case ENOLINK: return DRFLAC_ERROR; + #endif + #ifdef EADV + case EADV: return DRFLAC_ERROR; + #endif + #ifdef ESRMNT + case ESRMNT: return DRFLAC_ERROR; + #endif + #ifdef ECOMM + case ECOMM: return DRFLAC_ERROR; + #endif + #ifdef EPROTO + case EPROTO: return DRFLAC_ERROR; + #endif + #ifdef EMULTIHOP + case EMULTIHOP: return DRFLAC_ERROR; + #endif + #ifdef EDOTDOT + case EDOTDOT: return DRFLAC_ERROR; + #endif + #ifdef EBADMSG + case EBADMSG: return DRFLAC_BAD_MESSAGE; + #endif + #ifdef EOVERFLOW + case EOVERFLOW: return DRFLAC_TOO_BIG; + #endif + #ifdef ENOTUNIQ + case ENOTUNIQ: return DRFLAC_NOT_UNIQUE; + #endif + #ifdef EBADFD + case EBADFD: return DRFLAC_ERROR; + #endif + #ifdef EREMCHG + case EREMCHG: return DRFLAC_ERROR; + #endif + #ifdef ELIBACC + case ELIBACC: return DRFLAC_ACCESS_DENIED; + #endif + #ifdef ELIBBAD + case ELIBBAD: return DRFLAC_INVALID_FILE; + #endif + #ifdef ELIBSCN + case ELIBSCN: return DRFLAC_INVALID_FILE; + #endif + #ifdef ELIBMAX + case ELIBMAX: return DRFLAC_ERROR; + #endif + #ifdef ELIBEXEC + case ELIBEXEC: return DRFLAC_ERROR; + #endif + #ifdef EILSEQ + case EILSEQ: return DRFLAC_INVALID_DATA; + #endif + #ifdef ERESTART + case ERESTART: return DRFLAC_ERROR; + #endif + #ifdef ESTRPIPE + case ESTRPIPE: return DRFLAC_ERROR; + #endif + #ifdef EUSERS + case EUSERS: return DRFLAC_ERROR; + #endif + #ifdef ENOTSOCK + case ENOTSOCK: return DRFLAC_NOT_SOCKET; + #endif + #ifdef EDESTADDRREQ + case EDESTADDRREQ: return DRFLAC_NO_ADDRESS; + #endif + #ifdef EMSGSIZE + case EMSGSIZE: return DRFLAC_TOO_BIG; + #endif + #ifdef EPROTOTYPE + case EPROTOTYPE: return DRFLAC_BAD_PROTOCOL; + #endif + #ifdef ENOPROTOOPT + case ENOPROTOOPT: return DRFLAC_PROTOCOL_UNAVAILABLE; + #endif + #ifdef EPROTONOSUPPORT + case EPROTONOSUPPORT: return DRFLAC_PROTOCOL_NOT_SUPPORTED; + #endif + #ifdef ESOCKTNOSUPPORT + case ESOCKTNOSUPPORT: return DRFLAC_SOCKET_NOT_SUPPORTED; + #endif + #ifdef EOPNOTSUPP + case EOPNOTSUPP: return DRFLAC_INVALID_OPERATION; + #endif + #ifdef EPFNOSUPPORT + case EPFNOSUPPORT: return DRFLAC_PROTOCOL_FAMILY_NOT_SUPPORTED; + #endif + #ifdef EAFNOSUPPORT + case EAFNOSUPPORT: return DRFLAC_ADDRESS_FAMILY_NOT_SUPPORTED; + #endif + #ifdef EADDRINUSE + case EADDRINUSE: return DRFLAC_ALREADY_IN_USE; + #endif + #ifdef EADDRNOTAVAIL + case EADDRNOTAVAIL: return DRFLAC_ERROR; + #endif + #ifdef ENETDOWN + case ENETDOWN: return DRFLAC_NO_NETWORK; + #endif + #ifdef ENETUNREACH + case ENETUNREACH: return DRFLAC_NO_NETWORK; + #endif + #ifdef ENETRESET + case ENETRESET: return DRFLAC_NO_NETWORK; + #endif + #ifdef ECONNABORTED + case ECONNABORTED: return DRFLAC_NO_NETWORK; + #endif + #ifdef ECONNRESET + case ECONNRESET: return DRFLAC_CONNECTION_RESET; + #endif + #ifdef ENOBUFS + case ENOBUFS: return DRFLAC_NO_SPACE; + #endif + #ifdef EISCONN + case EISCONN: return DRFLAC_ALREADY_CONNECTED; + #endif + #ifdef ENOTCONN + case ENOTCONN: return DRFLAC_NOT_CONNECTED; + #endif + #ifdef ESHUTDOWN + case ESHUTDOWN: return DRFLAC_ERROR; + #endif + #ifdef ETOOMANYREFS + case ETOOMANYREFS: return DRFLAC_ERROR; + #endif + #ifdef ETIMEDOUT + case ETIMEDOUT: return DRFLAC_TIMEOUT; + #endif + #ifdef ECONNREFUSED + case ECONNREFUSED: return DRFLAC_CONNECTION_REFUSED; + #endif + #ifdef EHOSTDOWN + case EHOSTDOWN: return DRFLAC_NO_HOST; + #endif + #ifdef EHOSTUNREACH + case EHOSTUNREACH: return DRFLAC_NO_HOST; + #endif + #ifdef EALREADY + case EALREADY: return DRFLAC_IN_PROGRESS; + #endif + #ifdef EINPROGRESS + case EINPROGRESS: return DRFLAC_IN_PROGRESS; + #endif + #ifdef ESTALE + case ESTALE: return DRFLAC_INVALID_FILE; + #endif + #ifdef EUCLEAN + case EUCLEAN: return DRFLAC_ERROR; + #endif + #ifdef ENOTNAM + case ENOTNAM: return DRFLAC_ERROR; + #endif + #ifdef ENAVAIL + case ENAVAIL: return DRFLAC_ERROR; + #endif + #ifdef EISNAM + case EISNAM: return DRFLAC_ERROR; + #endif + #ifdef EREMOTEIO + case EREMOTEIO: return DRFLAC_IO_ERROR; + #endif + #ifdef EDQUOT + case EDQUOT: return DRFLAC_NO_SPACE; + #endif + #ifdef ENOMEDIUM + case ENOMEDIUM: return DRFLAC_DOES_NOT_EXIST; + #endif + #ifdef EMEDIUMTYPE + case EMEDIUMTYPE: return DRFLAC_ERROR; + #endif + #ifdef ECANCELED + case ECANCELED: return DRFLAC_CANCELLED; + #endif + #ifdef ENOKEY + case ENOKEY: return DRFLAC_ERROR; + #endif + #ifdef EKEYEXPIRED + case EKEYEXPIRED: return DRFLAC_ERROR; + #endif + #ifdef EKEYREVOKED + case EKEYREVOKED: return DRFLAC_ERROR; + #endif + #ifdef EKEYREJECTED + case EKEYREJECTED: return DRFLAC_ERROR; + #endif + #ifdef EOWNERDEAD + case EOWNERDEAD: return DRFLAC_ERROR; + #endif + #ifdef ENOTRECOVERABLE + case ENOTRECOVERABLE: return DRFLAC_ERROR; + #endif + #ifdef ERFKILL + case ERFKILL: return DRFLAC_ERROR; + #endif + #ifdef EHWPOISON + case EHWPOISON: return DRFLAC_ERROR; + #endif + default: return DRFLAC_ERROR; + } +} +/* End Errno */ + +/* fopen */ +static drflac_result drflac_fopen(FILE** ppFile, const char* pFilePath, const char* pOpenMode) +{ +#if defined(_MSC_VER) && _MSC_VER >= 1400 + errno_t err; +#endif + + if (ppFile != NULL) { + *ppFile = NULL; /* Safety. */ + } + + if (pFilePath == NULL || pOpenMode == NULL || ppFile == NULL) { + return DRFLAC_INVALID_ARGS; + } + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + err = fopen_s(ppFile, pFilePath, pOpenMode); + if (err != 0) { + return drflac_result_from_errno(err); + } +#else +#if defined(_WIN32) || defined(__APPLE__) + *ppFile = fopen(pFilePath, pOpenMode); +#else + #if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 && defined(_LARGEFILE64_SOURCE) + *ppFile = fopen64(pFilePath, pOpenMode); + #else + *ppFile = fopen(pFilePath, pOpenMode); + #endif +#endif + if (*ppFile == NULL) { + drflac_result result = drflac_result_from_errno(errno); + if (result == DRFLAC_SUCCESS) { + result = DRFLAC_ERROR; /* Just a safety check to make sure we never ever return success when pFile == NULL. */ + } + + return result; + } +#endif + + return DRFLAC_SUCCESS; +} + +/* +_wfopen() isn't always available in all compilation environments. + + * Windows only. + * MSVC seems to support it universally as far back as VC6 from what I can tell (haven't checked further back). + * MinGW-64 (both 32- and 64-bit) seems to support it. + * MinGW wraps it in !defined(__STRICT_ANSI__). + * OpenWatcom wraps it in !defined(_NO_EXT_KEYS). + +This can be reviewed as compatibility issues arise. The preference is to use _wfopen_s() and _wfopen() as opposed to the wcsrtombs() +fallback, so if you notice your compiler not detecting this properly I'm happy to look at adding support. +*/ +#if defined(_WIN32) + #if defined(_MSC_VER) || defined(__MINGW64__) || (!defined(__STRICT_ANSI__) && !defined(_NO_EXT_KEYS)) + #define DRFLAC_HAS_WFOPEN + #endif +#endif + +#ifndef DR_FLAC_NO_WCHAR +static drflac_result drflac_wfopen(FILE** ppFile, const wchar_t* pFilePath, const wchar_t* pOpenMode, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + if (ppFile != NULL) { + *ppFile = NULL; /* Safety. */ + } + + if (pFilePath == NULL || pOpenMode == NULL || ppFile == NULL) { + return DRFLAC_INVALID_ARGS; + } + +#if defined(DRFLAC_HAS_WFOPEN) + { + /* Use _wfopen() on Windows. */ + #if defined(_MSC_VER) && _MSC_VER >= 1400 + errno_t err = _wfopen_s(ppFile, pFilePath, pOpenMode); + if (err != 0) { + return drflac_result_from_errno(err); + } + #else + *ppFile = _wfopen(pFilePath, pOpenMode); + if (*ppFile == NULL) { + return drflac_result_from_errno(errno); + } + #endif + (void)pAllocationCallbacks; + } +#else + /* + Use fopen() on anything other than Windows. Requires a conversion. This is annoying because + fopen() is locale specific. The only real way I can think of to do this is with wcsrtombs(). Note + that wcstombs() is apparently not thread-safe because it uses a static global mbstate_t object for + maintaining state. I've checked this with -std=c89 and it works, but if somebody get's a compiler + error I'll look into improving compatibility. + */ + + /* + Some compilers don't support wchar_t or wcsrtombs() which we're using below. In this case we just + need to abort with an error. If you encounter a compiler lacking such support, add it to this list + and submit a bug report and it'll be added to the library upstream. + */ + #if defined(__DJGPP__) + { + /* Nothing to do here. This will fall through to the error check below. */ + } + #else + { + mbstate_t mbs; + size_t lenMB; + const wchar_t* pFilePathTemp = pFilePath; + char* pFilePathMB = NULL; + char pOpenModeMB[32] = {0}; + + /* Get the length first. */ + DRFLAC_ZERO_OBJECT(&mbs); + lenMB = wcsrtombs(NULL, &pFilePathTemp, 0, &mbs); + if (lenMB == (size_t)-1) { + return drflac_result_from_errno(errno); + } + + pFilePathMB = (char*)drflac__malloc_from_callbacks(lenMB + 1, pAllocationCallbacks); + if (pFilePathMB == NULL) { + return DRFLAC_OUT_OF_MEMORY; + } + + pFilePathTemp = pFilePath; + DRFLAC_ZERO_OBJECT(&mbs); + wcsrtombs(pFilePathMB, &pFilePathTemp, lenMB + 1, &mbs); + + /* The open mode should always consist of ASCII characters so we should be able to do a trivial conversion. */ + { + size_t i = 0; + for (;;) { + if (pOpenMode[i] == 0) { + pOpenModeMB[i] = '\0'; + break; + } + + pOpenModeMB[i] = (char)pOpenMode[i]; + i += 1; + } + } + + *ppFile = fopen(pFilePathMB, pOpenModeMB); + + drflac__free_from_callbacks(pFilePathMB, pAllocationCallbacks); + } + #endif + + if (*ppFile == NULL) { + return DRFLAC_ERROR; + } +#endif + + return DRFLAC_SUCCESS; +} +#endif +/* End fopen */ + +static size_t drflac__on_read_stdio(void* pUserData, void* bufferOut, size_t bytesToRead) +{ + return fread(bufferOut, 1, bytesToRead, (FILE*)pUserData); +} + +static drflac_bool32 drflac__on_seek_stdio(void* pUserData, int offset, drflac_seek_origin origin) +{ + DRFLAC_ASSERT(offset >= 0); /* <-- Never seek backwards. */ + + return fseek((FILE*)pUserData, offset, (origin == drflac_seek_origin_current) ? SEEK_CUR : SEEK_SET) == 0; +} + + +DRFLAC_API drflac* drflac_open_file(const char* pFileName, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + FILE* pFile; + + if (drflac_fopen(&pFile, pFileName, "rb") != DRFLAC_SUCCESS) { + return NULL; + } + + pFlac = drflac_open(drflac__on_read_stdio, drflac__on_seek_stdio, (void*)pFile, pAllocationCallbacks); + if (pFlac == NULL) { + fclose(pFile); + return NULL; + } + + return pFlac; +} + +#ifndef DR_FLAC_NO_WCHAR +DRFLAC_API drflac* drflac_open_file_w(const wchar_t* pFileName, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + FILE* pFile; + + if (drflac_wfopen(&pFile, pFileName, L"rb", pAllocationCallbacks) != DRFLAC_SUCCESS) { + return NULL; + } + + pFlac = drflac_open(drflac__on_read_stdio, drflac__on_seek_stdio, (void*)pFile, pAllocationCallbacks); + if (pFlac == NULL) { + fclose(pFile); + return NULL; + } + + return pFlac; +} +#endif + +DRFLAC_API drflac* drflac_open_file_with_metadata(const char* pFileName, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + FILE* pFile; + + if (drflac_fopen(&pFile, pFileName, "rb") != DRFLAC_SUCCESS) { + return NULL; + } + + pFlac = drflac_open_with_metadata_private(drflac__on_read_stdio, drflac__on_seek_stdio, onMeta, drflac_container_unknown, (void*)pFile, pUserData, pAllocationCallbacks); + if (pFlac == NULL) { + fclose(pFile); + return pFlac; + } + + return pFlac; +} + +#ifndef DR_FLAC_NO_WCHAR +DRFLAC_API drflac* drflac_open_file_with_metadata_w(const wchar_t* pFileName, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + FILE* pFile; + + if (drflac_wfopen(&pFile, pFileName, L"rb", pAllocationCallbacks) != DRFLAC_SUCCESS) { + return NULL; + } + + pFlac = drflac_open_with_metadata_private(drflac__on_read_stdio, drflac__on_seek_stdio, onMeta, drflac_container_unknown, (void*)pFile, pUserData, pAllocationCallbacks); + if (pFlac == NULL) { + fclose(pFile); + return pFlac; + } + + return pFlac; +} +#endif +#endif /* DR_FLAC_NO_STDIO */ + +static size_t drflac__on_read_memory(void* pUserData, void* bufferOut, size_t bytesToRead) +{ + drflac__memory_stream* memoryStream = (drflac__memory_stream*)pUserData; + size_t bytesRemaining; + + DRFLAC_ASSERT(memoryStream != NULL); + DRFLAC_ASSERT(memoryStream->dataSize >= memoryStream->currentReadPos); + + bytesRemaining = memoryStream->dataSize - memoryStream->currentReadPos; + if (bytesToRead > bytesRemaining) { + bytesToRead = bytesRemaining; + } + + if (bytesToRead > 0) { + DRFLAC_COPY_MEMORY(bufferOut, memoryStream->data + memoryStream->currentReadPos, bytesToRead); + memoryStream->currentReadPos += bytesToRead; + } + + return bytesToRead; +} + +static drflac_bool32 drflac__on_seek_memory(void* pUserData, int offset, drflac_seek_origin origin) +{ + drflac__memory_stream* memoryStream = (drflac__memory_stream*)pUserData; + + DRFLAC_ASSERT(memoryStream != NULL); + DRFLAC_ASSERT(offset >= 0); /* <-- Never seek backwards. */ + + if (offset > (drflac_int64)memoryStream->dataSize) { + return DRFLAC_FALSE; + } + + if (origin == drflac_seek_origin_current) { + if (memoryStream->currentReadPos + offset <= memoryStream->dataSize) { + memoryStream->currentReadPos += offset; + } else { + return DRFLAC_FALSE; /* Trying to seek too far forward. */ + } + } else { + if ((drflac_uint32)offset <= memoryStream->dataSize) { + memoryStream->currentReadPos = offset; + } else { + return DRFLAC_FALSE; /* Trying to seek too far forward. */ + } + } + + return DRFLAC_TRUE; +} + +DRFLAC_API drflac* drflac_open_memory(const void* pData, size_t dataSize, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac__memory_stream memoryStream; + drflac* pFlac; + + memoryStream.data = (const drflac_uint8*)pData; + memoryStream.dataSize = dataSize; + memoryStream.currentReadPos = 0; + pFlac = drflac_open(drflac__on_read_memory, drflac__on_seek_memory, &memoryStream, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + pFlac->memoryStream = memoryStream; + + /* This is an awful hack... */ +#ifndef DR_FLAC_NO_OGG + if (pFlac->container == drflac_container_ogg) + { + drflac_oggbs* oggbs = (drflac_oggbs*)pFlac->_oggbs; + oggbs->pUserData = &pFlac->memoryStream; + } + else +#endif + { + pFlac->bs.pUserData = &pFlac->memoryStream; + } + + return pFlac; +} + +DRFLAC_API drflac* drflac_open_memory_with_metadata(const void* pData, size_t dataSize, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac__memory_stream memoryStream; + drflac* pFlac; + + memoryStream.data = (const drflac_uint8*)pData; + memoryStream.dataSize = dataSize; + memoryStream.currentReadPos = 0; + pFlac = drflac_open_with_metadata_private(drflac__on_read_memory, drflac__on_seek_memory, onMeta, drflac_container_unknown, &memoryStream, pUserData, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + pFlac->memoryStream = memoryStream; + + /* This is an awful hack... */ +#ifndef DR_FLAC_NO_OGG + if (pFlac->container == drflac_container_ogg) + { + drflac_oggbs* oggbs = (drflac_oggbs*)pFlac->_oggbs; + oggbs->pUserData = &pFlac->memoryStream; + } + else +#endif + { + pFlac->bs.pUserData = &pFlac->memoryStream; + } + + return pFlac; +} + + + +DRFLAC_API drflac* drflac_open(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + return drflac_open_with_metadata_private(onRead, onSeek, NULL, drflac_container_unknown, pUserData, pUserData, pAllocationCallbacks); +} +DRFLAC_API drflac* drflac_open_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + return drflac_open_with_metadata_private(onRead, onSeek, NULL, container, pUserData, pUserData, pAllocationCallbacks); +} + +DRFLAC_API drflac* drflac_open_with_metadata(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + return drflac_open_with_metadata_private(onRead, onSeek, onMeta, drflac_container_unknown, pUserData, pUserData, pAllocationCallbacks); +} +DRFLAC_API drflac* drflac_open_with_metadata_relaxed(drflac_read_proc onRead, drflac_seek_proc onSeek, drflac_meta_proc onMeta, drflac_container container, void* pUserData, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + return drflac_open_with_metadata_private(onRead, onSeek, onMeta, container, pUserData, pUserData, pAllocationCallbacks); +} + +DRFLAC_API void drflac_close(drflac* pFlac) +{ + if (pFlac == NULL) { + return; + } + +#ifndef DR_FLAC_NO_STDIO + /* + If we opened the file with drflac_open_file() we will want to close the file handle. We can know whether or not drflac_open_file() + was used by looking at the callbacks. + */ + if (pFlac->bs.onRead == drflac__on_read_stdio) { + fclose((FILE*)pFlac->bs.pUserData); + } + +#ifndef DR_FLAC_NO_OGG + /* Need to clean up Ogg streams a bit differently due to the way the bit streaming is chained. */ + if (pFlac->container == drflac_container_ogg) { + drflac_oggbs* oggbs = (drflac_oggbs*)pFlac->_oggbs; + DRFLAC_ASSERT(pFlac->bs.onRead == drflac__on_read_ogg); + + if (oggbs->onRead == drflac__on_read_stdio) { + fclose((FILE*)oggbs->pUserData); + } + } +#endif +#endif + + drflac__free_from_callbacks(pFlac, &pFlac->allocationCallbacks); +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_left_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + for (i = 0; i < frameCount; ++i) { + drflac_uint32 left = (drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + drflac_uint32 side = (drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + drflac_uint32 right = left - side; + + pOutputSamples[i*2+0] = (drflac_int32)left; + pOutputSamples[i*2+1] = (drflac_int32)right; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_left_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 left0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 left1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 left2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 left3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << shift1; + + drflac_uint32 right0 = left0 - side0; + drflac_uint32 right1 = left1 - side1; + drflac_uint32 right2 = left2 - side2; + drflac_uint32 right3 = left3 - side3; + + pOutputSamples[i*8+0] = (drflac_int32)left0; + pOutputSamples[i*8+1] = (drflac_int32)right0; + pOutputSamples[i*8+2] = (drflac_int32)left1; + pOutputSamples[i*8+3] = (drflac_int32)right1; + pOutputSamples[i*8+4] = (drflac_int32)left2; + pOutputSamples[i*8+5] = (drflac_int32)right2; + pOutputSamples[i*8+6] = (drflac_int32)left3; + pOutputSamples[i*8+7] = (drflac_int32)right3; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + pOutputSamples[i*2+0] = (drflac_int32)left; + pOutputSamples[i*2+1] = (drflac_int32)right; + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_left_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + for (i = 0; i < frameCount4; ++i) { + __m128i left = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + __m128i side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + __m128i right = _mm_sub_epi32(left, side); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 0), _mm_unpacklo_epi32(left, right)); + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 4), _mm_unpackhi_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + pOutputSamples[i*2+0] = (drflac_int32)left; + pOutputSamples[i*2+1] = (drflac_int32)right; + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_left_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + int32x4_t shift0_4; + int32x4_t shift1_4; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + shift0_4 = vdupq_n_s32(shift0); + shift1_4 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + uint32x4_t left; + uint32x4_t side; + uint32x4_t right; + + left = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift0_4); + side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift1_4); + right = vsubq_u32(left, side); + + drflac__vst2q_u32((drflac_uint32*)pOutputSamples + i*8, vzipq_u32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + pOutputSamples[i*2+0] = (drflac_int32)left; + pOutputSamples[i*2+1] = (drflac_int32)right; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_left_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s32__decode_left_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s32__decode_left_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_s32__decode_left_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_s32__decode_left_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_right_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + for (i = 0; i < frameCount; ++i) { + drflac_uint32 side = (drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + drflac_uint32 right = (drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + drflac_uint32 left = right + side; + + pOutputSamples[i*2+0] = (drflac_int32)left; + pOutputSamples[i*2+1] = (drflac_int32)right; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_right_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 side0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 side1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 side2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 side3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 right0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 right1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 right2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 right3 = pInputSamples1U32[i*4+3] << shift1; + + drflac_uint32 left0 = right0 + side0; + drflac_uint32 left1 = right1 + side1; + drflac_uint32 left2 = right2 + side2; + drflac_uint32 left3 = right3 + side3; + + pOutputSamples[i*8+0] = (drflac_int32)left0; + pOutputSamples[i*8+1] = (drflac_int32)right0; + pOutputSamples[i*8+2] = (drflac_int32)left1; + pOutputSamples[i*8+3] = (drflac_int32)right1; + pOutputSamples[i*8+4] = (drflac_int32)left2; + pOutputSamples[i*8+5] = (drflac_int32)right2; + pOutputSamples[i*8+6] = (drflac_int32)left3; + pOutputSamples[i*8+7] = (drflac_int32)right3; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + pOutputSamples[i*2+0] = (drflac_int32)left; + pOutputSamples[i*2+1] = (drflac_int32)right; + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_right_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + for (i = 0; i < frameCount4; ++i) { + __m128i side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + __m128i right = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + __m128i left = _mm_add_epi32(right, side); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 0), _mm_unpacklo_epi32(left, right)); + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 4), _mm_unpackhi_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + pOutputSamples[i*2+0] = (drflac_int32)left; + pOutputSamples[i*2+1] = (drflac_int32)right; + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_right_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + int32x4_t shift0_4; + int32x4_t shift1_4; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + shift0_4 = vdupq_n_s32(shift0); + shift1_4 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + uint32x4_t side; + uint32x4_t right; + uint32x4_t left; + + side = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift0_4); + right = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift1_4); + left = vaddq_u32(right, side); + + drflac__vst2q_u32((drflac_uint32*)pOutputSamples + i*8, vzipq_u32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + pOutputSamples[i*2+0] = (drflac_int32)left; + pOutputSamples[i*2+1] = (drflac_int32)right; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_right_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s32__decode_right_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s32__decode_right_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_s32__decode_right_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_s32__decode_right_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_mid_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)((drflac_uint32)((drflac_int32)(mid + side) >> 1) << unusedBitsPerSample); + pOutputSamples[i*2+1] = (drflac_int32)((drflac_uint32)((drflac_int32)(mid - side) >> 1) << unusedBitsPerSample); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_mid_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_int32 shift = unusedBitsPerSample; + + if (shift > 0) { + shift -= 1; + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 temp0L; + drflac_uint32 temp1L; + drflac_uint32 temp2L; + drflac_uint32 temp3L; + drflac_uint32 temp0R; + drflac_uint32 temp1R; + drflac_uint32 temp2R; + drflac_uint32 temp3R; + + drflac_uint32 mid0 = pInputSamples0U32[i*4+0] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid1 = pInputSamples0U32[i*4+1] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid2 = pInputSamples0U32[i*4+2] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid3 = pInputSamples0U32[i*4+3] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid0 = (mid0 << 1) | (side0 & 0x01); + mid1 = (mid1 << 1) | (side1 & 0x01); + mid2 = (mid2 << 1) | (side2 & 0x01); + mid3 = (mid3 << 1) | (side3 & 0x01); + + temp0L = (mid0 + side0) << shift; + temp1L = (mid1 + side1) << shift; + temp2L = (mid2 + side2) << shift; + temp3L = (mid3 + side3) << shift; + + temp0R = (mid0 - side0) << shift; + temp1R = (mid1 - side1) << shift; + temp2R = (mid2 - side2) << shift; + temp3R = (mid3 - side3) << shift; + + pOutputSamples[i*8+0] = (drflac_int32)temp0L; + pOutputSamples[i*8+1] = (drflac_int32)temp0R; + pOutputSamples[i*8+2] = (drflac_int32)temp1L; + pOutputSamples[i*8+3] = (drflac_int32)temp1R; + pOutputSamples[i*8+4] = (drflac_int32)temp2L; + pOutputSamples[i*8+5] = (drflac_int32)temp2R; + pOutputSamples[i*8+6] = (drflac_int32)temp3L; + pOutputSamples[i*8+7] = (drflac_int32)temp3R; + } + } else { + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 temp0L; + drflac_uint32 temp1L; + drflac_uint32 temp2L; + drflac_uint32 temp3L; + drflac_uint32 temp0R; + drflac_uint32 temp1R; + drflac_uint32 temp2R; + drflac_uint32 temp3R; + + drflac_uint32 mid0 = pInputSamples0U32[i*4+0] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid1 = pInputSamples0U32[i*4+1] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid2 = pInputSamples0U32[i*4+2] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid3 = pInputSamples0U32[i*4+3] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid0 = (mid0 << 1) | (side0 & 0x01); + mid1 = (mid1 << 1) | (side1 & 0x01); + mid2 = (mid2 << 1) | (side2 & 0x01); + mid3 = (mid3 << 1) | (side3 & 0x01); + + temp0L = (drflac_uint32)((drflac_int32)(mid0 + side0) >> 1); + temp1L = (drflac_uint32)((drflac_int32)(mid1 + side1) >> 1); + temp2L = (drflac_uint32)((drflac_int32)(mid2 + side2) >> 1); + temp3L = (drflac_uint32)((drflac_int32)(mid3 + side3) >> 1); + + temp0R = (drflac_uint32)((drflac_int32)(mid0 - side0) >> 1); + temp1R = (drflac_uint32)((drflac_int32)(mid1 - side1) >> 1); + temp2R = (drflac_uint32)((drflac_int32)(mid2 - side2) >> 1); + temp3R = (drflac_uint32)((drflac_int32)(mid3 - side3) >> 1); + + pOutputSamples[i*8+0] = (drflac_int32)temp0L; + pOutputSamples[i*8+1] = (drflac_int32)temp0R; + pOutputSamples[i*8+2] = (drflac_int32)temp1L; + pOutputSamples[i*8+3] = (drflac_int32)temp1R; + pOutputSamples[i*8+4] = (drflac_int32)temp2L; + pOutputSamples[i*8+5] = (drflac_int32)temp2R; + pOutputSamples[i*8+6] = (drflac_int32)temp3L; + pOutputSamples[i*8+7] = (drflac_int32)temp3R; + } + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)((drflac_uint32)((drflac_int32)(mid + side) >> 1) << unusedBitsPerSample); + pOutputSamples[i*2+1] = (drflac_int32)((drflac_uint32)((drflac_int32)(mid - side) >> 1) << unusedBitsPerSample); + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_mid_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_int32 shift = unusedBitsPerSample; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + if (shift == 0) { + for (i = 0; i < frameCount4; ++i) { + __m128i mid; + __m128i side; + __m128i left; + __m128i right; + + mid = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + + mid = _mm_or_si128(_mm_slli_epi32(mid, 1), _mm_and_si128(side, _mm_set1_epi32(0x01))); + + left = _mm_srai_epi32(_mm_add_epi32(mid, side), 1); + right = _mm_srai_epi32(_mm_sub_epi32(mid, side), 1); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 0), _mm_unpacklo_epi32(left, right)); + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 4), _mm_unpackhi_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)(mid + side) >> 1; + pOutputSamples[i*2+1] = (drflac_int32)(mid - side) >> 1; + } + } else { + shift -= 1; + for (i = 0; i < frameCount4; ++i) { + __m128i mid; + __m128i side; + __m128i left; + __m128i right; + + mid = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + + mid = _mm_or_si128(_mm_slli_epi32(mid, 1), _mm_and_si128(side, _mm_set1_epi32(0x01))); + + left = _mm_slli_epi32(_mm_add_epi32(mid, side), shift); + right = _mm_slli_epi32(_mm_sub_epi32(mid, side), shift); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 0), _mm_unpacklo_epi32(left, right)); + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 4), _mm_unpackhi_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)((mid + side) << shift); + pOutputSamples[i*2+1] = (drflac_int32)((mid - side) << shift); + } + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_mid_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_int32 shift = unusedBitsPerSample; + int32x4_t wbpsShift0_4; /* wbps = Wasted Bits Per Sample */ + int32x4_t wbpsShift1_4; /* wbps = Wasted Bits Per Sample */ + uint32x4_t one4; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + wbpsShift0_4 = vdupq_n_s32(pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + wbpsShift1_4 = vdupq_n_s32(pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + one4 = vdupq_n_u32(1); + + if (shift == 0) { + for (i = 0; i < frameCount4; ++i) { + uint32x4_t mid; + uint32x4_t side; + int32x4_t left; + int32x4_t right; + + mid = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), wbpsShift0_4); + side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), wbpsShift1_4); + + mid = vorrq_u32(vshlq_n_u32(mid, 1), vandq_u32(side, one4)); + + left = vshrq_n_s32(vreinterpretq_s32_u32(vaddq_u32(mid, side)), 1); + right = vshrq_n_s32(vreinterpretq_s32_u32(vsubq_u32(mid, side)), 1); + + drflac__vst2q_s32(pOutputSamples + i*8, vzipq_s32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)(mid + side) >> 1; + pOutputSamples[i*2+1] = (drflac_int32)(mid - side) >> 1; + } + } else { + int32x4_t shift4; + + shift -= 1; + shift4 = vdupq_n_s32(shift); + + for (i = 0; i < frameCount4; ++i) { + uint32x4_t mid; + uint32x4_t side; + int32x4_t left; + int32x4_t right; + + mid = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), wbpsShift0_4); + side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), wbpsShift1_4); + + mid = vorrq_u32(vshlq_n_u32(mid, 1), vandq_u32(side, one4)); + + left = vreinterpretq_s32_u32(vshlq_u32(vaddq_u32(mid, side), shift4)); + right = vreinterpretq_s32_u32(vshlq_u32(vsubq_u32(mid, side), shift4)); + + drflac__vst2q_s32(pOutputSamples + i*8, vzipq_s32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)((mid + side) << shift); + pOutputSamples[i*2+1] = (drflac_int32)((mid - side) << shift); + } + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_mid_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s32__decode_mid_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s32__decode_mid_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_s32__decode_mid_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_s32__decode_mid_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_independent_stereo__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int32)((drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample)); + pOutputSamples[i*2+1] = (drflac_int32)((drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample)); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_independent_stereo__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 tempL0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 tempL1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 tempL2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 tempL3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 tempR0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 tempR1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 tempR2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 tempR3 = pInputSamples1U32[i*4+3] << shift1; + + pOutputSamples[i*8+0] = (drflac_int32)tempL0; + pOutputSamples[i*8+1] = (drflac_int32)tempR0; + pOutputSamples[i*8+2] = (drflac_int32)tempL1; + pOutputSamples[i*8+3] = (drflac_int32)tempR1; + pOutputSamples[i*8+4] = (drflac_int32)tempL2; + pOutputSamples[i*8+5] = (drflac_int32)tempR2; + pOutputSamples[i*8+6] = (drflac_int32)tempL3; + pOutputSamples[i*8+7] = (drflac_int32)tempR3; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int32)(pInputSamples0U32[i] << shift0); + pOutputSamples[i*2+1] = (drflac_int32)(pInputSamples1U32[i] << shift1); + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_independent_stereo__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + for (i = 0; i < frameCount4; ++i) { + __m128i left = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + __m128i right = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 0), _mm_unpacklo_epi32(left, right)); + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8 + 4), _mm_unpackhi_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int32)(pInputSamples0U32[i] << shift0); + pOutputSamples[i*2+1] = (drflac_int32)(pInputSamples1U32[i] << shift1); + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_independent_stereo__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + int32x4_t shift4_0 = vdupq_n_s32(shift0); + int32x4_t shift4_1 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + int32x4_t left; + int32x4_t right; + + left = vreinterpretq_s32_u32(vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift4_0)); + right = vreinterpretq_s32_u32(vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift4_1)); + + drflac__vst2q_s32(pOutputSamples + i*8, vzipq_s32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int32)(pInputSamples0U32[i] << shift0); + pOutputSamples[i*2+1] = (drflac_int32)(pInputSamples1U32[i] << shift1); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s32__decode_independent_stereo(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int32* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s32__decode_independent_stereo__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s32__decode_independent_stereo__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_s32__decode_independent_stereo__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_s32__decode_independent_stereo__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +DRFLAC_API drflac_uint64 drflac_read_pcm_frames_s32(drflac* pFlac, drflac_uint64 framesToRead, drflac_int32* pBufferOut) +{ + drflac_uint64 framesRead; + drflac_uint32 unusedBitsPerSample; + + if (pFlac == NULL || framesToRead == 0) { + return 0; + } + + if (pBufferOut == NULL) { + return drflac__seek_forward_by_pcm_frames(pFlac, framesToRead); + } + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 32); + unusedBitsPerSample = 32 - pFlac->bitsPerSample; + + framesRead = 0; + while (framesToRead > 0) { + /* If we've run out of samples in this frame, go to the next. */ + if (pFlac->currentFLACFrame.pcmFramesRemaining == 0) { + if (!drflac__read_and_decode_next_flac_frame(pFlac)) { + break; /* Couldn't read the next frame, so just break from the loop and return. */ + } + } else { + unsigned int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFLACFrame.header.channelAssignment); + drflac_uint64 iFirstPCMFrame = pFlac->currentFLACFrame.header.blockSizeInPCMFrames - pFlac->currentFLACFrame.pcmFramesRemaining; + drflac_uint64 frameCountThisIteration = framesToRead; + + if (frameCountThisIteration > pFlac->currentFLACFrame.pcmFramesRemaining) { + frameCountThisIteration = pFlac->currentFLACFrame.pcmFramesRemaining; + } + + if (channelCount == 2) { + const drflac_int32* pDecodedSamples0 = pFlac->currentFLACFrame.subframes[0].pSamplesS32 + iFirstPCMFrame; + const drflac_int32* pDecodedSamples1 = pFlac->currentFLACFrame.subframes[1].pSamplesS32 + iFirstPCMFrame; + + switch (pFlac->currentFLACFrame.header.channelAssignment) + { + case DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE: + { + drflac_read_pcm_frames_s32__decode_left_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE: + { + drflac_read_pcm_frames_s32__decode_right_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE: + { + drflac_read_pcm_frames_s32__decode_mid_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_INDEPENDENT: + default: + { + drflac_read_pcm_frames_s32__decode_independent_stereo(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + } + } else { + /* Generic interleaving. */ + drflac_uint64 i; + for (i = 0; i < frameCountThisIteration; ++i) { + unsigned int j; + for (j = 0; j < channelCount; ++j) { + pBufferOut[(i*channelCount)+j] = (drflac_int32)((drflac_uint32)(pFlac->currentFLACFrame.subframes[j].pSamplesS32[iFirstPCMFrame + i]) << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[j].wastedBitsPerSample)); + } + } + } + + framesRead += frameCountThisIteration; + pBufferOut += frameCountThisIteration * channelCount; + framesToRead -= frameCountThisIteration; + pFlac->currentPCMFrame += frameCountThisIteration; + pFlac->currentFLACFrame.pcmFramesRemaining -= (drflac_uint32)frameCountThisIteration; + } + } + + return framesRead; +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_left_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + for (i = 0; i < frameCount; ++i) { + drflac_uint32 left = (drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + drflac_uint32 side = (drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + drflac_uint32 right = left - side; + + left >>= 16; + right >>= 16; + + pOutputSamples[i*2+0] = (drflac_int16)left; + pOutputSamples[i*2+1] = (drflac_int16)right; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_left_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 left0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 left1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 left2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 left3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << shift1; + + drflac_uint32 right0 = left0 - side0; + drflac_uint32 right1 = left1 - side1; + drflac_uint32 right2 = left2 - side2; + drflac_uint32 right3 = left3 - side3; + + left0 >>= 16; + left1 >>= 16; + left2 >>= 16; + left3 >>= 16; + + right0 >>= 16; + right1 >>= 16; + right2 >>= 16; + right3 >>= 16; + + pOutputSamples[i*8+0] = (drflac_int16)left0; + pOutputSamples[i*8+1] = (drflac_int16)right0; + pOutputSamples[i*8+2] = (drflac_int16)left1; + pOutputSamples[i*8+3] = (drflac_int16)right1; + pOutputSamples[i*8+4] = (drflac_int16)left2; + pOutputSamples[i*8+5] = (drflac_int16)right2; + pOutputSamples[i*8+6] = (drflac_int16)left3; + pOutputSamples[i*8+7] = (drflac_int16)right3; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + left >>= 16; + right >>= 16; + + pOutputSamples[i*2+0] = (drflac_int16)left; + pOutputSamples[i*2+1] = (drflac_int16)right; + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_left_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + for (i = 0; i < frameCount4; ++i) { + __m128i left = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + __m128i side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + __m128i right = _mm_sub_epi32(left, side); + + left = _mm_srai_epi32(left, 16); + right = _mm_srai_epi32(right, 16); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8), drflac__mm_packs_interleaved_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + left >>= 16; + right >>= 16; + + pOutputSamples[i*2+0] = (drflac_int16)left; + pOutputSamples[i*2+1] = (drflac_int16)right; + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_left_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + int32x4_t shift0_4; + int32x4_t shift1_4; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + shift0_4 = vdupq_n_s32(shift0); + shift1_4 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + uint32x4_t left; + uint32x4_t side; + uint32x4_t right; + + left = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift0_4); + side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift1_4); + right = vsubq_u32(left, side); + + left = vshrq_n_u32(left, 16); + right = vshrq_n_u32(right, 16); + + drflac__vst2q_u16((drflac_uint16*)pOutputSamples + i*8, vzip_u16(vmovn_u32(left), vmovn_u32(right))); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + left >>= 16; + right >>= 16; + + pOutputSamples[i*2+0] = (drflac_int16)left; + pOutputSamples[i*2+1] = (drflac_int16)right; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_left_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s16__decode_left_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s16__decode_left_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_s16__decode_left_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_s16__decode_left_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_right_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + for (i = 0; i < frameCount; ++i) { + drflac_uint32 side = (drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + drflac_uint32 right = (drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + drflac_uint32 left = right + side; + + left >>= 16; + right >>= 16; + + pOutputSamples[i*2+0] = (drflac_int16)left; + pOutputSamples[i*2+1] = (drflac_int16)right; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_right_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 side0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 side1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 side2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 side3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 right0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 right1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 right2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 right3 = pInputSamples1U32[i*4+3] << shift1; + + drflac_uint32 left0 = right0 + side0; + drflac_uint32 left1 = right1 + side1; + drflac_uint32 left2 = right2 + side2; + drflac_uint32 left3 = right3 + side3; + + left0 >>= 16; + left1 >>= 16; + left2 >>= 16; + left3 >>= 16; + + right0 >>= 16; + right1 >>= 16; + right2 >>= 16; + right3 >>= 16; + + pOutputSamples[i*8+0] = (drflac_int16)left0; + pOutputSamples[i*8+1] = (drflac_int16)right0; + pOutputSamples[i*8+2] = (drflac_int16)left1; + pOutputSamples[i*8+3] = (drflac_int16)right1; + pOutputSamples[i*8+4] = (drflac_int16)left2; + pOutputSamples[i*8+5] = (drflac_int16)right2; + pOutputSamples[i*8+6] = (drflac_int16)left3; + pOutputSamples[i*8+7] = (drflac_int16)right3; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + left >>= 16; + right >>= 16; + + pOutputSamples[i*2+0] = (drflac_int16)left; + pOutputSamples[i*2+1] = (drflac_int16)right; + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_right_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + for (i = 0; i < frameCount4; ++i) { + __m128i side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + __m128i right = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + __m128i left = _mm_add_epi32(right, side); + + left = _mm_srai_epi32(left, 16); + right = _mm_srai_epi32(right, 16); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8), drflac__mm_packs_interleaved_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + left >>= 16; + right >>= 16; + + pOutputSamples[i*2+0] = (drflac_int16)left; + pOutputSamples[i*2+1] = (drflac_int16)right; + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_right_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + int32x4_t shift0_4; + int32x4_t shift1_4; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + shift0_4 = vdupq_n_s32(shift0); + shift1_4 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + uint32x4_t side; + uint32x4_t right; + uint32x4_t left; + + side = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift0_4); + right = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift1_4); + left = vaddq_u32(right, side); + + left = vshrq_n_u32(left, 16); + right = vshrq_n_u32(right, 16); + + drflac__vst2q_u16((drflac_uint16*)pOutputSamples + i*8, vzip_u16(vmovn_u32(left), vmovn_u32(right))); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + left >>= 16; + right >>= 16; + + pOutputSamples[i*2+0] = (drflac_int16)left; + pOutputSamples[i*2+1] = (drflac_int16)right; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_right_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s16__decode_right_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s16__decode_right_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_s16__decode_right_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_s16__decode_right_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_mid_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + drflac_uint32 mid = (drflac_uint32)pInputSamples0[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = (drflac_uint32)pInputSamples1[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int16)(((drflac_uint32)((drflac_int32)(mid + side) >> 1) << unusedBitsPerSample) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)(((drflac_uint32)((drflac_int32)(mid - side) >> 1) << unusedBitsPerSample) >> 16); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_mid_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift = unusedBitsPerSample; + + if (shift > 0) { + shift -= 1; + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 temp0L; + drflac_uint32 temp1L; + drflac_uint32 temp2L; + drflac_uint32 temp3L; + drflac_uint32 temp0R; + drflac_uint32 temp1R; + drflac_uint32 temp2R; + drflac_uint32 temp3R; + + drflac_uint32 mid0 = pInputSamples0U32[i*4+0] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid1 = pInputSamples0U32[i*4+1] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid2 = pInputSamples0U32[i*4+2] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid3 = pInputSamples0U32[i*4+3] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid0 = (mid0 << 1) | (side0 & 0x01); + mid1 = (mid1 << 1) | (side1 & 0x01); + mid2 = (mid2 << 1) | (side2 & 0x01); + mid3 = (mid3 << 1) | (side3 & 0x01); + + temp0L = (mid0 + side0) << shift; + temp1L = (mid1 + side1) << shift; + temp2L = (mid2 + side2) << shift; + temp3L = (mid3 + side3) << shift; + + temp0R = (mid0 - side0) << shift; + temp1R = (mid1 - side1) << shift; + temp2R = (mid2 - side2) << shift; + temp3R = (mid3 - side3) << shift; + + temp0L >>= 16; + temp1L >>= 16; + temp2L >>= 16; + temp3L >>= 16; + + temp0R >>= 16; + temp1R >>= 16; + temp2R >>= 16; + temp3R >>= 16; + + pOutputSamples[i*8+0] = (drflac_int16)temp0L; + pOutputSamples[i*8+1] = (drflac_int16)temp0R; + pOutputSamples[i*8+2] = (drflac_int16)temp1L; + pOutputSamples[i*8+3] = (drflac_int16)temp1R; + pOutputSamples[i*8+4] = (drflac_int16)temp2L; + pOutputSamples[i*8+5] = (drflac_int16)temp2R; + pOutputSamples[i*8+6] = (drflac_int16)temp3L; + pOutputSamples[i*8+7] = (drflac_int16)temp3R; + } + } else { + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 temp0L; + drflac_uint32 temp1L; + drflac_uint32 temp2L; + drflac_uint32 temp3L; + drflac_uint32 temp0R; + drflac_uint32 temp1R; + drflac_uint32 temp2R; + drflac_uint32 temp3R; + + drflac_uint32 mid0 = pInputSamples0U32[i*4+0] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid1 = pInputSamples0U32[i*4+1] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid2 = pInputSamples0U32[i*4+2] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid3 = pInputSamples0U32[i*4+3] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid0 = (mid0 << 1) | (side0 & 0x01); + mid1 = (mid1 << 1) | (side1 & 0x01); + mid2 = (mid2 << 1) | (side2 & 0x01); + mid3 = (mid3 << 1) | (side3 & 0x01); + + temp0L = ((drflac_int32)(mid0 + side0) >> 1); + temp1L = ((drflac_int32)(mid1 + side1) >> 1); + temp2L = ((drflac_int32)(mid2 + side2) >> 1); + temp3L = ((drflac_int32)(mid3 + side3) >> 1); + + temp0R = ((drflac_int32)(mid0 - side0) >> 1); + temp1R = ((drflac_int32)(mid1 - side1) >> 1); + temp2R = ((drflac_int32)(mid2 - side2) >> 1); + temp3R = ((drflac_int32)(mid3 - side3) >> 1); + + temp0L >>= 16; + temp1L >>= 16; + temp2L >>= 16; + temp3L >>= 16; + + temp0R >>= 16; + temp1R >>= 16; + temp2R >>= 16; + temp3R >>= 16; + + pOutputSamples[i*8+0] = (drflac_int16)temp0L; + pOutputSamples[i*8+1] = (drflac_int16)temp0R; + pOutputSamples[i*8+2] = (drflac_int16)temp1L; + pOutputSamples[i*8+3] = (drflac_int16)temp1R; + pOutputSamples[i*8+4] = (drflac_int16)temp2L; + pOutputSamples[i*8+5] = (drflac_int16)temp2R; + pOutputSamples[i*8+6] = (drflac_int16)temp3L; + pOutputSamples[i*8+7] = (drflac_int16)temp3R; + } + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int16)(((drflac_uint32)((drflac_int32)(mid + side) >> 1) << unusedBitsPerSample) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)(((drflac_uint32)((drflac_int32)(mid - side) >> 1) << unusedBitsPerSample) >> 16); + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_mid_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift = unusedBitsPerSample; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + if (shift == 0) { + for (i = 0; i < frameCount4; ++i) { + __m128i mid; + __m128i side; + __m128i left; + __m128i right; + + mid = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + + mid = _mm_or_si128(_mm_slli_epi32(mid, 1), _mm_and_si128(side, _mm_set1_epi32(0x01))); + + left = _mm_srai_epi32(_mm_add_epi32(mid, side), 1); + right = _mm_srai_epi32(_mm_sub_epi32(mid, side), 1); + + left = _mm_srai_epi32(left, 16); + right = _mm_srai_epi32(right, 16); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8), drflac__mm_packs_interleaved_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int16)(((drflac_int32)(mid + side) >> 1) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)(((drflac_int32)(mid - side) >> 1) >> 16); + } + } else { + shift -= 1; + for (i = 0; i < frameCount4; ++i) { + __m128i mid; + __m128i side; + __m128i left; + __m128i right; + + mid = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + + mid = _mm_or_si128(_mm_slli_epi32(mid, 1), _mm_and_si128(side, _mm_set1_epi32(0x01))); + + left = _mm_slli_epi32(_mm_add_epi32(mid, side), shift); + right = _mm_slli_epi32(_mm_sub_epi32(mid, side), shift); + + left = _mm_srai_epi32(left, 16); + right = _mm_srai_epi32(right, 16); + + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8), drflac__mm_packs_interleaved_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int16)(((mid + side) << shift) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)(((mid - side) << shift) >> 16); + } + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_mid_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift = unusedBitsPerSample; + int32x4_t wbpsShift0_4; /* wbps = Wasted Bits Per Sample */ + int32x4_t wbpsShift1_4; /* wbps = Wasted Bits Per Sample */ + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + wbpsShift0_4 = vdupq_n_s32(pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + wbpsShift1_4 = vdupq_n_s32(pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + + if (shift == 0) { + for (i = 0; i < frameCount4; ++i) { + uint32x4_t mid; + uint32x4_t side; + int32x4_t left; + int32x4_t right; + + mid = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), wbpsShift0_4); + side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), wbpsShift1_4); + + mid = vorrq_u32(vshlq_n_u32(mid, 1), vandq_u32(side, vdupq_n_u32(1))); + + left = vshrq_n_s32(vreinterpretq_s32_u32(vaddq_u32(mid, side)), 1); + right = vshrq_n_s32(vreinterpretq_s32_u32(vsubq_u32(mid, side)), 1); + + left = vshrq_n_s32(left, 16); + right = vshrq_n_s32(right, 16); + + drflac__vst2q_s16(pOutputSamples + i*8, vzip_s16(vmovn_s32(left), vmovn_s32(right))); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int16)(((drflac_int32)(mid + side) >> 1) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)(((drflac_int32)(mid - side) >> 1) >> 16); + } + } else { + int32x4_t shift4; + + shift -= 1; + shift4 = vdupq_n_s32(shift); + + for (i = 0; i < frameCount4; ++i) { + uint32x4_t mid; + uint32x4_t side; + int32x4_t left; + int32x4_t right; + + mid = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), wbpsShift0_4); + side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), wbpsShift1_4); + + mid = vorrq_u32(vshlq_n_u32(mid, 1), vandq_u32(side, vdupq_n_u32(1))); + + left = vreinterpretq_s32_u32(vshlq_u32(vaddq_u32(mid, side), shift4)); + right = vreinterpretq_s32_u32(vshlq_u32(vsubq_u32(mid, side), shift4)); + + left = vshrq_n_s32(left, 16); + right = vshrq_n_s32(right, 16); + + drflac__vst2q_s16(pOutputSamples + i*8, vzip_s16(vmovn_s32(left), vmovn_s32(right))); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int16)(((mid + side) << shift) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)(((mid - side) << shift) >> 16); + } + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_mid_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s16__decode_mid_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s16__decode_mid_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_s16__decode_mid_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_s16__decode_mid_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_independent_stereo__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int16)((drflac_int32)((drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample)) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)((drflac_int32)((drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample)) >> 16); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_independent_stereo__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 tempL0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 tempL1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 tempL2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 tempL3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 tempR0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 tempR1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 tempR2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 tempR3 = pInputSamples1U32[i*4+3] << shift1; + + tempL0 >>= 16; + tempL1 >>= 16; + tempL2 >>= 16; + tempL3 >>= 16; + + tempR0 >>= 16; + tempR1 >>= 16; + tempR2 >>= 16; + tempR3 >>= 16; + + pOutputSamples[i*8+0] = (drflac_int16)tempL0; + pOutputSamples[i*8+1] = (drflac_int16)tempR0; + pOutputSamples[i*8+2] = (drflac_int16)tempL1; + pOutputSamples[i*8+3] = (drflac_int16)tempR1; + pOutputSamples[i*8+4] = (drflac_int16)tempL2; + pOutputSamples[i*8+5] = (drflac_int16)tempR2; + pOutputSamples[i*8+6] = (drflac_int16)tempL3; + pOutputSamples[i*8+7] = (drflac_int16)tempR3; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int16)((pInputSamples0U32[i] << shift0) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)((pInputSamples1U32[i] << shift1) >> 16); + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_independent_stereo__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + for (i = 0; i < frameCount4; ++i) { + __m128i left = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + __m128i right = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + + left = _mm_srai_epi32(left, 16); + right = _mm_srai_epi32(right, 16); + + /* At this point we have results. We can now pack and interleave these into a single __m128i object and then store the in the output buffer. */ + _mm_storeu_si128((__m128i*)(pOutputSamples + i*8), drflac__mm_packs_interleaved_epi32(left, right)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int16)((pInputSamples0U32[i] << shift0) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)((pInputSamples1U32[i] << shift1) >> 16); + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_independent_stereo__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + int32x4_t shift0_4 = vdupq_n_s32(shift0); + int32x4_t shift1_4 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + int32x4_t left; + int32x4_t right; + + left = vreinterpretq_s32_u32(vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift0_4)); + right = vreinterpretq_s32_u32(vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift1_4)); + + left = vshrq_n_s32(left, 16); + right = vshrq_n_s32(right, 16); + + drflac__vst2q_s16(pOutputSamples + i*8, vzip_s16(vmovn_s32(left), vmovn_s32(right))); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int16)((pInputSamples0U32[i] << shift0) >> 16); + pOutputSamples[i*2+1] = (drflac_int16)((pInputSamples1U32[i] << shift1) >> 16); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_s16__decode_independent_stereo(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, drflac_int16* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s16__decode_independent_stereo__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_s16__decode_independent_stereo__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_s16__decode_independent_stereo__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_s16__decode_independent_stereo__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + +DRFLAC_API drflac_uint64 drflac_read_pcm_frames_s16(drflac* pFlac, drflac_uint64 framesToRead, drflac_int16* pBufferOut) +{ + drflac_uint64 framesRead; + drflac_uint32 unusedBitsPerSample; + + if (pFlac == NULL || framesToRead == 0) { + return 0; + } + + if (pBufferOut == NULL) { + return drflac__seek_forward_by_pcm_frames(pFlac, framesToRead); + } + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 32); + unusedBitsPerSample = 32 - pFlac->bitsPerSample; + + framesRead = 0; + while (framesToRead > 0) { + /* If we've run out of samples in this frame, go to the next. */ + if (pFlac->currentFLACFrame.pcmFramesRemaining == 0) { + if (!drflac__read_and_decode_next_flac_frame(pFlac)) { + break; /* Couldn't read the next frame, so just break from the loop and return. */ + } + } else { + unsigned int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFLACFrame.header.channelAssignment); + drflac_uint64 iFirstPCMFrame = pFlac->currentFLACFrame.header.blockSizeInPCMFrames - pFlac->currentFLACFrame.pcmFramesRemaining; + drflac_uint64 frameCountThisIteration = framesToRead; + + if (frameCountThisIteration > pFlac->currentFLACFrame.pcmFramesRemaining) { + frameCountThisIteration = pFlac->currentFLACFrame.pcmFramesRemaining; + } + + if (channelCount == 2) { + const drflac_int32* pDecodedSamples0 = pFlac->currentFLACFrame.subframes[0].pSamplesS32 + iFirstPCMFrame; + const drflac_int32* pDecodedSamples1 = pFlac->currentFLACFrame.subframes[1].pSamplesS32 + iFirstPCMFrame; + + switch (pFlac->currentFLACFrame.header.channelAssignment) + { + case DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE: + { + drflac_read_pcm_frames_s16__decode_left_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE: + { + drflac_read_pcm_frames_s16__decode_right_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE: + { + drflac_read_pcm_frames_s16__decode_mid_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_INDEPENDENT: + default: + { + drflac_read_pcm_frames_s16__decode_independent_stereo(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + } + } else { + /* Generic interleaving. */ + drflac_uint64 i; + for (i = 0; i < frameCountThisIteration; ++i) { + unsigned int j; + for (j = 0; j < channelCount; ++j) { + drflac_int32 sampleS32 = (drflac_int32)((drflac_uint32)(pFlac->currentFLACFrame.subframes[j].pSamplesS32[iFirstPCMFrame + i]) << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[j].wastedBitsPerSample)); + pBufferOut[(i*channelCount)+j] = (drflac_int16)(sampleS32 >> 16); + } + } + } + + framesRead += frameCountThisIteration; + pBufferOut += frameCountThisIteration * channelCount; + framesToRead -= frameCountThisIteration; + pFlac->currentPCMFrame += frameCountThisIteration; + pFlac->currentFLACFrame.pcmFramesRemaining -= (drflac_uint32)frameCountThisIteration; + } + } + + return framesRead; +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + for (i = 0; i < frameCount; ++i) { + drflac_uint32 left = (drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + drflac_uint32 side = (drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + drflac_uint32 right = left - side; + + pOutputSamples[i*2+0] = (float)((drflac_int32)left / 2147483648.0); + pOutputSamples[i*2+1] = (float)((drflac_int32)right / 2147483648.0); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + float factor = 1 / 2147483648.0; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 left0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 left1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 left2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 left3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << shift1; + + drflac_uint32 right0 = left0 - side0; + drflac_uint32 right1 = left1 - side1; + drflac_uint32 right2 = left2 - side2; + drflac_uint32 right3 = left3 - side3; + + pOutputSamples[i*8+0] = (drflac_int32)left0 * factor; + pOutputSamples[i*8+1] = (drflac_int32)right0 * factor; + pOutputSamples[i*8+2] = (drflac_int32)left1 * factor; + pOutputSamples[i*8+3] = (drflac_int32)right1 * factor; + pOutputSamples[i*8+4] = (drflac_int32)left2 * factor; + pOutputSamples[i*8+5] = (drflac_int32)right2 * factor; + pOutputSamples[i*8+6] = (drflac_int32)left3 * factor; + pOutputSamples[i*8+7] = (drflac_int32)right3 * factor; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + pOutputSamples[i*2+0] = (drflac_int32)left * factor; + pOutputSamples[i*2+1] = (drflac_int32)right * factor; + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample) - 8; + drflac_uint32 shift1 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample) - 8; + __m128 factor; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + factor = _mm_set1_ps(1.0f / 8388608.0f); + + for (i = 0; i < frameCount4; ++i) { + __m128i left = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + __m128i side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + __m128i right = _mm_sub_epi32(left, side); + __m128 leftf = _mm_mul_ps(_mm_cvtepi32_ps(left), factor); + __m128 rightf = _mm_mul_ps(_mm_cvtepi32_ps(right), factor); + + _mm_storeu_ps(pOutputSamples + i*8 + 0, _mm_unpacklo_ps(leftf, rightf)); + _mm_storeu_ps(pOutputSamples + i*8 + 4, _mm_unpackhi_ps(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + pOutputSamples[i*2+0] = (drflac_int32)left / 8388608.0f; + pOutputSamples[i*2+1] = (drflac_int32)right / 8388608.0f; + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample) - 8; + drflac_uint32 shift1 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample) - 8; + float32x4_t factor4; + int32x4_t shift0_4; + int32x4_t shift1_4; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + factor4 = vdupq_n_f32(1.0f / 8388608.0f); + shift0_4 = vdupq_n_s32(shift0); + shift1_4 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + uint32x4_t left; + uint32x4_t side; + uint32x4_t right; + float32x4_t leftf; + float32x4_t rightf; + + left = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift0_4); + side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift1_4); + right = vsubq_u32(left, side); + leftf = vmulq_f32(vcvtq_f32_s32(vreinterpretq_s32_u32(left)), factor4); + rightf = vmulq_f32(vcvtq_f32_s32(vreinterpretq_s32_u32(right)), factor4); + + drflac__vst2q_f32(pOutputSamples + i*8, vzipq_f32(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 left = pInputSamples0U32[i] << shift0; + drflac_uint32 side = pInputSamples1U32[i] << shift1; + drflac_uint32 right = left - side; + + pOutputSamples[i*2+0] = (drflac_int32)left / 8388608.0f; + pOutputSamples[i*2+1] = (drflac_int32)right / 8388608.0f; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_left_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_left_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_left_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_f32__decode_left_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_f32__decode_left_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + for (i = 0; i < frameCount; ++i) { + drflac_uint32 side = (drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + drflac_uint32 right = (drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + drflac_uint32 left = right + side; + + pOutputSamples[i*2+0] = (float)((drflac_int32)left / 2147483648.0); + pOutputSamples[i*2+1] = (float)((drflac_int32)right / 2147483648.0); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + float factor = 1 / 2147483648.0; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 side0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 side1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 side2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 side3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 right0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 right1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 right2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 right3 = pInputSamples1U32[i*4+3] << shift1; + + drflac_uint32 left0 = right0 + side0; + drflac_uint32 left1 = right1 + side1; + drflac_uint32 left2 = right2 + side2; + drflac_uint32 left3 = right3 + side3; + + pOutputSamples[i*8+0] = (drflac_int32)left0 * factor; + pOutputSamples[i*8+1] = (drflac_int32)right0 * factor; + pOutputSamples[i*8+2] = (drflac_int32)left1 * factor; + pOutputSamples[i*8+3] = (drflac_int32)right1 * factor; + pOutputSamples[i*8+4] = (drflac_int32)left2 * factor; + pOutputSamples[i*8+5] = (drflac_int32)right2 * factor; + pOutputSamples[i*8+6] = (drflac_int32)left3 * factor; + pOutputSamples[i*8+7] = (drflac_int32)right3 * factor; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + pOutputSamples[i*2+0] = (drflac_int32)left * factor; + pOutputSamples[i*2+1] = (drflac_int32)right * factor; + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample) - 8; + drflac_uint32 shift1 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample) - 8; + __m128 factor; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + factor = _mm_set1_ps(1.0f / 8388608.0f); + + for (i = 0; i < frameCount4; ++i) { + __m128i side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + __m128i right = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + __m128i left = _mm_add_epi32(right, side); + __m128 leftf = _mm_mul_ps(_mm_cvtepi32_ps(left), factor); + __m128 rightf = _mm_mul_ps(_mm_cvtepi32_ps(right), factor); + + _mm_storeu_ps(pOutputSamples + i*8 + 0, _mm_unpacklo_ps(leftf, rightf)); + _mm_storeu_ps(pOutputSamples + i*8 + 4, _mm_unpackhi_ps(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + pOutputSamples[i*2+0] = (drflac_int32)left / 8388608.0f; + pOutputSamples[i*2+1] = (drflac_int32)right / 8388608.0f; + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample) - 8; + drflac_uint32 shift1 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample) - 8; + float32x4_t factor4; + int32x4_t shift0_4; + int32x4_t shift1_4; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + factor4 = vdupq_n_f32(1.0f / 8388608.0f); + shift0_4 = vdupq_n_s32(shift0); + shift1_4 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + uint32x4_t side; + uint32x4_t right; + uint32x4_t left; + float32x4_t leftf; + float32x4_t rightf; + + side = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift0_4); + right = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift1_4); + left = vaddq_u32(right, side); + leftf = vmulq_f32(vcvtq_f32_s32(vreinterpretq_s32_u32(left)), factor4); + rightf = vmulq_f32(vcvtq_f32_s32(vreinterpretq_s32_u32(right)), factor4); + + drflac__vst2q_f32(pOutputSamples + i*8, vzipq_f32(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 side = pInputSamples0U32[i] << shift0; + drflac_uint32 right = pInputSamples1U32[i] << shift1; + drflac_uint32 left = right + side; + + pOutputSamples[i*2+0] = (drflac_int32)left / 8388608.0f; + pOutputSamples[i*2+1] = (drflac_int32)right / 8388608.0f; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_right_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_right_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_right_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_f32__decode_right_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_f32__decode_right_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + drflac_uint32 mid = (drflac_uint32)pInputSamples0[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = (drflac_uint32)pInputSamples1[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (float)((((drflac_int32)(mid + side) >> 1) << (unusedBitsPerSample)) / 2147483648.0); + pOutputSamples[i*2+1] = (float)((((drflac_int32)(mid - side) >> 1) << (unusedBitsPerSample)) / 2147483648.0); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift = unusedBitsPerSample; + float factor = 1 / 2147483648.0; + + if (shift > 0) { + shift -= 1; + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 temp0L; + drflac_uint32 temp1L; + drflac_uint32 temp2L; + drflac_uint32 temp3L; + drflac_uint32 temp0R; + drflac_uint32 temp1R; + drflac_uint32 temp2R; + drflac_uint32 temp3R; + + drflac_uint32 mid0 = pInputSamples0U32[i*4+0] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid1 = pInputSamples0U32[i*4+1] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid2 = pInputSamples0U32[i*4+2] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid3 = pInputSamples0U32[i*4+3] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid0 = (mid0 << 1) | (side0 & 0x01); + mid1 = (mid1 << 1) | (side1 & 0x01); + mid2 = (mid2 << 1) | (side2 & 0x01); + mid3 = (mid3 << 1) | (side3 & 0x01); + + temp0L = (mid0 + side0) << shift; + temp1L = (mid1 + side1) << shift; + temp2L = (mid2 + side2) << shift; + temp3L = (mid3 + side3) << shift; + + temp0R = (mid0 - side0) << shift; + temp1R = (mid1 - side1) << shift; + temp2R = (mid2 - side2) << shift; + temp3R = (mid3 - side3) << shift; + + pOutputSamples[i*8+0] = (drflac_int32)temp0L * factor; + pOutputSamples[i*8+1] = (drflac_int32)temp0R * factor; + pOutputSamples[i*8+2] = (drflac_int32)temp1L * factor; + pOutputSamples[i*8+3] = (drflac_int32)temp1R * factor; + pOutputSamples[i*8+4] = (drflac_int32)temp2L * factor; + pOutputSamples[i*8+5] = (drflac_int32)temp2R * factor; + pOutputSamples[i*8+6] = (drflac_int32)temp3L * factor; + pOutputSamples[i*8+7] = (drflac_int32)temp3R * factor; + } + } else { + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 temp0L; + drflac_uint32 temp1L; + drflac_uint32 temp2L; + drflac_uint32 temp3L; + drflac_uint32 temp0R; + drflac_uint32 temp1R; + drflac_uint32 temp2R; + drflac_uint32 temp3R; + + drflac_uint32 mid0 = pInputSamples0U32[i*4+0] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid1 = pInputSamples0U32[i*4+1] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid2 = pInputSamples0U32[i*4+2] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 mid3 = pInputSamples0U32[i*4+3] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + + drflac_uint32 side0 = pInputSamples1U32[i*4+0] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side1 = pInputSamples1U32[i*4+1] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side2 = pInputSamples1U32[i*4+2] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + drflac_uint32 side3 = pInputSamples1U32[i*4+3] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid0 = (mid0 << 1) | (side0 & 0x01); + mid1 = (mid1 << 1) | (side1 & 0x01); + mid2 = (mid2 << 1) | (side2 & 0x01); + mid3 = (mid3 << 1) | (side3 & 0x01); + + temp0L = (drflac_uint32)((drflac_int32)(mid0 + side0) >> 1); + temp1L = (drflac_uint32)((drflac_int32)(mid1 + side1) >> 1); + temp2L = (drflac_uint32)((drflac_int32)(mid2 + side2) >> 1); + temp3L = (drflac_uint32)((drflac_int32)(mid3 + side3) >> 1); + + temp0R = (drflac_uint32)((drflac_int32)(mid0 - side0) >> 1); + temp1R = (drflac_uint32)((drflac_int32)(mid1 - side1) >> 1); + temp2R = (drflac_uint32)((drflac_int32)(mid2 - side2) >> 1); + temp3R = (drflac_uint32)((drflac_int32)(mid3 - side3) >> 1); + + pOutputSamples[i*8+0] = (drflac_int32)temp0L * factor; + pOutputSamples[i*8+1] = (drflac_int32)temp0R * factor; + pOutputSamples[i*8+2] = (drflac_int32)temp1L * factor; + pOutputSamples[i*8+3] = (drflac_int32)temp1R * factor; + pOutputSamples[i*8+4] = (drflac_int32)temp2L * factor; + pOutputSamples[i*8+5] = (drflac_int32)temp2R * factor; + pOutputSamples[i*8+6] = (drflac_int32)temp3L * factor; + pOutputSamples[i*8+7] = (drflac_int32)temp3R * factor; + } + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)((drflac_uint32)((drflac_int32)(mid + side) >> 1) << unusedBitsPerSample) * factor; + pOutputSamples[i*2+1] = (drflac_int32)((drflac_uint32)((drflac_int32)(mid - side) >> 1) << unusedBitsPerSample) * factor; + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift = unusedBitsPerSample - 8; + float factor; + __m128 factor128; + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + factor = 1.0f / 8388608.0f; + factor128 = _mm_set1_ps(factor); + + if (shift == 0) { + for (i = 0; i < frameCount4; ++i) { + __m128i mid; + __m128i side; + __m128i tempL; + __m128i tempR; + __m128 leftf; + __m128 rightf; + + mid = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + + mid = _mm_or_si128(_mm_slli_epi32(mid, 1), _mm_and_si128(side, _mm_set1_epi32(0x01))); + + tempL = _mm_srai_epi32(_mm_add_epi32(mid, side), 1); + tempR = _mm_srai_epi32(_mm_sub_epi32(mid, side), 1); + + leftf = _mm_mul_ps(_mm_cvtepi32_ps(tempL), factor128); + rightf = _mm_mul_ps(_mm_cvtepi32_ps(tempR), factor128); + + _mm_storeu_ps(pOutputSamples + i*8 + 0, _mm_unpacklo_ps(leftf, rightf)); + _mm_storeu_ps(pOutputSamples + i*8 + 4, _mm_unpackhi_ps(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = ((drflac_int32)(mid + side) >> 1) * factor; + pOutputSamples[i*2+1] = ((drflac_int32)(mid - side) >> 1) * factor; + } + } else { + shift -= 1; + for (i = 0; i < frameCount4; ++i) { + __m128i mid; + __m128i side; + __m128i tempL; + __m128i tempR; + __m128 leftf; + __m128 rightf; + + mid = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + side = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + + mid = _mm_or_si128(_mm_slli_epi32(mid, 1), _mm_and_si128(side, _mm_set1_epi32(0x01))); + + tempL = _mm_slli_epi32(_mm_add_epi32(mid, side), shift); + tempR = _mm_slli_epi32(_mm_sub_epi32(mid, side), shift); + + leftf = _mm_mul_ps(_mm_cvtepi32_ps(tempL), factor128); + rightf = _mm_mul_ps(_mm_cvtepi32_ps(tempR), factor128); + + _mm_storeu_ps(pOutputSamples + i*8 + 0, _mm_unpacklo_ps(leftf, rightf)); + _mm_storeu_ps(pOutputSamples + i*8 + 4, _mm_unpackhi_ps(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)((mid + side) << shift) * factor; + pOutputSamples[i*2+1] = (drflac_int32)((mid - side) << shift) * factor; + } + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift = unusedBitsPerSample - 8; + float factor; + float32x4_t factor4; + int32x4_t shift4; + int32x4_t wbps0_4; /* Wasted Bits Per Sample */ + int32x4_t wbps1_4; /* Wasted Bits Per Sample */ + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 24); + + factor = 1.0f / 8388608.0f; + factor4 = vdupq_n_f32(factor); + wbps0_4 = vdupq_n_s32(pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample); + wbps1_4 = vdupq_n_s32(pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample); + + if (shift == 0) { + for (i = 0; i < frameCount4; ++i) { + int32x4_t lefti; + int32x4_t righti; + float32x4_t leftf; + float32x4_t rightf; + + uint32x4_t mid = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), wbps0_4); + uint32x4_t side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), wbps1_4); + + mid = vorrq_u32(vshlq_n_u32(mid, 1), vandq_u32(side, vdupq_n_u32(1))); + + lefti = vshrq_n_s32(vreinterpretq_s32_u32(vaddq_u32(mid, side)), 1); + righti = vshrq_n_s32(vreinterpretq_s32_u32(vsubq_u32(mid, side)), 1); + + leftf = vmulq_f32(vcvtq_f32_s32(lefti), factor4); + rightf = vmulq_f32(vcvtq_f32_s32(righti), factor4); + + drflac__vst2q_f32(pOutputSamples + i*8, vzipq_f32(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = ((drflac_int32)(mid + side) >> 1) * factor; + pOutputSamples[i*2+1] = ((drflac_int32)(mid - side) >> 1) * factor; + } + } else { + shift -= 1; + shift4 = vdupq_n_s32(shift); + for (i = 0; i < frameCount4; ++i) { + uint32x4_t mid; + uint32x4_t side; + int32x4_t lefti; + int32x4_t righti; + float32x4_t leftf; + float32x4_t rightf; + + mid = vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), wbps0_4); + side = vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), wbps1_4); + + mid = vorrq_u32(vshlq_n_u32(mid, 1), vandq_u32(side, vdupq_n_u32(1))); + + lefti = vreinterpretq_s32_u32(vshlq_u32(vaddq_u32(mid, side), shift4)); + righti = vreinterpretq_s32_u32(vshlq_u32(vsubq_u32(mid, side), shift4)); + + leftf = vmulq_f32(vcvtq_f32_s32(lefti), factor4); + rightf = vmulq_f32(vcvtq_f32_s32(righti), factor4); + + drflac__vst2q_f32(pOutputSamples + i*8, vzipq_f32(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + drflac_uint32 mid = pInputSamples0U32[i] << pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 side = pInputSamples1U32[i] << pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + + mid = (mid << 1) | (side & 0x01); + + pOutputSamples[i*2+0] = (drflac_int32)((mid + side) << shift) * factor; + pOutputSamples[i*2+1] = (drflac_int32)((mid - side) << shift) * factor; + } + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_mid_side(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_mid_side__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_mid_side__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_f32__decode_mid_side__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_f32__decode_mid_side__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + +#if 0 +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo__reference(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + for (drflac_uint64 i = 0; i < frameCount; ++i) { + pOutputSamples[i*2+0] = (float)((drflac_int32)((drflac_uint32)pInputSamples0[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample)) / 2147483648.0); + pOutputSamples[i*2+1] = (float)((drflac_int32)((drflac_uint32)pInputSamples1[i] << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample)) / 2147483648.0); + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo__scalar(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample; + drflac_uint32 shift1 = unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample; + float factor = 1 / 2147483648.0; + + for (i = 0; i < frameCount4; ++i) { + drflac_uint32 tempL0 = pInputSamples0U32[i*4+0] << shift0; + drflac_uint32 tempL1 = pInputSamples0U32[i*4+1] << shift0; + drflac_uint32 tempL2 = pInputSamples0U32[i*4+2] << shift0; + drflac_uint32 tempL3 = pInputSamples0U32[i*4+3] << shift0; + + drflac_uint32 tempR0 = pInputSamples1U32[i*4+0] << shift1; + drflac_uint32 tempR1 = pInputSamples1U32[i*4+1] << shift1; + drflac_uint32 tempR2 = pInputSamples1U32[i*4+2] << shift1; + drflac_uint32 tempR3 = pInputSamples1U32[i*4+3] << shift1; + + pOutputSamples[i*8+0] = (drflac_int32)tempL0 * factor; + pOutputSamples[i*8+1] = (drflac_int32)tempR0 * factor; + pOutputSamples[i*8+2] = (drflac_int32)tempL1 * factor; + pOutputSamples[i*8+3] = (drflac_int32)tempR1 * factor; + pOutputSamples[i*8+4] = (drflac_int32)tempL2 * factor; + pOutputSamples[i*8+5] = (drflac_int32)tempR2 * factor; + pOutputSamples[i*8+6] = (drflac_int32)tempL3 * factor; + pOutputSamples[i*8+7] = (drflac_int32)tempR3 * factor; + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int32)(pInputSamples0U32[i] << shift0) * factor; + pOutputSamples[i*2+1] = (drflac_int32)(pInputSamples1U32[i] << shift1) * factor; + } +} + +#if defined(DRFLAC_SUPPORT_SSE2) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo__sse2(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample) - 8; + drflac_uint32 shift1 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample) - 8; + + float factor = 1.0f / 8388608.0f; + __m128 factor128 = _mm_set1_ps(factor); + + for (i = 0; i < frameCount4; ++i) { + __m128i lefti; + __m128i righti; + __m128 leftf; + __m128 rightf; + + lefti = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples0 + i), shift0); + righti = _mm_slli_epi32(_mm_loadu_si128((const __m128i*)pInputSamples1 + i), shift1); + + leftf = _mm_mul_ps(_mm_cvtepi32_ps(lefti), factor128); + rightf = _mm_mul_ps(_mm_cvtepi32_ps(righti), factor128); + + _mm_storeu_ps(pOutputSamples + i*8 + 0, _mm_unpacklo_ps(leftf, rightf)); + _mm_storeu_ps(pOutputSamples + i*8 + 4, _mm_unpackhi_ps(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int32)(pInputSamples0U32[i] << shift0) * factor; + pOutputSamples[i*2+1] = (drflac_int32)(pInputSamples1U32[i] << shift1) * factor; + } +} +#endif + +#if defined(DRFLAC_SUPPORT_NEON) +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo__neon(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ + drflac_uint64 i; + drflac_uint64 frameCount4 = frameCount >> 2; + const drflac_uint32* pInputSamples0U32 = (const drflac_uint32*)pInputSamples0; + const drflac_uint32* pInputSamples1U32 = (const drflac_uint32*)pInputSamples1; + drflac_uint32 shift0 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[0].wastedBitsPerSample) - 8; + drflac_uint32 shift1 = (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[1].wastedBitsPerSample) - 8; + + float factor = 1.0f / 8388608.0f; + float32x4_t factor4 = vdupq_n_f32(factor); + int32x4_t shift0_4 = vdupq_n_s32(shift0); + int32x4_t shift1_4 = vdupq_n_s32(shift1); + + for (i = 0; i < frameCount4; ++i) { + int32x4_t lefti; + int32x4_t righti; + float32x4_t leftf; + float32x4_t rightf; + + lefti = vreinterpretq_s32_u32(vshlq_u32(vld1q_u32(pInputSamples0U32 + i*4), shift0_4)); + righti = vreinterpretq_s32_u32(vshlq_u32(vld1q_u32(pInputSamples1U32 + i*4), shift1_4)); + + leftf = vmulq_f32(vcvtq_f32_s32(lefti), factor4); + rightf = vmulq_f32(vcvtq_f32_s32(righti), factor4); + + drflac__vst2q_f32(pOutputSamples + i*8, vzipq_f32(leftf, rightf)); + } + + for (i = (frameCount4 << 2); i < frameCount; ++i) { + pOutputSamples[i*2+0] = (drflac_int32)(pInputSamples0U32[i] << shift0) * factor; + pOutputSamples[i*2+1] = (drflac_int32)(pInputSamples1U32[i] << shift1) * factor; + } +} +#endif + +static DRFLAC_INLINE void drflac_read_pcm_frames_f32__decode_independent_stereo(drflac* pFlac, drflac_uint64 frameCount, drflac_uint32 unusedBitsPerSample, const drflac_int32* pInputSamples0, const drflac_int32* pInputSamples1, float* pOutputSamples) +{ +#if defined(DRFLAC_SUPPORT_SSE2) + if (drflac__gIsSSE2Supported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_independent_stereo__sse2(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#elif defined(DRFLAC_SUPPORT_NEON) + if (drflac__gIsNEONSupported && pFlac->bitsPerSample <= 24) { + drflac_read_pcm_frames_f32__decode_independent_stereo__neon(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); + } else +#endif + { + /* Scalar fallback. */ +#if 0 + drflac_read_pcm_frames_f32__decode_independent_stereo__reference(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#else + drflac_read_pcm_frames_f32__decode_independent_stereo__scalar(pFlac, frameCount, unusedBitsPerSample, pInputSamples0, pInputSamples1, pOutputSamples); +#endif + } +} + +DRFLAC_API drflac_uint64 drflac_read_pcm_frames_f32(drflac* pFlac, drflac_uint64 framesToRead, float* pBufferOut) +{ + drflac_uint64 framesRead; + drflac_uint32 unusedBitsPerSample; + + if (pFlac == NULL || framesToRead == 0) { + return 0; + } + + if (pBufferOut == NULL) { + return drflac__seek_forward_by_pcm_frames(pFlac, framesToRead); + } + + DRFLAC_ASSERT(pFlac->bitsPerSample <= 32); + unusedBitsPerSample = 32 - pFlac->bitsPerSample; + + framesRead = 0; + while (framesToRead > 0) { + /* If we've run out of samples in this frame, go to the next. */ + if (pFlac->currentFLACFrame.pcmFramesRemaining == 0) { + if (!drflac__read_and_decode_next_flac_frame(pFlac)) { + break; /* Couldn't read the next frame, so just break from the loop and return. */ + } + } else { + unsigned int channelCount = drflac__get_channel_count_from_channel_assignment(pFlac->currentFLACFrame.header.channelAssignment); + drflac_uint64 iFirstPCMFrame = pFlac->currentFLACFrame.header.blockSizeInPCMFrames - pFlac->currentFLACFrame.pcmFramesRemaining; + drflac_uint64 frameCountThisIteration = framesToRead; + + if (frameCountThisIteration > pFlac->currentFLACFrame.pcmFramesRemaining) { + frameCountThisIteration = pFlac->currentFLACFrame.pcmFramesRemaining; + } + + if (channelCount == 2) { + const drflac_int32* pDecodedSamples0 = pFlac->currentFLACFrame.subframes[0].pSamplesS32 + iFirstPCMFrame; + const drflac_int32* pDecodedSamples1 = pFlac->currentFLACFrame.subframes[1].pSamplesS32 + iFirstPCMFrame; + + switch (pFlac->currentFLACFrame.header.channelAssignment) + { + case DRFLAC_CHANNEL_ASSIGNMENT_LEFT_SIDE: + { + drflac_read_pcm_frames_f32__decode_left_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_RIGHT_SIDE: + { + drflac_read_pcm_frames_f32__decode_right_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_MID_SIDE: + { + drflac_read_pcm_frames_f32__decode_mid_side(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + + case DRFLAC_CHANNEL_ASSIGNMENT_INDEPENDENT: + default: + { + drflac_read_pcm_frames_f32__decode_independent_stereo(pFlac, frameCountThisIteration, unusedBitsPerSample, pDecodedSamples0, pDecodedSamples1, pBufferOut); + } break; + } + } else { + /* Generic interleaving. */ + drflac_uint64 i; + for (i = 0; i < frameCountThisIteration; ++i) { + unsigned int j; + for (j = 0; j < channelCount; ++j) { + drflac_int32 sampleS32 = (drflac_int32)((drflac_uint32)(pFlac->currentFLACFrame.subframes[j].pSamplesS32[iFirstPCMFrame + i]) << (unusedBitsPerSample + pFlac->currentFLACFrame.subframes[j].wastedBitsPerSample)); + pBufferOut[(i*channelCount)+j] = (float)(sampleS32 / 2147483648.0); + } + } + } + + framesRead += frameCountThisIteration; + pBufferOut += frameCountThisIteration * channelCount; + framesToRead -= frameCountThisIteration; + pFlac->currentPCMFrame += frameCountThisIteration; + pFlac->currentFLACFrame.pcmFramesRemaining -= (unsigned int)frameCountThisIteration; + } + } + + return framesRead; +} + + +DRFLAC_API drflac_bool32 drflac_seek_to_pcm_frame(drflac* pFlac, drflac_uint64 pcmFrameIndex) +{ + if (pFlac == NULL) { + return DRFLAC_FALSE; + } + + /* Don't do anything if we're already on the seek point. */ + if (pFlac->currentPCMFrame == pcmFrameIndex) { + return DRFLAC_TRUE; + } + + /* + If we don't know where the first frame begins then we can't seek. This will happen when the STREAMINFO block was not present + when the decoder was opened. + */ + if (pFlac->firstFLACFramePosInBytes == 0) { + return DRFLAC_FALSE; + } + + if (pcmFrameIndex == 0) { + pFlac->currentPCMFrame = 0; + return drflac__seek_to_first_frame(pFlac); + } else { + drflac_bool32 wasSuccessful = DRFLAC_FALSE; + drflac_uint64 originalPCMFrame = pFlac->currentPCMFrame; + + /* Clamp the sample to the end. */ + if (pcmFrameIndex > pFlac->totalPCMFrameCount) { + pcmFrameIndex = pFlac->totalPCMFrameCount; + } + + /* If the target sample and the current sample are in the same frame we just move the position forward. */ + if (pcmFrameIndex > pFlac->currentPCMFrame) { + /* Forward. */ + drflac_uint32 offset = (drflac_uint32)(pcmFrameIndex - pFlac->currentPCMFrame); + if (pFlac->currentFLACFrame.pcmFramesRemaining > offset) { + pFlac->currentFLACFrame.pcmFramesRemaining -= offset; + pFlac->currentPCMFrame = pcmFrameIndex; + return DRFLAC_TRUE; + } + } else { + /* Backward. */ + drflac_uint32 offsetAbs = (drflac_uint32)(pFlac->currentPCMFrame - pcmFrameIndex); + drflac_uint32 currentFLACFramePCMFrameCount = pFlac->currentFLACFrame.header.blockSizeInPCMFrames; + drflac_uint32 currentFLACFramePCMFramesConsumed = currentFLACFramePCMFrameCount - pFlac->currentFLACFrame.pcmFramesRemaining; + if (currentFLACFramePCMFramesConsumed > offsetAbs) { + pFlac->currentFLACFrame.pcmFramesRemaining += offsetAbs; + pFlac->currentPCMFrame = pcmFrameIndex; + return DRFLAC_TRUE; + } + } + + /* + Different techniques depending on encapsulation. Using the native FLAC seektable with Ogg encapsulation is a bit awkward so + we'll instead use Ogg's natural seeking facility. + */ +#ifndef DR_FLAC_NO_OGG + if (pFlac->container == drflac_container_ogg) + { + wasSuccessful = drflac_ogg__seek_to_pcm_frame(pFlac, pcmFrameIndex); + } + else +#endif + { + /* First try seeking via the seek table. If this fails, fall back to a brute force seek which is much slower. */ + if (/*!wasSuccessful && */!pFlac->_noSeekTableSeek) { + wasSuccessful = drflac__seek_to_pcm_frame__seek_table(pFlac, pcmFrameIndex); + } + +#if !defined(DR_FLAC_NO_CRC) + /* Fall back to binary search if seek table seeking fails. This requires the length of the stream to be known. */ + if (!wasSuccessful && !pFlac->_noBinarySearchSeek && pFlac->totalPCMFrameCount > 0) { + wasSuccessful = drflac__seek_to_pcm_frame__binary_search(pFlac, pcmFrameIndex); + } +#endif + + /* Fall back to brute force if all else fails. */ + if (!wasSuccessful && !pFlac->_noBruteForceSeek) { + wasSuccessful = drflac__seek_to_pcm_frame__brute_force(pFlac, pcmFrameIndex); + } + } + + if (wasSuccessful) { + pFlac->currentPCMFrame = pcmFrameIndex; + } else { + /* Seek failed. Try putting the decoder back to it's original state. */ + if (drflac_seek_to_pcm_frame(pFlac, originalPCMFrame) == DRFLAC_FALSE) { + /* Failed to seek back to the original PCM frame. Fall back to 0. */ + drflac_seek_to_pcm_frame(pFlac, 0); + } + } + + return wasSuccessful; + } +} + + + +/* High Level APIs */ + +/* SIZE_MAX */ +#if defined(SIZE_MAX) + #define DRFLAC_SIZE_MAX SIZE_MAX +#else + #if defined(DRFLAC_64BIT) + #define DRFLAC_SIZE_MAX ((drflac_uint64)0xFFFFFFFFFFFFFFFF) + #else + #define DRFLAC_SIZE_MAX 0xFFFFFFFF + #endif +#endif +/* End SIZE_MAX */ + + +/* Using a macro as the definition of the drflac__full_decode_and_close_*() API family. Sue me. */ +#define DRFLAC_DEFINE_FULL_READ_AND_CLOSE(extension, type) \ +static type* drflac__full_read_and_close_ ## extension (drflac* pFlac, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut)\ +{ \ + type* pSampleData = NULL; \ + drflac_uint64 totalPCMFrameCount; \ + \ + DRFLAC_ASSERT(pFlac != NULL); \ + \ + totalPCMFrameCount = pFlac->totalPCMFrameCount; \ + \ + if (totalPCMFrameCount == 0) { \ + type buffer[4096]; \ + drflac_uint64 pcmFramesRead; \ + size_t sampleDataBufferSize = sizeof(buffer); \ + \ + pSampleData = (type*)drflac__malloc_from_callbacks(sampleDataBufferSize, &pFlac->allocationCallbacks); \ + if (pSampleData == NULL) { \ + goto on_error; \ + } \ + \ + while ((pcmFramesRead = (drflac_uint64)drflac_read_pcm_frames_##extension(pFlac, sizeof(buffer)/sizeof(buffer[0])/pFlac->channels, buffer)) > 0) { \ + if (((totalPCMFrameCount + pcmFramesRead) * pFlac->channels * sizeof(type)) > sampleDataBufferSize) { \ + type* pNewSampleData; \ + size_t newSampleDataBufferSize; \ + \ + newSampleDataBufferSize = sampleDataBufferSize * 2; \ + pNewSampleData = (type*)drflac__realloc_from_callbacks(pSampleData, newSampleDataBufferSize, sampleDataBufferSize, &pFlac->allocationCallbacks); \ + if (pNewSampleData == NULL) { \ + drflac__free_from_callbacks(pSampleData, &pFlac->allocationCallbacks); \ + goto on_error; \ + } \ + \ + sampleDataBufferSize = newSampleDataBufferSize; \ + pSampleData = pNewSampleData; \ + } \ + \ + DRFLAC_COPY_MEMORY(pSampleData + (totalPCMFrameCount*pFlac->channels), buffer, (size_t)(pcmFramesRead*pFlac->channels*sizeof(type))); \ + totalPCMFrameCount += pcmFramesRead; \ + } \ + \ + /* At this point everything should be decoded, but we just want to fill the unused part buffer with silence - need to \ + protect those ears from random noise! */ \ + DRFLAC_ZERO_MEMORY(pSampleData + (totalPCMFrameCount*pFlac->channels), (size_t)(sampleDataBufferSize - totalPCMFrameCount*pFlac->channels*sizeof(type))); \ + } else { \ + drflac_uint64 dataSize = totalPCMFrameCount*pFlac->channels*sizeof(type); \ + if (dataSize > (drflac_uint64)DRFLAC_SIZE_MAX) { \ + goto on_error; /* The decoded data is too big. */ \ + } \ + \ + pSampleData = (type*)drflac__malloc_from_callbacks((size_t)dataSize, &pFlac->allocationCallbacks); /* <-- Safe cast as per the check above. */ \ + if (pSampleData == NULL) { \ + goto on_error; \ + } \ + \ + totalPCMFrameCount = drflac_read_pcm_frames_##extension(pFlac, pFlac->totalPCMFrameCount, pSampleData); \ + } \ + \ + if (sampleRateOut) *sampleRateOut = pFlac->sampleRate; \ + if (channelsOut) *channelsOut = pFlac->channels; \ + if (totalPCMFrameCountOut) *totalPCMFrameCountOut = totalPCMFrameCount; \ + \ + drflac_close(pFlac); \ + return pSampleData; \ + \ +on_error: \ + drflac_close(pFlac); \ + return NULL; \ +} + +DRFLAC_DEFINE_FULL_READ_AND_CLOSE(s32, drflac_int32) +DRFLAC_DEFINE_FULL_READ_AND_CLOSE(s16, drflac_int16) +DRFLAC_DEFINE_FULL_READ_AND_CLOSE(f32, float) + +DRFLAC_API drflac_int32* drflac_open_and_read_pcm_frames_s32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (channelsOut) { + *channelsOut = 0; + } + if (sampleRateOut) { + *sampleRateOut = 0; + } + if (totalPCMFrameCountOut) { + *totalPCMFrameCountOut = 0; + } + + pFlac = drflac_open(onRead, onSeek, pUserData, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s32(pFlac, channelsOut, sampleRateOut, totalPCMFrameCountOut); +} + +DRFLAC_API drflac_int16* drflac_open_and_read_pcm_frames_s16(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (channelsOut) { + *channelsOut = 0; + } + if (sampleRateOut) { + *sampleRateOut = 0; + } + if (totalPCMFrameCountOut) { + *totalPCMFrameCountOut = 0; + } + + pFlac = drflac_open(onRead, onSeek, pUserData, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s16(pFlac, channelsOut, sampleRateOut, totalPCMFrameCountOut); +} + +DRFLAC_API float* drflac_open_and_read_pcm_frames_f32(drflac_read_proc onRead, drflac_seek_proc onSeek, void* pUserData, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalPCMFrameCountOut, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (channelsOut) { + *channelsOut = 0; + } + if (sampleRateOut) { + *sampleRateOut = 0; + } + if (totalPCMFrameCountOut) { + *totalPCMFrameCountOut = 0; + } + + pFlac = drflac_open(onRead, onSeek, pUserData, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_f32(pFlac, channelsOut, sampleRateOut, totalPCMFrameCountOut); +} + +#ifndef DR_FLAC_NO_STDIO +DRFLAC_API drflac_int32* drflac_open_file_and_read_pcm_frames_s32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (sampleRate) { + *sampleRate = 0; + } + if (channels) { + *channels = 0; + } + if (totalPCMFrameCount) { + *totalPCMFrameCount = 0; + } + + pFlac = drflac_open_file(filename, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s32(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +DRFLAC_API drflac_int16* drflac_open_file_and_read_pcm_frames_s16(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (sampleRate) { + *sampleRate = 0; + } + if (channels) { + *channels = 0; + } + if (totalPCMFrameCount) { + *totalPCMFrameCount = 0; + } + + pFlac = drflac_open_file(filename, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s16(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +DRFLAC_API float* drflac_open_file_and_read_pcm_frames_f32(const char* filename, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (sampleRate) { + *sampleRate = 0; + } + if (channels) { + *channels = 0; + } + if (totalPCMFrameCount) { + *totalPCMFrameCount = 0; + } + + pFlac = drflac_open_file(filename, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_f32(pFlac, channels, sampleRate, totalPCMFrameCount); +} +#endif + +DRFLAC_API drflac_int32* drflac_open_memory_and_read_pcm_frames_s32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (sampleRate) { + *sampleRate = 0; + } + if (channels) { + *channels = 0; + } + if (totalPCMFrameCount) { + *totalPCMFrameCount = 0; + } + + pFlac = drflac_open_memory(data, dataSize, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s32(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +DRFLAC_API drflac_int16* drflac_open_memory_and_read_pcm_frames_s16(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (sampleRate) { + *sampleRate = 0; + } + if (channels) { + *channels = 0; + } + if (totalPCMFrameCount) { + *totalPCMFrameCount = 0; + } + + pFlac = drflac_open_memory(data, dataSize, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_s16(pFlac, channels, sampleRate, totalPCMFrameCount); +} + +DRFLAC_API float* drflac_open_memory_and_read_pcm_frames_f32(const void* data, size_t dataSize, unsigned int* channels, unsigned int* sampleRate, drflac_uint64* totalPCMFrameCount, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + drflac* pFlac; + + if (sampleRate) { + *sampleRate = 0; + } + if (channels) { + *channels = 0; + } + if (totalPCMFrameCount) { + *totalPCMFrameCount = 0; + } + + pFlac = drflac_open_memory(data, dataSize, pAllocationCallbacks); + if (pFlac == NULL) { + return NULL; + } + + return drflac__full_read_and_close_f32(pFlac, channels, sampleRate, totalPCMFrameCount); +} + + +DRFLAC_API void drflac_free(void* p, const drflac_allocation_callbacks* pAllocationCallbacks) +{ + if (pAllocationCallbacks != NULL) { + drflac__free_from_callbacks(p, pAllocationCallbacks); + } else { + drflac__free_default(p, NULL); + } +} + + + + +DRFLAC_API void drflac_init_vorbis_comment_iterator(drflac_vorbis_comment_iterator* pIter, drflac_uint32 commentCount, const void* pComments) +{ + if (pIter == NULL) { + return; + } + + pIter->countRemaining = commentCount; + pIter->pRunningData = (const char*)pComments; +} + +DRFLAC_API const char* drflac_next_vorbis_comment(drflac_vorbis_comment_iterator* pIter, drflac_uint32* pCommentLengthOut) +{ + drflac_int32 length; + const char* pComment; + + /* Safety. */ + if (pCommentLengthOut) { + *pCommentLengthOut = 0; + } + + if (pIter == NULL || pIter->countRemaining == 0 || pIter->pRunningData == NULL) { + return NULL; + } + + length = drflac__le2host_32_ptr_unaligned(pIter->pRunningData); + pIter->pRunningData += 4; + + pComment = pIter->pRunningData; + pIter->pRunningData += length; + pIter->countRemaining -= 1; + + if (pCommentLengthOut) { + *pCommentLengthOut = length; + } + + return pComment; +} + + + + +DRFLAC_API void drflac_init_cuesheet_track_iterator(drflac_cuesheet_track_iterator* pIter, drflac_uint32 trackCount, const void* pTrackData) +{ + if (pIter == NULL) { + return; + } + + pIter->countRemaining = trackCount; + pIter->pRunningData = (const char*)pTrackData; +} + +DRFLAC_API drflac_bool32 drflac_next_cuesheet_track(drflac_cuesheet_track_iterator* pIter, drflac_cuesheet_track* pCuesheetTrack) +{ + drflac_cuesheet_track cuesheetTrack; + const char* pRunningData; + drflac_uint64 offsetHi; + drflac_uint64 offsetLo; + + if (pIter == NULL || pIter->countRemaining == 0 || pIter->pRunningData == NULL) { + return DRFLAC_FALSE; + } + + pRunningData = pIter->pRunningData; + + offsetHi = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + offsetLo = drflac__be2host_32(*(const drflac_uint32*)pRunningData); pRunningData += 4; + cuesheetTrack.offset = offsetLo | (offsetHi << 32); + cuesheetTrack.trackNumber = pRunningData[0]; pRunningData += 1; + DRFLAC_COPY_MEMORY(cuesheetTrack.ISRC, pRunningData, sizeof(cuesheetTrack.ISRC)); pRunningData += 12; + cuesheetTrack.isAudio = (pRunningData[0] & 0x80) != 0; + cuesheetTrack.preEmphasis = (pRunningData[0] & 0x40) != 0; pRunningData += 14; + cuesheetTrack.indexCount = pRunningData[0]; pRunningData += 1; + cuesheetTrack.pIndexPoints = (const drflac_cuesheet_track_index*)pRunningData; pRunningData += cuesheetTrack.indexCount * sizeof(drflac_cuesheet_track_index); + + pIter->pRunningData = pRunningData; + pIter->countRemaining -= 1; + + if (pCuesheetTrack) { + *pCuesheetTrack = cuesheetTrack; + } + + return DRFLAC_TRUE; +} + +#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))) + #pragma GCC diagnostic pop +#endif +#endif /* dr_flac_c */ +#endif /* DR_FLAC_IMPLEMENTATION */ + + +/* +REVISION HISTORY +================ +v0.12.42 - 2023-11-02 + - Fix build for ARMv6-M. + - Fix a compilation warning with GCC. + +v0.12.41 - 2023-06-17 + - Fix an incorrect date in revision history. No functional change. + +v0.12.40 - 2023-05-22 + - Minor code restructure. No functional change. + +v0.12.39 - 2022-09-17 + - Fix compilation with DJGPP. + - Fix compilation error with Visual Studio 2019 and the ARM build. + - Fix an error with SSE 4.1 detection. + - Add support for disabling wchar_t with DR_WAV_NO_WCHAR. + - Improve compatibility with compilers which lack support for explicit struct packing. + - Improve compatibility with low-end and embedded hardware by reducing the amount of stack + allocation when loading an Ogg encapsulated file. + +v0.12.38 - 2022-04-10 + - Fix compilation error on older versions of GCC. + +v0.12.37 - 2022-02-12 + - Improve ARM detection. + +v0.12.36 - 2022-02-07 + - Fix a compilation error with the ARM build. + +v0.12.35 - 2022-02-06 + - Fix a bug due to underestimating the amount of precision required for the prediction stage. + - Fix some bugs found from fuzz testing. + +v0.12.34 - 2022-01-07 + - Fix some misalignment bugs when reading metadata. + +v0.12.33 - 2021-12-22 + - Fix a bug with seeking when the seek table does not start at PCM frame 0. + +v0.12.32 - 2021-12-11 + - Fix a warning with Clang. + +v0.12.31 - 2021-08-16 + - Silence some warnings. + +v0.12.30 - 2021-07-31 + - Fix platform detection for ARM64. + +v0.12.29 - 2021-04-02 + - Fix a bug where the running PCM frame index is set to an invalid value when over-seeking. + - Fix a decoding error due to an incorrect validation check. + +v0.12.28 - 2021-02-21 + - Fix a warning due to referencing _MSC_VER when it is undefined. + +v0.12.27 - 2021-01-31 + - Fix a static analysis warning. + +v0.12.26 - 2021-01-17 + - Fix a compilation warning due to _BSD_SOURCE being deprecated. + +v0.12.25 - 2020-12-26 + - Update documentation. + +v0.12.24 - 2020-11-29 + - Fix ARM64/NEON detection when compiling with MSVC. + +v0.12.23 - 2020-11-21 + - Fix compilation with OpenWatcom. + +v0.12.22 - 2020-11-01 + - Fix an error with the previous release. + +v0.12.21 - 2020-11-01 + - Fix a possible deadlock when seeking. + - Improve compiler support for older versions of GCC. + +v0.12.20 - 2020-09-08 + - Fix a compilation error on older compilers. + +v0.12.19 - 2020-08-30 + - Fix a bug due to an undefined 32-bit shift. + +v0.12.18 - 2020-08-14 + - Fix a crash when compiling with clang-cl. + +v0.12.17 - 2020-08-02 + - Simplify sized types. + +v0.12.16 - 2020-07-25 + - Fix a compilation warning. + +v0.12.15 - 2020-07-06 + - Check for negative LPC shifts and return an error. + +v0.12.14 - 2020-06-23 + - Add include guard for the implementation section. + +v0.12.13 - 2020-05-16 + - Add compile-time and run-time version querying. + - DRFLAC_VERSION_MINOR + - DRFLAC_VERSION_MAJOR + - DRFLAC_VERSION_REVISION + - DRFLAC_VERSION_STRING + - drflac_version() + - drflac_version_string() + +v0.12.12 - 2020-04-30 + - Fix compilation errors with VC6. + +v0.12.11 - 2020-04-19 + - Fix some pedantic warnings. + - Fix some undefined behaviour warnings. + +v0.12.10 - 2020-04-10 + - Fix some bugs when trying to seek with an invalid seek table. + +v0.12.9 - 2020-04-05 + - Fix warnings. + +v0.12.8 - 2020-04-04 + - Add drflac_open_file_w() and drflac_open_file_with_metadata_w(). + - Fix some static analysis warnings. + - Minor documentation updates. + +v0.12.7 - 2020-03-14 + - Fix compilation errors with VC6. + +v0.12.6 - 2020-03-07 + - Fix compilation error with Visual Studio .NET 2003. + +v0.12.5 - 2020-01-30 + - Silence some static analysis warnings. + +v0.12.4 - 2020-01-29 + - Silence some static analysis warnings. + +v0.12.3 - 2019-12-02 + - Fix some warnings when compiling with GCC and the -Og flag. + - Fix a crash in out-of-memory situations. + - Fix potential integer overflow bug. + - Fix some static analysis warnings. + - Fix a possible crash when using custom memory allocators without a custom realloc() implementation. + - Fix a bug with binary search seeking where the bits per sample is not a multiple of 8. + +v0.12.2 - 2019-10-07 + - Internal code clean up. + +v0.12.1 - 2019-09-29 + - Fix some Clang Static Analyzer warnings. + - Fix an unused variable warning. + +v0.12.0 - 2019-09-23 + - API CHANGE: Add support for user defined memory allocation routines. This system allows the program to specify their own memory allocation + routines with a user data pointer for client-specific contextual data. This adds an extra parameter to the end of the following APIs: + - drflac_open() + - drflac_open_relaxed() + - drflac_open_with_metadata() + - drflac_open_with_metadata_relaxed() + - drflac_open_file() + - drflac_open_file_with_metadata() + - drflac_open_memory() + - drflac_open_memory_with_metadata() + - drflac_open_and_read_pcm_frames_s32() + - drflac_open_and_read_pcm_frames_s16() + - drflac_open_and_read_pcm_frames_f32() + - drflac_open_file_and_read_pcm_frames_s32() + - drflac_open_file_and_read_pcm_frames_s16() + - drflac_open_file_and_read_pcm_frames_f32() + - drflac_open_memory_and_read_pcm_frames_s32() + - drflac_open_memory_and_read_pcm_frames_s16() + - drflac_open_memory_and_read_pcm_frames_f32() + Set this extra parameter to NULL to use defaults which is the same as the previous behaviour. Setting this NULL will use + DRFLAC_MALLOC, DRFLAC_REALLOC and DRFLAC_FREE. + - Remove deprecated APIs: + - drflac_read_s32() + - drflac_read_s16() + - drflac_read_f32() + - drflac_seek_to_sample() + - drflac_open_and_decode_s32() + - drflac_open_and_decode_s16() + - drflac_open_and_decode_f32() + - drflac_open_and_decode_file_s32() + - drflac_open_and_decode_file_s16() + - drflac_open_and_decode_file_f32() + - drflac_open_and_decode_memory_s32() + - drflac_open_and_decode_memory_s16() + - drflac_open_and_decode_memory_f32() + - Remove drflac.totalSampleCount which is now replaced with drflac.totalPCMFrameCount. You can emulate drflac.totalSampleCount + by doing pFlac->totalPCMFrameCount*pFlac->channels. + - Rename drflac.currentFrame to drflac.currentFLACFrame to remove ambiguity with PCM frames. + - Fix errors when seeking to the end of a stream. + - Optimizations to seeking. + - SSE improvements and optimizations. + - ARM NEON optimizations. + - Optimizations to drflac_read_pcm_frames_s16(). + - Optimizations to drflac_read_pcm_frames_s32(). + +v0.11.10 - 2019-06-26 + - Fix a compiler error. + +v0.11.9 - 2019-06-16 + - Silence some ThreadSanitizer warnings. + +v0.11.8 - 2019-05-21 + - Fix warnings. + +v0.11.7 - 2019-05-06 + - C89 fixes. + +v0.11.6 - 2019-05-05 + - Add support for C89. + - Fix a compiler warning when CRC is disabled. + - Change license to choice of public domain or MIT-0. + +v0.11.5 - 2019-04-19 + - Fix a compiler error with GCC. + +v0.11.4 - 2019-04-17 + - Fix some warnings with GCC when compiling with -std=c99. + +v0.11.3 - 2019-04-07 + - Silence warnings with GCC. + +v0.11.2 - 2019-03-10 + - Fix a warning. + +v0.11.1 - 2019-02-17 + - Fix a potential bug with seeking. + +v0.11.0 - 2018-12-16 + - API CHANGE: Deprecated drflac_read_s32(), drflac_read_s16() and drflac_read_f32() and replaced them with + drflac_read_pcm_frames_s32(), drflac_read_pcm_frames_s16() and drflac_read_pcm_frames_f32(). The new APIs take + and return PCM frame counts instead of sample counts. To upgrade you will need to change the input count by + dividing it by the channel count, and then do the same with the return value. + - API_CHANGE: Deprecated drflac_seek_to_sample() and replaced with drflac_seek_to_pcm_frame(). Same rules as + the changes to drflac_read_*() apply. + - API CHANGE: Deprecated drflac_open_and_decode_*() and replaced with drflac_open_*_and_read_*(). Same rules as + the changes to drflac_read_*() apply. + - Optimizations. + +v0.10.0 - 2018-09-11 + - Remove the DR_FLAC_NO_WIN32_IO option and the Win32 file IO functionality. If you need to use Win32 file IO you + need to do it yourself via the callback API. + - Fix the clang build. + - Fix undefined behavior. + - Fix errors with CUESHEET metdata blocks. + - Add an API for iterating over each cuesheet track in the CUESHEET metadata block. This works the same way as the + Vorbis comment API. + - Other miscellaneous bug fixes, mostly relating to invalid FLAC streams. + - Minor optimizations. + +v0.9.11 - 2018-08-29 + - Fix a bug with sample reconstruction. + +v0.9.10 - 2018-08-07 + - Improve 64-bit detection. + +v0.9.9 - 2018-08-05 + - Fix C++ build on older versions of GCC. + +v0.9.8 - 2018-07-24 + - Fix compilation errors. + +v0.9.7 - 2018-07-05 + - Fix a warning. + +v0.9.6 - 2018-06-29 + - Fix some typos. + +v0.9.5 - 2018-06-23 + - Fix some warnings. + +v0.9.4 - 2018-06-14 + - Optimizations to seeking. + - Clean up. + +v0.9.3 - 2018-05-22 + - Bug fix. + +v0.9.2 - 2018-05-12 + - Fix a compilation error due to a missing break statement. + +v0.9.1 - 2018-04-29 + - Fix compilation error with Clang. + +v0.9 - 2018-04-24 + - Fix Clang build. + - Start using major.minor.revision versioning. + +v0.8g - 2018-04-19 + - Fix build on non-x86/x64 architectures. + +v0.8f - 2018-02-02 + - Stop pretending to support changing rate/channels mid stream. + +v0.8e - 2018-02-01 + - Fix a crash when the block size of a frame is larger than the maximum block size defined by the FLAC stream. + - Fix a crash the the Rice partition order is invalid. + +v0.8d - 2017-09-22 + - Add support for decoding streams with ID3 tags. ID3 tags are just skipped. + +v0.8c - 2017-09-07 + - Fix warning on non-x86/x64 architectures. + +v0.8b - 2017-08-19 + - Fix build on non-x86/x64 architectures. + +v0.8a - 2017-08-13 + - A small optimization for the Clang build. + +v0.8 - 2017-08-12 + - API CHANGE: Rename dr_* types to drflac_*. + - Optimizations. This brings dr_flac back to about the same class of efficiency as the reference implementation. + - Add support for custom implementations of malloc(), realloc(), etc. + - Add CRC checking to Ogg encapsulated streams. + - Fix VC++ 6 build. This is only for the C++ compiler. The C compiler is not currently supported. + - Bug fixes. + +v0.7 - 2017-07-23 + - Add support for opening a stream without a header block. To do this, use drflac_open_relaxed() / drflac_open_with_metadata_relaxed(). + +v0.6 - 2017-07-22 + - Add support for recovering from invalid frames. With this change, dr_flac will simply skip over invalid frames as if they + never existed. Frames are checked against their sync code, the CRC-8 of the frame header and the CRC-16 of the whole frame. + +v0.5 - 2017-07-16 + - Fix typos. + - Change drflac_bool* types to unsigned. + - Add CRC checking. This makes dr_flac slower, but can be disabled with #define DR_FLAC_NO_CRC. + +v0.4f - 2017-03-10 + - Fix a couple of bugs with the bitstreaming code. + +v0.4e - 2017-02-17 + - Fix some warnings. + +v0.4d - 2016-12-26 + - Add support for 32-bit floating-point PCM decoding. + - Use drflac_int* and drflac_uint* sized types to improve compiler support. + - Minor improvements to documentation. + +v0.4c - 2016-12-26 + - Add support for signed 16-bit integer PCM decoding. + +v0.4b - 2016-10-23 + - A minor change to drflac_bool8 and drflac_bool32 types. + +v0.4a - 2016-10-11 + - Rename drBool32 to drflac_bool32 for styling consistency. + +v0.4 - 2016-09-29 + - API/ABI CHANGE: Use fixed size 32-bit booleans instead of the built-in bool type. + - API CHANGE: Rename drflac_open_and_decode*() to drflac_open_and_decode*_s32(). + - API CHANGE: Swap the order of "channels" and "sampleRate" parameters in drflac_open_and_decode*(). Rationale for this is to + keep it consistent with drflac_audio. + +v0.3f - 2016-09-21 + - Fix a warning with GCC. + +v0.3e - 2016-09-18 + - Fixed a bug where GCC 4.3+ was not getting properly identified. + - Fixed a few typos. + - Changed date formats to ISO 8601 (YYYY-MM-DD). + +v0.3d - 2016-06-11 + - Minor clean up. + +v0.3c - 2016-05-28 + - Fixed compilation error. + +v0.3b - 2016-05-16 + - Fixed Linux/GCC build. + - Updated documentation. + +v0.3a - 2016-05-15 + - Minor fixes to documentation. + +v0.3 - 2016-05-11 + - Optimizations. Now at about parity with the reference implementation on 32-bit builds. + - Lots of clean up. + +v0.2b - 2016-05-10 + - Bug fixes. + +v0.2a - 2016-05-10 + - Made drflac_open_and_decode() more robust. + - Removed an unused debugging variable + +v0.2 - 2016-05-09 + - Added support for Ogg encapsulation. + - API CHANGE. Have the onSeek callback take a third argument which specifies whether or not the seek + should be relative to the start or the current position. Also changes the seeking rules such that + seeking offsets will never be negative. + - Have drflac_open_and_decode() fail gracefully if the stream has an unknown total sample count. + +v0.1b - 2016-05-07 + - Properly close the file handle in drflac_open_file() and family when the decoder fails to initialize. + - Removed a stale comment. + +v0.1a - 2016-05-05 + - Minor formatting changes. + - Fixed a warning on the GCC build. + +v0.1 - 2016-05-03 + - Initial versioned release. +*/ + +/* +This software is available as a choice of the following licenses. Choose +whichever you prefer. + +=============================================================================== +ALTERNATIVE 1 - Public Domain (www.unlicense.org) +=============================================================================== +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. + +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to + +=============================================================================== +ALTERNATIVE 2 - MIT No Attribution +=============================================================================== +Copyright 2023 David Reid + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ diff --git a/LibraryViewer/ext/picojson.h b/LibraryViewer/ext/picojson.h new file mode 100644 index 0000000..76742fe --- /dev/null +++ b/LibraryViewer/ext/picojson.h @@ -0,0 +1,1200 @@ +/* + * Copyright 2009-2010 Cybozu Labs, Inc. + * Copyright 2011-2014 Kazuho Oku + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef picojson_h +#define picojson_h + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// for isnan/isinf +#if __cplusplus >= 201103L +#include +#else +extern "C" { +#ifdef _MSC_VER +#include +#elif defined(__INTEL_COMPILER) +#include +#else +#include +#endif +} +#endif + +#ifndef PICOJSON_USE_RVALUE_REFERENCE +#if (defined(__cpp_rvalue_references) && __cpp_rvalue_references >= 200610) || (defined(_MSC_VER) && _MSC_VER >= 1600) +#define PICOJSON_USE_RVALUE_REFERENCE 1 +#else +#define PICOJSON_USE_RVALUE_REFERENCE 0 +#endif +#endif // PICOJSON_USE_RVALUE_REFERENCE + +#ifndef PICOJSON_NOEXCEPT +#if PICOJSON_USE_RVALUE_REFERENCE +#define PICOJSON_NOEXCEPT noexcept +#else +#define PICOJSON_NOEXCEPT throw() +#endif +#endif + +// experimental support for int64_t (see README.mkdn for detail) +#ifdef PICOJSON_USE_INT64 +#define __STDC_FORMAT_MACROS +#include +#if __cplusplus >= 201103L +#include +#else +extern "C" { +#include +} +#endif +#endif + +// to disable the use of localeconv(3), set PICOJSON_USE_LOCALE to 0 +#ifndef PICOJSON_USE_LOCALE +#define PICOJSON_USE_LOCALE 1 +#endif +#if PICOJSON_USE_LOCALE +extern "C" { +#include +} +#endif + +#ifndef PICOJSON_ASSERT +#define PICOJSON_ASSERT(e) \ + do { \ + if (!(e)) \ + throw std::runtime_error(#e); \ + } while (0) +#endif + +#ifdef _MSC_VER +#define SNPRINTF _snprintf_s +#pragma warning(push) +#pragma warning(disable : 4244) // conversion from int to char +#pragma warning(disable : 4127) // conditional expression is constant +#pragma warning(disable : 4702) // unreachable code +#pragma warning(disable : 4706) // assignment within conditional expression +#else +#define SNPRINTF snprintf +#endif + +namespace picojson { + +enum { + null_type, + boolean_type, + number_type, + string_type, + array_type, + object_type +#ifdef PICOJSON_USE_INT64 + , + int64_type +#endif +}; + +enum { INDENT_WIDTH = 2, DEFAULT_MAX_DEPTHS = 100 }; + +struct null {}; + +class value { +public: + typedef std::vector array; + typedef std::map object; + union _storage { + bool boolean_; + double number_; +#ifdef PICOJSON_USE_INT64 + int64_t int64_; +#endif + std::string *string_; + array *array_; + object *object_; + }; + +protected: + int type_; + _storage u_; + +public: + value(); + value(int type, bool); + explicit value(bool b); +#ifdef PICOJSON_USE_INT64 + explicit value(int64_t i); +#endif + explicit value(double n); + explicit value(const std::string &s); + explicit value(const array &a); + explicit value(const object &o); +#if PICOJSON_USE_RVALUE_REFERENCE + explicit value(std::string &&s); + explicit value(array &&a); + explicit value(object &&o); +#endif + explicit value(const char *s); + value(const char *s, size_t len); + ~value(); + value(const value &x); + value &operator=(const value &x); +#if PICOJSON_USE_RVALUE_REFERENCE + value(value &&x) PICOJSON_NOEXCEPT; + value &operator=(value &&x) PICOJSON_NOEXCEPT; +#endif + void swap(value &x) PICOJSON_NOEXCEPT; + template bool is() const; + template const T &get() const; + template T &get(); + template void set(const T &); +#if PICOJSON_USE_RVALUE_REFERENCE + template void set(T &&); +#endif + bool evaluate_as_boolean() const; + const value &get(const size_t idx) const; + const value &get(const std::string &key) const; + value &get(const size_t idx); + value &get(const std::string &key); + + bool contains(const size_t idx) const; + bool contains(const std::string &key) const; + std::string to_str() const; + template void serialize(Iter os, bool prettify = false) const; + std::string serialize(bool prettify = false) const; + +private: + template value(const T *); // intentionally defined to block implicit conversion of pointer to bool + template static void _indent(Iter os, int indent); + template void _serialize(Iter os, int indent) const; + std::string _serialize(int indent) const; + void clear(); +}; + +typedef value::array array; +typedef value::object object; + +inline value::value() : type_(null_type), u_() { +} + +inline value::value(int type, bool) : type_(type), u_() { + switch (type) { +#define INIT(p, v) \ + case p##type: \ + u_.p = v; \ + break + INIT(boolean_, false); + INIT(number_, 0.0); +#ifdef PICOJSON_USE_INT64 + INIT(int64_, 0); +#endif + INIT(string_, new std::string()); + INIT(array_, new array()); + INIT(object_, new object()); +#undef INIT + default: + break; + } +} + +inline value::value(bool b) : type_(boolean_type), u_() { + u_.boolean_ = b; +} + +#ifdef PICOJSON_USE_INT64 +inline value::value(int64_t i) : type_(int64_type), u_() { + u_.int64_ = i; +} +#endif + +inline value::value(double n) : type_(number_type), u_() { + if ( +#ifdef _MSC_VER + !_finite(n) +#elif __cplusplus >= 201103L + std::isnan(n) || std::isinf(n) +#else + isnan(n) || isinf(n) +#endif + ) { + throw std::overflow_error(""); + } + u_.number_ = n; +} + +inline value::value(const std::string &s) : type_(string_type), u_() { + u_.string_ = new std::string(s); +} + +inline value::value(const array &a) : type_(array_type), u_() { + u_.array_ = new array(a); +} + +inline value::value(const object &o) : type_(object_type), u_() { + u_.object_ = new object(o); +} + +#if PICOJSON_USE_RVALUE_REFERENCE +inline value::value(std::string &&s) : type_(string_type), u_() { + u_.string_ = new std::string(std::move(s)); +} + +inline value::value(array &&a) : type_(array_type), u_() { + u_.array_ = new array(std::move(a)); +} + +inline value::value(object &&o) : type_(object_type), u_() { + u_.object_ = new object(std::move(o)); +} +#endif + +inline value::value(const char *s) : type_(string_type), u_() { + u_.string_ = new std::string(s); +} + +inline value::value(const char *s, size_t len) : type_(string_type), u_() { + u_.string_ = new std::string(s, len); +} + +inline void value::clear() { + switch (type_) { +#define DEINIT(p) \ + case p##type: \ + delete u_.p; \ + break + DEINIT(string_); + DEINIT(array_); + DEINIT(object_); +#undef DEINIT + default: + break; + } +} + +inline value::~value() { + clear(); +} + +inline value::value(const value &x) : type_(x.type_), u_() { + switch (type_) { +#define INIT(p, v) \ + case p##type: \ + u_.p = v; \ + break + INIT(string_, new std::string(*x.u_.string_)); + INIT(array_, new array(*x.u_.array_)); + INIT(object_, new object(*x.u_.object_)); +#undef INIT + default: + u_ = x.u_; + break; + } +} + +inline value &value::operator=(const value &x) { + if (this != &x) { + value t(x); + swap(t); + } + return *this; +} + +#if PICOJSON_USE_RVALUE_REFERENCE +inline value::value(value &&x) PICOJSON_NOEXCEPT : type_(null_type), u_() { + swap(x); +} +inline value &value::operator=(value &&x) PICOJSON_NOEXCEPT { + swap(x); + return *this; +} +#endif +inline void value::swap(value &x) PICOJSON_NOEXCEPT { + std::swap(type_, x.type_); + std::swap(u_, x.u_); +} + +#define IS(ctype, jtype) \ + template <> inline bool value::is() const { \ + return type_ == jtype##_type; \ + } +IS(null, null) +IS(bool, boolean) +#ifdef PICOJSON_USE_INT64 +IS(int64_t, int64) +#endif +IS(std::string, string) +IS(array, array) +IS(object, object) +#undef IS +template <> inline bool value::is() const { + return type_ == number_type +#ifdef PICOJSON_USE_INT64 + || type_ == int64_type +#endif + ; +} + +#define GET(ctype, var) \ + template <> inline const ctype &value::get() const { \ + PICOJSON_ASSERT("type mismatch! call is() before get()" && is()); \ + return var; \ + } \ + template <> inline ctype &value::get() { \ + PICOJSON_ASSERT("type mismatch! call is() before get()" && is()); \ + return var; \ + } +GET(bool, u_.boolean_) +GET(std::string, *u_.string_) +GET(array, *u_.array_) +GET(object, *u_.object_) +#ifdef PICOJSON_USE_INT64 +GET(double, + (type_ == int64_type && (const_cast(this)->type_ = number_type, (const_cast(this)->u_.number_ = u_.int64_)), + u_.number_)) +GET(int64_t, u_.int64_) +#else +GET(double, u_.number_) +#endif +#undef GET + +#define SET(ctype, jtype, setter) \ + template <> inline void value::set(const ctype &_val) { \ + clear(); \ + type_ = jtype##_type; \ + setter \ + } +SET(bool, boolean, u_.boolean_ = _val;) +SET(std::string, string, u_.string_ = new std::string(_val);) +SET(array, array, u_.array_ = new array(_val);) +SET(object, object, u_.object_ = new object(_val);) +SET(double, number, u_.number_ = _val;) +#ifdef PICOJSON_USE_INT64 +SET(int64_t, int64, u_.int64_ = _val;) +#endif +#undef SET + +#if PICOJSON_USE_RVALUE_REFERENCE +#define MOVESET(ctype, jtype, setter) \ + template <> inline void value::set(ctype && _val) { \ + clear(); \ + type_ = jtype##_type; \ + setter \ + } +MOVESET(std::string, string, u_.string_ = new std::string(std::move(_val));) +MOVESET(array, array, u_.array_ = new array(std::move(_val));) +MOVESET(object, object, u_.object_ = new object(std::move(_val));) +#undef MOVESET +#endif + +inline bool value::evaluate_as_boolean() const { + switch (type_) { + case null_type: + return false; + case boolean_type: + return u_.boolean_; + case number_type: + return u_.number_ != 0; +#ifdef PICOJSON_USE_INT64 + case int64_type: + return u_.int64_ != 0; +#endif + case string_type: + return !u_.string_->empty(); + default: + return true; + } +} + +inline const value &value::get(const size_t idx) const { + static value s_null; + PICOJSON_ASSERT(is()); + return idx < u_.array_->size() ? (*u_.array_)[idx] : s_null; +} + +inline value &value::get(const size_t idx) { + static value s_null; + PICOJSON_ASSERT(is()); + return idx < u_.array_->size() ? (*u_.array_)[idx] : s_null; +} + +inline const value &value::get(const std::string &key) const { + static value s_null; + PICOJSON_ASSERT(is()); + object::const_iterator i = u_.object_->find(key); + return i != u_.object_->end() ? i->second : s_null; +} + +inline value &value::get(const std::string &key) { + static value s_null; + PICOJSON_ASSERT(is()); + object::iterator i = u_.object_->find(key); + return i != u_.object_->end() ? i->second : s_null; +} + +inline bool value::contains(const size_t idx) const { + PICOJSON_ASSERT(is()); + return idx < u_.array_->size(); +} + +inline bool value::contains(const std::string &key) const { + PICOJSON_ASSERT(is()); + object::const_iterator i = u_.object_->find(key); + return i != u_.object_->end(); +} + +inline std::string value::to_str() const { + switch (type_) { + case null_type: + return "null"; + case boolean_type: + return u_.boolean_ ? "true" : "false"; +#ifdef PICOJSON_USE_INT64 + case int64_type: { + char buf[sizeof("-9223372036854775808")]; + SNPRINTF(buf, sizeof(buf), "%" PRId64, u_.int64_); + return buf; + } +#endif + case number_type: { + char buf[256]; + double tmp; + SNPRINTF(buf, sizeof(buf), fabs(u_.number_) < (1ULL << 53) && modf(u_.number_, &tmp) == 0 ? "%.f" : "%.17g", u_.number_); +#if PICOJSON_USE_LOCALE + char *decimal_point = localeconv()->decimal_point; + if (strcmp(decimal_point, ".") != 0) { + size_t decimal_point_len = strlen(decimal_point); + for (char *p = buf; *p != '\0'; ++p) { + if (strncmp(p, decimal_point, decimal_point_len) == 0) { + return std::string(buf, p) + "." + (p + decimal_point_len); + } + } + } +#endif + return buf; + } + case string_type: + return *u_.string_; + case array_type: + return "array"; + case object_type: + return "object"; + default: + PICOJSON_ASSERT(0); +#ifdef _MSC_VER + __assume(0); +#endif + } + return std::string(); +} + +template void copy(const std::string &s, Iter oi) { + std::copy(s.begin(), s.end(), oi); +} + +template struct serialize_str_char { + Iter oi; + void operator()(char c) { + switch (c) { +#define MAP(val, sym) \ + case val: \ + copy(sym, oi); \ + break + MAP('"', "\\\""); + MAP('\\', "\\\\"); + MAP('/', "\\/"); + MAP('\b', "\\b"); + MAP('\f', "\\f"); + MAP('\n', "\\n"); + MAP('\r', "\\r"); + MAP('\t', "\\t"); +#undef MAP + default: + if (static_cast(c) < 0x20 || c == 0x7f) { + char buf[7]; + SNPRINTF(buf, sizeof(buf), "\\u%04x", c & 0xff); + copy(buf, buf + 6, oi); + } else { + *oi++ = c; + } + break; + } + } +}; + +template void serialize_str(const std::string &s, Iter oi) { + *oi++ = '"'; + serialize_str_char process_char = {oi}; + std::for_each(s.begin(), s.end(), process_char); + *oi++ = '"'; +} + +template void value::serialize(Iter oi, bool prettify) const { + return _serialize(oi, prettify ? 0 : -1); +} + +inline std::string value::serialize(bool prettify) const { + return _serialize(prettify ? 0 : -1); +} + +template void value::_indent(Iter oi, int indent) { + *oi++ = '\n'; + for (int i = 0; i < indent * INDENT_WIDTH; ++i) { + *oi++ = ' '; + } +} + +template void value::_serialize(Iter oi, int indent) const { + switch (type_) { + case string_type: + serialize_str(*u_.string_, oi); + break; + case array_type: { + *oi++ = '['; + if (indent != -1) { + ++indent; + } + for (array::const_iterator i = u_.array_->begin(); i != u_.array_->end(); ++i) { + if (i != u_.array_->begin()) { + *oi++ = ','; + } + if (indent != -1) { + _indent(oi, indent); + } + i->_serialize(oi, indent); + } + if (indent != -1) { + --indent; + if (!u_.array_->empty()) { + _indent(oi, indent); + } + } + *oi++ = ']'; + break; + } + case object_type: { + *oi++ = '{'; + if (indent != -1) { + ++indent; + } + for (object::const_iterator i = u_.object_->begin(); i != u_.object_->end(); ++i) { + if (i != u_.object_->begin()) { + *oi++ = ','; + } + if (indent != -1) { + _indent(oi, indent); + } + serialize_str(i->first, oi); + *oi++ = ':'; + if (indent != -1) { + *oi++ = ' '; + } + i->second._serialize(oi, indent); + } + if (indent != -1) { + --indent; + if (!u_.object_->empty()) { + _indent(oi, indent); + } + } + *oi++ = '}'; + break; + } + default: + copy(to_str(), oi); + break; + } + if (indent == 0) { + *oi++ = '\n'; + } +} + +inline std::string value::_serialize(int indent) const { + std::string s; + _serialize(std::back_inserter(s), indent); + return s; +} + +template class input { +protected: + Iter cur_, end_; + bool consumed_; + int line_; + +public: + input(const Iter &first, const Iter &last) : cur_(first), end_(last), consumed_(false), line_(1) { + } + int getc() { + if (consumed_) { + if (*cur_ == '\n') { + ++line_; + } + ++cur_; + } + if (cur_ == end_) { + consumed_ = false; + return -1; + } + consumed_ = true; + return *cur_ & 0xff; + } + void ungetc() { + consumed_ = false; + } + Iter cur() const { + if (consumed_) { + input *self = const_cast *>(this); + self->consumed_ = false; + ++self->cur_; + } + return cur_; + } + int line() const { + return line_; + } + void skip_ws() { + while (1) { + int ch = getc(); + if (!(ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r')) { + ungetc(); + break; + } + } + } + bool expect(const int expected) { + skip_ws(); + if (getc() != expected) { + ungetc(); + return false; + } + return true; + } + bool match(const std::string &pattern) { + for (std::string::const_iterator pi(pattern.begin()); pi != pattern.end(); ++pi) { + if (getc() != *pi) { + ungetc(); + return false; + } + } + return true; + } +}; + +template inline int _parse_quadhex(input &in) { + int uni_ch = 0, hex; + for (int i = 0; i < 4; i++) { + if ((hex = in.getc()) == -1) { + return -1; + } + if ('0' <= hex && hex <= '9') { + hex -= '0'; + } else if ('A' <= hex && hex <= 'F') { + hex -= 'A' - 0xa; + } else if ('a' <= hex && hex <= 'f') { + hex -= 'a' - 0xa; + } else { + in.ungetc(); + return -1; + } + uni_ch = uni_ch * 16 + hex; + } + return uni_ch; +} + +template inline bool _parse_codepoint(String &out, input &in) { + int uni_ch; + if ((uni_ch = _parse_quadhex(in)) == -1) { + return false; + } + if (0xd800 <= uni_ch && uni_ch <= 0xdfff) { + if (0xdc00 <= uni_ch) { + // a second 16-bit of a surrogate pair appeared + return false; + } + // first 16-bit of surrogate pair, get the next one + if (in.getc() != '\\' || in.getc() != 'u') { + in.ungetc(); + return false; + } + int second = _parse_quadhex(in); + if (!(0xdc00 <= second && second <= 0xdfff)) { + return false; + } + uni_ch = ((uni_ch - 0xd800) << 10) | ((second - 0xdc00) & 0x3ff); + uni_ch += 0x10000; + } + if (uni_ch < 0x80) { + out.push_back(static_cast(uni_ch)); + } else { + if (uni_ch < 0x800) { + out.push_back(static_cast(0xc0 | (uni_ch >> 6))); + } else { + if (uni_ch < 0x10000) { + out.push_back(static_cast(0xe0 | (uni_ch >> 12))); + } else { + out.push_back(static_cast(0xf0 | (uni_ch >> 18))); + out.push_back(static_cast(0x80 | ((uni_ch >> 12) & 0x3f))); + } + out.push_back(static_cast(0x80 | ((uni_ch >> 6) & 0x3f))); + } + out.push_back(static_cast(0x80 | (uni_ch & 0x3f))); + } + return true; +} + +template inline bool _parse_string(String &out, input &in) { + while (1) { + int ch = in.getc(); + if (ch < ' ') { + in.ungetc(); + return false; + } else if (ch == '"') { + return true; + } else if (ch == '\\') { + if ((ch = in.getc()) == -1) { + return false; + } + switch (ch) { +#define MAP(sym, val) \ + case sym: \ + out.push_back(val); \ + break + MAP('"', '\"'); + MAP('\\', '\\'); + MAP('/', '/'); + MAP('b', '\b'); + MAP('f', '\f'); + MAP('n', '\n'); + MAP('r', '\r'); + MAP('t', '\t'); +#undef MAP + case 'u': + if (!_parse_codepoint(out, in)) { + return false; + } + break; + default: + return false; + } + } else { + out.push_back(static_cast(ch)); + } + } + return false; +} + +template inline bool _parse_array(Context &ctx, input &in) { + if (!ctx.parse_array_start()) { + return false; + } + size_t idx = 0; + if (in.expect(']')) { + return ctx.parse_array_stop(idx); + } + do { + if (!ctx.parse_array_item(in, idx)) { + return false; + } + idx++; + } while (in.expect(',')); + return in.expect(']') && ctx.parse_array_stop(idx); +} + +template inline bool _parse_object(Context &ctx, input &in) { + if (!ctx.parse_object_start()) { + return false; + } + if (in.expect('}')) { + return ctx.parse_object_stop(); + } + do { + std::string key; + if (!in.expect('"') || !_parse_string(key, in) || !in.expect(':')) { + return false; + } + if (!ctx.parse_object_item(in, key)) { + return false; + } + } while (in.expect(',')); + return in.expect('}') && ctx.parse_object_stop(); +} + +template inline std::string _parse_number(input &in) { + std::string num_str; + while (1) { + int ch = in.getc(); + if (('0' <= ch && ch <= '9') || ch == '+' || ch == '-' || ch == 'e' || ch == 'E') { + num_str.push_back(static_cast(ch)); + } else if (ch == '.') { +#if PICOJSON_USE_LOCALE + num_str += localeconv()->decimal_point; +#else + num_str.push_back('.'); +#endif + } else { + in.ungetc(); + break; + } + } + return num_str; +} + +template inline bool _parse(Context &ctx, input &in) { + in.skip_ws(); + int ch = in.getc(); + switch (ch) { +#define IS(ch, text, op) \ + case ch: \ + if (in.match(text) && op) { \ + return true; \ + } else { \ + return false; \ + } + IS('n', "ull", ctx.set_null()); + IS('f', "alse", ctx.set_bool(false)); + IS('t', "rue", ctx.set_bool(true)); +#undef IS + case '"': + return ctx.parse_string(in); + case '[': + return _parse_array(ctx, in); + case '{': + return _parse_object(ctx, in); + default: + if (('0' <= ch && ch <= '9') || ch == '-') { + double f; + char *endp; + in.ungetc(); + std::string num_str(_parse_number(in)); + if (num_str.empty()) { + return false; + } +#ifdef PICOJSON_USE_INT64 + { + errno = 0; + intmax_t ival = strtoimax(num_str.c_str(), &endp, 10); + if (errno == 0 && std::numeric_limits::min() <= ival && ival <= std::numeric_limits::max() && + endp == num_str.c_str() + num_str.size()) { + ctx.set_int64(ival); + return true; + } + } +#endif + f = strtod(num_str.c_str(), &endp); + if (endp == num_str.c_str() + num_str.size()) { + ctx.set_number(f); + return true; + } + return false; + } + break; + } + in.ungetc(); + return false; +} + +class deny_parse_context { +public: + bool set_null() { + return false; + } + bool set_bool(bool) { + return false; + } +#ifdef PICOJSON_USE_INT64 + bool set_int64(int64_t) { + return false; + } +#endif + bool set_number(double) { + return false; + } + template bool parse_string(input &) { + return false; + } + bool parse_array_start() { + return false; + } + template bool parse_array_item(input &, size_t) { + return false; + } + bool parse_array_stop(size_t) { + return false; + } + bool parse_object_start() { + return false; + } + template bool parse_object_item(input &, const std::string &) { + return false; + } +}; + +class default_parse_context { +protected: + value *out_; + size_t depths_; + +public: + default_parse_context(value *out, size_t depths = DEFAULT_MAX_DEPTHS) : out_(out), depths_(depths) { + } + bool set_null() { + *out_ = value(); + return true; + } + bool set_bool(bool b) { + *out_ = value(b); + return true; + } +#ifdef PICOJSON_USE_INT64 + bool set_int64(int64_t i) { + *out_ = value(i); + return true; + } +#endif + bool set_number(double f) { + *out_ = value(f); + return true; + } + template bool parse_string(input &in) { + *out_ = value(string_type, false); + return _parse_string(out_->get(), in); + } + bool parse_array_start() { + if (depths_ == 0) + return false; + --depths_; + *out_ = value(array_type, false); + return true; + } + template bool parse_array_item(input &in, size_t) { + array &a = out_->get(); + a.push_back(value()); + default_parse_context ctx(&a.back(), depths_); + return _parse(ctx, in); + } + bool parse_array_stop(size_t) { + ++depths_; + return true; + } + bool parse_object_start() { + if (depths_ == 0) + return false; + *out_ = value(object_type, false); + return true; + } + template bool parse_object_item(input &in, const std::string &key) { + object &o = out_->get(); + default_parse_context ctx(&o[key], depths_); + return _parse(ctx, in); + } + bool parse_object_stop() { + ++depths_; + return true; + } + +private: + default_parse_context(const default_parse_context &); + default_parse_context &operator=(const default_parse_context &); +}; + +class null_parse_context { +protected: + size_t depths_; + +public: + struct dummy_str { + void push_back(int) { + } + }; + +public: + null_parse_context(size_t depths = DEFAULT_MAX_DEPTHS) : depths_(depths) { + } + bool set_null() { + return true; + } + bool set_bool(bool) { + return true; + } +#ifdef PICOJSON_USE_INT64 + bool set_int64(int64_t) { + return true; + } +#endif + bool set_number(double) { + return true; + } + template bool parse_string(input &in) { + dummy_str s; + return _parse_string(s, in); + } + bool parse_array_start() { + if (depths_ == 0) + return false; + --depths_; + return true; + } + template bool parse_array_item(input &in, size_t) { + return _parse(*this, in); + } + bool parse_array_stop(size_t) { + ++depths_; + return true; + } + bool parse_object_start() { + if (depths_ == 0) + return false; + --depths_; + return true; + } + template bool parse_object_item(input &in, const std::string &) { + ++depths_; + return _parse(*this, in); + } + bool parse_object_stop() { + return true; + } + +private: + null_parse_context(const null_parse_context &); + null_parse_context &operator=(const null_parse_context &); +}; + +// obsolete, use the version below +template inline std::string parse(value &out, Iter &pos, const Iter &last) { + std::string err; + pos = parse(out, pos, last, &err); + return err; +} + +template inline Iter _parse(Context &ctx, const Iter &first, const Iter &last, std::string *err) { + input in(first, last); + if (!_parse(ctx, in) && err != NULL) { + char buf[64]; + SNPRINTF(buf, sizeof(buf), "syntax error at line %d near: ", in.line()); + *err = buf; + while (1) { + int ch = in.getc(); + if (ch == -1 || ch == '\n') { + break; + } else if (ch >= ' ') { + err->push_back(static_cast(ch)); + } + } + } + return in.cur(); +} + +template inline Iter parse(value &out, const Iter &first, const Iter &last, std::string *err) { + default_parse_context ctx(&out); + return _parse(ctx, first, last, err); +} + +inline std::string parse(value &out, const std::string &s) { + std::string err; + parse(out, s.begin(), s.end(), &err); + return err; +} + +inline std::string parse(value &out, std::istream &is) { + std::string err; + parse(out, std::istreambuf_iterator(is.rdbuf()), std::istreambuf_iterator(), &err); + return err; +} + +template struct last_error_t { static std::string s; }; +template std::string last_error_t::s; + +inline void set_last_error(const std::string &s) { + last_error_t::s = s; +} + +inline const std::string &get_last_error() { + return last_error_t::s; +} + +inline bool operator==(const value &x, const value &y) { + if (x.is()) + return y.is(); +#define PICOJSON_CMP(type) \ + if (x.is()) \ + return y.is() && x.get() == y.get() + PICOJSON_CMP(bool); + PICOJSON_CMP(double); + PICOJSON_CMP(std::string); + PICOJSON_CMP(array); + PICOJSON_CMP(object); +#undef PICOJSON_CMP + PICOJSON_ASSERT(0); +#ifdef _MSC_VER + __assume(0); +#endif + return false; +} + +inline bool operator!=(const value &x, const value &y) { + return !(x == y); +} +} + +#if !PICOJSON_USE_RVALUE_REFERENCE +namespace std { +template <> inline void swap(picojson::value &x, picojson::value &y) { + x.swap(y); +} +} +#endif + +inline std::istream &operator>>(std::istream &is, picojson::value &x) { + picojson::set_last_error(std::string()); + const std::string err(picojson::parse(x, is)); + if (!err.empty()) { + picojson::set_last_error(err); + is.setstate(std::ios::failbit); + } + return is; +} + +inline std::ostream &operator<<(std::ostream &os, const picojson::value &x) { + x.serialize(std::ostream_iterator(os)); + return os; +} +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif diff --git a/LibraryViewer/library/Library.json b/LibraryViewer/library/Library.json new file mode 100644 index 0000000..96c96d9 --- /dev/null +++ b/LibraryViewer/library/Library.json @@ -0,0 +1,102806 @@ +[ + { + "Track ID": "2437", + "Name": "Jumpsuit", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8517353", + "Total Time": "238568", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3782893931", + "Play Date UTC": "2023-11-15T08:52:11Z", + "Skip Count": "2", + "Skip Date": "2019-02-03T12:00:02Z", + "Release Date": "2018-07-11T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Jumpsuit", + "Persistent ID": "BB06A210AE280D4C", + "Track Type": "Remote" + }, + { + "Track ID": "2439", + "Name": "Levitate", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5398839", + "Total Time": "145940", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3783412119", + "Play Date UTC": "2023-11-21T08:48:39Z", + "Skip Count": -1, + "Skip Date": "2018-10-06T10:03:01Z", + "Release Date": "2018-08-08T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Levitate", + "Persistent ID": "A192F8C5660C9B50", + "Track Type": "Remote" + }, + { + "Track ID": "2441", + "Name": "My Blood", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8209613", + "Total Time": "229127", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "59", + "Play Date": "3783493588", + "Play Date UTC": "2023-11-22T07:26:28Z", + "Skip Count": "2", + "Skip Date": "2018-10-26T19:07:18Z", + "Release Date": "2018-08-27T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "My Blood", + "Persistent ID": "D4FE709FA753EFEA", + "Track Type": "Remote" + }, + { + "Track ID": "2443", + "Name": "Chlorine", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11457356", + "Total Time": "324470", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "62", + "Play Date": "3773641575", + "Play Date UTC": "2023-07-31T06:46:15Z", + "Skip Count": "6", + "Skip Date": "2019-05-21T11:01:29Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Chlorine", + "Persistent ID": "A5634966B447054B", + "Track Type": "Remote" + }, + { + "Track ID": "2445", + "Name": "Smithereens", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6464647", + "Total Time": "177040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3768408738", + "Play Date UTC": "2023-05-31T17:12:18Z", + "Skip Count": "1", + "Skip Date": "2018-10-26T19:07:40Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Smithereens", + "Persistent ID": "1AD1078C3AE662AF", + "Track Type": "Remote" + }, + { + "Track ID": "2447", + "Name": "Neon Gravestones", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8548113", + "Total Time": "240260", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781058201", + "Play Date UTC": "2023-10-25T02:56:41Z", + "Skip Count": "1", + "Skip Date": "2021-05-11T13:01:32Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Neon Gravestones", + "Persistent ID": "8422135664E9BAE7", + "Track Type": "Remote" + }, + { + "Track ID": "2449", + "Name": "The Hype", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9325006", + "Total Time": "265375", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781209424", + "Play Date UTC": "2023-10-26T20:57:04Z", + "Skip Count": "1", + "Skip Date": "2021-05-30T15:42:38Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Hype", + "Persistent ID": "0A0B06987CB00AE8", + "Track Type": "Remote" + }, + { + "Track ID": "2451", + "Name": "Nico And The Niners", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8072357", + "Total Time": "225034", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3783847925", + "Play Date UTC": "2023-11-26T09:52:05Z", + "Skip Count": "1", + "Skip Date": "2018-10-26T19:05:34Z", + "Release Date": "2018-07-11T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Nico And The Niners", + "Persistent ID": "AA917CB6F02C7111", + "Track Type": "Remote" + }, + { + "Track ID": "2453", + "Name": "Cut My Lip", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9976349", + "Total Time": "282614", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3759320938", + "Play Date UTC": "2023-02-15T12:48:58Z", + "Skip Count": "2", + "Skip Date": "2022-08-09T09:15:10Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Cut My Lip", + "Persistent ID": "1CAF0FDD101BDABD", + "Track Type": "Remote" + }, + { + "Track ID": "2455", + "Name": "Bandito", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11579527", + "Total Time": "330990", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "57", + "Play Date": "3772806111", + "Play Date UTC": "2023-07-21T14:41:51Z", + "Skip Count": "2", + "Skip Date": "2018-10-26T19:08:33Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Bandito", + "Persistent ID": "CFB151C7C0DBC965", + "Track Type": "Remote" + }, + { + "Track ID": "2457", + "Name": "Pet Cheetah", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7210349", + "Total Time": "198362", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "59", + "Play Date": "3783491476", + "Play Date UTC": "2023-11-22T06:51:16Z", + "Skip Count": "4", + "Skip Date": "2018-10-26T19:07:03Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Pet Cheetah", + "Persistent ID": "3AB425D5BD03709C", + "Track Type": "Remote" + }, + { + "Track ID": "2459", + "Name": "Legend", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6467672", + "Total Time": "172562", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3776321204", + "Play Date UTC": "2023-08-31T07:06:44Z", + "Skip Count": "5", + "Skip Date": "2022-08-04T10:52:46Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Legend", + "Persistent ID": "37ABC6594F827C2E", + "Track Type": "Remote" + }, + { + "Track ID": "2461", + "Name": "Leave the City", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Trench", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10177485", + "Total Time": "280471", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-06T06:43:29Z", + "Date Added": "2018-10-06T06:43:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3760897798", + "Play Date UTC": "2023-03-05T18:49:58Z", + "Skip Count": "3", + "Skip Date": "2022-10-11T10:42:40Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trench", + "Sort Artist": "twenty one pilots", + "Sort Name": "Leave the City", + "Persistent ID": "221E9B4AC57AF497", + "Track Type": "Remote" + }, + { + "Track ID": "2463", + "Name": "Life Itself", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "Life Itself - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9827320", + "Total Time": "280415", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3769881897", + "Play Date UTC": "2023-06-17T18:24:57Z", + "Skip Count": "3", + "Skip Date": "2021-12-10T07:27:41Z", + "Release Date": "2016-05-16T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Life Itself - Single", + "Sort Artist": "Glass Animals", + "Sort Name": "Life Itself", + "Persistent ID": "F4974BE6F0B1ACD7", + "Track Type": "Remote" + }, + { + "Track ID": "2465", + "Name": "Youth", + "Artist": "Glass Animals", + "Album Artist": "Various Artists", + "Composer": "Dave Bayley", + "Album": "Alt-Tronica", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8396915", + "Total Time": "231680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "22", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3759407249", + "Play Date UTC": "2023-02-16T12:47:29Z", + "Skip Count": "2", + "Skip Date": "2019-02-04T06:53:42Z", + "Release Date": "2016-05-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Alt-Tronica", + "Sort Artist": "Glass Animals", + "Sort Name": "Youth", + "Persistent ID": "CEF09AD0D85A5404", + "Track Type": "Remote" + }, + { + "Track ID": "2467", + "Name": "Season 2 Episode 3", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8563134", + "Total Time": "243509", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3773536885", + "Play Date UTC": "2023-07-30T01:41:25Z", + "Skip Count": "2", + "Skip Date": "2022-11-25T20:27:19Z", + "Release Date": "2016-08-23T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Season 2 Episode 3", + "Persistent ID": "C291DD23BE500FAD", + "Track Type": "Remote" + }, + { + "Track ID": "2469", + "Name": "Pork Soda", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9200121", + "Total Time": "253831", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3776343491", + "Play Date UTC": "2023-08-31T13:18:11Z", + "Skip Count": "3", + "Skip Date": "2019-02-04T06:53:38Z", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Pork Soda", + "Persistent ID": "D155180DD5F078C8", + "Track Type": "Remote" + }, + { + "Track ID": "2471", + "Name": "Mama's Gun", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9506088", + "Total Time": "266747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "86", + "Play Date": "3781059789", + "Play Date UTC": "2023-10-25T03:23:09Z", + "Skip Count": "5", + "Skip Date": "2022-07-16T11:31:34Z", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Mama's Gun", + "Persistent ID": "20E407770E8C7F25", + "Track Type": "Remote" + }, + { + "Track ID": "2473", + "Name": "Cane Shuga", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7244473", + "Total Time": "196570", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3780759929", + "Play Date UTC": "2023-10-21T16:05:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Cane Shuga", + "Persistent ID": "5821D3E7354B95F1", + "Track Type": "Remote" + }, + { + "Track ID": "2475", + "Name": "[Premade Sandwiches]", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "1727390", + "Total Time": "36254", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781057640", + "Play Date UTC": "2023-10-25T02:47:20Z", + "Skip Count": -1, + "Skip Date": "2018-10-06T10:08:56Z", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "[Premade Sandwiches]", + "Persistent ID": "7174F2BF5513A884", + "Track Type": "Remote" + }, + { + "Track ID": "2477", + "Name": "The Other Side of Paradise", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11439839", + "Total Time": "320654", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781398404", + "Play Date UTC": "2023-10-29T01:26:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Other Side of Paradise", + "Persistent ID": "510FE7F249C544D4", + "Track Type": "Remote" + }, + { + "Track ID": "2479", + "Name": "Take a Slice", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8355972", + "Total Time": "229718", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781613590", + "Play Date UTC": "2023-10-31T13:13:10Z", + "Skip Count": "2", + "Skip Date": "2019-02-04T06:53:35Z", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Take a Slice", + "Persistent ID": "12FFA4BFD8C4DF8D", + "Track Type": "Remote" + }, + { + "Track ID": "2481", + "Name": "Poplar St.", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9299926", + "Total Time": "262540", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783666522", + "Play Date UTC": "2023-11-24T07:28:42Z", + "Skip Count": "2", + "Skip Date": "2018-10-27T07:17:19Z", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Poplar St.", + "Persistent ID": "E0A4244C6F88AF0F", + "Track Type": "Remote" + }, + { + "Track ID": "2483", + "Name": "Agnes", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9428874", + "Total Time": "271673", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-10-06T08:10:14Z", + "Date Added": "2018-10-06T08:10:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3773543084", + "Play Date UTC": "2023-07-30T03:24:44Z", + "Skip Count": "1", + "Skip Date": "2021-09-30T15:15:06Z", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Agnes", + "Persistent ID": "8A775C388C50FF00", + "Track Type": "Remote" + }, + { + "Track ID": "2485", + "Name": "Renegades", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7291410", + "Total Time": "195200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3778766814", + "Play Date UTC": "2023-09-28T14:26:54Z", + "Skip Count": "2", + "Skip Date": "2018-11-23T05:47:54Z", + "Release Date": "2015-03-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Renegades", + "Persistent ID": "BE79DDF1873CF29F", + "Track Type": "Remote" + }, + { + "Track ID": "2487", + "Name": "Moving Day (Interlude)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Rob Harris, Sam Harris, Margaret Wakeley & Casey Harris", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "1173393", + "Total Time": "19067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783712663", + "Play Date UTC": "2023-11-24T20:17:43Z", + "Skip Count": "1", + "Skip Date": "2023-03-06T06:59:39Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Moving Day (Interlude)", + "Persistent ID": "1D33F5A1E6205A10", + "Track Type": "Remote" + }, + { + "Track ID": "2489", + "Name": "Unsteady", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6954901", + "Total Time": "193547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "20", + "Year": "2014", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "84", + "Play Date": "3770489016", + "Play Date UTC": "2023-06-24T19:03:36Z", + "Skip Count": "9", + "Skip Date": "2021-05-10T22:54:22Z", + "Release Date": "2014-02-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Unsteady", + "Persistent ID": "1307D65134F7CD72", + "Track Type": "Remote" + }, + { + "Track ID": "2491", + "Name": "Hang On", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6427690", + "Total Time": "180333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3776164547", + "Play Date UTC": "2023-08-29T11:35:47Z", + "Skip Count": "7", + "Skip Date": "2023-02-27T06:38:59Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Hang On", + "Persistent ID": "83D6223132DE06A4", + "Track Type": "Remote" + }, + { + "Track ID": "2493", + "Name": "Gorgeous", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7039120", + "Total Time": "197053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3769880992", + "Play Date UTC": "2023-06-17T18:09:52Z", + "Skip Count": "1", + "Skip Date": "2018-11-23T08:50:45Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Gorgeous", + "Persistent ID": "1441C7754AAAEA1C", + "Track Type": "Remote" + }, + { + "Track ID": "2495", + "Name": "First Show (Interlude)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh & Nicholas Farhi", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "935721", + "Total Time": "11840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3776150468", + "Play Date UTC": "2023-08-29T07:41:08Z", + "Skip Count": "2", + "Skip Date": "2023-03-27T17:39:21Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "First Show (Interlude)", + "Persistent ID": "60E7FD529AE857D7", + "Track Type": "Remote" + }, + { + "Track ID": "2497", + "Name": "Fear (feat. Imagine Dragons)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Imagine Dragons, Alex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5878361", + "Total Time": "161587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3773534210", + "Play Date UTC": "2023-07-30T00:56:50Z", + "Skip Count": "4", + "Skip Date": "2023-10-26T16:13:12Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Fear (feat. Imagine Dragons)", + "Persistent ID": "0AB59EC0DEF152D1", + "Track Type": "Remote" + }, + { + "Track ID": "2499", + "Name": "Nervous", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7557722", + "Total Time": "213067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "59", + "Play Date": "3783670322", + "Play Date UTC": "2023-11-24T08:32:02Z", + "Skip Count": "2", + "Skip Date": "2021-02-25T23:30:09Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Nervous", + "Persistent ID": "A395AFAA8B6CF03E", + "Track Type": "Remote" + }, + { + "Track ID": "2501", + "Name": "Low Life (feat. Jamie N Commons)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Jamie N Commons, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris, Adam Levine & Jayson Dezuzio", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10268090", + "Total Time": "280800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781383793", + "Play Date UTC": "2023-10-28T21:23:13Z", + "Skip Count": "2", + "Skip Date": "2021-03-21T09:55:01Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Low Life (feat. Jamie N Commons)", + "Persistent ID": "A6EDC27B398A6DEB", + "Track Type": "Remote" + }, + { + "Track ID": "2503", + "Name": "Adam & Noah's Priorities (Interlude)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Adam Levin & Noah Feldshuh", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "1436102", + "Total Time": "27027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783666076", + "Play Date UTC": "2023-11-24T07:21:16Z", + "Skip Count": "1", + "Skip Date": "2023-02-20T16:20:47Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Adam & Noah's Priorities (Interlude)", + "Persistent ID": "4F26681C83DEDAB3", + "Track Type": "Remote" + }, + { + "Track ID": "2505", + "Name": "B.I.G.", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7450983", + "Total Time": "209640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3781176740", + "Play Date UTC": "2023-10-26T11:52:20Z", + "Skip Count": "3", + "Skip Date": "2021-03-05T17:58:47Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "B.I.G.", + "Persistent ID": "7282A0613A51E19A", + "Track Type": "Remote" + }, + { + "Track ID": "2507", + "Name": "Superpower", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "X Ambassadors, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7105416", + "Total Time": "192200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3783359346", + "Play Date UTC": "2023-11-20T18:09:06Z", + "Skip Count": "2", + "Skip Date": "2022-10-27T16:44:32Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Superpower", + "Persistent ID": "6385ABCCCC9A98EE", + "Track Type": "Remote" + }, + { + "Track ID": "2509", + "Name": "Loveless", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "X Ambassadors, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7179634", + "Total Time": "199240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781866586", + "Play Date UTC": "2023-11-03T11:29:46Z", + "Skip Count": "1", + "Skip Date": "2021-05-11T13:00:33Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Loveless", + "Persistent ID": "5420168FF5123F25", + "Track Type": "Remote" + }, + { + "Track ID": "2511", + "Name": "Jungle (feat. Jamie N Commons)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Jamie N Commons, Alex Da Kid, Mike Del Rio, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6810633", + "Total Time": "189707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "20", + "Year": "2013", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3780905974", + "Play Date UTC": "2023-10-23T08:39:34Z", + "Skip Count": "3", + "Skip Date": "2023-10-13T16:14:42Z", + "Release Date": "2013-12-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Jungle (feat. Jamie N Commons)", + "Persistent ID": "684C58D9F83D0483", + "Track Type": "Remote" + }, + { + "Track ID": "2513", + "Name": "Good News On the Remix (Interlude)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris & Alexander Grant", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "1825321", + "Total Time": "51360", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3775744902", + "Play Date UTC": "2023-08-24T15:01:42Z", + "Skip Count": "1", + "Skip Date": "2022-10-05T20:43:07Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Good News On the Remix (Interlude)", + "Persistent ID": "8B0B017886A1B19A", + "Track Type": "Remote" + }, + { + "Track ID": "2515", + "Name": "Naked", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "X Ambassadors, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7443755", + "Total Time": "201773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-06T08:29:06Z", + "Date Added": "2018-10-06T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3767092201", + "Play Date UTC": "2023-05-16T11:30:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Naked", + "Persistent ID": "C17FF91E33EAA73E", + "Track Type": "Remote" + }, + { + "Track ID": "2517", + "Name": "My Way", + "Artist": "Calvin Harris", + "Album Artist": "Calvin Harris", + "Composer": "Calvin Harris", + "Album": "My Way - Single", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "8181902", + "Total Time": "219160", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2018-10-06T09:52:20Z", + "Date Added": "2018-10-06T09:52:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783356742", + "Play Date UTC": "2023-11-20T17:25:42Z", + "Skip Count": "1", + "Skip Date": "2018-10-10T15:50:02Z", + "Release Date": "2016-09-16T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "My Way - Single", + "Sort Artist": "Calvin Harris", + "Sort Name": "My Way", + "Persistent ID": "9C9233361B3F5C20", + "Track Type": "Remote" + }, + { + "Track ID": "2519", + "Name": "Breezeblocks", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green/Charlie Andrew", + "Album": "An Awesome Wave", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8108051", + "Total Time": "226790", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2012", + "Date Modified": "2018-10-06T10:54:20Z", + "Date Added": "2018-10-06T10:54:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "64", + "Play Date": "3783074004", + "Play Date UTC": "2023-11-17T10:53:24Z", + "Skip Count": "4", + "Skip Date": "2021-09-17T19:34:18Z", + "Release Date": "1975-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Awesome Wave", + "Sort Artist": "alt-J", + "Sort Name": "Breezeblocks", + "Persistent ID": "657CF70E5069EB83", + "Track Type": "Remote" + }, + { + "Track ID": "2521", + "Name": "Left Hand Free", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "This Is All Yours", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6224650", + "Total Time": "171731", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2018-10-06T11:39:15Z", + "Date Added": "2018-10-06T11:39:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3781768113", + "Play Date UTC": "2023-11-02T08:08:33Z", + "Skip Count": "1", + "Skip Date": "2021-05-05T20:22:15Z", + "Release Date": "2014-07-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Is All Yours", + "Sort Artist": "alt-J", + "Sort Name": "Left Hand Free", + "Persistent ID": "0106F741434E5FD2", + "Track Type": "Remote" + }, + { + "Track ID": "2523", + "Name": "Overdose", + "Artist": "grandson", + "Album Artist": "grandson", + "Composer": "Jordan Benjamin & Kevin Hissink", + "Album": "Overdose - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8400208", + "Total Time": "233333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-06T16:47:06Z", + "Date Added": "2018-10-06T16:47:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783780270", + "Play Date UTC": "2023-11-25T15:04:30Z", + "Skip Count": "2", + "Skip Date": "2020-06-18T08:23:41Z", + "Release Date": "2018-02-09T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Overdose - Single", + "Sort Artist": "grandson", + "Sort Name": "Overdose", + "Persistent ID": "0CBDB514454DD15B", + "Track Type": "Remote" + }, + { + "Track ID": "2525", + "Name": "Blood // Water", + "Artist": "grandson", + "Album Artist": "grandson", + "Composer": "Chester Krupa Carbone, Jordan Benjamin & Kevin Hissink", + "Album": "Blood // Water - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7685051", + "Total Time": "216721", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-10-06T16:48:50Z", + "Date Added": "2018-10-06T16:48:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3779241682", + "Play Date UTC": "2023-10-04T02:21:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-10-27T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Blood // Water - Single", + "Sort Artist": "grandson", + "Sort Name": "Blood // Water", + "Persistent ID": "AC0371F1C3DA43A0", + "Track Type": "Remote" + }, + { + "Track ID": "2527", + "Name": "Torches", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Adam Levin & Casey Harris", + "Album": "Torches - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7624223", + "Total Time": "207373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-10-06T16:55:53Z", + "Date Added": "2018-10-06T16:55:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "85", + "Play Date": "3779903047", + "Play Date UTC": "2023-10-11T18:04:07Z", + "Skip Count": "2", + "Skip Date": "2021-07-13T22:32:47Z", + "Release Date": "2017-04-28T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Torches - Single", + "Sort Artist": "X Ambassadors", + "Sort Name": "Torches", + "Persistent ID": "9D6E0FC0DF8AE38E", + "Track Type": "Remote" + }, + { + "Track ID": "2529", + "Name": "Free & Lonely", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh, Adam Levin, Casey Harris & Alex Da Kid", + "Album": "The Reason - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8896185", + "Total Time": "248478", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2014", + "Date Modified": "2018-10-06T16:59:46Z", + "Date Added": "2018-10-06T16:59:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "95", + "Play Date": "3781318621", + "Play Date UTC": "2023-10-28T03:17:01Z", + "Skip Count": "7", + "Skip Date": "2022-10-28T02:18:09Z", + "Release Date": "2014-04-22T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reason - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Free & Lonely", + "Persistent ID": "3C16BBCE88915F2F", + "Track Type": "Remote" + }, + { + "Track ID": "2531", + "Name": "Weak", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7192848", + "Total Time": "201159", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2018-10-06T17:01:14Z", + "Date Added": "2018-10-06T17:01:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "66", + "Play Date": "3782983243", + "Play Date UTC": "2023-11-16T09:40:43Z", + "Skip Count": "7", + "Skip Date": "2022-05-16T20:58:43Z", + "Release Date": "2016-03-09T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Weak", + "Persistent ID": "BF356F665AD6562E", + "Track Type": "Remote" + }, + { + "Track ID": "2533", + "Name": "Feather", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "X Ambassadors, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine", + "Album": "VHS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7083369", + "Total Time": "197053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2018-10-07T18:16:35Z", + "Date Added": "2018-10-07T18:16:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3762966340", + "Play Date UTC": "2023-03-29T17:25:40Z", + "Skip Count": "4", + "Skip Date": "2022-07-24T13:26:15Z", + "Release Date": "2015-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "VHS", + "Sort Artist": "X Ambassadors", + "Sort Name": "Feather", + "Persistent ID": "193E9769A6585925", + "Track Type": "Remote" + }, + { + "Track ID": "2535", + "Name": "SAD!", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "John Cunningham & Jahseh Onfroy", + "Album": "?", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6020765", + "Total Time": "166606", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2018-10-07T18:44:09Z", + "Date Added": "2018-10-07T18:44:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3775647616", + "Play Date UTC": "2023-08-23T12:00:16Z", + "Skip Count": "1", + "Skip Date": "2022-03-15T18:06:14Z", + "Release Date": "2018-03-02T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "?", + "Sort Artist": "XXXTENTACION", + "Sort Name": "SAD!", + "Persistent ID": "1528612A03CE4FB6", + "Track Type": "Remote" + }, + { + "Track ID": "2537", + "Name": "NUMB", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "John Cunningham, Robert Soukiasyan, Jahseh Onfroy & Oren Yoel", + "Album": "?", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6700017", + "Total Time": "186268", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2018-10-07T18:44:20Z", + "Date Added": "2018-10-07T18:44:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783784907", + "Play Date UTC": "2023-11-25T16:21:47Z", + "Skip Count": "2", + "Skip Date": "2021-06-26T23:56:23Z", + "Release Date": "2018-03-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "?", + "Sort Artist": "XXXTENTACION", + "Sort Name": "NUMB", + "Persistent ID": "8168398BE5F441F2", + "Track Type": "Remote" + }, + { + "Track ID": "2539", + "Name": "infinity (888) [feat. Joey Bada$$]", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "Jahseh Onfroy, Jo Vaughn Virginie, Brandon Mychael & Jameel Beazer", + "Album": "?", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6440427", + "Total Time": "176591", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2018-10-07T18:44:46Z", + "Date Added": "2018-10-07T18:44:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3783682847", + "Play Date UTC": "2023-11-24T12:00:47Z", + "Skip Count": "3", + "Skip Date": "2021-09-10T20:47:25Z", + "Release Date": "2018-03-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "?", + "Sort Artist": "XXXTENTACION", + "Sort Name": "infinity (888) [feat. Joey Bada$$]", + "Persistent ID": "69EFC1D025915B14", + "Track Type": "Remote" + }, + { + "Track ID": "2541", + "Name": "the remedy for a broken heart (why am I so in love)", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "John Cunningham & Jahseh Onfroy", + "Album": "?", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5914792", + "Total Time": "160184", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2018-10-07T18:45:39Z", + "Date Added": "2018-10-07T18:45:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781789159", + "Play Date UTC": "2023-11-02T13:59:19Z", + "Skip Count": "1", + "Skip Date": "2020-12-01T14:26:06Z", + "Release Date": "2018-03-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "?", + "Sort Artist": "XXXTENTACION", + "Sort Name": "remedy for a broken heart (why am I so in love)", + "Persistent ID": "054D21C4031D7DD6", + "Track Type": "Remote" + }, + { + "Track ID": "2543", + "Name": "It's Probably Me", + "Artist": "Sting & Eric Clapton", + "Album Artist": "Sting", + "Composer": "Sting, Eric Clapton & Michael Kamen", + "Album": "Fields of Gold - The Best of Sting (1984-1994) [Remastered]", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "10603975", + "Total Time": "302027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "1993", + "Date Modified": "2018-10-07T18:47:17Z", + "Date Added": "2018-10-07T18:47:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781318923", + "Play Date UTC": "2023-10-28T03:22:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1994-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Fields of Gold - The Best of Sting (1984-1994) [Remastered]", + "Sort Artist": "Sting & Eric Clapton", + "Sort Name": "It's Probably Me", + "Persistent ID": "5BD8BD1543E9A3BD", + "Track Type": "Remote" + }, + { + "Track ID": "2545", + "Name": "Shape of My Heart", + "Artist": "Sting", + "Album Artist": "Sting", + "Composer": "Sting & Dominic Miller", + "Album": "Ten Summoner's Tales", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9760937", + "Total Time": "279227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "1993", + "Date Modified": "2018-10-07T18:47:29Z", + "Date Added": "2018-10-07T18:47:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3779903432", + "Play Date UTC": "2023-10-11T18:10:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1993-03-09T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ten Summoner's Tales", + "Sort Artist": "Sting", + "Sort Name": "Shape of My Heart", + "Persistent ID": "637EE077316F2BB0", + "Track Type": "Remote" + }, + { + "Track ID": "2547", + "Name": "Hoping", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Nelson Harris, Adam Levin, Casey Harris & Noah Feldshuh", + "Album": "Hoping - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6958132", + "Total Time": "193567", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-10-07T18:51:47Z", + "Date Added": "2018-10-07T18:51:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "71", + "Play Date": "3766663000", + "Play Date UTC": "2023-05-11T12:16:40Z", + "Skip Count": "4", + "Skip Date": "2021-03-21T09:48:43Z", + "Release Date": "2017-03-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hoping - Single", + "Sort Artist": "X Ambassadors", + "Sort Name": "Hoping", + "Persistent ID": "00CF86ED17F4B823", + "Track Type": "Remote" + }, + { + "Track ID": "2549", + "Name": "Supermassive Black Hole", + "Artist": "Muse", + "Album Artist": "Muse", + "Composer": "Matthew Bellamy", + "Album": "Six Studio Albums", + "Genre": "Black Holes and Revelations", + "Kind": "Alternative", + "Size": "8144672", + "Total Time": "208852", + "Disc Number": "4", + "Disc Count": "6", + "Track Number": "3", + "Track Count": "11", + "Year": "2006", + "Date Modified": "2018-10-07T19:11:10Z", + "Date Added": "2018-10-07T19:11:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3779236494", + "Play Date UTC": "2023-10-04T00:54:54Z", + "Skip Count": "7", + "Skip Date": "2022-10-28T20:40:02Z", + "Release Date": "2006-06-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Six Studio Albums", + "Sort Name": "Muse", + "Persistent ID": "Supermassive Black Hole", + "Track Type": "580CA91017B4E3D3" + }, + { + "Track ID": "2551", + "Name": "Love Songs Drug Songs", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin", + "Album": "Love Songs Drug Songs - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8212444", + "Total Time": "219760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2013", + "Date Modified": "2018-10-08T11:32:26Z", + "Date Added": "2018-10-08T11:32:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781613810", + "Play Date UTC": "2023-10-31T13:16:50Z", + "Skip Count": "1", + "Skip Date": "2019-02-26T13:49:57Z", + "Release Date": "2013-05-07T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Love Songs Drug Songs - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Love Songs Drug Songs", + "Persistent ID": "961D2DF9CDBC9BAB", + "Track Type": "Remote" + }, + { + "Track ID": "2553", + "Name": "Kerosene Dreams", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin", + "Album": "VHS 2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8354695", + "Total Time": "233013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2018-10-08T11:36:08Z", + "Date Added": "2018-10-08T11:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "154", + "Play Date": "3780394308", + "Play Date UTC": "2023-10-17T10:31:48Z", + "Skip Count": "2", + "Skip Date": "2022-04-23T18:13:17Z", + "Release Date": "2016-06-10T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "VHS 2.0", + "Sort Artist": "X Ambassadors", + "Sort Name": "Kerosene Dreams", + "Persistent ID": "5510A43F1BC579B4", + "Track Type": "Remote" + }, + { + "Track ID": "2555", + "Name": "Only Love", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8873741", + "Total Time": "249173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2011", + "Date Modified": "2018-10-08T11:48:49Z", + "Date Added": "2018-10-08T11:48:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3760286995", + "Play Date UTC": "2023-02-26T17:09:55Z", + "Skip Count": "2", + "Skip Date": "2022-08-05T08:32:15Z", + "Release Date": "2011-09-30T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Every Kingdom", + "Sort Artist": "Ben Howard", + "Sort Name": "Only Love", + "Persistent ID": "2BFC4039DCCD355A", + "Track Type": "Remote" + }, + { + "Track ID": "2557", + "Name": "Promise", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom (Deluxe Edition)", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "13297403", + "Total Time": "384080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2011", + "Date Modified": "2018-10-08T12:17:00Z", + "Date Added": "2018-10-08T12:17:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3772538921", + "Play Date UTC": "2023-07-18T12:28:41Z", + "Skip Count": "1", + "Skip Date": "2022-06-18T17:11:15Z", + "Release Date": "2011-09-30T07:00:00Z", + "Album Rating": "40", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "40", + "Sort Album": "Every Kingdom (Deluxe Edition)", + "Sort Artist": "Ben Howard", + "Sort Name": "Promise", + "Persistent ID": "90630F8654193942", + "Track Type": "Remote" + }, + { + "Track ID": "2559", + "Name": "Keep Your Head Up", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "9437532", + "Total Time": "264547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2011", + "Date Modified": "2018-10-08T12:17:52Z", + "Date Added": "2018-10-08T12:17:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3783455127", + "Play Date UTC": "2023-11-21T20:45:27Z", + "Skip Count": "3", + "Skip Date": "2021-10-13T08:49:41Z", + "Release Date": "2011-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Every Kingdom", + "Sort Artist": "Ben Howard", + "Sort Name": "Keep Your Head Up", + "Persistent ID": "B608C3BE0AC40083", + "Track Type": "Remote" + }, + { + "Track ID": "2561", + "Name": "Turning Out", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9296407", + "Total Time": "260961", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2018-10-08T16:32:14Z", + "Date Added": "2018-10-08T16:32:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3773546686", + "Play Date UTC": "2023-07-30T04:24:46Z", + "Skip Count": "5", + "Skip Date": "2020-05-12T20:05:28Z", + "Release Date": "2016-09-16T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Turning Out", + "Persistent ID": "158113695D73C0F3", + "Track Type": "Remote" + }, + { + "Track ID": "2563", + "Name": "No Grass Today", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9252779", + "Total Time": "259115", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2018-10-08T18:03:45Z", + "Date Added": "2018-10-08T18:03:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3752616882", + "Play Date UTC": "2022-11-29T22:34:42Z", + "Skip Count": "7", + "Skip Date": "2022-11-15T16:27:33Z", + "Release Date": "2016-09-16T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "No Grass Today", + "Persistent ID": "A9FB9F95CC67898E", + "Track Type": "Remote" + }, + { + "Track ID": "2565", + "Name": "Three-Thirty", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7696145", + "Total Time": "210284", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2018-10-08T18:10:16Z", + "Date Added": "2018-10-08T18:10:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3780775024", + "Play Date UTC": "2023-10-21T20:17:04Z", + "Skip Count": "11", + "Skip Date": "2023-06-20T08:41:51Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Three-Thirty", + "Persistent ID": "F5F93C606C7BDC3C", + "Track Type": "Remote" + }, + { + "Track ID": "2567", + "Name": "Call My Dad", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "4976197", + "Total Time": "135694", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2018-10-08T18:17:19Z", + "Date Added": "2018-10-08T18:17:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3783709643", + "Play Date UTC": "2023-11-24T19:27:23Z", + "Skip Count": "2", + "Skip Date": "2022-10-01T09:49:55Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Call My Dad", + "Persistent ID": "25EDA2653D413E7B", + "Track Type": "Remote" + }, + { + "Track ID": "2569", + "Name": "Psycho (feat. Ty Dolla $ign)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post & Tyrone Griffin Jr", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7942383", + "Total Time": "221446", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2018-10-09T10:36:23Z", + "Date Added": "2018-10-09T10:36:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "170", + "Play Date": "3783011146", + "Play Date UTC": "2023-11-16T17:25:46Z", + "Skip Count": "7", + "Skip Date": "2023-03-15T18:53:28Z", + "Release Date": "2018-02-23T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Psycho (feat. Ty Dolla $ign)", + "Persistent ID": "46542C9F30FB6973", + "Track Type": "Remote" + }, + { + "Track ID": "2571", + "Name": "Better Now", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post, Billy Walsh & Adam Feeney", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8282088", + "Total Time": "231261", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2018-10-09T10:39:56Z", + "Date Added": "2018-10-09T10:39:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3783056653", + "Play Date UTC": "2023-11-17T06:04:13Z", + "Skip Count": "6", + "Skip Date": "2022-11-07T05:25:48Z", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Better Now", + "Persistent ID": "E74E071840FB274D", + "Track Type": "Remote" + }, + { + "Track ID": "2573", + "Name": "rockstar (feat. 21 Savage)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post, Olufunmibi Awoshiley, Jo-Vaughn Virginie, Shayaa Bin Abraham-Joseph & Carl Austin Rosen", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8118172", + "Total Time": "218146", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2018-10-09T10:42:17Z", + "Date Added": "2018-10-09T10:42:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "114", + "Play Date": "3783004704", + "Play Date UTC": "2023-11-16T15:38:24Z", + "Skip Count": "7", + "Skip Date": "2021-08-13T13:14:18Z", + "Release Date": "2017-09-15T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "rockstar (feat. 21 Savage)", + "Persistent ID": "B0C5C831F517B6EB", + "Track Type": "Remote" + }, + { + "Track ID": "2575", + "Name": "Bank Account", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph", + "Album": "Issa Album", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7824007", + "Total Time": "220307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2018-10-09T10:43:22Z", + "Date Added": "2018-10-09T10:43:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "232", + "Play Date": "3783711521", + "Play Date UTC": "2023-11-24T19:58:41Z", + "Skip Count": "9", + "Skip Date": "2021-05-19T19:55:58Z", + "Release Date": "2017-07-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Issa Album", + "Sort Artist": "21 Savage", + "Sort Name": "Bank Account", + "Persistent ID": "B8D364A21A80B570", + "Track Type": "Remote" + }, + { + "Track ID": "2577", + "Name": "For the Damaged Coda", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "undef", + "Album": "Melody of Certain Damaged Lemons", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5799967", + "Total Time": "157000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2000", + "Date Modified": "2018-10-09T11:38:22Z", + "Date Added": "2018-10-09T11:38:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3783410284", + "Play Date UTC": "2023-11-21T08:18:04Z", + "Skip Count": "2", + "Skip Date": "2021-07-25T08:37:49Z", + "Release Date": "2000-06-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Melody of Certain Damaged Lemons", + "Sort Artist": "Blonde Redhead", + "Sort Name": "For the Damaged Coda", + "Persistent ID": "C554B4E74148F36A", + "Track Type": "Remote" + }, + { + "Track ID": "2579", + "Name": "23", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Amedeo Pace, Kazu Makino & Simone Pace", + "Album": "23", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11273151", + "Total Time": "318800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2007", + "Date Modified": "2018-10-09T12:39:42Z", + "Date Added": "2018-10-09T12:39:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3783355076", + "Play Date UTC": "2023-11-20T16:57:56Z", + "Skip Count": "2", + "Skip Date": "2019-02-02T21:48:49Z", + "Release Date": "2007-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "23", + "Sort Artist": "Blonde Redhead", + "Sort Name": "23", + "Persistent ID": "1E58C44C78084624", + "Track Type": "Remote" + }, + { + "Track ID": "2581", + "Name": "For the Damaged", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "undef", + "Album": "Melody of Certain Damaged Lemons", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6426789", + "Total Time": "182267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2000", + "Date Modified": "2018-10-09T12:39:48Z", + "Date Added": "2018-10-09T12:39:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3773842460", + "Play Date UTC": "2023-08-02T14:34:20Z", + "Skip Count": "4", + "Skip Date": "2022-07-08T12:31:44Z", + "Release Date": "2000-06-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Melody of Certain Damaged Lemons", + "Sort Artist": "Blonde Redhead", + "Sort Name": "For the Damaged", + "Persistent ID": "335FC287CAB6944B", + "Track Type": "Remote" + }, + { + "Track ID": "2583", + "Name": "Dripping", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "undef", + "Album": "Barrag\u00e1n", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7855573", + "Total Time": "220613", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2018-10-09T12:39:49Z", + "Date Added": "2018-10-09T12:39:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3778597514", + "Play Date UTC": "2023-09-26T15:25:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-09-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Barrag\u00e1n", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Dripping", + "Persistent ID": "61C9347E0D284F27", + "Track Type": "Remote" + }, + { + "Track ID": "2585", + "Name": "The Hills", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "Abel Tesfaye, Ahmad Balshe, Emmanuel Nickerson & Carlo Montagnese", + "Album": "Beauty Behind the Madness", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8584650", + "Total Time": "242291", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2018-10-09T12:40:26Z", + "Date Added": "2018-10-09T12:40:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3781155235", + "Play Date UTC": "2023-10-26T05:53:55Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-05-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Beauty Behind the Madness", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Hills", + "Track Type": "6F7F177A8823943D" + }, + { + "Track ID": "2587", + "Name": "Butterflies and Hurricanes", + "Artist": "Muse", + "Album Artist": "Muse", + "Composer": "Chris Wolstenholme, Dominic Howard & Matthew Bellamy", + "Album": "Absolution", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10919753", + "Total Time": "302213", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "15", + "Year": "2003", + "Date Modified": "2018-10-09T13:31:11Z", + "Date Added": "2018-10-09T13:31:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "63", + "Play Date": "3781203174", + "Play Date UTC": "2023-10-26T19:12:54Z", + "Skip Count": "2", + "Skip Date": "2021-02-01T20:48:45Z", + "Release Date": "2003-09-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Absolution", + "Sort Artist": "Muse", + "Sort Name": "Butterflies and Hurricanes", + "Persistent ID": "4A01A343DECAF922", + "Track Type": "Remote" + }, + { + "Track ID": "2589", + "Name": "Call Out My Name", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "Abel Tesfaye, Adam Feeney & Nicolas Jaar", + "Album": "My Dear Melancholy,", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8279935", + "Total Time": "228382", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2018", + "Date Modified": "2018-10-10T18:01:48Z", + "Date Added": "2018-10-10T18:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3781448901", + "Play Date UTC": "2023-10-29T15:28:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-03-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "My Dear Melancholy,", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Call Out My Name", + "Track Type": "1F5445CF1BDED0C6" + }, + { + "Track ID": "2591", + "Name": "Another Friday Night", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Another Friday Night / Hot Heavy Summer / Sister - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9548296", + "Total Time": "276971", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2018", + "Date Modified": "2018-10-10T19:10:32Z", + "Date Added": "2018-10-10T19:10:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3766851792", + "Play Date UTC": "2023-05-13T16:43:12Z", + "Skip Count": "3", + "Skip Date": "2022-06-28T21:12:35Z", + "Release Date": "2018-09-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Another Friday Night / Hot Heavy Summer / Sister - Single", + "Sort Artist": "Ben Howard", + "Sort Name": "Another Friday Night", + "Persistent ID": "D238A1EBA794B17F", + "Track Type": "Remote" + }, + { + "Track ID": "2593", + "Name": "Hot Heavy Summer (feat. Sylvan Esso)", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Another Friday Night / Hot Heavy Summer / Sister - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7962748", + "Total Time": "229292", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2018", + "Date Modified": "2018-10-10T19:10:32Z", + "Date Added": "2018-10-10T19:10:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3768299192", + "Play Date UTC": "2023-05-30T10:46:32Z", + "Skip Count": "1", + "Skip Date": "2023-01-15T13:38:22Z", + "Release Date": "2018-09-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Another Friday Night / Hot Heavy Summer / Sister - Single", + "Sort Artist": "Ben Howard", + "Sort Name": "Hot Heavy Summer (feat. Sylvan Esso)", + "Persistent ID": "33B47EE8C7D7951F", + "Track Type": "Remote" + }, + { + "Track ID": "2595", + "Name": "Sister", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Another Friday Night / Hot Heavy Summer / Sister - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4451092", + "Total Time": "116948", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2018", + "Date Modified": "2018-10-10T19:10:32Z", + "Date Added": "2018-10-10T19:10:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3773526069", + "Play Date UTC": "2023-07-29T22:41:09Z", + "Skip Count": "2", + "Skip Date": "2021-04-27T13:15:07Z", + "Release Date": "2018-09-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Another Friday Night / Hot Heavy Summer / Sister - Single", + "Sort Artist": "Ben Howard", + "Sort Name": "Sister", + "Persistent ID": "D70CB05D5C3748C8", + "Track Type": "Remote" + }, + { + "Track ID": "2597", + "Name": "Oats In the Water", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "The Burgh Island EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "10423033", + "Total Time": "299382", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2012", + "Date Modified": "2018-10-10T19:29:17Z", + "Date Added": "2018-10-10T19:29:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3781156643", + "Play Date UTC": "2023-10-26T06:17:23Z", + "Skip Count": "3", + "Skip Date": "2022-12-09T16:05:50Z", + "Release Date": "2012-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Burgh Island EP", + "Sort Artist": "Ben Howard", + "Sort Name": "Oats In the Water", + "Persistent ID": "5BE7222042E103F5", + "Track Type": "Remote" + }, + { + "Track ID": "2599", + "Name": "Waiting to Breathe", + "Artist": "Alexis Ffrench, Tall Heights, The City of Prague Philharmonic Orchestra & Adam Klemans", + "Album Artist": "Alexis Ffrench", + "Composer": "Alexis Ffrench", + "Album": "Evolution", + "Genre": "Waiting to Breathe", + "Kind": "Waiting to Breathe", + "Size": "6620189", + "Total Time": "189737", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2018-10-11T11:41:56Z", + "Date Added": "2018-10-11T11:41:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3782987608", + "Play Date UTC": "2023-11-16T10:53:28Z", + "Skip Count": "2", + "Skip Date": "2022-12-14T14:24:44Z", + "Release Date": "2018-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Classical Crossover", + "Sort Artist": "Apple Music AAC audio file", + "Sort Name": "Evolution", + "Persistent ID": "Alexis Ffrench, Tall Heights, The City of Prague Philharmonic Orchestra & Adam Klemans", + "Track Type": "Waiting to Breathe" + }, + { + "Track ID": "2601", + "Name": "Evergreen", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "I Forget Where We Were", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8469598", + "Total Time": "244951", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2018-10-11T15:08:21Z", + "Date Added": "2018-10-11T15:08:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3762327346", + "Play Date UTC": "2023-03-22T07:55:46Z", + "Skip Count": "5", + "Skip Date": "2022-07-05T14:55:04Z", + "Release Date": "2014-10-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Forget Where We Were", + "Sort Artist": "Ben Howard", + "Sort Name": "Evergreen", + "Persistent ID": "5504E416071E60EC", + "Track Type": "Remote" + }, + { + "Track ID": "2603", + "Name": "Small Things", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "I Forget Where We Were", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "11887289", + "Total Time": "343776", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2018-10-11T15:09:29Z", + "Date Added": "2018-10-11T15:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3783668619", + "Play Date UTC": "2023-11-24T08:03:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-10-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Forget Where We Were", + "Sort Artist": "Ben Howard", + "Sort Name": "Small Things", + "Persistent ID": "6315E0096E6EABD2", + "Track Type": "Remote" + }, + { + "Track ID": "2605", + "Name": "I Forget Where We Were", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "I Forget Where We Were", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "9786511", + "Total Time": "281206", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2018-10-11T15:09:47Z", + "Date Added": "2018-10-11T15:09:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3779917432", + "Play Date UTC": "2023-10-11T22:03:52Z", + "Skip Count": "3", + "Skip Date": "2023-02-23T12:35:01Z", + "Release Date": "2014-08-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Forget Where We Were", + "Sort Artist": "Ben Howard", + "Sort Name": "I Forget Where We Were", + "Persistent ID": "78796A1D5AD547D7", + "Track Type": "Remote" + }, + { + "Track ID": "2607", + "Name": "In Dreams", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "I Forget Where We Were", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7615387", + "Total Time": "213439", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2018-10-11T15:13:32Z", + "Date Added": "2018-10-11T15:13:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3759832925", + "Play Date UTC": "2023-02-21T11:02:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-10-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1181", + "Sort Album": "I Forget Where We Were", + "Sort Artist": "Ben Howard", + "Sort Name": "In Dreams", + "Persistent ID": "55C161C97094FCF5", + "Track Type": "Remote" + }, + { + "Track ID": "2609", + "Name": "She Treats Me Well", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "I Forget Where We Were", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "10911607", + "Total Time": "317935", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2018-10-11T15:14:59Z", + "Date Added": "2018-10-11T15:14:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3768298028", + "Play Date UTC": "2023-05-30T10:27:08Z", + "Skip Count": "3", + "Skip Date": "2021-08-27T19:36:27Z", + "Release Date": "2014-10-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Forget Where We Were", + "Sort Artist": "Ben Howard", + "Sort Name": "She Treats Me Well", + "Persistent ID": "A6537FDDD98815E1", + "Track Type": "Remote" + }, + { + "Track ID": "2611", + "Name": "Conrad", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "I Forget Where We Were", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "12503126", + "Total Time": "368125", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2018-10-11T15:27:32Z", + "Date Added": "2018-10-11T15:27:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3768311790", + "Play Date UTC": "2023-05-30T14:16:30Z", + "Skip Count": "1", + "Skip Date": "2018-10-23T08:34:44Z", + "Release Date": "2014-10-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Forget Where We Were", + "Sort Artist": "Ben Howard", + "Sort Name": "Conrad", + "Persistent ID": "509EF61DD3CBA969", + "Track Type": "Remote" + }, + { + "Track ID": "2613", + "Name": "Daylight", + "Artist": "Blue October", + "Album Artist": "Blue October", + "Composer": "Justin S Furstenfeld, William Matthew Noveskey, Dwight A & Baker", + "Album": "I Hope You're Happy", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8105900", + "Total Time": "219517", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2018-10-13T16:15:12Z", + "Date Added": "2018-10-13T16:15:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3759911409", + "Play Date UTC": "2023-02-22T08:50:09Z", + "Skip Count": "7", + "Skip Date": "2022-09-20T11:44:35Z", + "Release Date": "2018-08-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "I Hope You're Happy", + "Sort Artist": "Blue October", + "Sort Name": "Daylight", + "Persistent ID": "A335183A2EAEAE77", + "Track Type": "Remote" + }, + { + "Track ID": "2615", + "Name": "Tiimmy Turner", + "Artist": "Desiigner", + "Album Artist": "Desiigner", + "Composer": "Sidney Selby & MIKE DEAN", + "Album": "Tiimmy Turner - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8599940", + "Total Time": "239851", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2018-10-14T15:35:16Z", + "Date Added": "2018-10-14T15:35:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3773849115", + "Play Date UTC": "2023-08-02T16:25:15Z", + "Skip Count": -1, + "Skip Date": "2018-10-24T19:53:32Z", + "Release Date": "2016-07-22T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tiimmy Turner - Single", + "Sort Artist": "Desiigner", + "Sort Name": "Tiimmy Turner", + "Persistent ID": "FCDA8F400BF22D39", + "Track Type": "Remote" + }, + { + "Track ID": "2617", + "Name": "Rapture", + "Artist": "Tom Walker", + "Album Artist": "Tom Walker", + "Composer": "Tom Walker, Tim Deal & Fiona Bevan", + "Album": "Blessings - EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "6679437", + "Total Time": "186067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2017", + "Date Modified": "2018-10-15T18:05:08Z", + "Date Added": "2018-10-15T18:05:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3767770510", + "Play Date UTC": "2023-05-24T07:55:10Z", + "Skip Count": "1", + "Skip Date": "2018-10-16T08:22:35Z", + "Release Date": "2017-05-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blessings - EP", + "Sort Artist": "Tom Walker", + "Sort Name": "Rapture", + "Persistent ID": "021A994694B73C79", + "Track Type": "Remote" + }, + { + "Track ID": "2619", + "Name": "Karma", + "Artist": "Tom Walker", + "Album Artist": "Tom Walker", + "Composer": "Tom Walker, Tim Deal & Samuel Preston", + "Album": "Blessings - EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "6609255", + "Total Time": "183773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2017", + "Date Modified": "2018-10-15T18:10:18Z", + "Date Added": "2018-10-15T18:10:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3764666356", + "Play Date UTC": "2023-04-18T09:39:16Z", + "Skip Count": "1", + "Skip Date": "2018-10-21T16:03:18Z", + "Release Date": "2017-05-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blessings - EP", + "Sort Artist": "Tom Walker", + "Sort Name": "Karma", + "Persistent ID": "0011183DFFF76192", + "Track Type": "Remote" + }, + { + "Track ID": "2621", + "Name": "My Way", + "Artist": "Tom Walker", + "Album Artist": "Tom Walker", + "Composer": "Tom Walker, Tim Deal & Fiona Bevan", + "Album": "My Way - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8532920", + "Total Time": "236249", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-15T18:16:17Z", + "Date Added": "2018-10-15T18:16:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3767689937", + "Play Date UTC": "2023-05-23T09:32:17Z", + "Skip Count": "3", + "Skip Date": "2018-10-31T19:51:46Z", + "Release Date": "2018-06-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "My Way - Single", + "Sort Artist": "Tom Walker", + "Sort Name": "My Way", + "Persistent ID": "A8C91D03104DC9A6", + "Track Type": "Remote" + }, + { + "Track ID": "2623", + "Name": "Slow Loud & Bangin", + "Artist": "Chamillionaire", + "Album Artist": "Chamillionaire", + "Composer": "undef", + "Album": "Elevate", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9043107", + "Total Time": "254653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "7", + "Year": "2013", + "Date Modified": "2018-10-15T18:52:46Z", + "Date Added": "2018-10-15T18:52:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3763660448", + "Play Date UTC": "2023-04-06T18:14:08Z", + "Skip Count": "4", + "Skip Date": "2022-10-28T09:51:19Z", + "Release Date": "2013-02-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "2758", + "Sort Album": "Elevate", + "Sort Artist": "Chamillionaire", + "Sort Name": "Slow Loud & Bangin", + "Persistent ID": "1E32D9B43D041A38", + "Track Type": "Remote" + }, + { + "Track ID": "2625", + "Name": "Handyman", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Here Come the Runts", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7299669", + "Total Time": "202032", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-16T03:59:34Z", + "Date Added": "2018-10-16T03:59:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3731139473", + "Play Date UTC": "2022-03-26T08:37:53Z", + "Skip Count": "2", + "Skip Date": "2020-05-16T15:52:53Z", + "Release Date": "2018-01-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Here Come the Runts", + "Sort Artist": "AWOLNATION", + "Sort Name": "Handyman", + "Persistent ID": "2C467B797CD629FB", + "Track Type": "Remote" + }, + { + "Track ID": "2627", + "Name": "Walk On Water", + "Artist": "Thirty Seconds to Mars", + "Album Artist": "Thirty Seconds to Mars", + "Composer": "Jared Leto", + "Album": "AMERICA", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6874003", + "Total Time": "185467", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2018-10-16T04:01:22Z", + "Date Added": "2018-10-16T04:01:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3768284520", + "Play Date UTC": "2023-05-30T06:42:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-22T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "AMERICA", + "Sort Artist": "Thirty Seconds to Mars", + "Sort Name": "Walk On Water", + "Persistent ID": "8BF60516F2E031CB", + "Track Type": "Remote" + }, + { + "Track ID": "2629", + "Name": "Black Flies", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom (Deluxe Edition)", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "13558006", + "Total Time": "381507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "17", + "Year": "2011", + "Date Modified": "2018-10-16T15:32:59Z", + "Date Added": "2018-10-16T15:32:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3773757141", + "Play Date UTC": "2023-08-01T14:52:21Z", + "Skip Count": "7", + "Skip Date": "2022-07-25T17:55:44Z", + "Release Date": "2011-01-01T12:00:00Z", + "Album Rating": "40", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "40", + "Sort Album": "Every Kingdom (Deluxe Edition)", + "Sort Artist": "Ben Howard", + "Sort Name": "Black Flies", + "Persistent ID": "7369DE9BA15DA501", + "Track Type": "Remote" + }, + { + "Track ID": "2631", + "Name": "Starlight", + "Artist": "Muse", + "Album Artist": "Muse", + "Composer": "Muse, Mathew Bellamy & Matthew Bellamy", + "Album": "Six Studio Albums", + "Genre": "Black Holes and Revelations", + "Kind": "Alternative", + "Size": "8687951", + "Total Time": "239916", + "Disc Number": "4", + "Disc Count": "6", + "Track Number": "2", + "Track Count": "11", + "Year": "2006", + "Date Modified": "2018-10-21T04:35:34Z", + "Date Added": "2018-10-21T04:35:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3779918199", + "Play Date UTC": "2023-10-11T22:16:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2006-06-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Six Studio Albums", + "Sort Name": "Muse", + "Persistent ID": "Starlight", + "Track Type": "A22A1A38773D8768" + }, + { + "Track ID": "2633", + "Name": "Feeling Good", + "Artist": "Muse", + "Album Artist": "Muse", + "Composer": "Bricusse, Newley, Anthony Newley & Leslie Bricusse", + "Album": "Origin of Symmetry", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7195701", + "Total Time": "199760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2001", + "Date Modified": "2018-10-21T04:42:32Z", + "Date Added": "2018-10-21T04:42:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3773120037", + "Play Date UTC": "2023-07-25T05:53:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2001-07-17T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Origin of Symmetry", + "Sort Artist": "Muse", + "Sort Name": "Feeling Good", + "Persistent ID": "E73CA8668EB78CB6", + "Track Type": "Remote" + }, + { + "Track ID": "2635", + "Name": "Into Me", + "Artist": "Garrickson & Qole", + "Album Artist": "Garrickson & Qole", + "Composer": "undef", + "Album": "With You - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8336334", + "Total Time": "237422", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2016", + "Date Modified": "2018-10-21T06:21:51Z", + "Date Added": "2018-10-21T06:21:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3777366079", + "Play Date UTC": "2023-09-12T09:21:19Z", + "Skip Count": "1", + "Skip Date": "2021-02-25T23:30:57Z", + "Release Date": "2016-05-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "With You - EP", + "Sort Artist": "Garrickson & Qole", + "Sort Name": "Into Me", + "Persistent ID": "2C4380A7E5295662", + "Track Type": "Remote" + }, + { + "Track ID": "2637", + "Name": "Stoned on You", + "Artist": "Jaymes Young", + "Album Artist": "Jaymes Young", + "Composer": "Jaymes Young", + "Album": "Feel Something", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7302477", + "Total Time": "204344", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2018-10-21T06:51:17Z", + "Date Added": "2018-10-21T06:51:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3779899308", + "Play Date UTC": "2023-10-11T17:01:48Z", + "Skip Count": "5", + "Skip Date": "2018-12-04T20:53:39Z", + "Release Date": "2017-04-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Feel Something", + "Sort Artist": "Jaymes Young", + "Sort Name": "Stoned on You", + "Persistent ID": "DBCACE1C5E5AE388", + "Track Type": "Remote" + }, + { + "Track ID": "2639", + "Name": "Super Colossal", + "Artist": "Joe Satriani", + "Album Artist": "Joe Satriani", + "Composer": "Joe Satriani", + "Album": "Super Colossal", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8916127", + "Total Time": "254635", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2006", + "Date Modified": "2018-10-21T09:06:33Z", + "Date Added": "2018-10-21T09:06:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3766662225", + "Play Date UTC": "2023-05-11T12:03:45Z", + "Skip Count": "7", + "Skip Date": "2022-07-17T13:09:23Z", + "Release Date": "2006-03-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Super Colossal", + "Sort Artist": "Joe Satriani", + "Sort Name": "Super Colossal", + "Persistent ID": "37DFFD2ADADDE07A", + "Track Type": "Remote" + }, + { + "Track ID": "2641", + "Name": "Ten Words", + "Artist": "Joe Satriani", + "Album Artist": "Joe Satriani", + "Composer": "Joe Satriani", + "Album": "Super Colossal", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "7883357", + "Total Time": "208585", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2006", + "Date Modified": "2018-10-21T09:08:39Z", + "Date Added": "2018-10-21T09:08:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780480507", + "Play Date UTC": "2023-10-18T10:28:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2006-03-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Super Colossal", + "Sort Artist": "Joe Satriani", + "Sort Name": "Ten Words", + "Persistent ID": "984CA1A775379CB6", + "Track Type": "Remote" + }, + { + "Track ID": "2643", + "Name": "Made of Tears", + "Artist": "Joe Satriani", + "Album Artist": "Joe Satriani", + "Composer": "Joe Satriani", + "Album": "Super Colossal", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "12041686", + "Total Time": "332845", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2006", + "Date Modified": "2018-10-21T09:09:09Z", + "Date Added": "2018-10-21T09:09:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3760095779", + "Play Date UTC": "2023-02-24T12:02:59Z", + "Skip Count": "1", + "Skip Date": "2023-05-12T19:16:09Z", + "Release Date": "2006-03-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "2026", + "Sort Album": "Super Colossal", + "Sort Artist": "Joe Satriani", + "Sort Name": "Made of Tears", + "Persistent ID": "CB55CEEE75DF4B97", + "Track Type": "Remote" + }, + { + "Track ID": "2645", + "Name": "Radio Lust", + "Artist": "The Blancos", + "Album Artist": "The Blancos", + "Composer": "undef", + "Album": "Broken Kids", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8130185", + "Total Time": "230290", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "7", + "Year": "2016", + "Date Modified": "2018-10-21T20:12:21Z", + "Date Added": "2018-10-21T20:12:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3663134223", + "Play Date UTC": "2020-01-29T06:17:03Z", + "Skip Count": "2", + "Skip Date": "2018-10-29T08:50:46Z", + "Release Date": "2016-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Broken Kids", + "Sort Artist": "Blancos", + "Sort Name": "Blancos", + "Persistent ID": "Radio Lust", + "Track Type": "A088B2C6DD4D1FEC" + }, + { + "Track ID": "2647", + "Name": "Ease Me", + "Artist": "Pageant Boys", + "Album Artist": "Pageant Boys", + "Composer": "undef", + "Album": "Shadowboxing - EP", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8238486", + "Total Time": "227273", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2018-10-21T20:18:11Z", + "Date Added": "2018-10-21T20:18:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "64", + "Play Date": "3760086533", + "Play Date UTC": "2023-02-24T09:28:53Z", + "Skip Count": "8", + "Skip Date": "2022-07-14T14:48:57Z", + "Release Date": "2017-05-19T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Shadowboxing - EP", + "Sort Artist": "Pageant Boys", + "Sort Name": "Ease Me", + "Persistent ID": "05DB74B41FD54586", + "Track Type": "Remote" + }, + { + "Track ID": "2649", + "Name": "Juvenescence", + "Artist": "Verzache", + "Album Artist": "Verzache", + "Composer": "Zachary Farache", + "Album": "Juvenescence - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5473849", + "Total Time": "150168", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-10-21T20:22:07Z", + "Date Added": "2018-10-21T20:22:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3783586861", + "Play Date UTC": "2023-11-23T09:21:01Z", + "Skip Count": "1", + "Skip Date": "2022-04-16T22:48:14Z", + "Release Date": "2017-03-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Juvenescence - Single", + "Sort Artist": "Verzache", + "Sort Name": "Juvenescence", + "Persistent ID": "824E558B7464C01E", + "Track Type": "Remote" + }, + { + "Track ID": "2651", + "Name": "Inyn", + "Artist": "Okay(K)", + "Album Artist": "Okay(K)", + "Composer": "undef", + "Album": "Lucy Wrap(s) - EP", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "13932972", + "Total Time": "408110", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2018-10-21T20:31:33Z", + "Date Added": "2018-10-21T20:31:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "66", + "Play Date": "3771745340", + "Play Date UTC": "2023-07-09T08:02:20Z", + "Skip Count": "6", + "Skip Date": "2022-10-31T18:03:25Z", + "Release Date": "2017-02-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Lucy Wrap(s) - EP", + "Sort Artist": "Okay(K)", + "Sort Name": "Inyn", + "Persistent ID": "EE19B9579E3A0738", + "Track Type": "Remote" + }, + { + "Track ID": "2653", + "Name": "Know My Name", + "Artist": "The Blancos", + "Album Artist": "The Blancos", + "Composer": "Cory Hueston, Jayson Robbins & Mike Green", + "Album": "Know My Name - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6946696", + "Total Time": "192289", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-22T04:39:01Z", + "Date Added": "2018-10-22T04:39:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3766852148", + "Play Date UTC": "2023-05-13T16:49:08Z", + "Skip Count": "6", + "Skip Date": "2019-02-04T06:58:53Z", + "Release Date": "2018-05-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Know My Name - Single", + "Sort Artist": "Blancos", + "Sort Name": "Blancos", + "Persistent ID": "Know My Name", + "Track Type": "2A80135B2067950C" + }, + { + "Track ID": "2655", + "Name": "Heartbreak", + "Artist": "Us The Duo", + "Album Artist": "Us The Duo", + "Composer": "Michael Alvarado & Carissa Alvarado", + "Album": "No Matter Where You Are", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "10215875", + "Total Time": "296547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2018-10-22T20:00:25Z", + "Date Added": "2018-10-22T20:00:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3770277006", + "Play Date UTC": "2023-06-22T08:10:06Z", + "Skip Count": "1", + "Skip Date": "2022-11-17T06:49:24Z", + "Release Date": "2014-05-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Matter Where You Are", + "Sort Artist": "Us The Duo", + "Sort Name": "Heartbreak", + "Persistent ID": "16B3D23CE1EBBCCB", + "Track Type": "Remote" + }, + { + "Track ID": "2657", + "Name": "Leave Me Alone.Sad", + "Artist": "Call Me Karizma", + "Album Artist": "Call Me Karizma", + "Composer": "undef", + "Album": "Leave Me Alone.Sad - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8755976", + "Total Time": "247925", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-10-23T03:54:56Z", + "Date Added": "2018-10-23T03:54:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3775804942", + "Play Date UTC": "2023-08-25T07:42:22Z", + "Skip Count": "1", + "Skip Date": "2018-10-23T20:34:02Z", + "Release Date": "2017-04-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Leave Me Alone.Sad - Single", + "Sort Artist": "Call Me Karizma", + "Sort Name": "Leave Me Alone.Sad", + "Persistent ID": "5969C8BBE06A0F84", + "Track Type": "Remote" + }, + { + "Track ID": "2659", + "Name": "Mad About You", + "Artist": "Sting", + "Album Artist": "Sting", + "Composer": "Sting", + "Album": "Fields of Gold - The Best of Sting (1984-1994) [Remastered]", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8733024", + "Total Time": "233667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "17", + "Year": "1991", + "Date Modified": "2018-10-23T07:38:17Z", + "Date Added": "2018-10-23T07:38:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3780844353", + "Play Date UTC": "2023-10-22T15:32:33Z", + "Skip Count": "1", + "Skip Date": "2022-10-25T16:37:57Z", + "Release Date": "1991-01-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Fields of Gold - The Best of Sting (1984-1994) [Remastered]", + "Sort Artist": "Sting", + "Sort Name": "Mad About You", + "Persistent ID": "1FD234776EAFE533", + "Track Type": "Remote" + }, + { + "Track ID": "2661", + "Name": "F U Till I F U (feat. Cass)", + "Artist": "Call Me Karizma", + "Album Artist": "Call Me Karizma", + "Composer": "undef", + "Album": "Emo: Everybody Moves On - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8237674", + "Total Time": "234162", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2016", + "Date Modified": "2018-10-23T11:48:50Z", + "Date Added": "2018-10-23T11:48:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3760423595", + "Play Date UTC": "2023-02-28T07:06:35Z", + "Skip Count": "1", + "Skip Date": "2022-08-19T16:08:17Z", + "Release Date": "2016-04-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Emo: Everybody Moves On - EP", + "Sort Artist": "Call Me Karizma", + "Sort Name": "F U Till I F U (feat. Cass)", + "Persistent ID": "D112289BEEC2E1FE", + "Track Type": "Remote" + }, + { + "Track ID": "2663", + "Name": "Hell Froze Over", + "Artist": "Kodaline", + "Album Artist": "Kodaline", + "Composer": "Stephen Garrigan, Johnny McDaid, Mark Prendergast, Max Marlow, Vincent May, Jr. & Jason Boland", + "Album": "Politics of Living", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7990658", + "Total Time": "225573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2018-10-23T17:52:28Z", + "Date Added": "2018-10-23T17:52:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3776178552", + "Play Date UTC": "2023-08-29T15:29:12Z", + "Skip Count": "1", + "Skip Date": "2018-10-25T18:25:48Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Politics of Living", + "Sort Artist": "Kodaline", + "Sort Name": "Hell Froze Over", + "Persistent ID": "771D30B11D6A1C11", + "Track Type": "Remote" + }, + { + "Track ID": "2665", + "Name": "All I Want", + "Artist": "Kodaline", + "Album Artist": "Kodaline", + "Composer": "Steve Garrigan, Mark Prendergast, James Flannigan & Vincent May", + "Album": "In a Perfect World", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10854886", + "Total Time": "305747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "15", + "Year": "2012", + "Date Modified": "2018-10-23T19:41:34Z", + "Date Added": "2018-10-23T19:41:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3776432885", + "Play Date UTC": "2023-09-01T14:08:05Z", + "Skip Count": "4", + "Skip Date": "2022-12-12T06:07:43Z", + "Release Date": "2012-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In a Perfect World", + "Sort Artist": "Kodaline", + "Sort Name": "All I Want", + "Persistent ID": "A707126A7CAAD16E", + "Track Type": "Remote" + }, + { + "Track ID": "2667", + "Name": "Feels Like Summer", + "Artist": "Weezer", + "Album Artist": "Weezer", + "Composer": "Dan Goldberger, David Dahlquist, J.R. Rotem, Johnny Coffer, Patrick Morrissey & Rivers Cuomo", + "Album": "Pacific Daydream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7030996", + "Total Time": "196031", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-24T17:36:12Z", + "Date Added": "2018-10-24T17:36:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3783410908", + "Play Date UTC": "2023-11-21T08:28:28Z", + "Skip Count": "8", + "Skip Date": "2022-10-24T13:51:25Z", + "Release Date": "2017-03-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pacific Daydream", + "Sort Artist": "Weezer", + "Sort Name": "Feels Like Summer", + "Persistent ID": "ACE64DCE57CAE448", + "Track Type": "Remote" + }, + { + "Track ID": "2669", + "Name": "Any Friend of Diane\u2019s", + "Artist": "Weezer", + "Album Artist": "Weezer", + "Composer": "Rivers Cuomo", + "Album": "Pacific Daydream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7767967", + "Total Time": "214772", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-24T18:11:18Z", + "Date Added": "2018-10-24T18:11:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3767186209", + "Play Date UTC": "2023-05-17T13:36:49Z", + "Skip Count": "4", + "Skip Date": "2018-10-26T18:33:05Z", + "Release Date": "2017-10-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pacific Daydream", + "Sort Artist": "Weezer", + "Sort Name": "Any Friend of Diane\u2019s", + "Persistent ID": "A88B128E65C7D4F7", + "Track Type": "Remote" + }, + { + "Track ID": "2671", + "Name": "La Mancha Screwjob", + "Artist": "Weezer", + "Album Artist": "Weezer", + "Composer": "Josh Alexander & Rivers Cuomo", + "Album": "Pacific Daydream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7964612", + "Total Time": "207685", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-24T18:15:16Z", + "Date Added": "2018-10-24T18:15:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3772790606", + "Play Date UTC": "2023-07-21T10:23:26Z", + "Skip Count": "8", + "Skip Date": "2022-10-24T13:36:29Z", + "Release Date": "2017-10-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pacific Daydream", + "Sort Artist": "Weezer", + "Sort Name": "La Mancha Screwjob", + "Persistent ID": "A05929D20EFFB714", + "Track Type": "Remote" + }, + { + "Track ID": "2673", + "Name": "Lte", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "YUNGDEATHLILLIFE", + "Genre": "Hip-Hop", + "Kind": "AAC audio file", + "Size": "4918247", + "Total Time": "133747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2018-10-25T11:54:17Z", + "Date Added": "2018-10-25T11:54:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3767516761", + "Play Date UTC": "2023-05-21T09:26:01Z", + "Skip Count": "4", + "Skip Date": "2022-11-25T23:24:23Z", + "Release Date": "2015-05-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "YUNGDEATHLILLIFE", + "Sort Artist": "$uicideboy$", + "Sort Name": "Lte", + "Persistent ID": "97822EC0F0BCF2C5", + "Track Type": "Remote" + }, + { + "Track ID": "2675", + "Name": "I Mean It (feat. Remo)", + "Artist": "G-Eazy", + "Album Artist": "G-Eazy", + "Composer": "Gerald Gillum, Christoph Andersson & Remo Green", + "Album": "These Things Happen", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8449877", + "Total Time": "236480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "16", + "Year": "2014", + "Date Modified": "2018-10-25T17:34:15Z", + "Date Added": "2018-10-25T17:34:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3783593304", + "Play Date UTC": "2023-11-23T11:08:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-05-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "These Things Happen", + "Sort Artist": "G-Eazy", + "Sort Name": "I Mean It (feat. Remo)", + "Persistent ID": "C3C1E22AE036509D", + "Track Type": "Remote" + }, + { + "Track ID": "2677", + "Name": "Rewind (feat. Anthony Russo)", + "Artist": "G-Eazy", + "Album Artist": "G-Eazy", + "Composer": "Anthony Russo, Gerald Gillum, Christian \"Hitmaka\" Ward, Kenneth Coby, Floyd A1 Bentley & Andrew Neely", + "Album": "Rewind (feat. Anthony Russo) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7073397", + "Total Time": "200411", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-25T17:34:46Z", + "Date Added": "2018-10-25T17:34:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3781177566", + "Play Date UTC": "2023-10-26T12:06:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-09-12T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rewind (feat. Anthony Russo) - Single", + "Sort Artist": "G-Eazy", + "Sort Name": "Rewind (feat. Anthony Russo)", + "Persistent ID": "37858DDD9E5C1D79", + "Track Type": "Remote" + }, + { + "Track ID": "2679", + "Name": "Cry Alone", + "Artist": "Lil Peep", + "Album Artist": "Lil Peep", + "Composer": "Gustav Ahr, Dylan Mullen & IIVI", + "Album": "Come Over When You're Sober, Pt. 2 (Bonus)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6134176", + "Total Time": "167107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2018-10-25T17:37:12Z", + "Date Added": "2018-10-25T17:37:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3773535554", + "Play Date UTC": "2023-07-30T01:19:14Z", + "Skip Count": "3", + "Skip Date": "2022-07-15T17:59:35Z", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Come Over When You're Sober, Pt. 2 (Bonus)", + "Sort Artist": "Lil Peep", + "Sort Name": "Cry Alone", + "Persistent ID": "A24A0515784CB0B6", + "Track Type": "Remote" + }, + { + "Track ID": "2681", + "Name": "Loser", + "Artist": "Jagwar Twin", + "Album Artist": "Jagwar Twin", + "Composer": "Matthew Pauling & Roy English", + "Album": "Subject To Flooding", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6443306", + "Total Time": "175466", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2018-10-26T08:15:52Z", + "Date Added": "2018-10-26T08:15:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3780832346", + "Play Date UTC": "2023-10-22T12:12:26Z", + "Skip Count": "3", + "Skip Date": "2021-12-06T20:27:36Z", + "Release Date": "2018-09-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Subject To Flooding", + "Sort Artist": "Jagwar Twin", + "Sort Name": "Loser", + "Persistent ID": "C20F92BA9CA85025", + "Track Type": "Remote" + }, + { + "Track ID": "2683", + "Name": "Bells", + "Artist": "The Unlikely Candidates", + "Album Artist": "The Unlikely Candidates", + "Composer": "Kyle Morris, Brenton Carney, Dave Bassett, Jaren Hornbeek, Kevin Goddard & Cole Male", + "Album": "Bells - Single", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "7195464", + "Total Time": "190520", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-26T09:20:12Z", + "Date Added": "2018-10-26T09:20:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3783678793", + "Play Date UTC": "2023-11-24T10:53:13Z", + "Skip Count": "7", + "Skip Date": "2023-10-03T09:28:33Z", + "Release Date": "2018-10-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bells - Single", + "Sort Artist": "Unlikely Candidates", + "Sort Name": "Unlikely Candidates", + "Persistent ID": "Bells", + "Track Type": "B7FC7800A5197150" + }, + { + "Track ID": "2685", + "Name": "Bkcbd", + "Artist": "The Blancos", + "Album Artist": "The Blancos", + "Composer": "undef", + "Album": "Bkcbd - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7889599", + "Total Time": "223116", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2018-10-26T14:30:20Z", + "Date Added": "2018-10-26T14:30:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3730534013", + "Play Date UTC": "2022-03-19T08:26:53Z", + "Skip Count": "5", + "Skip Date": "2021-12-08T17:35:38Z", + "Release Date": "2016-02-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Bkcbd - Single", + "Sort Artist": "Blancos", + "Sort Name": "Blancos", + "Persistent ID": "Bkcbd", + "Track Type": "C816A73A0D9CC06C" + }, + { + "Track ID": "2687", + "Name": "Let's Fall in Love for the Night", + "Artist": "FINNEAS", + "Album Artist": "FINNEAS", + "Composer": "FINNEAS", + "Album": "Let's Fall in Love for the Night - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6823276", + "Total Time": "190348", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-26T17:44:18Z", + "Date Added": "2018-10-26T17:44:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783355266", + "Play Date UTC": "2023-11-20T17:01:06Z", + "Skip Count": "4", + "Skip Date": "2022-06-28T21:13:35Z", + "Release Date": "2018-10-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Let's Fall in Love for the Night - Single", + "Sort Artist": "FINNEAS", + "Sort Name": "Let's Fall in Love for the Night", + "Persistent ID": "00BE9037A2DE9F12", + "Track Type": "Remote" + }, + { + "Track ID": "2689", + "Name": "Come True", + "Artist": "khai dreams & Forest", + "Album Artist": "khai dreams & Forest", + "Composer": "Forrest Frank & Khai Duong", + "Album": "Come True - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7224762", + "Total Time": "203520", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-26T17:47:11Z", + "Date Added": "2018-10-26T17:47:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3759949063", + "Play Date UTC": "2023-02-22T19:17:43Z", + "Skip Count": "2", + "Skip Date": "2019-01-17T09:46:32Z", + "Release Date": "2018-09-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Come True - Single", + "Sort Artist": "khai dreams & Forest", + "Sort Name": "Come True", + "Persistent ID": "D44C8B421AC71D5B", + "Track Type": "Remote" + }, + { + "Track ID": "2691", + "Name": "Stronger", + "Artist": "The Score", + "Album Artist": "The Score", + "Composer": "Edan Dover, Eddie Ramirez, Jason Merris Bell & Jordan Rand Miller", + "Album": "Pressure - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6912729", + "Total Time": "190987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2018-10-26T17:49:25Z", + "Date Added": "2018-10-26T17:49:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3767101391", + "Play Date UTC": "2023-05-16T14:03:11Z", + "Skip Count": "4", + "Skip Date": "2023-01-03T16:21:18Z", + "Release Date": "2018-09-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pressure - EP", + "Sort Artist": "Score", + "Sort Name": "Score", + "Persistent ID": "Stronger", + "Track Type": "D09A3D07080A6FDF" + }, + { + "Track ID": "2693", + "Name": "Clean Eyes", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "SYML", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6782019", + "Total Time": "184093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2018-10-26T17:54:35Z", + "Date Added": "2018-10-26T17:54:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3767804299", + "Play Date UTC": "2023-05-24T17:18:19Z", + "Skip Count": "3", + "Skip Date": "2023-05-30T14:54:08Z", + "Release Date": "2018-09-21T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SYML", + "Sort Artist": "SYML", + "Sort Name": "Clean Eyes", + "Persistent ID": "AF2BBD604EE58F3C", + "Track Type": "Remote" + }, + { + "Track ID": "2695", + "Name": "Hazey", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "David Bayley", + "Album": "ZABA", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9974717", + "Total Time": "265893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2018-10-26T18:27:48Z", + "Date Added": "2018-10-26T18:27:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783356232", + "Play Date UTC": "2023-11-20T17:17:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-06-06T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ZABA", + "Sort Artist": "Glass Animals", + "Sort Name": "Hazey", + "Persistent ID": "5FB794616A938FE2", + "Track Type": "Remote" + }, + { + "Track ID": "2697", + "Name": "Happy Hour", + "Artist": "Weezer", + "Album Artist": "Weezer", + "Composer": "Chris Sernel, Rivers Cuomo & Sean Bowe", + "Album": "Pacific Daydream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6427177", + "Total Time": "177140", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-26T18:53:34Z", + "Date Added": "2018-10-26T18:53:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3781176359", + "Play Date UTC": "2023-10-26T11:45:59Z", + "Skip Count": "2", + "Skip Date": "2022-05-15T15:04:18Z", + "Release Date": "2017-10-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pacific Daydream", + "Sort Artist": "Weezer", + "Sort Name": "Happy Hour", + "Persistent ID": "062B8F6DB966E9AE", + "Track Type": "Remote" + }, + { + "Track ID": "2699", + "Name": "Karma Police", + "Artist": "Radiohead", + "Album Artist": "Radiohead", + "Composer": "Colin Greenwood, Ed O'Brien, Jonny Greenwood, Phil Selway & Thom Yorke", + "Album": "OK Computer", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9458868", + "Total Time": "264067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "1997", + "Date Modified": "2018-10-27T07:30:14Z", + "Date Added": "2018-10-27T07:30:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3766238144", + "Play Date UTC": "2023-05-06T14:15:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1997-05-21T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "OK Computer", + "Sort Artist": "Radiohead", + "Sort Name": "Karma Police", + "Persistent ID": "EF5F0E8BE1F903A3", + "Track Type": "Remote" + }, + { + "Track ID": "2701", + "Name": "No Surprises", + "Artist": "Radiohead", + "Album Artist": "Radiohead", + "Composer": "Colin Greenwood, Ed O'Brien, Jonny Greenwood, Phil Selway & Thom Yorke", + "Album": "OK Computer", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8635585", + "Total Time": "229120", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "1997", + "Date Modified": "2018-10-27T07:35:22Z", + "Date Added": "2018-10-27T07:35:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3781768548", + "Play Date UTC": "2023-11-02T08:15:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1997-05-21T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "OK Computer", + "Sort Artist": "Radiohead", + "Sort Name": "No Surprises", + "Persistent ID": "484BF208734AA120", + "Track Type": "Remote" + }, + { + "Track ID": "2703", + "Name": "The Sky Is a Neighborhood", + "Artist": "Foo Fighters", + "Album Artist": "Foo Fighters", + "Composer": "Foo Fighters", + "Album": "Concrete and Gold", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8943666", + "Total Time": "244570", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2018-10-27T07:37:15Z", + "Date Added": "2018-10-27T07:37:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3766775086", + "Play Date UTC": "2023-05-12T19:24:46Z", + "Skip Count": "1", + "Skip Date": "2018-10-28T20:10:36Z", + "Release Date": "2017-08-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Concrete and Gold", + "Sort Artist": "Foo Fighters", + "Sort Name": "Sky Is a Neighborhood", + "Persistent ID": "76E1D7D17C27BD7D", + "Track Type": "Remote" + }, + { + "Track ID": "2705", + "Name": "Gold", + "Artist": "Chet Faker", + "Album Artist": "Chet Faker", + "Composer": "Nick Murphy", + "Album": "Built on Glass", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "9946534", + "Total Time": "285256", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2014", + "Date Modified": "2018-10-27T07:49:27Z", + "Date Added": "2018-10-27T07:49:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3763575625", + "Play Date UTC": "2023-04-05T18:40:25Z", + "Skip Count": -1, + "Skip Date": "2022-03-26T13:37:14Z", + "Release Date": "2014-04-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Built on Glass", + "Sort Artist": "Chet Faker", + "Sort Name": "Gold", + "Persistent ID": "D41B99687AD1A8FA", + "Track Type": "Remote" + }, + { + "Track ID": "2707", + "Name": "I Got You", + "Artist": "Amy Shark", + "Album Artist": "Amy Shark", + "Composer": "Amy Louise Billings", + "Album": "Love Monster", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6345778", + "Total Time": "178307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-10-27T07:50:47Z", + "Date Added": "2018-10-27T07:50:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3761643527", + "Play Date UTC": "2023-03-14T09:58:47Z", + "Skip Count": "1", + "Skip Date": "2018-11-04T20:59:01Z", + "Release Date": "2018-07-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Love Monster", + "Sort Artist": "Amy Shark", + "Sort Name": "I Got You", + "Persistent ID": "DFC839A762C39921", + "Track Type": "Remote" + }, + { + "Track ID": "2709", + "Name": "Giants", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh, Adam Levin, Casey Harris & Alex Da Kid", + "Album": "The Reason - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8359209", + "Total Time": "236855", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2014", + "Date Modified": "2018-10-27T07:51:30Z", + "Date Added": "2018-10-27T07:51:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3759397349", + "Play Date UTC": "2023-02-16T10:02:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-04-22T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reason - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Giants", + "Persistent ID": "898253FB627A8B15", + "Track Type": "Remote" + }, + { + "Track ID": "2711", + "Name": "Jungle", + "Artist": "X Ambassadors & Jamie N Commons", + "Album Artist": "X Ambassadors", + "Composer": "Jamie N Commons, X Ambassadors, Alex Da Kid & Mike Del Rio", + "Album": "The Reason - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6807523", + "Total Time": "189307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2014", + "Date Modified": "2018-10-27T07:51:46Z", + "Date Added": "2018-10-27T07:51:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3767778303", + "Play Date UTC": "2023-05-24T10:05:03Z", + "Skip Count": "1", + "Skip Date": "2019-06-08T11:14:43Z", + "Release Date": "2014-04-22T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reason - EP", + "Sort Artist": "X Ambassadors & Jamie N Commons", + "Sort Name": "Jungle", + "Persistent ID": "C6B03529BDE1C5DE", + "Track Type": "Remote" + }, + { + "Track ID": "2713", + "Name": "No Diggity", + "Artist": "Chet Faker", + "Album Artist": "Various Artists", + "Composer": "A. Young, C. Hannibal, T. Riley, W. Stewart, L.Walters, R. Vick & Bill Withers", + "Album": "Digging the Blogosphere", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7977301", + "Total Time": "225000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "14", + "Year": "2012", + "Date Modified": "2018-10-27T07:52:00Z", + "Date Added": "2018-10-27T07:52:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3780498410", + "Play Date UTC": "2023-10-18T15:26:50Z", + "Skip Count": "3", + "Skip Date": "2022-07-13T18:34:07Z", + "Release Date": "2012-03-09T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Digging the Blogosphere", + "Sort Artist": "Chet Faker", + "Sort Name": "No Diggity", + "Persistent ID": "B2D82B295A78C8C8", + "Track Type": "Remote" + }, + { + "Track ID": "2715", + "Name": "Deep Water", + "Artist": "American Authors", + "Album Artist": "American Authors", + "Composer": "Zachary Barnett, Matt Sanchez, Trent Dabbs, Cason Cooley, James Shelley & David Rublin", + "Album": "Seasons", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7022269", + "Total Time": "198090", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-27T19:01:49Z", + "Date Added": "2018-10-27T19:01:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3781382803", + "Play Date UTC": "2023-10-28T21:06:43Z", + "Skip Count": "1", + "Skip Date": "2021-12-10T13:56:13Z", + "Release Date": "2018-05-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seasons", + "Sort Artist": "American Authors", + "Sort Name": "Deep Water", + "Persistent ID": "2D7567F102D783B9", + "Track Type": "Remote" + }, + { + "Track ID": "2717", + "Name": "High", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8288103", + "Total Time": "231897", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-27T19:10:52Z", + "Date Added": "2018-10-27T19:10:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "88", + "Play Date": "3779697689", + "Play Date UTC": "2023-10-09T09:01:29Z", + "Skip Count": "2", + "Skip Date": "2021-07-31T00:01:48Z", + "Release Date": "2017-03-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "High", + "Persistent ID": "A5B58A2FD99182B8", + "Track Type": "Remote" + }, + { + "Track ID": "2719", + "Name": "&Run", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8313100", + "Total Time": "226587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-27T19:15:32Z", + "Date Added": "2018-10-27T19:15:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "82", + "Play Date": "3781791159", + "Play Date UTC": "2023-11-02T14:32:39Z", + "Skip Count": "6", + "Skip Date": "2020-09-29T21:22:27Z", + "Release Date": "2017-06-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "&Run", + "Persistent ID": "FD7F9E5FFD649760", + "Track Type": "Remote" + }, + { + "Track ID": "2721", + "Name": "One Foot", + "Artist": "WALK THE MOON", + "Album Artist": "WALK THE MOON", + "Composer": "Eli Maiman, Kevin Ray, Nicholas Petricca, Sean Waugaman, Ryan McMahon, Ryan Rabin & Benjamin Berger", + "Album": "What If Nothing", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9186057", + "Total Time": "261372", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2018-10-27T19:43:21Z", + "Date Added": "2018-10-27T19:43:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3782989374", + "Play Date UTC": "2023-11-16T11:22:54Z", + "Skip Count": "1", + "Skip Date": "2022-08-06T07:37:27Z", + "Release Date": "2017-09-22T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "What If Nothing", + "Sort Artist": "WALK THE MOON", + "Sort Name": "One Foot", + "Persistent ID": "52119CCBDB59725B", + "Track Type": "Remote" + }, + { + "Track ID": "2723", + "Name": "&Run (K.Flay Remix)", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "&Run (K.Flay Remix) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7648944", + "Total Time": "216532", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-27T19:55:54Z", + "Date Added": "2018-10-27T19:55:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780917827", + "Play Date UTC": "2023-10-23T11:57:07Z", + "Skip Count": "1", + "Skip Date": "2018-10-29T18:48:58Z", + "Release Date": "2018-01-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "&Run (K.Flay Remix) - Single", + "Sort Artist": "Sir Sly", + "Sort Name": "&Run (K.Flay Remix)", + "Persistent ID": "2205774B1D616ECA", + "Track Type": "Remote" + }, + { + "Track ID": "2725", + "Name": "Nature Springs", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7152816", + "Total Time": "190027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2018-10-27T21:46:14Z", + "Date Added": "2018-10-27T21:46:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "78", + "Play Date": "3765966940", + "Play Date UTC": "2023-05-03T10:55:40Z", + "Skip Count": "3", + "Skip Date": "2019-01-28T17:50:09Z", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Nature Springs", + "Track Type": "698B4352F97497EE" + }, + { + "Track ID": "2727", + "Name": "Tomato Can", + "Artist": "The Arcs", + "Album Artist": "The Arcs", + "Composer": "Dan Auerbach & Leon Michels", + "Album": "Tomato Can - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9115528", + "Total Time": "260109", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2018-10-27T21:58:03Z", + "Date Added": "2018-10-27T21:58:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3779202438", + "Play Date UTC": "2023-10-03T15:27:18Z", + "Skip Count": "4", + "Skip Date": "2023-03-24T20:54:15Z", + "Release Date": "2015-10-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tomato Can - Single", + "Sort Artist": "Arcs", + "Sort Name": "Arcs", + "Persistent ID": "Tomato Can", + "Track Type": "58AEF29C5639AA2C" + }, + { + "Track ID": "2729", + "Name": "2 Am", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7451573", + "Total Time": "212514", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-28T20:11:43Z", + "Date Added": "2018-10-28T20:11:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "83", + "Play Date": "3783712454", + "Play Date UTC": "2023-11-24T20:14:14Z", + "Skip Count": "5", + "Skip Date": "2020-03-27T08:32:23Z", + "Release Date": "2017-06-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "2 Am", + "Persistent ID": "6C0450EB17DC8233", + "Track Type": "Remote" + }, + { + "Track ID": "2731", + "Name": "Altar", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito, Hayden Coplen & Peter Yorke", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7871935", + "Total Time": "221649", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-28T20:16:24Z", + "Date Added": "2018-10-28T20:16:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "104", + "Play Date": "3764066691", + "Play Date UTC": "2023-04-11T11:04:51Z", + "Skip Count": "4", + "Skip Date": "2023-01-15T20:30:27Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "Altar", + "Persistent ID": "CB437869040C87E0", + "Track Type": "Remote" + }, + { + "Track ID": "2733", + "Name": "Gold", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Gold - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8166470", + "Total Time": "231415", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2013", + "Date Modified": "2018-10-28T21:16:59Z", + "Date Added": "2018-10-28T21:16:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3781524274", + "Play Date UTC": "2023-10-30T12:24:34Z", + "Skip Count": "2", + "Skip Date": "2022-06-01T09:35:51Z", + "Release Date": "2013-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold - EP", + "Sort Artist": "Sir Sly", + "Sort Name": "Gold", + "Persistent ID": "3ADD5C91C234A1CA", + "Track Type": "Remote" + }, + { + "Track ID": "2735", + "Name": "Astronaut", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7972945", + "Total Time": "224382", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2018-10-28T21:17:09Z", + "Date Added": "2018-10-28T21:17:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "90", + "Play Date": "3780499318", + "Play Date UTC": "2023-10-18T15:41:58Z", + "Skip Count": "7", + "Skip Date": "2022-09-01T09:29:22Z", + "Release Date": "2017-01-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "Astronaut", + "Persistent ID": "DC5736AEF5AB5A15", + "Track Type": "Remote" + }, + { + "Track ID": "2737", + "Name": "Ghost", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "You Haunt Me", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8152183", + "Total Time": "217765", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2014", + "Date Modified": "2018-10-29T13:13:57Z", + "Date Added": "2018-10-29T13:13:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3780907362", + "Play Date UTC": "2023-10-23T09:02:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-09-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "You Haunt Me", + "Sort Artist": "Sir Sly", + "Sort Name": "Ghost", + "Persistent ID": "AE1DDCFCEA033F75", + "Track Type": "Remote" + }, + { + "Track ID": "2739", + "Name": "It's a Trip!", + "Artist": "Joywave", + "Album Artist": "Joywave", + "Composer": "Daniel Armbruster, Sean Donnelly, Paul Brenner, Joseph Morinelli & Benjamin Bailey", + "Album": "Content", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7258413", + "Total Time": "183520", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2018-10-29T19:14:08Z", + "Date Added": "2018-10-29T19:14:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3783664680", + "Play Date UTC": "2023-11-24T06:58:00Z", + "Skip Count": "5", + "Skip Date": "2022-03-16T16:00:39Z", + "Release Date": "2017-05-05T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Content", + "Sort Artist": "Joywave", + "Sort Name": "It's a Trip!", + "Persistent ID": "A217CDC13B03CAE6", + "Track Type": "Remote" + }, + { + "Track ID": "2741", + "Name": "Good Morning", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, David William Embree, Michael Fitzpatrick & Tanner Underwood", + "Album": "Good Morning - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5670819", + "Total Time": "154107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-10-29T19:46:35Z", + "Date Added": "2018-10-29T19:46:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3783592864", + "Play Date UTC": "2023-11-23T11:01:04Z", + "Skip Count": "2", + "Skip Date": "2022-12-05T20:10:03Z", + "Release Date": "2018-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good Morning - Single", + "Sort Artist": "Max Frost", + "Sort Name": "Good Morning", + "Persistent ID": "06F7A8C87F209814", + "Track Type": "Remote" + }, + { + "Track ID": "2743", + "Name": "Let Me Down Easy", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Ali Tamposi & Francois Tetaz", + "Album": "Intoxication - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8481053", + "Total Time": "237507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2015", + "Date Modified": "2018-10-29T19:52:28Z", + "Date Added": "2018-10-29T19:52:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3776239609", + "Play Date UTC": "2023-08-30T08:26:49Z", + "Skip Count": "1", + "Skip Date": "2018-11-02T18:53:01Z", + "Release Date": "2015-02-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Intoxication - EP", + "Sort Artist": "Max Frost", + "Sort Name": "Let Me Down Easy", + "Persistent ID": "480AC9CB13172C9D", + "Track Type": "Remote" + }, + { + "Track ID": "2745", + "Name": "High All Day", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost & Michael Fitzpatrick", + "Album": "High All Day - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6555630", + "Total Time": "175800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-10-29T20:00:05Z", + "Date Added": "2018-10-29T20:00:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3759924392", + "Play Date UTC": "2023-02-22T12:26:32Z", + "Skip Count": "4", + "Skip Date": "2023-05-31T15:47:35Z", + "Release Date": "2017-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "High All Day - Single", + "Sort Artist": "Max Frost", + "Sort Name": "High All Day", + "Persistent ID": "43B37D5A3316CD43", + "Track Type": "Remote" + }, + { + "Track ID": "2747", + "Name": "White Lies", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost", + "Album": "Low High Low - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6936575", + "Total Time": "179171", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2013", + "Date Modified": "2018-10-30T11:59:47Z", + "Date Added": "2018-10-30T11:59:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3762326808", + "Play Date UTC": "2023-03-22T07:46:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-04-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Low High Low - EP", + "Sort Artist": "Max Frost", + "Sort Name": "White Lies", + "Persistent ID": "F404FF73502EDA85", + "Track Type": "Remote" + }, + { + "Track ID": "2749", + "Name": "New Confessional", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Diederik van Elsas & Parrish Warrington", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7912148", + "Total Time": "219283", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3779311814", + "Play Date UTC": "2023-10-04T21:50:14Z", + "Skip Count": "2", + "Skip Date": "2023-05-11T21:11:52Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "New Confessional", + "Persistent ID": "3B1DD2EB4E6474BD", + "Track Type": "Remote" + }, + { + "Track ID": "2751", + "Name": "Slow Jamz", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Mick Schultz, Patrick James Bolster & Tori Zietsch", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5879165", + "Total Time": "158982", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3783752909", + "Play Date UTC": "2023-11-25T07:28:29Z", + "Skip Count": "2", + "Skip Date": "2018-10-30T17:19:03Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "Slow Jamz", + "Persistent ID": "A836B9A64434F7C2", + "Track Type": "Remote" + }, + { + "Track ID": "2753", + "Name": "Money Problems", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Clea Shimoa Pratt, Mick Schultz & Taka Perry", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6327514", + "Total Time": "169326", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3781176529", + "Play Date UTC": "2023-10-26T11:48:49Z", + "Skip Count": "2", + "Skip Date": "2023-06-09T16:32:54Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "Money Problems", + "Persistent ID": "CD358FBCF15DE39E", + "Track Type": "Remote" + }, + { + "Track ID": "2755", + "Name": "Put It on Me", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Michael Fitzpatrick & Mick Schultz", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8318259", + "Total Time": "228316", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3776151237", + "Play Date UTC": "2023-08-29T07:53:57Z", + "Skip Count": "3", + "Skip Date": "2019-06-15T13:21:34Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "Put It on Me", + "Persistent ID": "F025DE4FDF16FB4D", + "Track Type": "Remote" + }, + { + "Track ID": "2757", + "Name": "A$$hole (No Apologies)", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, J.R. Rotem & Marty James", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6945586", + "Total Time": "184454", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3758871719", + "Play Date UTC": "2023-02-10T08:01:59Z", + "Skip Count": "3", + "Skip Date": "2022-08-06T10:26:17Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "A$$hole (No Apologies)", + "Persistent ID": "AD370BE00723D27F", + "Track Type": "Remote" + }, + { + "Track ID": "2759", + "Name": "Eleven Days", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Ruxley & Thomas Slinger", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8302759", + "Total Time": "227200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3783693108", + "Play Date UTC": "2023-11-24T14:51:48Z", + "Skip Count": "1", + "Skip Date": "2023-02-14T19:42:17Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "Eleven Days", + "Persistent ID": "70D211ED5B8A67E0", + "Track Type": "Remote" + }, + { + "Track ID": "2761", + "Name": "Anxious", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Mark Landon & Nick Long", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5662596", + "Total Time": "152672", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3782886113", + "Play Date UTC": "2023-11-15T06:41:53Z", + "Skip Count": "1", + "Skip Date": "2018-11-02T18:48:07Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "Anxious", + "Persistent ID": "DFA5D5A44C66A1C0", + "Track Type": "Remote" + }, + { + "Track ID": "2763", + "Name": "Stranger to Me Now", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Mick Schultz & Scott Harris", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6646998", + "Total Time": "180651", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783666259", + "Play Date UTC": "2023-11-24T07:24:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "Stranger to Me Now", + "Persistent ID": "17A15DBA526917E2", + "Track Type": "Remote" + }, + { + "Track ID": "2765", + "Name": "Sometimes", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, David William Embree & Tanner Underwood", + "Album": "Gold Rush", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6817696", + "Total Time": "184285", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-10-30T12:16:48Z", + "Date Added": "2018-10-30T12:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781530394", + "Play Date UTC": "2023-10-30T14:06:34Z", + "Skip Count": "4", + "Skip Date": "2023-06-07T15:13:47Z", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Rush", + "Sort Artist": "Max Frost", + "Sort Name": "Sometimes", + "Persistent ID": "1D83B7897281009F", + "Track Type": "Remote" + }, + { + "Track ID": "2767", + "Name": "Die Young", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Francois Tetaz & Matt Morris", + "Album": "Intoxication - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6882469", + "Total Time": "187852", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2015", + "Date Modified": "2018-10-30T16:32:09Z", + "Date Added": "2018-10-30T16:32:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3781868506", + "Play Date UTC": "2023-11-03T12:01:46Z", + "Skip Count": "6", + "Skip Date": "2023-06-07T15:13:43Z", + "Release Date": "2015-09-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Intoxication - EP", + "Sort Artist": "Max Frost", + "Sort Name": "Die Young", + "Persistent ID": "9344EB2FD62DC4CB", + "Track Type": "Remote" + }, + { + "Track ID": "2769", + "Name": "Nice and Slow", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Joshua Moore & Max Frost", + "Album": "Low High Low - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8201030", + "Total Time": "230635", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2013", + "Date Modified": "2018-10-30T16:32:39Z", + "Date Added": "2018-10-30T16:32:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3780248320", + "Play Date UTC": "2023-10-15T17:58:40Z", + "Skip Count": "1", + "Skip Date": "2021-12-14T07:49:18Z", + "Release Date": "2013-10-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Low High Low - EP", + "Sort Artist": "Max Frost", + "Sort Name": "Nice and Slow", + "Persistent ID": "5848A3C3265F01E9", + "Track Type": "Remote" + }, + { + "Track ID": "2771", + "Name": "Adderall", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Matthew Frost, Ross Golan, Shiben Bhattacharya & Will Lobban-Bean", + "Album": "Adderall - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8187739", + "Total Time": "218027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2018-10-30T16:32:45Z", + "Date Added": "2018-10-30T16:32:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3780686268", + "Play Date UTC": "2023-10-20T19:37:48Z", + "Skip Count": "1", + "Skip Date": "2023-01-03T18:01:26Z", + "Release Date": "2016-10-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Adderall - Single", + "Sort Artist": "Max Frost", + "Sort Name": "Adderall", + "Persistent ID": "3BC64339CB527C83", + "Track Type": "Remote" + }, + { + "Track ID": "2773", + "Name": "Withdrawal", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost, Ammar Malik, Benjamin Levin & Dan Omelio", + "Album": "Intoxication - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6575665", + "Total Time": "180320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2015", + "Date Modified": "2018-10-30T16:33:00Z", + "Date Added": "2018-10-30T16:33:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3782883528", + "Play Date UTC": "2023-11-15T05:58:48Z", + "Skip Count": "1", + "Skip Date": "2023-03-27T06:06:50Z", + "Release Date": "2015-09-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Intoxication - EP", + "Sort Artist": "Max Frost", + "Sort Name": "Withdrawal", + "Persistent ID": "ECD999EC170FAE63", + "Track Type": "Remote" + }, + { + "Track ID": "2775", + "Name": "Loverman", + "Artist": "Metallica", + "Album Artist": "Metallica", + "Composer": "Nicholas Edwards Cave", + "Album": "Garage Inc.", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "16205881", + "Total Time": "472800", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "11", + "Year": "1998", + "Date Modified": "2018-11-01T18:49:40Z", + "Date Added": "2018-11-01T18:49:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3782904422", + "Play Date UTC": "2023-11-15T11:47:02Z", + "Skip Count": "4", + "Skip Date": "2022-08-04T10:34:36Z", + "Release Date": "1998-11-23T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Garage Inc.", + "Sort Artist": "Metallica", + "Sort Name": "Loverman", + "Persistent ID": "BAD5E3076E5B79FB", + "Track Type": "Remote" + }, + { + "Track ID": "2777", + "Name": "Chainsmoking", + "Artist": "Jacob Banks", + "Album Artist": "Jacob Banks", + "Composer": "Jacob Banks, JP Saxe & Ajay Bhattacharya", + "Album": "The Boy Who Cried Freedom - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6926415", + "Total Time": "195133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2018-11-02T07:44:40Z", + "Date Added": "2018-11-02T07:44:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3776334696", + "Play Date UTC": "2023-08-31T10:51:36Z", + "Skip Count": "1", + "Skip Date": "2022-10-09T16:15:21Z", + "Release Date": "2017-03-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Boy Who Cried Freedom - EP", + "Sort Artist": "Jacob Banks", + "Sort Name": "Chainsmoking", + "Persistent ID": "E5B92E62AA3DB2FE", + "Track Type": "Remote" + }, + { + "Track ID": "2779", + "Name": "Burn the House Down", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Ryan Met, Jack Met & Adam Met", + "Album": "Burn the House Down - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7755977", + "Total Time": "212374", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-11-02T18:19:01Z", + "Date Added": "2018-11-02T18:19:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781381839", + "Play Date UTC": "2023-10-28T20:50:39Z", + "Skip Count": "2", + "Skip Date": "2023-01-13T14:05:03Z", + "Release Date": "2017-06-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Burn the House Down - Single", + "Sort Artist": "AJR", + "Sort Name": "Burn the House Down", + "Persistent ID": "E571A4E40A72C98A", + "Track Type": "Remote" + }, + { + "Track ID": "2781", + "Name": "Free", + "Artist": "6LACK", + "Album Artist": "6LACK", + "Composer": "Ricardo Valentine & Nova", + "Album": "FREE 6LACK (Bonus Track Version)", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9145890", + "Total Time": "263013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2018-11-04T20:30:01Z", + "Date Added": "2018-11-04T21:48:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "62", + "Play Date": "3780192462", + "Play Date UTC": "2023-10-15T02:27:42Z", + "Skip Count": "3", + "Skip Date": "2022-10-17T14:11:01Z", + "Release Date": "2016-11-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "FREE 6LACK (Bonus Track Version)", + "Sort Artist": "6LACK", + "Sort Name": "Free", + "Persistent ID": "C556A482C387533A", + "Track Type": "Remote" + }, + { + "Track ID": "2783", + "Name": "Tested & Tried", + "Artist": "All The Luck In The World", + "Album Artist": "All The Luck In The World", + "Composer": "Neil Foot, Kelvin Barr & Ben Connolly", + "Album": "Tested & Tried - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8603421", + "Total Time": "244036", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-11-04T20:35:28Z", + "Date Added": "2018-11-04T21:48:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3763657126", + "Play Date UTC": "2023-04-06T17:18:46Z", + "Skip Count": "3", + "Skip Date": "2018-12-04T20:51:25Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tested & Tried - Single", + "Sort Artist": "All The Luck In The World", + "Sort Name": "Tested & Tried", + "Persistent ID": "8CF02E135E156024", + "Track Type": "Remote" + }, + { + "Track ID": "2785", + "Name": "Fire", + "Artist": "Folly & the Hunter", + "Album Artist": "Folly & the Hunter", + "Composer": "Nick Vallee & Laurie Torres", + "Album": "Remains", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9159089", + "Total Time": "259738", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-11-04T20:36:12Z", + "Date Added": "2018-11-04T21:48:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3761722465", + "Play Date UTC": "2023-03-15T07:54:25Z", + "Skip Count": -1, + "Skip Date": "2019-02-07T21:20:37Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Remains", + "Sort Artist": "Folly & the Hunter", + "Sort Name": "Fire", + "Persistent ID": "BFE2A1A79695D3ED", + "Track Type": "Remote" + }, + { + "Track ID": "2787", + "Name": "Sweater Weather", + "Artist": "James Harris", + "Album Artist": "James Harris", + "Composer": "Jeremy Allen Freedman, Jesse & Zach Shane Abels", + "Album": "Sweater Weather - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7651643", + "Total Time": "216916", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2018-11-05T08:48:33Z", + "Date Added": "2018-11-05T18:46:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3775211273", + "Play Date UTC": "2023-08-18T10:47:53Z", + "Skip Count": "1", + "Skip Date": "2022-03-25T13:57:56Z", + "Release Date": "2015-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sweater Weather - Single", + "Sort Artist": "James Harris", + "Sort Name": "Sweater Weather", + "Persistent ID": "E5EAC97FDF67196D", + "Track Type": "Remote" + }, + { + "Track ID": "2789", + "Name": "Help Me Out", + "Artist": "Alicks", + "Album Artist": "Alicks", + "Composer": "undef", + "Album": "Help Me Out", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "8061067", + "Total Time": "227736", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2018-11-05T14:24:20Z", + "Date Added": "2018-11-05T18:46:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3769952354", + "Play Date UTC": "2023-06-18T13:59:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-03-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Help Me Out", + "Sort Artist": "Alicks", + "Sort Name": "Help Me Out", + "Persistent ID": "8BFB39A29505E7CA", + "Track Type": "Remote" + }, + { + "Track ID": "2791", + "Name": "Oh My My", + "Artist": "TRACE", + "Album Artist": "TRACE", + "Composer": "undef", + "Album": "Oh My My - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7846055", + "Total Time": "221170", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-11-05T15:56:27Z", + "Date Added": "2018-11-05T18:46:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783692197", + "Play Date UTC": "2023-11-24T14:36:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh My My - Single", + "Sort Artist": "TRACE", + "Sort Name": "Oh My My", + "Persistent ID": "5E938ECD0B9E8B3A", + "Track Type": "Remote" + }, + { + "Track ID": "2793", + "Name": "Can't Feel My Face", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "Abel Tesfaye, Max Martin, Savan Kotecha, Peter Svensson & Ali Payami", + "Album": "Beauty Behind the Madness", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7679131", + "Total Time": "213525", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2018-11-05T20:14:38Z", + "Date Added": "2018-11-05T20:14:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3780852605", + "Play Date UTC": "2023-10-22T17:50:05Z", + "Skip Count": "1", + "Skip Date": "2021-09-15T19:34:41Z", + "Release Date": "2015-03-02T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Beauty Behind the Madness", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Can't Feel My Face", + "Track Type": "7C0B31A2E0920D4B" + }, + { + "Track ID": "2795", + "Name": "Leave a Light On", + "Artist": "Tom Walker", + "Album Artist": "Tom Walker", + "Composer": "Tom Walker & Steve Mac", + "Album": "What a Time To Be Alive", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "6618053", + "Total Time": "185863", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2018-11-07T07:25:15Z", + "Date Added": "2018-11-07T07:25:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3783493358", + "Play Date UTC": "2023-11-22T07:22:38Z", + "Skip Count": "3", + "Skip Date": "2022-10-17T13:03:11Z", + "Release Date": "2017-10-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "What a Time To Be Alive", + "Sort Artist": "Tom Walker", + "Sort Name": "Leave a Light On", + "Persistent ID": "F837A9C5A4C6F6E7", + "Track Type": "Remote" + }, + { + "Track ID": "2797", + "Name": "American Money", + "Artist": "B\u00d8RNS", + "Album Artist": "B\u00d8RNS", + "Composer": "Garret Borns, Tommy English & Irena Lysiuk", + "Album": "Dopamine", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9103047", + "Total Time": "260997", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2018-11-07T07:32:47Z", + "Date Added": "2018-11-10T08:26:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3773126421", + "Play Date UTC": "2023-07-25T07:40:21Z", + "Skip Count": "1", + "Skip Date": "2023-10-26T13:19:26Z", + "Release Date": "2015-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dopamine", + "Sort Artist": "B\u00d8RNS", + "Sort Name": "American Money", + "Persistent ID": "524F1A5752532BC9", + "Track Type": "Remote" + }, + { + "Track ID": "2799", + "Name": "Let My Love Pull You In", + "Artist": "Phillip LaRue", + "Album Artist": "Phillip LaRue", + "Composer": "undef", + "Album": "Let My Love Pull You In - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7353279", + "Total Time": "207440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-11-09T09:32:22Z", + "Date Added": "2018-11-10T08:26:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3772720458", + "Play Date UTC": "2023-07-20T14:54:18Z", + "Skip Count": "1", + "Skip Date": "2022-04-23T18:10:27Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Let My Love Pull You In - Single", + "Sort Artist": "Phillip LaRue", + "Sort Name": "Let My Love Pull You In", + "Persistent ID": "9C3BD2F09B29502D", + "Track Type": "Remote" + }, + { + "Track ID": "2801", + "Name": "Soul Meets Body", + "Artist": "Death Cab for Cutie", + "Album Artist": "Death Cab for Cutie", + "Composer": "Benjamin Gibbard", + "Album": "Plans", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8353506", + "Total Time": "230905", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2005", + "Date Modified": "2018-11-09T12:57:31Z", + "Date Added": "2018-11-09T12:57:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3774510914", + "Play Date UTC": "2023-08-10T08:15:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2005-08-30T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Plans", + "Sort Artist": "Death Cab for Cutie", + "Sort Name": "Soul Meets Body", + "Persistent ID": "9488F2AD447D6EBD", + "Track Type": "Remote" + }, + { + "Track ID": "2803", + "Name": "Black Mambo", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "David Bayley", + "Album": "ZABA", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9105318", + "Total Time": "248920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2018-11-11T09:27:42Z", + "Date Added": "2018-11-11T09:27:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3783766230", + "Play Date UTC": "2023-11-25T11:10:30Z", + "Skip Count": "2", + "Skip Date": "2021-06-12T08:17:43Z", + "Release Date": "2014-06-06T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ZABA", + "Sort Artist": "Glass Animals", + "Sort Name": "Black Mambo", + "Persistent ID": "7D5504EE54623701", + "Track Type": "Remote" + }, + { + "Track ID": "2805", + "Name": "Washed Away", + "Artist": "Eyes on the Shore", + "Album Artist": "Eyes on the Shore", + "Composer": "undef", + "Album": "Maestranza - EP", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8266225", + "Total Time": "225789", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2015", + "Date Modified": "2018-11-11T09:42:05Z", + "Date Added": "2018-11-11T20:36:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3783587200", + "Play Date UTC": "2023-11-23T09:26:40Z", + "Skip Count": "3", + "Skip Date": "2022-09-20T11:40:42Z", + "Release Date": "2015-11-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Maestranza - EP", + "Sort Artist": "Eyes on the Shore", + "Sort Name": "Washed Away", + "Persistent ID": "2B6501B951346962", + "Track Type": "Remote" + }, + { + "Track ID": "2807", + "Name": "Do You Have To?", + "Artist": "Dan Croll", + "Album Artist": "Dan Croll", + "Composer": "Dan Croll", + "Album": "Emerging Adulthood", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7514890", + "Total Time": "204147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "9", + "Year": "2017", + "Date Modified": "2018-11-11T09:59:32Z", + "Date Added": "2018-11-11T09:59:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3781155642", + "Play Date UTC": "2023-10-26T06:00:42Z", + "Skip Count": "2", + "Skip Date": "2022-10-27T14:56:10Z", + "Release Date": "2017-07-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Emerging Adulthood", + "Sort Artist": "Dan Croll", + "Sort Name": "Do You Have To?", + "Persistent ID": "E0EFA20F511CB742", + "Track Type": "Remote" + }, + { + "Track ID": "2809", + "Name": "Don't Waste My Time", + "Artist": "The Palms", + "Album Artist": "The Palms", + "Composer": "undef", + "Album": "Mulholland Dr.", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6989902", + "Total Time": "198160", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2018-11-11T10:00:47Z", + "Date Added": "2018-11-11T20:36:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "101", + "Play Date": "3779196083", + "Play Date UTC": "2023-10-03T13:41:23Z", + "Skip Count": "1", + "Skip Date": "2022-08-02T16:58:52Z", + "Release Date": "2017-01-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mulholland Dr.", + "Sort Artist": "Palms", + "Sort Name": "Palms", + "Persistent ID": "Don't Waste My Time", + "Track Type": "001597A22195B7AE" + }, + { + "Track ID": "2811", + "Name": "Medusa in Chains", + "Artist": "The Fratellis", + "Album Artist": "The Fratellis", + "Composer": "0", + "Album": "Eyes Wide, Tongue Tied", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "6805935", + "Total Time": "193359", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "26", + "Year": "2015", + "Date Modified": "2018-11-11T10:43:17Z", + "Date Added": "2018-11-11T20:36:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3762710655", + "Play Date UTC": "2023-03-26T18:24:15Z", + "Skip Count": "1", + "Skip Date": "2022-10-10T13:54:42Z", + "Release Date": "2015-08-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Eyes Wide, Tongue Tied", + "Sort Artist": "Fratellis", + "Sort Name": "Fratellis", + "Persistent ID": "Medusa in Chains", + "Track Type": "E73221273220BE2F" + }, + { + "Track ID": "2813", + "Name": "All My Friends", + "Artist": "Dylan Kelly", + "Album Artist": "Dylan Kelly", + "Composer": "Dylan Kelly", + "Album": "All My Friends - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7042111", + "Total Time": "195933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2018-11-11T10:47:29Z", + "Date Added": "2018-11-11T20:36:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780913230", + "Play Date UTC": "2023-10-23T10:40:30Z", + "Skip Count": "6", + "Skip Date": "2022-04-18T13:34:20Z", + "Release Date": "2015-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "All My Friends - Single", + "Sort Artist": "Dylan Kelly", + "Sort Name": "All My Friends", + "Persistent ID": "FF1F4958F27F3523", + "Track Type": "Remote" + }, + { + "Track ID": "2815", + "Name": "King Tide", + "Artist": "In The Valley Below", + "Album Artist": "In The Valley Below", + "Composer": "undef", + "Album": "The Belt", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8817587", + "Total Time": "245107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": -1, + "Year": "2013", + "Date Modified": "2018-11-11T11:02:30Z", + "Date Added": "2018-11-11T20:36:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781522050", + "Play Date UTC": "2023-10-30T11:47:30Z", + "Skip Count": "4", + "Skip Date": "2023-05-31T08:52:23Z", + "Release Date": "2013-08-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Belt", + "Sort Artist": "In The Valley Below", + "Sort Name": "King Tide", + "Persistent ID": "D71B45467A85813E", + "Track Type": "Remote" + }, + { + "Track ID": "2817", + "Name": "Don't Wanna Breathe", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Kodak Black, London On Da Track & Rex Kudo", + "Album": "Project Baby 2: All Grown Up (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6952486", + "Total Time": "196672", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "27", + "Year": "2017", + "Date Modified": "2018-11-15T11:54:51Z", + "Date Added": "2018-11-15T11:54:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "55", + "Play Date": "3780392176", + "Play Date UTC": "2023-10-17T09:56:16Z", + "Skip Count": "2", + "Skip Date": "2022-04-16T23:03:10Z", + "Release Date": "2017-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Project Baby 2: All Grown Up (Deluxe)", + "Sort Artist": "Kodak Black", + "Sort Name": "Don't Wanna Breathe", + "Persistent ID": "16EDF9F28951F8CF", + "Track Type": "Remote" + }, + { + "Track ID": "2819", + "Name": "Codeine Dreaming (feat. Lil Wayne)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Ben Billions, DJ Infamous, Kodak Black, Lil Wayne & Schife Karbeen", + "Album": "Project Baby 2: All Grown Up (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9370319", + "Total Time": "264532", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "27", + "Year": "2017", + "Date Modified": "2018-11-15T12:55:19Z", + "Date Added": "2018-11-15T12:55:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3781052385", + "Play Date UTC": "2023-10-25T01:19:45Z", + "Skip Count": "3", + "Skip Date": "2020-06-18T08:20:15Z", + "Release Date": "2017-11-24T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Project Baby 2: All Grown Up (Deluxe)", + "Sort Artist": "Kodak Black", + "Sort Name": "Codeine Dreaming (feat. Lil Wayne)", + "Persistent ID": "51A46EAEB1056939", + "Track Type": "Remote" + }, + { + "Track ID": "2821", + "Name": "Bartier Cardi (feat. 21 Savage)", + "Artist": "Cardi B", + "Album Artist": "Cardi B", + "Composer": "Belcalis Almanzar, Darryl McCorkell, Jacquez Lowe, L. Jae, Samuel Gloade & Shayaa Bin Abraham-Joseph", + "Album": "Bartier Cardi (feat. 21 Savage) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8049954", + "Total Time": "224613", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-11-17T11:13:16Z", + "Date Added": "2018-11-17T11:13:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3773543943", + "Play Date UTC": "2023-07-30T03:39:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-22T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bartier Cardi (feat. 21 Savage) - Single", + "Sort Artist": "Cardi B", + "Sort Name": "Bartier Cardi (feat. 21 Savage)", + "Persistent ID": "02DE1D1AA5AC57F1", + "Track Type": "Remote" + }, + { + "Track ID": "2823", + "Name": "Look At Me!", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "Look At Me! - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4696729", + "Total Time": "126346", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2018-11-18T12:02:47Z", + "Date Added": "2018-11-18T12:02:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "92", + "Play Date": "3781397004", + "Play Date UTC": "2023-10-29T01:03:24Z", + "Skip Count": "6", + "Skip Date": "2022-08-06T11:20:49Z", + "Release Date": "2015-12-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Look At Me! - Single", + "Sort Artist": "XXXTENTACION", + "Sort Name": "Look At Me!", + "Persistent ID": "3FE24516D2D1958C", + "Track Type": "Remote" + }, + { + "Track ID": "2825", + "Name": "Don't Cry (feat. XXXTENTACION)", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "Dwayne Carter, Jahseh Onfroy, Eugene Karavasilidis, Ben Diehl & Gamal \"LunchMoney\" Lewis", + "Album": "Tha Carter V", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8759770", + "Total Time": "249450", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "23", + "Year": "2018", + "Date Modified": "2018-11-18T19:28:48Z", + "Date Added": "2018-11-18T19:28:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "65", + "Play Date": "3780988448", + "Play Date UTC": "2023-10-24T07:34:08Z", + "Skip Count": "3", + "Skip Date": "2021-01-22T17:32:07Z", + "Release Date": "2018-09-28T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tha Carter V", + "Sort Artist": "Lil Wayne", + "Sort Name": "Don't Cry (feat. XXXTENTACION)", + "Persistent ID": "BF297ECD6A09B722", + "Track Type": "Remote" + }, + { + "Track ID": "2827", + "Name": "Drop the World (feat. Eminem)", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "D. Carter, J. Woodard, M. Mathers, L. Resto & M. Strange", + "Album": "Rebirth (Bonus Track Version)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8175620", + "Total Time": "229227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2010", + "Date Modified": "2018-11-18T19:34:17Z", + "Date Added": "2018-11-18T19:34:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3780493570", + "Play Date UTC": "2023-10-18T14:06:10Z", + "Skip Count": "1", + "Skip Date": "2021-01-09T20:46:37Z", + "Release Date": "2009-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rebirth (Bonus Track Version)", + "Sort Artist": "Lil Wayne", + "Sort Name": "Drop the World (feat. Eminem)", + "Persistent ID": "1D451FD34AF7627E", + "Track Type": "Remote" + }, + { + "Track ID": "2829", + "Name": "Venom (Music From The Motion Picture)", + "Artist": "Eminem", + "Album Artist": "Eminem", + "Composer": "Luis Resto, Roger Troutman & Marshall Mathers", + "Album": "Kamikaze", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9345780", + "Total Time": "269573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2018-11-18T19:35:07Z", + "Date Added": "2018-11-18T19:35:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3760956720", + "Play Date UTC": "2023-03-06T11:12:00Z", + "Skip Count": "3", + "Skip Date": "2023-05-23T06:05:21Z", + "Release Date": "2018-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Kamikaze", + "Sort Artist": "Eminem", + "Sort Name": "Venom (Music From The Motion Picture)", + "Persistent ID": "13F229C32685C66E", + "Track Type": "Remote" + }, + { + "Track ID": "2831", + "Name": "Shark", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6733672", + "Total Time": "187424", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "15", + "Year": "2015", + "Date Modified": "2018-11-19T19:44:22Z", + "Date Added": "2018-11-19T19:44:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3760902400", + "Play Date UTC": "2023-03-05T20:06:40Z", + "Skip Count": "2", + "Skip Date": "2022-04-01T12:53:42Z", + "Release Date": "2015-09-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "Shark", + "Persistent ID": "0D196F72F7988B2A", + "Track Type": "Remote" + }, + { + "Track ID": "2833", + "Name": "All We Do", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7467860", + "Total Time": "214174", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "15", + "Year": "2014", + "Date Modified": "2018-11-20T04:41:34Z", + "Date Added": "2018-11-20T04:41:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3772088021", + "Play Date UTC": "2023-07-13T07:13:41Z", + "Skip Count": "4", + "Skip Date": "2022-04-30T07:19:56Z", + "Release Date": "2014-12-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "All We Do", + "Persistent ID": "98892C6719ACFB0D", + "Track Type": "Remote" + }, + { + "Track ID": "2835", + "Name": "Lose It", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8101229", + "Total Time": "229935", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "15", + "Year": "2015", + "Date Modified": "2018-11-21T17:41:04Z", + "Date Added": "2018-11-25T06:05:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3779181535", + "Play Date UTC": "2023-10-03T09:38:55Z", + "Skip Count": "5", + "Skip Date": "2022-08-19T16:11:13Z", + "Release Date": "2015-02-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "Lose It", + "Persistent ID": "9C6CC849678A9ADF", + "Track Type": "Remote" + }, + { + "Track ID": "2837", + "Name": "Technicolour Beat", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6424701", + "Total Time": "180120", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "15", + "Year": "2015", + "Date Modified": "2018-11-21T17:53:20Z", + "Date Added": "2018-11-21T17:53:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3783355668", + "Play Date UTC": "2023-11-20T17:07:48Z", + "Skip Count": "1", + "Skip Date": "2018-11-23T04:47:45Z", + "Release Date": "2015-03-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "Technicolour Beat", + "Persistent ID": "540DC3F6BA49C1F4", + "Track Type": "Remote" + }, + { + "Track ID": "2839", + "Name": "White Blood", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8918394", + "Total Time": "257427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "15", + "Year": "2015", + "Date Modified": "2018-11-21T19:56:59Z", + "Date Added": "2018-11-21T19:56:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3773844060", + "Play Date UTC": "2023-08-02T15:01:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "White Blood", + "Persistent ID": "E52D36A448C2BFCA", + "Track Type": "Remote" + }, + { + "Track ID": "2841", + "Name": "Never Told", + "Artist": "J. Cole", + "Album Artist": "J. Cole", + "Composer": "Jermaine Cole, Ernest Wilson, Kevin Randolph & Steve Wyreman", + "Album": "Cole World: The Sideline Story", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7569668", + "Total Time": "211520", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "18", + "Year": "2011", + "Date Modified": "2018-11-21T20:01:04Z", + "Date Added": "2018-11-21T20:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3772875270", + "Play Date UTC": "2023-07-22T09:54:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-09-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cole World: The Sideline Story", + "Sort Artist": "J. Cole", + "Sort Name": "Never Told", + "Persistent ID": "FFB22E531BEC293C", + "Track Type": "Remote" + }, + { + "Track ID": "2843", + "Name": "Everyday", + "Artist": "Logic & Marshmello", + "Album Artist": "Logic", + "Composer": "Marshmello & Sir Robert Bryson Hall II", + "Album": "Bobby Tarantino II", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7383232", + "Total Time": "204744", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2018-11-21T20:02:41Z", + "Date Added": "2018-11-21T20:02:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "182", + "Play Date": "3772172916", + "Play Date UTC": "2023-07-14T06:48:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-03-02T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bobby Tarantino II", + "Sort Artist": "Logic & Marshmello", + "Sort Name": "Everyday", + "Persistent ID": "830CB2AB2FC05A0C", + "Track Type": "Remote" + }, + { + "Track ID": "2845", + "Name": "Say Amen (feat. Billy Raffoul)", + "Artist": "American Authors", + "Album Artist": "American Authors", + "Composer": "Billy Raffoul, Zachary Barnett, James Adam Shelley, Matt Sanchez, David Rublin & Cason Cooley", + "Album": "Seasons", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7966307", + "Total Time": "222589", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-11-25T06:02:08Z", + "Date Added": "2018-11-25T06:02:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3783780888", + "Play Date UTC": "2023-11-25T15:14:48Z", + "Skip Count": "1", + "Skip Date": "2021-09-20T19:18:57Z", + "Release Date": "2018-11-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seasons", + "Sort Artist": "American Authors", + "Sort Name": "Say Amen (feat. Billy Raffoul)", + "Persistent ID": "47DDDF73775E2954", + "Track Type": "Remote" + }, + { + "Track ID": "2847", + "Name": "Mistake 3", + "Artist": "Sean McVerry", + "Album Artist": "Sean McVerry", + "Composer": "Sean McVerry", + "Album": "Mistake 3 - Single", + "Genre": "Neo-Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7537685", + "Total Time": "217638", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-11-25T06:07:12Z", + "Date Added": "2018-11-25T06:07:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3783453617", + "Play Date UTC": "2023-11-21T20:20:17Z", + "Skip Count": "3", + "Skip Date": "2021-10-24T11:11:24Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mistake 3 - Single", + "Sort Artist": "Sean McVerry", + "Sort Name": "Mistake 3", + "Persistent ID": "76335B5B5C73B59F", + "Track Type": "Remote" + }, + { + "Track ID": "2849", + "Name": "Poor Boy", + "Artist": "The Regrettes", + "Album Artist": "The Regrettes", + "Composer": "Andrew Thomsen, Genessa Gariano & Lydia Night", + "Album": "Poor Boy - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6925575", + "Total Time": "195722", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-11-25T06:24:40Z", + "Date Added": "2018-11-25T06:24:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3783776253", + "Play Date UTC": "2023-11-25T13:57:33Z", + "Skip Count": "4", + "Skip Date": "2022-04-22T09:48:41Z", + "Release Date": "2018-11-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Poor Boy - Single", + "Sort Artist": "Regrettes", + "Sort Name": "Regrettes", + "Persistent ID": "Poor Boy", + "Track Type": "9954F7A2CC650C3E" + }, + { + "Track ID": "2851", + "Name": "Mona Lisa (feat. Kendrick Lamar)", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "Kendrick Lamar, Angel Aponte, Dwayne Carter & Marco Rodriguez", + "Album": "Tha Carter V", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11376758", + "Total Time": "324189", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "23", + "Year": "2018", + "Date Modified": "2018-11-25T10:31:18Z", + "Date Added": "2018-11-25T10:31:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3780774412", + "Play Date UTC": "2023-10-21T20:06:52Z", + "Skip Count": "1", + "Skip Date": "2021-09-12T19:29:23Z", + "Release Date": "2018-09-28T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tha Carter V", + "Sort Artist": "Lil Wayne", + "Sort Name": "Mona Lisa (feat. Kendrick Lamar)", + "Persistent ID": "4348D4866861E5C0", + "Track Type": "Remote" + }, + { + "Track ID": "2853", + "Name": "Killshot", + "Artist": "Eminem", + "Album Artist": "Eminem", + "Composer": "M. Mathers & R. Fraser", + "Album": "Killshot - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8891702", + "Total Time": "253580", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-11-25T10:37:53Z", + "Date Added": "2018-11-25T10:37:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3773238996", + "Play Date UTC": "2023-07-26T14:56:36Z", + "Skip Count": "2", + "Skip Date": "2022-03-18T14:39:44Z", + "Release Date": "2018-09-14T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Killshot - Single", + "Sort Artist": "Eminem", + "Sort Name": "Killshot", + "Persistent ID": "B8EA54745C969B24", + "Track Type": "Remote" + }, + { + "Track ID": "2855", + "Name": "Crave", + "Artist": "Ruth B.", + "Album Artist": "Ruth B.", + "Composer": "Ruth Berhe & Dernst Emile II", + "Album": "Crave - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7825975", + "Total Time": "220907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-11-25T11:44:31Z", + "Date Added": "2018-11-25T11:44:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3783770924", + "Play Date UTC": "2023-11-25T12:28:44Z", + "Skip Count": "1", + "Skip Date": "2018-11-26T18:04:03Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Crave - Single", + "Sort Artist": "Ruth B.", + "Sort Name": "Crave", + "Persistent ID": "DC2CD8CDB155BE9B", + "Track Type": "Remote" + }, + { + "Track ID": "2857", + "Name": "For Me, It's You", + "Artist": "Lo Moon", + "Album Artist": "Lo Moon", + "Composer": "Matt Lowell & Daniel Nigro", + "Album": "For Me, It's You - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8448794", + "Total Time": "240027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-11-25T13:46:03Z", + "Date Added": "2018-11-25T13:46:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "91", + "Play Date": "3779310979", + "Play Date UTC": "2023-10-04T21:36:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "For Me, It's You - Single", + "Sort Artist": "Lo Moon", + "Sort Name": "For Me, It's You", + "Persistent ID": "349D31485DFF4717", + "Track Type": "Remote" + }, + { + "Track ID": "2859", + "Name": "Don't Wait for Me", + "Artist": "Josh Garrels", + "Album Artist": "Josh Garrels", + "Composer": "Josh Garrels", + "Album": "Jacaranda", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7881179", + "Total Time": "220333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "15", + "Year": "2008", + "Date Modified": "2018-11-25T20:09:39Z", + "Date Added": "2018-11-25T20:09:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3779984540", + "Play Date UTC": "2023-10-12T16:42:20Z", + "Skip Count": "2", + "Skip Date": "2022-07-14T15:20:33Z", + "Release Date": "2008-09-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Jacaranda", + "Sort Artist": "Josh Garrels", + "Sort Name": "Don't Wait for Me", + "Persistent ID": "6E65AF6A3D02782A", + "Track Type": "Remote" + }, + { + "Track ID": "2861", + "Name": "Hidden Camera", + "Artist": "Coleman Hell", + "Album Artist": "Coleman Hell", + "Composer": "Coleman Hell & Robert Benvegnu", + "Album": "Summerland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9201993", + "Total Time": "264566", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2018-11-26T11:08:02Z", + "Date Added": "2018-11-26T11:08:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781623832", + "Play Date UTC": "2023-10-31T16:03:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-10-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Summerland", + "Sort Artist": "Coleman Hell", + "Sort Name": "Hidden Camera", + "Persistent ID": "B95F987CDDC23D21", + "Track Type": "Remote" + }, + { + "Track ID": "2863", + "Name": "Found You Out", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "You Haunt Me", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8016677", + "Total Time": "217323", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2013", + "Date Modified": "2018-11-27T06:47:20Z", + "Date Added": "2018-11-27T06:47:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3775571416", + "Play Date UTC": "2023-08-22T14:50:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "You Haunt Me", + "Sort Artist": "Sir Sly", + "Sort Name": "Found You Out", + "Persistent ID": "09ACAEFF964D3174", + "Track Type": "Remote" + }, + { + "Track ID": "2865", + "Name": "Cameras", + "Artist": "The Blancos", + "Album Artist": "The Blancos", + "Composer": "undef", + "Album": "Cameras - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8271864", + "Total Time": "234377", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2018-11-27T06:59:45Z", + "Date Added": "2018-11-27T06:59:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3663133992", + "Play Date UTC": "2020-01-29T06:13:12Z", + "Skip Count": "1", + "Skip Date": "2018-11-30T14:17:27Z", + "Release Date": "2016-03-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cameras - Single", + "Sort Artist": "Blancos", + "Sort Name": "Blancos", + "Persistent ID": "Cameras", + "Track Type": "C3FC8602B5AA42D7" + }, + { + "Track ID": "2867", + "Name": "Used 2", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "Dwayne Carter, Leland Wayne, Marco Rodriguez & Rhars Mejdi", + "Album": "Tha Carter V", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8604972", + "Total Time": "240199", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "22", + "Track Count": "23", + "Year": "2018", + "Date Modified": "2018-11-28T14:28:43Z", + "Date Added": "2018-11-28T14:28:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3764668113", + "Play Date UTC": "2023-04-18T10:08:33Z", + "Skip Count": "4", + "Skip Date": "2022-04-23T18:10:44Z", + "Release Date": "2018-09-28T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tha Carter V", + "Sort Artist": "Lil Wayne", + "Sort Name": "Used 2", + "Persistent ID": "30919C5CBA471B6F", + "Track Type": "Remote" + }, + { + "Track ID": "2869", + "Name": "Moonlight", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "John Cunningham & Jahseh Onfroy", + "Album": "?", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5071938", + "Total Time": "135090", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2018-11-30T14:37:48Z", + "Date Added": "2018-11-30T14:37:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783359689", + "Play Date UTC": "2023-11-20T18:14:49Z", + "Skip Count": "2", + "Skip Date": "2020-12-05T22:55:44Z", + "Release Date": "2018-03-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "?", + "Sort Artist": "XXXTENTACION", + "Sort Name": "Moonlight", + "Persistent ID": "2835C7B748F3F81F", + "Track Type": "Remote" + }, + { + "Track ID": "2871", + "Name": "Revenge", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "Revenge - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4523737", + "Total Time": "120059", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-11-30T14:40:34Z", + "Date Added": "2018-11-30T14:40:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781397339", + "Play Date UTC": "2023-10-29T01:08:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Revenge - Single", + "Sort Artist": "XXXTENTACION", + "Sort Name": "Revenge", + "Persistent ID": "DDA8A49521539EFB", + "Track Type": "Remote" + }, + { + "Track ID": "2873", + "Name": "Rider", + "Artist": "Thirty Seconds to Mars", + "Album Artist": "Thirty Seconds to Mars", + "Composer": "Jared Leto", + "Album": "AMERICA", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6470074", + "Total Time": "177979", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2018-11-30T14:53:12Z", + "Date Added": "2018-11-30T14:53:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3770536723", + "Play Date UTC": "2023-06-25T08:18:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "AMERICA", + "Sort Artist": "Thirty Seconds to Mars", + "Sort Name": "Rider", + "Persistent ID": "3B58D545AAEF6A0A", + "Track Type": "Remote" + }, + { + "Track ID": "2875", + "Name": "Crown of Love", + "Artist": "Arcade Fire", + "Album Artist": "Arcade Fire", + "Composer": "Edwin Butler, Regine Chassagne, Tim Kingsbury, Richard Parry & William Butler", + "Album": "Funeral", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9820030", + "Total Time": "282333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2004", + "Date Modified": "2018-11-30T14:56:34Z", + "Date Added": "2018-11-30T14:56:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3776335780", + "Play Date UTC": "2023-08-31T11:09:40Z", + "Skip Count": "1", + "Skip Date": "2023-05-14T20:52:50Z", + "Release Date": "2004-09-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Funeral", + "Sort Artist": "Arcade Fire", + "Sort Name": "Crown of Love", + "Persistent ID": "7003E3F804DCC45F", + "Track Type": "Remote" + }, + { + "Track ID": "2877", + "Name": "Say Something (feat. Chris Stapleton)", + "Artist": "Justin Timberlake", + "Album Artist": "Justin Timberlake", + "Composer": "N/A", + "Album": "Man of the Woods", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9970790", + "Total Time": "278896", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2018-11-30T14:59:03Z", + "Date Added": "2018-11-30T14:59:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3773755745", + "Play Date UTC": "2023-08-01T14:29:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-01-25T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Man of the Woods", + "Sort Artist": "Justin Timberlake", + "Sort Name": "Say Something (feat. Chris Stapleton)", + "Persistent ID": "433FDFAFBD460D7F", + "Track Type": "Remote" + }, + { + "Track ID": "2879", + "Name": "Movement", + "Artist": "Hozier", + "Album Artist": "Hozier", + "Composer": "Andrew Hozier-Byrne", + "Album": "Wasteland, Baby!", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8442505", + "Total Time": "237800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-11-30T15:17:49Z", + "Date Added": "2018-12-02T13:10:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3761644131", + "Play Date UTC": "2023-03-14T10:08:51Z", + "Skip Count": "2", + "Skip Date": "2021-09-26T21:59:25Z", + "Release Date": "2018-11-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wasteland, Baby!", + "Sort Artist": "Hozier", + "Sort Name": "Movement", + "Persistent ID": "0BE522DCF4692212", + "Track Type": "Remote" + }, + { + "Track ID": "2881", + "Name": "Ayo Technology (feat. Justin Timberlake)", + "Artist": "50 Cent", + "Album Artist": "50 Cent", + "Composer": "Justin Timberlake, Curtis Jackson, T. Mosley & N. Hills", + "Album": "Curtis", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8900457", + "Total Time": "247947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "2007", + "Date Modified": "2018-11-30T15:21:29Z", + "Date Added": "2018-11-30T15:21:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3768304196", + "Play Date UTC": "2023-05-30T12:09:56Z", + "Skip Count": "2", + "Skip Date": "2023-02-08T19:48:13Z", + "Release Date": "2007-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Curtis", + "Sort Artist": "50 Cent", + "Sort Name": "Ayo Technology (feat. Justin Timberlake)", + "Persistent ID": "99BEA298DAE8DE65", + "Track Type": "Remote" + }, + { + "Track ID": "2883", + "Name": "In da Club", + "Artist": "50 Cent", + "Album Artist": "50 Cent", + "Composer": "Curtis Jackson, Andre R. Young & Mike Elizondo", + "Album": "Get Rich or Die Tryin'", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6905189", + "Total Time": "193467", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "19", + "Year": "2003", + "Date Modified": "2018-11-30T15:33:43Z", + "Date Added": "2018-11-30T15:33:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783710611", + "Play Date UTC": "2023-11-24T19:43:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2003-01-07T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Get Rich or Die Tryin'", + "Sort Artist": "50 Cent", + "Sort Name": "In da Club", + "Persistent ID": "9556A91C01FBD960", + "Track Type": "Remote" + }, + { + "Track ID": "2885", + "Name": "Towing the Line", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard & Mickey Smith", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8101043", + "Total Time": "235653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3766403084", + "Play Date UTC": "2023-05-08T12:04:44Z", + "Skip Count": "2", + "Skip Date": "2022-03-06T08:41:40Z", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "Towing the Line", + "Persistent ID": "E9DED25B2B16E0D7", + "Track Type": "Remote" + }, + { + "Track ID": "2887", + "Name": "A Boat To an Island On the Wall", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "14705314", + "Total Time": "430307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781320531", + "Play Date UTC": "2023-10-28T03:48:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "Boat To an Island On the Wall", + "Persistent ID": "23DFD2399A4B43EC", + "Track Type": "Remote" + }, + { + "Track ID": "2889", + "Name": "What the Moon Does", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "11160703", + "Total Time": "320933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781572694", + "Play Date UTC": "2023-10-31T01:51:34Z", + "Skip Count": "2", + "Skip Date": "2022-08-06T11:03:03Z", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "What the Moon Does", + "Persistent ID": "60AFAAD083A153C6", + "Track Type": "Remote" + }, + { + "Track ID": "2891", + "Name": "Someone In the Doorway", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard, Nathan Wason & India Bourne", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "10409202", + "Total Time": "296293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3780192199", + "Play Date UTC": "2023-10-15T02:23:19Z", + "Skip Count": "1", + "Skip Date": "2022-12-08T14:38:19Z", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "Someone In the Doorway", + "Persistent ID": "5A448244FCE5615D", + "Track Type": "Remote" + }, + { + "Track ID": "2893", + "Name": "All Down the Mines (Interlude)", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "2124536", + "Total Time": "46880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3773118506", + "Play Date UTC": "2023-07-25T05:28:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "All Down the Mines (Interlude)", + "Persistent ID": "4F8F432A0F28D262", + "Track Type": "Remote" + }, + { + "Track ID": "2895", + "Name": "The Defeat", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard, Mickey Smith, Kyle Keegan, Richard Thomas, Nathan Wason & India Bourne", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "12300113", + "Total Time": "353280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3764667360", + "Play Date UTC": "2023-04-18T09:56:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "Defeat", + "Persistent ID": "42FC42351F2E97E4", + "Track Type": "Remote" + }, + { + "Track ID": "2897", + "Name": "A Boat To an Island, Pt. 2 / Agatha's Song", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "10038058", + "Total Time": "293747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3759657382", + "Play Date UTC": "2023-02-19T10:16:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "Boat To an Island, Pt. 2 / Agatha's Song", + "Persistent ID": "35F96ED91F5B6989", + "Track Type": "Remote" + }, + { + "Track ID": "2899", + "Name": "There's Your Man", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard & Mickey Smith", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "9580932", + "Total Time": "278573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3767083152", + "Play Date UTC": "2023-05-16T08:59:12Z", + "Skip Count": "1", + "Skip Date": "2022-07-12T16:07:44Z", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "There's Your Man", + "Persistent ID": "7D9C45F67987C9ED", + "Track Type": "Remote" + }, + { + "Track ID": "2901", + "Name": "Murmurations", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard & Mickey Smith", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "12436619", + "Total Time": "375614", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": -1, + "Year": "2018", + "Date Modified": "2018-11-30T16:54:50Z", + "Date Added": "2018-11-30T16:54:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3779194088", + "Play Date UTC": "2023-10-03T13:08:08Z", + "Skip Count": "1", + "Skip Date": "2021-08-30T15:00:53Z", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "Murmurations", + "Persistent ID": "1EBF7268789AEC3B", + "Track Type": "Remote" + }, + { + "Track ID": "2903", + "Name": "Waves", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Ryan Bagnall", + "Album": "Just a Kid", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6827556", + "Total Time": "190263", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2016", + "Date Modified": "2018-12-02T08:23:19Z", + "Date Added": "2018-12-02T13:10:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "58", + "Play Date": "3765965888", + "Play Date UTC": "2023-05-03T10:38:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-10-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Just a Kid", + "Sort Artist": "glibs", + "Sort Name": "Waves", + "Persistent ID": "A375F02A24F88A1C", + "Track Type": "Remote" + }, + { + "Track ID": "2905", + "Name": "I'm Sorry", + "Artist": "Ameer Vann", + "Album Artist": "Ameer Vann", + "Composer": "undef", + "Album": "I'm Sorry - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6382397", + "Total Time": "177000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2018-12-02T12:40:02Z", + "Date Added": "2018-12-02T13:10:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3775827736", + "Play Date UTC": "2023-08-25T14:02:16Z", + "Skip Count": "4", + "Skip Date": "2022-11-16T20:34:17Z", + "Release Date": "2016-12-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I'm Sorry - Single", + "Sort Artist": "Ameer Vann", + "Sort Name": "I'm Sorry", + "Persistent ID": "DC5094AC53DA69A9", + "Track Type": "Remote" + }, + { + "Track ID": "2907", + "Name": "Killa (feat. Bells)", + "Artist": "CHRIS YONGE", + "Album Artist": "CHRIS YONGE", + "Composer": "Chris Stiliadis", + "Album": "Killa (feat. Bells) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7211633", + "Total Time": "202067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-12-02T13:15:21Z", + "Date Added": "2018-12-04T10:27:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3771828671", + "Play Date UTC": "2023-07-10T07:11:11Z", + "Skip Count": "2", + "Skip Date": "2021-09-26T22:14:50Z", + "Release Date": "2017-02-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Killa (feat. Bells) - Single", + "Sort Artist": "CHRIS YONGE", + "Sort Name": "Killa (feat. Bells)", + "Persistent ID": "3B6BF3EB54B4B5D6", + "Track Type": "Remote" + }, + { + "Track ID": "2909", + "Name": "No, The Moon", + "Artist": "Teen Suicide", + "Album Artist": "Teen Suicide", + "Composer": "Teen Suicide", + "Album": "I Will Be My Own Hell Because There Is a Devil Inside My Body", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5560672", + "Total Time": "152170", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "18", + "Year": "2015", + "Date Modified": "2018-12-02T14:12:44Z", + "Date Added": "2018-12-02T14:12:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3781267465", + "Play Date UTC": "2023-10-27T13:04:25Z", + "Skip Count": "1", + "Skip Date": "2023-02-24T07:24:55Z", + "Release Date": "2015-10-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Will Be My Own Hell Because There Is a Devil Inside My Body", + "Sort Artist": "Teen Suicide", + "Sort Name": "No, The Moon", + "Persistent ID": "088E76479AB3A2AC", + "Track Type": "Remote" + }, + { + "Track ID": "2911", + "Name": "Woof, Pt. 1", + "Artist": "Panthurr", + "Album Artist": "Panthurr", + "Composer": "undef", + "Album": "I Love U", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "3352783", + "Total Time": "84156", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "15", + "Year": "2017", + "Date Modified": "2018-12-02T18:12:07Z", + "Date Added": "2018-12-04T10:27:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3711481728", + "Play Date UTC": "2021-08-10T20:08:48Z", + "Skip Count": "1", + "Skip Date": "2021-02-26T20:35:30Z", + "Release Date": "2017-01-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Love U", + "Sort Artist": "Panthurr", + "Sort Name": "Woof, Pt. 1", + "Persistent ID": "94E4C734CB3CAB3E", + "Track Type": "Remote" + }, + { + "Track ID": "2913", + "Name": "Medicine", + "Artist": "khai dreams", + "Album Artist": "khai dreams", + "Composer": "Khai Duong", + "Album": "Medicine - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4276350", + "Total Time": "121500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-12-03T14:58:50Z", + "Date Added": "2018-12-03T14:58:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3772635078", + "Play Date UTC": "2023-07-19T15:11:18Z", + "Skip Count": "3", + "Skip Date": "2022-10-09T16:05:35Z", + "Release Date": "2017-01-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Medicine - Single", + "Sort Artist": "khai dreams", + "Sort Name": "Medicine", + "Persistent ID": "D4D55F815E9AA4FE", + "Track Type": "Remote" + }, + { + "Track ID": "2915", + "Name": "Sophomore Year Was Rough", + "Artist": "Netherfriends", + "Album Artist": "Netherfriends", + "Composer": "Netherfriends", + "Album": "Shawn Jon (An Album About High School)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "4353714", + "Total Time": "119286", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "9", + "Year": "2017", + "Date Modified": "2018-12-04T04:16:02Z", + "Date Added": "2018-12-04T10:27:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3780135020", + "Play Date UTC": "2023-10-14T10:30:20Z", + "Skip Count": "2", + "Skip Date": "2021-04-02T22:28:49Z", + "Release Date": "2017-03-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Shawn Jon (An Album About High School)", + "Sort Artist": "Netherfriends", + "Sort Name": "Sophomore Year Was Rough", + "Persistent ID": "44708DCB7DB2EE8B", + "Track Type": "Remote" + }, + { + "Track ID": "2917", + "Name": "Magic", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Ryan Bagnall", + "Album": "Just a Kid", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4997004", + "Total Time": "136369", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2016", + "Date Modified": "2018-12-04T11:19:47Z", + "Date Added": "2018-12-04T18:14:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "92", + "Play Date": "3767799127", + "Play Date UTC": "2023-05-24T15:52:07Z", + "Skip Count": "4", + "Skip Date": "2023-09-03T17:51:46Z", + "Release Date": "2016-10-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Just a Kid", + "Sort Artist": "glibs", + "Sort Name": "Magic", + "Persistent ID": "670FF9BDD0D64E08", + "Track Type": "Remote" + }, + { + "Track ID": "2919", + "Name": "Same Old Shit", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Ryan Bagnall", + "Album": "Just a Kid", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6332204", + "Total Time": "176749", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2016", + "Date Modified": "2018-12-04T12:20:06Z", + "Date Added": "2018-12-04T12:20:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781624007", + "Play Date UTC": "2023-10-31T16:06:47Z", + "Skip Count": "2", + "Skip Date": "2023-09-03T17:39:26Z", + "Release Date": "2016-10-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Just a Kid", + "Sort Artist": "glibs", + "Sort Name": "Same Old Shit", + "Persistent ID": "259E313F5D088E43", + "Track Type": "Remote" + }, + { + "Track ID": "2921", + "Name": "Mood Swings", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Ryan Bagnall", + "Album": "Sweet Dreams", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6062553", + "Total Time": "168761", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "15", + "Year": "2017", + "Date Modified": "2018-12-04T12:26:27Z", + "Date Added": "2018-12-04T18:14:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3776237024", + "Play Date UTC": "2023-08-30T07:43:44Z", + "Skip Count": "2", + "Skip Date": "2021-10-24T12:40:00Z", + "Release Date": "2017-05-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sweet Dreams", + "Sort Artist": "glibs", + "Sort Name": "Mood Swings", + "Persistent ID": "A4DA68D5AF54B19C", + "Track Type": "Remote" + }, + { + "Track ID": "2923", + "Name": "Time to Go", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Ryan Bagnall", + "Album": "Just a Kid", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6373453", + "Total Time": "174566", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2016", + "Date Modified": "2018-12-04T13:37:14Z", + "Date Added": "2018-12-04T13:37:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3783679346", + "Play Date UTC": "2023-11-24T11:02:26Z", + "Skip Count": "1", + "Skip Date": "2018-12-04T20:33:04Z", + "Release Date": "2016-10-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Just a Kid", + "Sort Artist": "glibs", + "Sort Name": "Time to Go", + "Persistent ID": "260B3E143C4D00C0", + "Track Type": "Remote" + }, + { + "Track ID": "2925", + "Name": "Stay Awhile (feat. Glibs)", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "CjayQ", + "Album": "Stay Awhile (feat. Glibs) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8164766", + "Total Time": "230243", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2018-12-04T14:00:43Z", + "Date Added": "2018-12-04T14:00:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3783411754", + "Play Date UTC": "2023-11-21T08:42:34Z", + "Skip Count": "3", + "Skip Date": "2023-08-30T05:49:00Z", + "Release Date": "2017-04-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stay Awhile (feat. Glibs) - Single", + "Sort Artist": "CjayQ", + "Sort Name": "Stay Awhile (feat. Glibs)", + "Persistent ID": "AA998FDFABDEA978", + "Track Type": "Remote" + }, + { + "Track ID": "2927", + "Name": "For You (feat. Felly)", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5613852", + "Total Time": "160967", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-04T16:29:59Z", + "Date Added": "2018-12-04T16:29:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "57", + "Play Date": "3780845475", + "Play Date UTC": "2023-10-22T15:51:15Z", + "Skip Count": "3", + "Skip Date": "2018-12-06T04:06:48Z", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "For You (feat. Felly)", + "Persistent ID": "1F5CB3517BAD26A0", + "Track Type": "Remote" + }, + { + "Track ID": "2929", + "Name": "A Ok (feat. Cjayq)", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Bagnall & Conner Quinn", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9024160", + "Total Time": "259000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-04T16:36:13Z", + "Date Added": "2018-12-04T20:56:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3767691604", + "Play Date UTC": "2023-05-23T10:00:04Z", + "Skip Count": "7", + "Skip Date": "2023-09-03T17:58:10Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Ok (feat. Cjayq)", + "Persistent ID": "55B2BB18BAF73DB2", + "Track Type": "Remote" + }, + { + "Track ID": "2931", + "Name": "Last Dime", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7057712", + "Total Time": "203572", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T05:08:55Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781766468", + "Play Date UTC": "2023-11-02T07:41:08Z", + "Skip Count": -1, + "Skip Date": "2022-09-17T05:37:04Z", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "Last Dime", + "Persistent ID": "BC3CD2E67C9BBC50", + "Track Type": "Remote" + }, + { + "Track ID": "2933", + "Name": "Sunday Morning", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6687096", + "Total Time": "188578", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3780179811", + "Play Date UTC": "2023-10-14T22:56:51Z", + "Skip Count": "1", + "Skip Date": "2022-07-07T14:22:29Z", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "Sunday Morning", + "Persistent ID": "C1E32E45A7237A6C", + "Track Type": "Remote" + }, + { + "Track ID": "2935", + "Name": "A.M. Wakin", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3964521", + "Total Time": "104072", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3770301008", + "Play Date UTC": "2023-06-22T14:50:08Z", + "Skip Count": "4", + "Skip Date": "2022-06-20T10:51:31Z", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "A.M. Wakin", + "Persistent ID": "4D1F0EE2F14C8929", + "Track Type": "Remote" + }, + { + "Track ID": "2937", + "Name": "Cabana", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6269755", + "Total Time": "177500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3779702119", + "Play Date UTC": "2023-10-09T10:15:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "Cabana", + "Persistent ID": "09F0B28C2F0030D6", + "Track Type": "Remote" + }, + { + "Track ID": "2939", + "Name": "Love4u", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5686564", + "Total Time": "157388", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3783667810", + "Play Date UTC": "2023-11-24T07:50:10Z", + "Skip Count": "2", + "Skip Date": "2023-10-29T00:11:51Z", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "Love4u", + "Persistent ID": "D93748FD6A0280F3", + "Track Type": "Remote" + }, + { + "Track ID": "2941", + "Name": "R.I.P.", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5332468", + "Total Time": "145894", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3779915078", + "Play Date UTC": "2023-10-11T21:24:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "R.I.P.", + "Persistent ID": "EB1C026C864E9872", + "Track Type": "Remote" + }, + { + "Track ID": "2943", + "Name": "All Bidness", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5814975", + "Total Time": "161567", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3775800853", + "Play Date UTC": "2023-08-25T06:34:13Z", + "Skip Count": "3", + "Skip Date": "2022-10-06T15:30:54Z", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "All Bidness", + "Persistent ID": "252B4E6C456BB742", + "Track Type": "Remote" + }, + { + "Track ID": "2945", + "Name": "Options", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7651768", + "Total Time": "214021", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3776337253", + "Play Date UTC": "2023-08-31T11:34:13Z", + "Skip Count": "3", + "Skip Date": "2023-03-02T13:22:07Z", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "Options", + "Persistent ID": "CB0E8390DA480483", + "Track Type": "Remote" + }, + { + "Track ID": "2947", + "Name": "Growing Up", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4222243", + "Total Time": "113058", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3781447547", + "Play Date UTC": "2023-10-29T15:05:47Z", + "Skip Count": -1, + "Skip Date": "2022-12-08T05:32:18Z", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "Growing Up", + "Persistent ID": "FDBCD0E73328C05F", + "Track Type": "Remote" + }, + { + "Track ID": "2949", + "Name": "Never Comin Home (feat. Peter $Un)", + "Artist": "CjayQ", + "Album Artist": "CjayQ", + "Composer": "undef", + "Album": "Sunday Morning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8416962", + "Total Time": "239569", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2018-12-06T14:37:34Z", + "Date Added": "2018-12-06T14:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3776344309", + "Play Date UTC": "2023-08-31T13:31:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning", + "Sort Artist": "CjayQ", + "Sort Name": "Never Comin Home (feat. Peter $Un)", + "Persistent ID": "085A4A58EEB3E09E", + "Track Type": "Remote" + }, + { + "Track ID": "2951", + "Name": "Whatchu Say", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Bagnall", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7411322", + "Total Time": "207750", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3773213096", + "Play Date UTC": "2023-07-26T07:44:56Z", + "Skip Count": "1", + "Skip Date": "2022-07-08T12:52:04Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Whatchu Say", + "Persistent ID": "9EF3D60D11F4B1C8", + "Track Type": "Remote" + }, + { + "Track ID": "2953", + "Name": "Juice", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "glibs", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6086536", + "Total Time": "169250", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3775740660", + "Play Date UTC": "2023-08-24T13:51:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Juice", + "Persistent ID": "FF19DBD256F28D2E", + "Track Type": "Remote" + }, + { + "Track ID": "2955", + "Name": "Hypnotic (feat. Daylan Hill)", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "glibs", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9652799", + "Total Time": "275125", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3762335900", + "Play Date UTC": "2023-03-22T10:18:20Z", + "Skip Count": "1", + "Skip Date": "2022-05-16T20:58:49Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Hypnotic (feat. Daylan Hill)", + "Persistent ID": "D717C10D3395A4B3", + "Track Type": "Remote" + }, + { + "Track ID": "2957", + "Name": "Tough", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "glibs", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5206121", + "Total Time": "143571", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3772806937", + "Play Date UTC": "2023-07-21T14:55:37Z", + "Skip Count": "1", + "Skip Date": "2022-08-06T10:15:54Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Tough", + "Persistent ID": "A9F5A747B5BEF788", + "Track Type": "Remote" + }, + { + "Track ID": "2959", + "Name": "Larissa", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "glibs", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "3035016", + "Total Time": "75508", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3776238266", + "Play Date UTC": "2023-08-30T08:04:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Larissa", + "Persistent ID": "09DEDF4B3BC75DFD", + "Track Type": "Remote" + }, + { + "Track ID": "2961", + "Name": "Exodus", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "glibs", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7635245", + "Total Time": "218182", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3779192303", + "Play Date UTC": "2023-10-03T12:38:23Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-03-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Exodus", + "Persistent ID": "C8CA9F52CCA4BDC9", + "Track Type": "Remote" + }, + { + "Track ID": "2963", + "Name": "Zero", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "glibs", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "10032810", + "Total Time": "295263", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3767521470", + "Play Date UTC": "2023-05-21T10:44:30Z", + "Skip Count": "2", + "Skip Date": "2023-11-05T01:56:04Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Zero", + "Persistent ID": "F6E917DA06558FA4", + "Track Type": "Remote" + }, + { + "Track ID": "2965", + "Name": "Man on a Mission (Space Bound)", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Bagnall", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4790100", + "Total Time": "130000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3781057770", + "Play Date UTC": "2023-10-25T02:49:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Man on a Mission (Space Bound)", + "Persistent ID": "1FE1A391FEF951AC", + "Track Type": "Remote" + }, + { + "Track ID": "2967", + "Name": "Synopsis", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "glibs", + "Album": "Neptune", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4506819", + "Total Time": "127573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2018-12-06T20:37:09Z", + "Date Added": "2018-12-06T20:37:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783756138", + "Play Date UTC": "2023-11-25T08:22:18Z", + "Skip Count": "1", + "Skip Date": "2022-07-12T19:32:43Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neptune", + "Sort Artist": "glibs", + "Sort Name": "Synopsis", + "Persistent ID": "F521FE24EA6CD888", + "Track Type": "Remote" + }, + { + "Track ID": "2969", + "Name": "California Girls", + "Artist": "NoMBe", + "Album Artist": "NoMBe", + "Composer": "undef", + "Album": "California Girls - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7782060", + "Total Time": "216923", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2018-12-09T16:10:51Z", + "Date Added": "2018-12-09T16:10:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3779948733", + "Play Date UTC": "2023-10-12T06:45:33Z", + "Skip Count": -1, + "Skip Date": "2022-10-23T08:19:40Z", + "Release Date": "2015-03-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "California Girls - Single", + "Sort Artist": "NoMBe", + "Sort Name": "California Girls", + "Persistent ID": "0B4E80424FABF57C", + "Track Type": "Remote" + }, + { + "Track ID": "2971", + "Name": "Higher", + "Artist": "The Score", + "Album Artist": "The Score", + "Composer": "Edan Dover & Eddie Anthony", + "Album": "ATLAS", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7782299", + "Total Time": "214613", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2018-12-10T18:43:33Z", + "Date Added": "2018-12-10T18:43:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3778573589", + "Play Date UTC": "2023-09-26T08:46:29Z", + "Skip Count": "3", + "Skip Date": "2023-02-13T16:34:56Z", + "Release Date": "2017-04-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ATLAS", + "Sort Artist": "Score", + "Sort Name": "Score", + "Persistent ID": "Higher", + "Track Type": "F95AAE07E73177F3" + }, + { + "Track ID": "2973", + "Name": "Nuvole Bianche", + "Artist": "Ludovico Einaudi", + "Album Artist": "Ludovico Einaudi", + "Composer": "Ludovico Einaudi", + "Album": "Una Mattina", + "Genre": "Nuvole Bianche", + "Kind": "Nuvole Bianche", + "Size": "14109487", + "Total Time": "357707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2004", + "Date Modified": "2018-12-15T04:47:27Z", + "Date Added": "2018-12-16T13:45:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3783754856", + "Play Date UTC": "2023-11-25T08:00:56Z", + "Skip Count": "2", + "Skip Date": "2022-11-24T11:15:41Z", + "Release Date": "2004-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Classical", + "Sort Artist": "Apple Music AAC audio file", + "Sort Name": "Una Mattina", + "Persistent ID": "Ludovico Einaudi", + "Track Type": "Nuvole Bianche" + }, + { + "Track ID": "2975", + "Name": "In Cold Blood", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "RELAXER", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7423578", + "Total Time": "206853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "8", + "Year": "2017", + "Date Modified": "2018-12-15T04:55:22Z", + "Date Added": "2018-12-15T04:55:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3733241924", + "Play Date UTC": "2022-04-19T16:38:44Z", + "Skip Count": "1", + "Skip Date": "2022-03-26T08:56:50Z", + "Release Date": "2017-03-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RELAXER", + "Sort Artist": "alt-J", + "Sort Name": "In Cold Blood", + "Persistent ID": "0B289E9CB8285297", + "Track Type": "Remote" + }, + { + "Track ID": "2977", + "Name": "Intro", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green", + "Album": "An Awesome Wave", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "5912338", + "Total Time": "157813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "14", + "Year": "2012", + "Date Modified": "2018-12-15T04:55:27Z", + "Date Added": "2018-12-15T04:55:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3733421914", + "Play Date UTC": "2022-04-21T18:38:34Z", + "Skip Count": "4", + "Skip Date": "2021-10-06T21:53:38Z", + "Release Date": "2012-05-25T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Awesome Wave", + "Sort Artist": "alt-J", + "Sort Name": "Intro", + "Persistent ID": "819924DF353E5327", + "Track Type": "Remote" + }, + { + "Track ID": "2979", + "Name": "Up There", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, Louis Bell & Pharrell Williams", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6991387", + "Total Time": "194831", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2018-12-16T06:52:07Z", + "Date Added": "2018-12-16T06:52:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "231", + "Play Date": "3783057273", + "Play Date UTC": "2023-11-17T06:14:33Z", + "Skip Count": "6", + "Skip Date": "2022-10-27T17:48:57Z", + "Release Date": "2016-12-09T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Up There", + "Persistent ID": "F03EAAA9F298CC06", + "Track Type": "Remote" + }, + { + "Track ID": "2981", + "Name": "Broken Whiskey Glass", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, T. Markous Roberts & Rex Kudo", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8253921", + "Total Time": "233805", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2018-12-16T13:45:12Z", + "Date Added": "2018-12-16T13:45:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "264", + "Play Date": "3783004026", + "Play Date UTC": "2023-11-16T15:27:06Z", + "Skip Count": "23", + "Skip Date": "2022-01-13T18:07:45Z", + "Release Date": "2016-12-09T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Broken Whiskey Glass", + "Persistent ID": "F72868271B910B9B", + "Track Type": "Remote" + }, + { + "Track ID": "2983", + "Name": "Leave", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, Charlie Handsome & Rex Kudo", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11364885", + "Total Time": "324854", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2018-12-17T15:15:20Z", + "Date Added": "2018-12-17T15:15:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "174", + "Play Date": "3783012895", + "Play Date UTC": "2023-11-16T17:54:55Z", + "Skip Count": "10", + "Skip Date": "2022-12-06T18:24:15Z", + "Release Date": "2016-12-09T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Leave", + "Persistent ID": "CEC47F9082DBDA9C", + "Track Type": "Remote" + }, + { + "Track ID": "2985", + "Name": "Jonestown (Interlude)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post, Te Whiti Warbrick, Nicholas Audino & Lewis Hughes", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4378391", + "Total Time": "112008", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2018-12-19T06:27:27Z", + "Date Added": "2018-12-19T06:27:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "185", + "Play Date": "3783005908", + "Play Date UTC": "2023-11-16T15:58:28Z", + "Skip Count": "5", + "Skip Date": "2021-08-16T21:13:39Z", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "3527", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Jonestown (Interlude)", + "Persistent ID": "753771635F526BB2", + "Track Type": "Remote" + }, + { + "Track ID": "2987", + "Name": "Paris", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Now the Moon's Rising", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4122095", + "Total Time": "111020", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2018-12-19T17:03:17Z", + "Date Added": "2018-12-19T17:03:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3765221099", + "Play Date UTC": "2023-04-24T19:44:59Z", + "Skip Count": "2", + "Skip Date": "2023-02-08T19:48:08Z", + "Release Date": "2015-11-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Now the Moon's Rising", + "Sort Artist": "$uicideboy$", + "Sort Name": "Paris", + "Persistent ID": "CE7486F9C27A2ABD", + "Track Type": "Remote" + }, + { + "Track ID": "2989", + "Name": "Mask Off", + "Artist": "Future", + "Album Artist": "Future", + "Composer": "Nayvadius Wilburn, Leland Wayne & Tommy Butler", + "Album": "FUTURE", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7311187", + "Total Time": "204600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "20", + "Year": "2017", + "Date Modified": "2018-12-19T18:50:58Z", + "Date Added": "2018-12-19T18:50:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "137", + "Play Date": "3773239883", + "Play Date UTC": "2023-07-26T15:11:23Z", + "Skip Count": "4", + "Skip Date": "2021-06-11T05:41:29Z", + "Release Date": "2017-02-17T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "FUTURE", + "Sort Artist": "Future", + "Sort Name": "Mask Off", + "Persistent ID": "DE935492C53B9894", + "Track Type": "Remote" + }, + { + "Track ID": "2991", + "Name": "122 Days", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Aristos Petrou & Scott Arceneaux Jr.", + "Album": "I Want to Die in New Orleans", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6813033", + "Total Time": "184324", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2018-12-19T19:05:14Z", + "Date Added": "2018-12-19T19:05:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "271", + "Play Date": "3782048816", + "Play Date UTC": "2023-11-05T14:06:56Z", + "Skip Count": "6", + "Skip Date": "2022-05-15T10:48:34Z", + "Release Date": "2018-09-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "I Want to Die in New Orleans", + "Sort Artist": "$uicideboy$", + "Sort Name": "122 Days", + "Persistent ID": "0FFD176E9BE8F40B", + "Track Type": "Remote" + }, + { + "Track ID": "2993", + "Name": "Leviathan (feat. Sam Martin) [Hippie Sabotage Remix]", + "Artist": "G-Eazy", + "Album Artist": "G-Eazy", + "Composer": "Sam Martin, Gerald Gillum, Michael Keenan, Dakarai Gwitira, Nicolas Scapa, Michael Aljadeff & Edgar Machuca", + "Album": "The Beautiful & Damned (Remixes) - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8764074", + "Total Time": "254475", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2018", + "Date Modified": "2018-12-19T19:08:42Z", + "Date Added": "2018-12-19T19:08:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "90", + "Play Date": "3766395635", + "Play Date UTC": "2023-05-08T10:00:35Z", + "Skip Count": "6", + "Skip Date": "2023-01-15T20:08:06Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Beautiful & Damned (Remixes) - EP", + "Sort Artist": "G-Eazy", + "Sort Name": "Leviathan (feat. Sam Martin) [Hippie Sabotage Remix]", + "Persistent ID": "7D4AA6C67C22B812", + "Track Type": "Remote" + }, + { + "Track ID": "2995", + "Name": "Candy Paint", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell & Austin Post", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7888280", + "Total Time": "227537", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2018-12-22T19:14:37Z", + "Date Added": "2018-12-29T18:53:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "255", + "Play Date": "257", + "Play Date UTC": "2023-11-17T07:19:21Z", + "Skip Count": "3783061161", + "Skip Date": "2021-02-18T12:50:23Z", + "Release Date": "2017-04-14T07:00:00Z", + "Album Rating": "4", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Candy Paint", + "Persistent ID": "051CCAD7D9B88498", + "Track Type": "Remote" + }, + { + "Track ID": "2997", + "Name": "No Good", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8914059", + "Total Time": "235227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3776151973", + "Play Date UTC": "2023-08-29T08:06:13Z", + "Skip Count": "3", + "Skip Date": "2022-03-18T14:36:32Z", + "Release Date": "2016-02-15T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "No Good", + "Persistent ID": "6E9D429463D3C57F", + "Track Type": "Remote" + }, + { + "Track ID": "2999", + "Name": "Way Down We Go", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7910639", + "Total Time": "219560", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2015", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "64", + "Play Date": "3781205303", + "Play Date UTC": "2023-10-26T19:48:23Z", + "Skip Count": "1", + "Skip Date": "2022-10-17T07:21:25Z", + "Release Date": "2015-08-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "Way Down We Go", + "Persistent ID": "44DBE16A0B94F777", + "Track Type": "Remote" + }, + { + "Track ID": "3001", + "Name": "Broken Bones", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson & Rubin Pollock", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8713608", + "Total Time": "245960", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3780847202", + "Play Date UTC": "2023-10-22T16:20:02Z", + "Skip Count": "1", + "Skip Date": "2021-05-20T10:08:14Z", + "Release Date": "2016-06-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "Broken Bones", + "Persistent ID": "171C07473116EC1A", + "Track Type": "Remote" + }, + { + "Track ID": "3003", + "Name": "Glass House", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9237041", + "Total Time": "241547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "9", + "Year": "2013", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3780134469", + "Play Date UTC": "2023-10-14T10:21:09Z", + "Skip Count": "3", + "Skip Date": "2022-07-06T10:06:42Z", + "Release Date": "2013-11-15T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "Glass House", + "Persistent ID": "A870C465000E9562", + "Track Type": "Remote" + }, + { + "Track ID": "3005", + "Name": "Hot Blood", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8138355", + "Total Time": "218600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3773759833", + "Play Date UTC": "2023-08-01T15:37:13Z", + "Skip Count": "3", + "Skip Date": "2022-11-18T20:11:32Z", + "Release Date": "2016-06-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "Hot Blood", + "Persistent ID": "82A5334155511E37", + "Track Type": "Remote" + }, + { + "Track ID": "3007", + "Name": "All the Pretty Girls", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9475239", + "Total Time": "269893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781435785", + "Play Date UTC": "2023-10-29T11:49:45Z", + "Skip Count": "1", + "Skip Date": "2022-12-09T08:50:49Z", + "Release Date": "2016-06-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "All the Pretty Girls", + "Persistent ID": "74D98F7093752594", + "Track Type": "Remote" + }, + { + "Track ID": "3009", + "Name": "Automobile", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6776742", + "Total Time": "186907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783494797", + "Play Date UTC": "2023-11-22T07:46:37Z", + "Skip Count": "1", + "Skip Date": "2022-08-12T08:19:04Z", + "Release Date": "2016-06-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "Automobile", + "Persistent ID": "F6B90675A6298E14", + "Track Type": "Remote" + }, + { + "Track ID": "3011", + "Name": "Vor \u00ed Vaglask\u00f3gi", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "Jonas Jonasson & Kristj\u00e1n fr\u00e1 Dj\u00fapal\u00e6k", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9658672", + "Total Time": "277267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3758764406", + "Play Date UTC": "2023-02-09T02:13:26Z", + "Skip Count": "1", + "Skip Date": "2022-12-08T15:15:28Z", + "Release Date": "2016-06-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "Vor \u00ed Vaglask\u00f3gi", + "Persistent ID": "7B9A506A8015DBD0", + "Track Type": "Remote" + }, + { + "Track ID": "3013", + "Name": "Save Yourself", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9794165", + "Total Time": "273880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783491750", + "Play Date UTC": "2023-11-22T06:55:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-06-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "Save Yourself", + "Persistent ID": "FEA136FA48D46A1A", + "Track Type": "Remote" + }, + { + "Track ID": "3015", + "Name": "I Can't Go On Without You", + "Artist": "KALEO", + "Album Artist": "KALEO", + "Composer": "J\u00f6kull J\u00fal\u00edusson", + "Album": "A / B", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "13486937", + "Total Time": "374840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": -1, + "Year": "2016", + "Date Modified": "2018-12-24T14:16:16Z", + "Date Added": "2018-12-24T14:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "55", + "Play Date": "3767203207", + "Play Date UTC": "2023-05-17T18:20:07Z", + "Skip Count": "1", + "Skip Date": "2021-11-02T15:33:13Z", + "Release Date": "2016-06-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "/ B", + "Sort Artist": "KALEO", + "Sort Name": "I Can't Go On Without You", + "Persistent ID": "7A8F0EDAA3247778", + "Track Type": "Remote" + }, + { + "Track ID": "3017", + "Name": "nobody's home", + "Artist": "Garrett Nash", + "Album Artist": "Garrett Nash", + "Composer": "Garrett Nash, Jimmy Robbins & Scott Harris", + "Album": "nobody's home - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6911889", + "Total Time": "192508", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2018-12-28T19:33:43Z", + "Date Added": "2018-12-28T19:33:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "66", + "Play Date": "3781354443", + "Play Date UTC": "2023-10-28T13:14:03Z", + "Skip Count": "6", + "Skip Date": "2023-06-30T12:47:25Z", + "Release Date": "2018-11-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "nobody's home - Single", + "Sort Artist": "Garrett Nash", + "Sort Name": "nobody's home", + "Persistent ID": "1105A4D9D7730271", + "Track Type": "Remote" + }, + { + "Track ID": "3019", + "Name": "For Your Sins", + "Artist": "Ngahere Wafer", + "Album Artist": "Ngahere Wafer", + "Composer": "Thom Williams & Ngahere Wafer", + "Album": "Blue Dark", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6605157", + "Total Time": "184248", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2018-12-28T19:49:28Z", + "Date Added": "2018-12-29T18:53:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "137", + "Play Date": "3779631548", + "Play Date UTC": "2023-10-08T14:39:08Z", + "Skip Count": "1", + "Skip Date": "2018-12-29T18:53:14Z", + "Release Date": "2018-12-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blue Dark", + "Sort Artist": "Ngahere Wafer", + "Sort Name": "For Your Sins", + "Persistent ID": "97DE93D6C3E48E96", + "Track Type": "Remote" + }, + { + "Track ID": "3021", + "Name": "Fragile", + "Artist": "bbno$ & So Loki", + "Album Artist": "bbno$ & So Loki", + "Composer": "Alexander Gumuchian & Khalil Frederick, Geoffrey Millar", + "Album": "Whatever", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6959865", + "Total Time": "195556", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "7", + "Year": "2018", + "Date Modified": "2018-12-28T19:59:44Z", + "Date Added": "2018-12-29T18:53:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "129", + "Play Date": "3781242682", + "Play Date UTC": "2023-10-27T06:11:22Z", + "Skip Count": "3", + "Skip Date": "2022-08-04T10:37:22Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Whatever", + "Sort Artist": "bbno$ & So Loki", + "Sort Name": "Fragile", + "Persistent ID": "263374E8826F8F35", + "Track Type": "Remote" + }, + { + "Track ID": "3023", + "Name": "Dead People", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph & Joshua Luellen", + "Album": "Issa Album", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5324285", + "Total Time": "147427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2019-01-01T06:51:36Z", + "Date Added": "2019-01-01T06:51:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "244", + "Play Date": "3781848964", + "Play Date UTC": "2023-11-03T06:36:04Z", + "Skip Count": "8", + "Skip Date": "2022-08-19T16:02:56Z", + "Release Date": "2017-07-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Issa Album", + "Sort Artist": "21 Savage", + "Sort Name": "Dead People", + "Persistent ID": "C6106E2CB67BC69E", + "Track Type": "Remote" + }, + { + "Track ID": "3025", + "Name": "BAD!", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "John Cunningham, Robert Soukiasyan & Jahseh Onfroy", + "Album": "SKINS", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "3670426", + "Total Time": "94246", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2019-01-04T06:50:06Z", + "Date Added": "2019-01-04T06:50:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "151", + "Play Date": "3768408833", + "Play Date UTC": "2023-05-31T17:13:53Z", + "Skip Count": "6", + "Skip Date": "2021-02-18T14:30:09Z", + "Release Date": "2018-11-09T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "SKINS", + "Sort Artist": "XXXTENTACION", + "Sort Name": "BAD!", + "Persistent ID": "B01D9299DDBCF834", + "Track Type": "Remote" + }, + { + "Track ID": "3027", + "Name": "I don\u2019t let go", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "J. Onfroy, J. Cunningham, T. Gomringer & K. Gomringer", + "Album": "SKINS", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "4563262", + "Total Time": "121630", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2019-01-04T06:50:14Z", + "Date Added": "2019-01-04T06:50:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "174", + "Play Date": "3783265302", + "Play Date UTC": "2023-11-19T16:01:42Z", + "Skip Count": "6", + "Skip Date": "2022-10-27T15:19:49Z", + "Release Date": "2018-12-07T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "SKINS", + "Sort Artist": "XXXTENTACION", + "Sort Name": "I don\u2019t let go", + "Persistent ID": "FD552B0D2B68AA21", + "Track Type": "Remote" + }, + { + "Track ID": "3029", + "Name": "Hard Working Friend", + "Artist": "Netherfriends", + "Album Artist": "Netherfriends", + "Composer": "Netherfriends", + "Album": "Friend", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4745489", + "Total Time": "125902", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2019-01-04T07:13:41Z", + "Date Added": "2019-01-04T07:13:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "73", + "Play Date": "3756669691", + "Play Date UTC": "2023-01-15T20:21:31Z", + "Skip Count": "2", + "Skip Date": "2021-12-10T17:32:20Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Friend", + "Sort Artist": "Netherfriends", + "Sort Name": "Hard Working Friend", + "Persistent ID": "882D087142550D4D", + "Track Type": "Remote" + }, + { + "Track ID": "3031", + "Name": "Venus Flytrap", + "Artist": "Feng Suave", + "Album Artist": "Feng Suave", + "Composer": "Daniel Leonard Elvis Schoemaker, Daniel Thomas de Jong, Ivar Otten, Adura Sulaiman & Jim Wood", + "Album": "Venus Flytrap - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7858198", + "Total Time": "222122", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-04T07:23:30Z", + "Date Added": "2019-01-04T07:23:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "81", + "Play Date": "3781446565", + "Play Date UTC": "2023-10-29T14:49:25Z", + "Skip Count": "3", + "Skip Date": "2021-02-01T21:31:21Z", + "Release Date": "2018-11-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Venus Flytrap - Single", + "Sort Artist": "Feng Suave", + "Sort Name": "Venus Flytrap", + "Persistent ID": "A4891ACEC48C1AF4", + "Track Type": "Remote" + }, + { + "Track ID": "3033", + "Name": "Jocelyn Flores", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "17", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4504370", + "Total Time": "119133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2019-01-04T15:21:56Z", + "Date Added": "2019-01-04T15:21:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "113", + "Play Date": "3776343236", + "Play Date UTC": "2023-08-31T13:13:56Z", + "Skip Count": "11", + "Skip Date": "2022-04-16T22:47:05Z", + "Release Date": "2017-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1319", + "Sort Album": "17", + "Sort Artist": "XXXTENTACION", + "Sort Name": "Jocelyn Flores", + "Persistent ID": "FA7AF906F53534AE", + "Track Type": "Remote" + }, + { + "Track ID": "3035", + "Name": "Empathy", + "Artist": "Alicks", + "Album Artist": "Alicks", + "Composer": "Alicks", + "Album": "Everything Is So Beautiful", + "Genre": "Downtempo", + "Kind": "Apple Music AAC audio file", + "Size": "8885388", + "Total Time": "253492", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-01-06T23:23:18Z", + "Date Added": "2019-01-06T23:23:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "94", + "Play Date": "3773230491", + "Play Date UTC": "2023-07-26T12:34:51Z", + "Skip Count": "2", + "Skip Date": "2022-09-17T05:41:26Z", + "Release Date": "2017-03-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Everything Is So Beautiful", + "Sort Artist": "Alicks", + "Sort Name": "Empathy", + "Persistent ID": "9C83242CA6D940A5", + "Track Type": "Remote" + }, + { + "Track ID": "3037", + "Name": "Galileo", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Galileo - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10153293", + "Total Time": "296978", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-01-06T23:31:17Z", + "Date Added": "2019-01-06T23:31:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "262", + "Play Date": "3782884364", + "Play Date UTC": "2023-11-15T06:12:44Z", + "Skip Count": "10", + "Skip Date": "2022-03-15T17:18:04Z", + "Release Date": "2017-04-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Galileo - Single", + "Sort Artist": "Derek Pope", + "Sort Name": "Galileo", + "Persistent ID": "46010F10419A61E5", + "Track Type": "Remote" + }, + { + "Track ID": "3039", + "Name": "Love You", + "Artist": "Roy Woods", + "Album Artist": "Roy Woods", + "Composer": "Deshawn Levy-George, FrancisGotHeat, Roy Woods & Sunny Khokhar", + "Album": "Nocturnal - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7072430", + "Total Time": "197721", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "7", + "Year": "2016", + "Date Modified": "2019-01-07T10:58:09Z", + "Date Added": "2019-01-07T10:58:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "236", + "Play Date": "3781621879", + "Play Date UTC": "2023-10-31T15:31:19Z", + "Skip Count": "4", + "Skip Date": "2022-09-16T07:19:53Z", + "Release Date": "2016-12-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nocturnal - EP", + "Sort Artist": "Roy Woods", + "Sort Name": "Love You", + "Persistent ID": "70394392889EC687", + "Track Type": "Remote" + }, + { + "Track ID": "3041", + "Name": "Him.Her.", + "Artist": "James Gillespie", + "Album Artist": "James Gillespie", + "Composer": "James Gillespie", + "Album": "Lost - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8707717", + "Total Time": "247853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:21Z", + "Date Added": "2019-01-11T10:29:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3779201652", + "Play Date UTC": "2023-10-03T15:14:12Z", + "Skip Count": "2", + "Skip Date": "2022-01-29T18:10:45Z", + "Release Date": "2018-11-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lost - EP", + "Sort Artist": "James Gillespie", + "Sort Name": "Him.Her.", + "Persistent ID": "02E2C24F8E55CC9B", + "Track Type": "Remote" + }, + { + "Track ID": "3043", + "Name": "The Only Time I'm Home", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "The Only Time I'm Home - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7119046", + "Total Time": "200547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:22Z", + "Date Added": "2019-01-11T10:29:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3773843055", + "Play Date UTC": "2023-08-02T14:44:15Z", + "Skip Count": "4", + "Skip Date": "2023-02-02T06:23:43Z", + "Release Date": "2018-11-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Only Time I'm Home - Single", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "Only Time I'm Home", + "Persistent ID": "88B5EE7CC16FC133", + "Track Type": "Remote" + }, + { + "Track ID": "3045", + "Name": "Spiritual Man", + "Artist": "LANKS", + "Album Artist": "LANKS", + "Composer": "Will Cuming, Emma Sameth & Andrei Eremin", + "Album": "Inoue - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6497633", + "Total Time": "180991", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:24Z", + "Date Added": "2019-01-11T10:29:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3767078675", + "Play Date UTC": "2023-05-16T07:44:35Z", + "Skip Count": "1", + "Skip Date": "2021-04-27T13:11:24Z", + "Release Date": "2018-11-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Inoue - Single", + "Sort Artist": "LANKS", + "Sort Name": "Spiritual Man", + "Persistent ID": "8B7E135B1A855DF6", + "Track Type": "Remote" + }, + { + "Track ID": "3047", + "Name": "Not Today", + "Artist": "Alessia Cara", + "Album Artist": "Alessia Cara", + "Composer": "Alessia Caracciolo", + "Album": "The Pains of Growing", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5781134", + "Total Time": "156527", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "15", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:34Z", + "Date Added": "2019-01-11T10:29:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3781384258", + "Play Date UTC": "2023-10-28T21:30:58Z", + "Skip Count": "2", + "Skip Date": "2022-01-29T18:10:50Z", + "Release Date": "2018-11-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pains of Growing", + "Sort Artist": "Alessia Cara", + "Sort Name": "Not Today", + "Persistent ID": "8D94FCC84F9FA9F5", + "Track Type": "Remote" + }, + { + "Track ID": "3049", + "Name": "25 in Barcelona", + "Artist": "JP Saxe", + "Album Artist": "JP Saxe", + "Composer": "Jonathan Percy Starker Saxe, Ryan Marrone & Khris Riddick-Tynes", + "Album": "Hold It Together - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7435934", + "Total Time": "193467", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:35Z", + "Date Added": "2019-01-11T10:29:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3758470717", + "Play Date UTC": "2023-02-05T16:38:37Z", + "Skip Count": "1", + "Skip Date": "2022-08-12T08:31:03Z", + "Release Date": "2018-11-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hold It Together - EP", + "Sort Artist": "JP Saxe", + "Sort Name": "25 in Barcelona", + "Persistent ID": "C19A20FDB0878BB7", + "Track Type": "Remote" + }, + { + "Track ID": "3051", + "Name": "Soldier", + "Artist": "James TW", + "Album Artist": "James TW", + "Composer": "James Taylor-Watts", + "Album": "Chapters", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7973708", + "Total Time": "224720", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:37Z", + "Date Added": "2019-01-11T10:29:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3771743710", + "Play Date UTC": "2023-07-09T07:35:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chapters", + "Sort Artist": "James TW", + "Sort Name": "Soldier", + "Persistent ID": "C2F87D2AEC63FA38", + "Track Type": "Remote" + }, + { + "Track ID": "3053", + "Name": "Older", + "Artist": "Sasha Alex Sloan", + "Album Artist": "Sasha Alex Sloan", + "Composer": "Alexandra Yatchenko, Henry Agincourt Allen & Daniel Silberstein", + "Album": "Older - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6795516", + "Total Time": "191002", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:39Z", + "Date Added": "2019-01-11T10:29:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781619534", + "Play Date UTC": "2023-10-31T14:52:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Older - Single", + "Sort Artist": "Sasha Alex Sloan", + "Sort Name": "Older", + "Persistent ID": "9E3E054E346E83FD", + "Track Type": "Remote" + }, + { + "Track ID": "3055", + "Name": "Sue Me", + "Artist": "Sabrina Carpenter", + "Album Artist": "Sabrina Carpenter", + "Composer": "Sabrina Carpenter, Warren \"Oak\" Felder, Steph Jones, Trevor Brown & William Zaire Simmons", + "Album": "Singular Act I", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6523924", + "Total Time": "179227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "8", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:41Z", + "Date Added": "2019-01-11T10:29:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3766228986", + "Play Date UTC": "2023-05-06T11:43:06Z", + "Skip Count": "3", + "Skip Date": "2023-06-20T08:41:55Z", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Singular Act I", + "Sort Artist": "Sabrina Carpenter", + "Sort Name": "Sue Me", + "Persistent ID": "F8601CB807825F70", + "Track Type": "Remote" + }, + { + "Track ID": "3057", + "Name": "In Betweenin'", + "Artist": "AUSTN", + "Album Artist": "AUSTN", + "Composer": "Alex Sacco & Daniel Henig", + "Album": "Chapter 1: In Betweenin'", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6982334", + "Total Time": "192046", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:43Z", + "Date Added": "2019-01-11T10:29:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3780128254", + "Play Date UTC": "2023-10-14T08:37:34Z", + "Skip Count": "1", + "Skip Date": "2022-06-21T05:06:28Z", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Chapter 1: In Betweenin'", + "Sort Artist": "AUSTN", + "Sort Name": "In Betweenin'", + "Persistent ID": "08D259EE2DD281B7", + "Track Type": "Remote" + }, + { + "Track ID": "3059", + "Name": "Someone You Loved", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi, Sam Roman, Benjamin Kohn, Pete Kelleher & Tom Barnes", + "Album": "Breach - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6591289", + "Total Time": "182161", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:44Z", + "Date Added": "2019-01-11T10:29:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3780193495", + "Play Date UTC": "2023-10-15T02:44:55Z", + "Skip Count": "1", + "Skip Date": "2022-11-26T14:52:04Z", + "Release Date": "2018-11-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Breach - EP", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Someone You Loved", + "Persistent ID": "EBE2A5C33832D253", + "Track Type": "Remote" + }, + { + "Track ID": "3061", + "Name": "Thunder", + "Artist": "duendita", + "Album Artist": "duendita", + "Composer": "undef", + "Album": "direct line to My Creator", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8334507", + "Total Time": "235271", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:46Z", + "Date Added": "2019-01-11T10:29:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783708358", + "Play Date UTC": "2023-11-24T19:05:58Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "direct line to My Creator", + "Sort Artist": "duendita", + "Sort Name": "Thunder", + "Persistent ID": "4A9D191500A81EC7", + "Track Type": "Remote" + }, + { + "Track ID": "3063", + "Name": "Mia Wallace", + "Artist": "ilyTOMMY", + "Album Artist": "ilyTOMMY", + "Composer": "undef", + "Album": "Mia Wallace - Single", + "Genre": "R&B/Soul", + "Kind": "AAC audio file", + "Size": "5272588", + "Total Time": "143683", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:49Z", + "Date Added": "2019-01-11T10:29:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3770534546", + "Play Date UTC": "2023-06-25T07:42:26Z", + "Skip Count": "5", + "Skip Date": "2023-07-21T07:33:10Z", + "Release Date": "2018-11-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mia Wallace - Single", + "Sort Artist": "ilyTOMMY", + "Sort Name": "Mia Wallace", + "Persistent ID": "2BA46CB458F48875", + "Track Type": "Remote" + }, + { + "Track ID": "3065", + "Name": "Down", + "Artist": "Noah North", + "Album Artist": "Noah North", + "Composer": "Noah Aossey, Daniel Gonzalez, Philip Payne & Sergio Romero", + "Album": "Down - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7055225", + "Total Time": "201518", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:52Z", + "Date Added": "2019-01-11T10:29:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3763618649", + "Play Date UTC": "2023-04-06T06:37:29Z", + "Skip Count": "2", + "Skip Date": "2023-10-25T09:19:00Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Down - Single", + "Sort Artist": "Noah North", + "Sort Name": "Down", + "Persistent ID": "EC14EE340ED975AE", + "Track Type": "Remote" + }, + { + "Track ID": "3067", + "Name": "Romeo", + "Artist": "Amir Ob\u00e8", + "Album Artist": "Amir Ob\u00e8", + "Composer": "Amir Obeid Ahmed & El-Madhi Ahmed", + "Album": "Can't Be A ____Here: Chapter 2 - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7841366", + "Total Time": "220717", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:53Z", + "Date Added": "2019-01-11T10:29:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3783355487", + "Play Date UTC": "2023-11-20T17:04:47Z", + "Skip Count": "4", + "Skip Date": "2023-01-08T22:59:43Z", + "Release Date": "2018-10-12T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Can't Be A ____Here: Chapter 2 - Single", + "Sort Artist": "Amir Ob\u00e8", + "Sort Name": "Romeo", + "Persistent ID": "43DB6EBAEFB1A1FF", + "Track Type": "Remote" + }, + { + "Track ID": "3069", + "Name": "Space Cadet (feat. Gunna)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Allen Ritter, Leland Wayne, Sergio Kitchens & Wesley Glass", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7302048", + "Total Time": "203267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:55Z", + "Date Added": "2019-01-11T10:29:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3779314173", + "Play Date UTC": "2023-10-04T22:29:33Z", + "Skip Count": "10", + "Skip Date": "2023-01-08T22:59:35Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "Space Cadet (feat. Gunna)", + "Persistent ID": "24F4CAC9AC550216", + "Track Type": "Remote" + }, + { + "Track ID": "3071", + "Name": "Alone As A Facetat", + "Artist": "wifisfuneral", + "Album Artist": "wifisfuneral", + "Composer": "Henry Daher & Isaih Rivera", + "Album": "Leave Me The Fuck Alone - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5759860", + "Total Time": "157303", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:56Z", + "Date Added": "2019-01-11T10:29:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3783681189", + "Play Date UTC": "2023-11-24T11:33:09Z", + "Skip Count": "1", + "Skip Date": "2022-11-17T06:34:18Z", + "Release Date": "2018-11-07T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "20", + "Sort Album": "Leave Me The Fuck Alone - EP", + "Sort Artist": "wifisfuneral", + "Sort Name": "Alone As A Facetat", + "Persistent ID": "86BC0187544DEE5C", + "Track Type": "Remote" + }, + { + "Track ID": "3073", + "Name": "Casper", + "Artist": "Takeoff", + "Album Artist": "Takeoff", + "Composer": "Kirsnick Ball & Gary Fountaine", + "Album": "The Last Rocket", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7130869", + "Total Time": "197079", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2019-01-11T10:29:59Z", + "Date Added": "2019-01-11T10:29:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3779310739", + "Play Date UTC": "2023-10-04T21:32:19Z", + "Skip Count": "2", + "Skip Date": "2023-01-08T22:59:29Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Last Rocket", + "Sort Artist": "Takeoff", + "Sort Name": "Casper", + "Persistent ID": "784120B105AC5568", + "Track Type": "Remote" + }, + { + "Track ID": "3075", + "Name": "Know Me", + "Artist": "NAV", + "Album Artist": "NAV", + "Composer": "Navraj Goraya, AMIR ESMAILIAN, Andrew Kenneth Franklin & Austin Schindler", + "Album": "Know Me - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5659412", + "Total Time": "155493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-11T10:30:00Z", + "Date Added": "2019-01-11T10:30:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3782802508", + "Play Date UTC": "2023-11-14T07:28:28Z", + "Skip Count": "2", + "Skip Date": "2023-01-08T22:59:19Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Know Me - Single", + "Sort Artist": "NAV", + "Sort Name": "Know Me", + "Persistent ID": "01178AB769321F03", + "Track Type": "Remote" + }, + { + "Track ID": "3077", + "Name": "Spoonful", + "Artist": "Grizfolk", + "Album Artist": "Grizfolk", + "Composer": "Adam Roth, Allen Blickle, Brendan James, Fredrik Eriksson, Sebastian Fritze & William Delia", + "Album": "Rarest of Birds", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6704757", + "Total Time": "188773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-01-19T09:20:41Z", + "Date Added": "2019-01-19T09:20:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3779323176", + "Play Date UTC": "2023-10-05T00:59:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-01-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Rarest of Birds", + "Sort Artist": "Grizfolk", + "Sort Name": "Spoonful", + "Persistent ID": "51B49959EFC08912", + "Track Type": "Remote" + }, + { + "Track ID": "3079", + "Name": "Hurt", + "Artist": "Oliver Tree", + "Album Artist": "Oliver Tree", + "Composer": "Ethan Snoreck & Oliver Tree", + "Album": "Hurt - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5357619", + "Total Time": "145558", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-19T09:28:20Z", + "Date Added": "2019-01-19T09:28:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "76", + "Play Date": "3780908263", + "Play Date UTC": "2023-10-23T09:17:43Z", + "Skip Count": "2", + "Skip Date": "2022-05-13T10:55:25Z", + "Release Date": "2018-12-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hurt - Single", + "Sort Artist": "Oliver Tree", + "Sort Name": "Hurt", + "Persistent ID": "FDABE56332C2D73E", + "Track Type": "Remote" + }, + { + "Track ID": "3081", + "Name": "Apache", + "Artist": "hooligan chase", + "Album Artist": "hooligan chase", + "Composer": "undef", + "Album": "Apache - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5447037", + "Total Time": "152500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-19T09:29:47Z", + "Date Added": "2019-01-19T09:29:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "87", + "Play Date": "3781206274", + "Play Date UTC": "2023-10-26T20:04:34Z", + "Skip Count": "6", + "Skip Date": "2023-02-05T14:40:37Z", + "Release Date": "2018-12-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Apache - Single", + "Sort Artist": "hooligan chase", + "Sort Name": "Apache", + "Persistent ID": "1EB0EBA49362FD1E", + "Track Type": "Remote" + }, + { + "Track ID": "3083", + "Name": "How Could You Babe", + "Artist": "Tobias Jesso Jr.", + "Album Artist": "Tobias Jesso Jr.", + "Composer": "Tobias Jesso Jr.", + "Album": "Goon", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8182457", + "Total Time": "232440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2015", + "Date Modified": "2019-01-19T09:33:10Z", + "Date Added": "2019-01-19T09:33:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3779191919", + "Play Date UTC": "2023-10-03T12:31:59Z", + "Skip Count": "5", + "Skip Date": "2019-01-24T10:13:22Z", + "Release Date": "2015-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Goon", + "Sort Artist": "Tobias Jesso Jr.", + "Sort Name": "How Could You Babe", + "Persistent ID": "46095C3D53DEB46C", + "Track Type": "Remote" + }, + { + "Track ID": "3085", + "Name": "Without You", + "Artist": "Tobias Jesso Jr.", + "Album Artist": "Tobias Jesso Jr.", + "Composer": "Tobias Jesso Jr.", + "Album": "Goon", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10775556", + "Total Time": "309240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2015", + "Date Modified": "2019-01-19T09:37:34Z", + "Date Added": "2019-01-19T09:37:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3770045311", + "Play Date UTC": "2023-06-19T15:48:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Goon", + "Sort Artist": "Tobias Jesso Jr.", + "Sort Name": "Without You", + "Persistent ID": "600A3B0160CA0996", + "Track Type": "Remote" + }, + { + "Track ID": "3087", + "Name": "Can't Stop Thinking About You", + "Artist": "Tobias Jesso Jr.", + "Album Artist": "Tobias Jesso Jr.", + "Composer": "Tobias Jesso Jr.", + "Album": "Goon", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8331327", + "Total Time": "233707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2015", + "Date Modified": "2019-01-19T09:48:29Z", + "Date Added": "2019-01-19T09:48:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3783687935", + "Play Date UTC": "2023-11-24T13:25:35Z", + "Skip Count": "2", + "Skip Date": "2023-11-25T14:14:11Z", + "Release Date": "2015-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Goon", + "Sort Artist": "Tobias Jesso Jr.", + "Sort Name": "Can't Stop Thinking About You", + "Persistent ID": "1F2624F6AA373350", + "Track Type": "Remote" + }, + { + "Track ID": "3089", + "Name": "White Iverson", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post & Trocon Markous Roberts", + "Album": "Stoney", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9019658", + "Total Time": "256532", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2019-01-20T12:22:03Z", + "Date Added": "2019-01-20T12:22:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "121", + "Play Date": "3783057076", + "Play Date UTC": "2023-11-17T06:11:16Z", + "Skip Count": "2", + "Skip Date": "2021-09-02T18:22:21Z", + "Release Date": "2015-08-14T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stoney", + "Sort Artist": "Post Malone", + "Sort Name": "White Iverson", + "Persistent ID": "BA34A9FA293BFAD0", + "Track Type": "Remote" + }, + { + "Track ID": "3091", + "Name": "I Fall Apart", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, Carlo Montagnese & Billy Walsh", + "Album": "Stoney", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7915998", + "Total Time": "223350", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2019-01-20T12:28:11Z", + "Date Added": "2019-01-20T12:28:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "128", + "Play Date": "3783009176", + "Play Date UTC": "2023-11-16T16:52:56Z", + "Skip Count": "2", + "Skip Date": "2021-09-28T07:35:40Z", + "Release Date": "2016-12-09T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stoney", + "Sort Artist": "Post Malone", + "Sort Name": "I Fall Apart", + "Persistent ID": "029F439B4458FBA3", + "Track Type": "Remote" + }, + { + "Track ID": "3093", + "Name": "a lot", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph, Jermaine Cole, Dacoury Natche, Anthony White & Shelia Young", + "Album": "i am > i was (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10074889", + "Total Time": "288624", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2019-01-21T08:18:56Z", + "Date Added": "2019-01-21T08:18:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "127", + "Play Date": "3768474663", + "Play Date UTC": "2023-06-01T11:31:03Z", + "Skip Count": "5", + "Skip Date": "2021-05-19T19:55:54Z", + "Release Date": "2018-12-21T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "i am > i was (Deluxe)", + "Sort Artist": "21 Savage", + "Sort Name": "lot", + "Persistent ID": "36E0F3B5EB9654CA", + "Track Type": "Remote" + }, + { + "Track ID": "3095", + "Name": "Journey", + "Artist": "LAKEY INSPIRED", + "Album Artist": "LAKEY INSPIRED", + "Composer": "Jordan Richard Allen Reddington III", + "Album": "Journey - Single", + "Genre": "Ambient", + "Kind": "Apple Music AAC audio file", + "Size": "6398649", + "Total Time": "180000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2019-01-25T08:13:59Z", + "Date Added": "2019-01-25T08:13:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783762251", + "Play Date UTC": "2023-11-25T10:04:11Z", + "Skip Count": -1, + "Skip Date": "2019-01-27T11:05:45Z", + "Release Date": "2015-12-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Journey - Single", + "Sort Artist": "LAKEY INSPIRED", + "Sort Name": "Journey", + "Persistent ID": "10436A2335FD1F24", + "Track Type": "Remote" + }, + { + "Track ID": "3097", + "Name": "I Found Me", + "Artist": "LAKEY INSPIRED", + "Album Artist": "LAKEY INSPIRED", + "Composer": "Jordan Reddington & LAKEY INSPIRED", + "Album": "I Found Me - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "6521316", + "Total Time": "181603", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-01-25T10:42:42Z", + "Date Added": "2019-01-25T10:42:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3762833425", + "Play Date UTC": "2023-03-28T04:30:25Z", + "Skip Count": "2", + "Skip Date": "2022-11-02T05:13:26Z", + "Release Date": "2017-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Found Me - Single", + "Sort Artist": "LAKEY INSPIRED", + "Sort Name": "I Found Me", + "Persistent ID": "57D556CA71449CDD", + "Track Type": "Remote" + }, + { + "Track ID": "3099", + "Name": "Saydee", + "Artist": "LAKEY INSPIRED", + "Album Artist": "Various Artists", + "Composer": "Jordan Reddington & Chillhop Music", + "Album": "Chillhop Essentials Summer 2018", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5489464", + "Total Time": "149375", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "23", + "Year": "2018", + "Date Modified": "2019-01-25T10:46:45Z", + "Date Added": "2019-01-25T10:46:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3775208978", + "Play Date UTC": "2023-08-18T10:09:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Summer 2018", + "Sort Artist": "LAKEY INSPIRED", + "Sort Name": "Saydee", + "Persistent ID": "9054C2C0F5D1F774", + "Track Type": "Remote" + }, + { + "Track ID": "3101", + "Name": "Good Morning", + "Artist": "LAKEY INSPIRED", + "Album Artist": "LAKEY INSPIRED", + "Composer": "Jordan Reddington & LAKEY INSPIRED", + "Album": "Good Morning - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "5047290", + "Total Time": "136856", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-01-25T10:55:07Z", + "Date Added": "2019-01-25T10:55:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3782980489", + "Play Date UTC": "2023-11-16T08:54:49Z", + "Skip Count": "1", + "Skip Date": "2022-11-02T05:13:34Z", + "Release Date": "2017-03-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good Morning - Single", + "Sort Artist": "LAKEY INSPIRED", + "Sort Name": "Good Morning", + "Persistent ID": "0E3A0BC56E554405", + "Track Type": "Remote" + }, + { + "Track ID": "3103", + "Name": "Elevate", + "Artist": "LAKEY INSPIRED", + "Album Artist": "LAKEY INSPIRED", + "Composer": "Jordan Reddington & LAKEY INSPIRED", + "Album": "Elevate - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8335523", + "Total Time": "236931", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-01-25T10:58:16Z", + "Date Added": "2019-01-25T10:58:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3772792101", + "Play Date UTC": "2023-07-21T10:48:21Z", + "Skip Count": "1", + "Skip Date": "2019-01-31T19:50:53Z", + "Release Date": "2017-07-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Elevate - Single", + "Sort Artist": "LAKEY INSPIRED", + "Sort Name": "Elevate", + "Persistent ID": "129BCAF9C2CC9A53", + "Track Type": "Remote" + }, + { + "Track ID": "3105", + "Name": "Summertime Love", + "Artist": "LAKEY INSPIRED", + "Album Artist": "LAKEY INSPIRED", + "Composer": "Jordan Reddington & LAKEY INSPIRED", + "Album": "Summertime Love - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "5345324", + "Total Time": "145371", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-01-25T16:49:38Z", + "Date Added": "2019-01-25T16:49:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3758465125", + "Play Date UTC": "2023-02-05T15:05:25Z", + "Skip Count": "1", + "Skip Date": "2022-11-10T13:15:00Z", + "Release Date": "2017-04-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Summertime Love - Single", + "Sort Artist": "LAKEY INSPIRED", + "Sort Name": "Summertime Love", + "Persistent ID": "DDB4FD481134830D", + "Track Type": "Remote" + }, + { + "Track ID": "3107", + "Name": "Heave Ho", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard, Mickey Smith, Kyle Keegan, Richie Thomas & Nathan Watson", + "Album": "Heave Ho - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "13471206", + "Total Time": "378739", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-01-25T17:01:43Z", + "Date Added": "2019-01-25T17:01:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3783679172", + "Play Date UTC": "2023-11-24T10:59:32Z", + "Skip Count": "4", + "Skip Date": "2023-02-04T15:41:55Z", + "Release Date": "2019-01-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Heave Ho - Single", + "Sort Artist": "Ben Howard", + "Sort Name": "Heave Ho", + "Persistent ID": "9A7A60C9AD3DB3F8", + "Track Type": "Remote" + }, + { + "Track ID": "3109", + "Name": "Feels Natural (feat. Agung Mango)", + "Artist": "RINI", + "Album Artist": "RINI", + "Composer": "Justerini Sandoval & Jordan Wardana", + "Album": "Feels Natural (feat. Agung Mango) - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7792181", + "Total Time": "219057", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-01-25T17:27:55Z", + "Date Added": "2019-01-25T17:27:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3781573401", + "Play Date UTC": "2023-10-31T02:03:21Z", + "Skip Count": "2", + "Skip Date": "2022-09-30T07:28:23Z", + "Release Date": "2019-01-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Feels Natural (feat. Agung Mango) - Single", + "Sort Artist": "RINI", + "Sort Name": "Feels Natural (feat. Agung Mango)", + "Persistent ID": "8F0B441C0134A1E2", + "Track Type": "Remote" + }, + { + "Track ID": "3111", + "Name": "Birds", + "Artist": "Imagine Dragons", + "Album Artist": "Imagine Dragons", + "Composer": "Joel Little, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman", + "Album": "Origins (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7962810", + "Total Time": "219435", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "15", + "Year": "2018", + "Date Modified": "2019-01-25T19:46:14Z", + "Date Added": "2019-01-25T19:46:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783688399", + "Play Date UTC": "2023-11-24T13:33:19Z", + "Skip Count": "1", + "Skip Date": "2019-06-06T20:24:07Z", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Origins (Deluxe)", + "Sort Artist": "Imagine Dragons", + "Sort Name": "Birds", + "Persistent ID": "B8FDF321620E06EE", + "Track Type": "Remote" + }, + { + "Track ID": "3113", + "Name": "Phony", + "Artist": "KROWNS", + "Album Artist": "KROWNS", + "Composer": "Kyle McKearney, Stephen Kozmeniuk & Todd Clark", + "Album": "Fake It - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6931271", + "Total Time": "191753", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-01-25T19:48:10Z", + "Date Added": "2019-01-25T19:48:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3783670108", + "Play Date UTC": "2023-11-24T08:28:28Z", + "Skip Count": "3", + "Skip Date": "2023-02-05T14:40:42Z", + "Release Date": "2019-01-18T12:00:00Z", + "Album Rating": "40", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "40", + "Sort Album": "Fake It - EP", + "Sort Artist": "KROWNS", + "Sort Name": "Phony", + "Persistent ID": "A319D7FD9B2A9001", + "Track Type": "Remote" + }, + { + "Track ID": "3115", + "Name": "Who Cares", + "Artist": "Shrimp", + "Album Artist": "Shrimp", + "Composer": "Thomas Garrett Lloyd", + "Album": "Who Cares - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5614881", + "Total Time": "153443", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-25T19:55:47Z", + "Date Added": "2019-01-25T19:55:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783451814", + "Play Date UTC": "2023-11-21T19:50:14Z", + "Skip Count": -1, + "Skip Date": "2022-10-09T16:19:17Z", + "Release Date": "2018-12-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Who Cares - Single", + "Sort Artist": "Shrimp", + "Sort Name": "Who Cares", + "Persistent ID": "F0591BC21818B525", + "Track Type": "Remote" + }, + { + "Track ID": "3117", + "Name": "Candy", + "Artist": "Lxst", + "Album Artist": "Lxst", + "Composer": "malcolm devon mathews", + "Album": "Candy - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "5016227", + "Total Time": "132259", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-25T20:07:47Z", + "Date Added": "2019-01-25T20:07:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3633350246", + "Play Date UTC": "2019-02-18T12:57:26Z", + "Skip Count": "2", + "Skip Date": "2019-01-28T17:56:27Z", + "Release Date": "2018-11-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Candy - Single", + "Sort Artist": "Lxst", + "Sort Name": "Candy", + "Persistent ID": "6AEC0CA583BF0E80", + "Track Type": "Remote" + }, + { + "Track ID": "3119", + "Name": "Superman Is Dead", + "Artist": "Pouya", + "Album Artist": "Pouya", + "Composer": "Kevin Pouya", + "Album": "SUPERMAN IS DEAD - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6947592", + "Total Time": "196766", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2019", + "Date Modified": "2019-01-25T20:24:17Z", + "Date Added": "2019-01-25T20:24:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3766756993", + "Play Date UTC": "2023-05-12T14:23:13Z", + "Skip Count": "6", + "Skip Date": "2022-06-23T09:36:24Z", + "Release Date": "2019-01-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SUPERMAN IS DEAD - Single", + "Sort Artist": "Pouya", + "Sort Name": "Superman Is Dead", + "Persistent ID": "63F2A6D32B5CCD94", + "Track Type": "Remote" + }, + { + "Track ID": "3121", + "Name": "Killing Games (feat. Mishaal)", + "Artist": "Dante Rapper", + "Album Artist": "Dante Rapper", + "Composer": "Dante Rapper", + "Album": "Killing Games (feat. Mishaal) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4786431", + "Total Time": "129000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-01-25T21:15:12Z", + "Date Added": "2019-01-25T21:15:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3782980157", + "Play Date UTC": "2023-11-16T08:49:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-12-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Killing Games (feat. Mishaal) - Single", + "Sort Artist": "Dante Rapper", + "Sort Name": "Killing Games (feat. Mishaal)", + "Persistent ID": "D912EB2B5D4D2894", + "Track Type": "Remote" + }, + { + "Track ID": "3123", + "Name": "Life Is Changing (feat. Raynadayz & Kinshii)", + "Artist": "Powfu", + "Album Artist": "Powfu", + "Composer": "Isaiah jehoshaphat Faber", + "Album": "Some Boring, Love Stories - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7873551", + "Total Time": "231000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2018", + "Date Modified": "2019-01-25T21:24:12Z", + "Date Added": "2019-01-25T21:24:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3775035621", + "Play Date UTC": "2023-08-16T10:00:21Z", + "Skip Count": "4", + "Skip Date": "2022-04-30T07:23:52Z", + "Release Date": "2018-12-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Some Boring, Love Stories - EP", + "Sort Artist": "Powfu", + "Sort Name": "Life Is Changing (feat. Raynadayz & Kinshii)", + "Persistent ID": "F39B16673CB1356B", + "Track Type": "Remote" + }, + { + "Track ID": "3125", + "Name": "Carrollton", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Aristos Petrou & Scott Arceneaux Jr.", + "Album": "I Want to Die in New Orleans", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7287645", + "Total Time": "203897", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2019-01-30T12:53:54Z", + "Date Added": "2019-01-30T12:53:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3768905096", + "Play Date UTC": "2023-06-06T11:04:56Z", + "Skip Count": "1", + "Skip Date": "2019-02-09T05:05:14Z", + "Release Date": "2018-08-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Want to Die in New Orleans", + "Sort Artist": "$uicideboy$", + "Sort Name": "Carrollton", + "Persistent ID": "4A8D4C875EDA7D31", + "Track Type": "Remote" + }, + { + "Track ID": "3127", + "Name": "BOOM", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Samuel Harris, Casey Harris, Adam Levin, Eric Frederic, Tom Peyton & Thomas Eriksen", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5958968", + "Total Time": "164587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2019-01-31T18:44:32Z", + "Date Added": "2019-01-31T18:44:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "62", + "Play Date": "3767037297", + "Play Date UTC": "2023-05-15T20:14:57Z", + "Skip Count": "1", + "Skip Date": "2021-10-25T13:52:57Z", + "Release Date": "2019-01-25T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "BOOM", + "Persistent ID": "87E2F8FCD438B82F", + "Track Type": "Remote" + }, + { + "Track ID": "3129", + "Name": "Meet Again", + "Artist": "Maxo Kream", + "Album Artist": "Maxo Kream", + "Composer": "Emekwanem Ogugua Biosah & Afolabi Osinulu", + "Album": "Meet Again - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11141283", + "Total Time": "320615", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-01T09:39:42Z", + "Date Added": "2019-02-01T09:39:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3774950959", + "Play Date UTC": "2023-08-15T10:29:19Z", + "Skip Count": "1", + "Skip Date": "2022-10-10T08:38:08Z", + "Release Date": "2019-01-25T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "60", + "Sort Album": "Meet Again - Single", + "Sort Artist": "Maxo Kream", + "Sort Name": "Meet Again", + "Persistent ID": "D9ED7399CAA4B497", + "Track Type": "Remote" + }, + { + "Track ID": "3131", + "Name": "Keanu Reeves", + "Artist": "Logic", + "Album Artist": "Logic", + "Composer": "Sir Robert Bryson Hall II, Arjun Ivatury & Aaron Gomez", + "Album": "Confessions of a Dangerous Mind", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8025881", + "Total Time": "225939", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-02-02T19:09:22Z", + "Date Added": "2019-02-02T19:09:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "95", + "Play Date": "3780498858", + "Play Date UTC": "2023-10-18T15:34:18Z", + "Skip Count": "4", + "Skip Date": "2022-05-12T10:51:33Z", + "Release Date": "2019-01-18T08:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Confessions of a Dangerous Mind", + "Sort Artist": "Logic", + "Sort Name": "Keanu Reeves", + "Persistent ID": "D8E0C81E77922C00", + "Track Type": "Remote" + }, + { + "Track ID": "3133", + "Name": "YSIV", + "Artist": "Logic", + "Album Artist": "Logic", + "Composer": "Sir Robert Bryson Hall II, Arjun Ivatury, Thomas Wlodaryck, Melvin Dinkins, Kier Gist, Anthony S. Cruz, Nasir Jones, Oliver A. Scott, Ronnie James Wilson & Olu Dara", + "Album": "YSIV", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12912216", + "Total Time": "369231", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2019-02-02T19:11:52Z", + "Date Added": "2019-02-02T19:11:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781523436", + "Play Date UTC": "2023-10-30T12:10:36Z", + "Skip Count": "5", + "Skip Date": "2023-02-22T15:04:23Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "YSIV", + "Sort Artist": "Logic", + "Sort Name": "YSIV", + "Persistent ID": "BBC2E402115FDB5F", + "Track Type": "Remote" + }, + { + "Track ID": "3135", + "Name": "I Love You", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid & Ambroise Willaume", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8478873", + "Total Time": "229707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-02T21:49:42Z", + "Date Added": "2019-02-02T21:49:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3775209664", + "Play Date UTC": "2023-08-18T10:21:04Z", + "Skip Count": -1, + "Skip Date": "2019-02-06T06:15:55Z", + "Release Date": "2013-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "I Love You", + "Persistent ID": "ADCA5003FE312802", + "Track Type": "Remote" + }, + { + "Track ID": "3137", + "Name": "Iron", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7749139", + "Total Time": "201693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "14", + "Year": "2011", + "Date Modified": "2019-02-02T21:49:56Z", + "Date Added": "2019-02-02T21:49:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3748367696", + "Play Date UTC": "2022-10-11T18:14:56Z", + "Skip Count": "1", + "Skip Date": "2021-06-21T15:49:19Z", + "Release Date": "2011-03-28T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Iron", + "Persistent ID": "85E18AD96508AE2D", + "Track Type": "Remote" + }, + { + "Track ID": "3139", + "Name": "The Golden Age", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8055050", + "Total Time": "224720", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-02T21:51:03Z", + "Date Added": "2019-02-02T21:51:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3751814808", + "Play Date UTC": "2022-11-20T15:46:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Golden Age", + "Persistent ID": "C25515F1E05CBFA1", + "Track Type": "Remote" + }, + { + "Track ID": "3141", + "Name": "Never Let You Down (feat. Lykke Li) [From The \"Insurgent\" Soundtrack]", + "Artist": "Woodkid", + "Album Artist": "Various Artists", + "Composer": "Yoann Lemoine, Lykke Li Zachrisson & Jeff Bhasker", + "Album": "Insurgent (Original Motion Picture Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "9441342", + "Total Time": "272662", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "8", + "Year": "2015", + "Date Modified": "2019-02-02T21:51:25Z", + "Date Added": "2019-02-02T21:51:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3768053248", + "Play Date UTC": "2023-05-27T14:27:28Z", + "Skip Count": "1", + "Skip Date": "2022-08-16T15:11:35Z", + "Release Date": "2015-03-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Insurgent (Original Motion Picture Soundtrack)", + "Sort Artist": "Woodkid", + "Sort Name": "Never Let You Down (feat. Lykke Li) [From The \"Insurgent\" Soundtrack]", + "Persistent ID": "FC1726973E1A9700", + "Track Type": "Remote" + }, + { + "Track ID": "3143", + "Name": "Run Boy Run", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid & Ambroise Willaume", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7945848", + "Total Time": "212627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "14", + "Year": "2012", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3781200348", + "Play Date UTC": "2023-10-26T18:25:48Z", + "Skip Count": "1", + "Skip Date": "2022-04-27T09:25:20Z", + "Release Date": "2012-05-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Run Boy Run", + "Persistent ID": "F71C4C2B7AD65927", + "Track Type": "Remote" + }, + { + "Track ID": "3145", + "Name": "The Great Escape", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Guillaume Briere", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7168758", + "Total Time": "195000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3755123573", + "Play Date UTC": "2022-12-28T22:52:53Z", + "Skip Count": "2", + "Skip Date": "2023-01-18T10:00:41Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Great Escape", + "Persistent ID": "350EBDB0FAB938E5", + "Track Type": "Remote" + }, + { + "Track ID": "3147", + "Name": "Boat Song", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid & Mitchell Yoshida", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "9450225", + "Total Time": "270107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3757285666", + "Play Date UTC": "2023-01-22T23:27:46Z", + "Skip Count": -1, + "Skip Date": "2019-02-05T20:20:45Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Boat Song", + "Persistent ID": "F46698912E602D05", + "Track Type": "Remote" + }, + { + "Track ID": "3149", + "Name": "The Shore", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8908816", + "Total Time": "253533", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3755003054", + "Play Date UTC": "2022-12-27T13:24:14Z", + "Skip Count": "2", + "Skip Date": "2021-01-22T21:56:07Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Shore", + "Persistent ID": "0264B6FD94BF212A", + "Track Type": "Remote" + }, + { + "Track ID": "3151", + "Name": "Ghost Lights", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7959842", + "Total Time": "220213", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3758264089", + "Play Date UTC": "2023-02-03T07:14:49Z", + "Skip Count": "1", + "Skip Date": "2021-02-12T12:39:19Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Ghost Lights", + "Persistent ID": "499EFD991EC0B1B6", + "Track Type": "Remote" + }, + { + "Track ID": "3153", + "Name": "Shadows", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "4777964", + "Total Time": "124827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3757246290", + "Play Date UTC": "2023-01-22T12:31:30Z", + "Skip Count": "1", + "Skip Date": "2022-12-05T21:31:53Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Shadows", + "Persistent ID": "61AF1C84D39CFC0C", + "Track Type": "Remote" + }, + { + "Track ID": "3155", + "Name": "Stabat Mater", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Sebastian", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "6398267", + "Total Time": "169187", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3757274786", + "Play Date UTC": "2023-01-22T20:26:26Z", + "Skip Count": "1", + "Skip Date": "2022-12-08T12:55:11Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Stabat Mater", + "Persistent ID": "20AEF6BD564D6343", + "Track Type": "Remote" + }, + { + "Track ID": "3157", + "Name": "Conquest of Spaces", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "9681385", + "Total Time": "269880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3753306665", + "Play Date UTC": "2022-12-07T22:11:05Z", + "Skip Count": "2", + "Skip Date": "2022-12-28T07:44:06Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Conquest of Spaces", + "Persistent ID": "ED91600FB80D08BE", + "Track Type": "Remote" + }, + { + "Track ID": "3159", + "Name": "Falling", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "1947603", + "Total Time": "43200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3753789044", + "Play Date UTC": "2022-12-13T12:10:44Z", + "Skip Count": "1", + "Skip Date": "2022-06-21T05:37:57Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Falling", + "Persistent ID": "E5EB0AF30CA2574C", + "Track Type": "Remote" + }, + { + "Track ID": "3161", + "Name": "Where I Live", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "9336590", + "Total Time": "264920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3758713734", + "Play Date UTC": "2023-02-08T12:08:54Z", + "Skip Count": "2", + "Skip Date": "2021-06-11T05:24:47Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Where I Live", + "Persistent ID": "2426A3AAB8BEA35C", + "Track Type": "Remote" + }, + { + "Track ID": "3163", + "Name": "The Other Side", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "The Golden Age", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8031224", + "Total Time": "221973", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2019-02-05T07:34:37Z", + "Date Added": "2019-02-05T07:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3756834830", + "Play Date UTC": "2023-01-17T18:13:50Z", + "Skip Count": "1", + "Skip Date": "2022-08-11T12:52:43Z", + "Release Date": "2013-03-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Golden Age", + "Sort Artist": "Woodkid", + "Sort Name": "Other Side", + "Persistent ID": "9736B831BD500814", + "Track Type": "Remote" + }, + { + "Track ID": "3165", + "Name": "L'a\u00e9rogramme de Los Angeles", + "Artist": "Woodkid & Louis Garrel", + "Album Artist": "Woodkid & Louis Garrel", + "Composer": "Yves Simon", + "Album": "L'a\u00e9rogramme de Los Angeles - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7740312", + "Total Time": "210667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-02-05T18:20:11Z", + "Date Added": "2019-02-05T18:20:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3780848770", + "Play Date UTC": "2023-10-22T16:46:10Z", + "Skip Count": "2", + "Skip Date": "2021-10-25T07:56:22Z", + "Release Date": "2018-03-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "L'a\u00e9rogramme de Los Angeles - Single", + "Sort Artist": "Woodkid & Louis Garrel", + "Sort Name": "L'a\u00e9rogramme de Los Angeles", + "Persistent ID": "EF8522C5CEF2C7C1", + "Track Type": "Remote" + }, + { + "Track ID": "3167", + "Name": "Land Of All", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Yoann Lemoine", + "Album": "Desierto (Original Motion Picture Score)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "10987298", + "Total Time": "316840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-02-05T20:18:42Z", + "Date Added": "2019-02-05T20:18:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3783357527", + "Play Date UTC": "2023-11-20T17:38:47Z", + "Skip Count": "1", + "Skip Date": "2021-05-11T13:20:37Z", + "Release Date": "2016-04-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Desierto (Original Motion Picture Score)", + "Sort Artist": "Woodkid", + "Sort Name": "Land Of All", + "Persistent ID": "6DAA2CDEAE394AE2", + "Track Type": "Remote" + }, + { + "Track ID": "3169", + "Name": "Wake Up in the Sky", + "Artist": "Gucci Mane, Bruno Mars & Kodak Black", + "Album Artist": "Gucci Mane, Bruno Mars & Kodak Black", + "Composer": "Bill K. Kapri, Chance Youngblood, Dieuson Octave, Dwan Avery, Jeff LaCroix, Peter Hernandez & Radric Davis", + "Album": "Wake Up in the Sky - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7364455", + "Total Time": "204665", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-02-07T18:13:09Z", + "Date Added": "2019-02-07T18:13:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3758184931", + "Play Date UTC": "2023-02-02T09:15:31Z", + "Skip Count": "2", + "Skip Date": "2022-11-18T19:40:20Z", + "Release Date": "2018-09-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wake Up in the Sky - Single", + "Sort Artist": "Gucci Mane, Bruno Mars & Kodak Black", + "Sort Name": "Wake Up in the Sky", + "Persistent ID": "02C80F182EB204F3", + "Track Type": "Remote" + }, + { + "Track ID": "3171", + "Name": "Roll in Peace (feat. XXXTENTACION)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Kevin Gomringer, Kodak Black, London Holmes & XXXTENTACION", + "Album": "Project Baby 2: All Grown Up (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7565873", + "Total Time": "213132", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "27", + "Year": "2017", + "Date Modified": "2019-02-07T18:39:06Z", + "Date Added": "2019-02-07T18:39:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3783264904", + "Play Date UTC": "2023-11-19T15:55:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Project Baby 2: All Grown Up (Deluxe)", + "Sort Artist": "Kodak Black", + "Sort Name": "Roll in Peace (feat. XXXTENTACION)", + "Persistent ID": "5A6B1198D6A2C9F7", + "Track Type": "Remote" + }, + { + "Track ID": "3173", + "Name": "Million", + "Artist": "Tommy Newport", + "Album Artist": "Tommy Newport", + "Composer": "Oliver Milmine & 4th Pyramid", + "Album": "Million - Single", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "6795054", + "Total Time": "190688", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-07T21:09:17Z", + "Date Added": "2019-02-07T21:09:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3781465846", + "Play Date UTC": "2023-10-29T20:10:46Z", + "Skip Count": "3", + "Skip Date": "2022-10-17T05:43:33Z", + "Release Date": "2019-02-01T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Million - Single", + "Sort Artist": "Tommy Newport", + "Sort Name": "Million", + "Persistent ID": "46352E2BFD20CFE9", + "Track Type": "Remote" + }, + { + "Track ID": "3175", + "Name": "Habit", + "Artist": "Still Woozy", + "Album Artist": "Still Woozy", + "Composer": "Malik T Keith & Sven Eric Gamsky", + "Album": "Lately - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5661233", + "Total Time": "153872", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2018", + "Date Modified": "2019-02-07T21:14:03Z", + "Date Added": "2019-02-07T21:14:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3783714513", + "Play Date UTC": "2023-11-24T20:48:33Z", + "Skip Count": -1, + "Skip Date": "2019-02-10T11:09:42Z", + "Release Date": "2018-12-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Lately - EP", + "Sort Artist": "Still Woozy", + "Sort Name": "Habit", + "Persistent ID": "E685F5F3A7A55497", + "Track Type": "Remote" + }, + { + "Track ID": "3177", + "Name": "These Words", + "Artist": "Raz Simone", + "Album Artist": "Raz Simone", + "Composer": "undef", + "Album": "Cognitive Dissonance, Pt. 2", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9672669", + "Total Time": "279458", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2019-02-09T22:21:27Z", + "Date Added": "2019-02-09T22:21:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3775566426", + "Play Date UTC": "2023-08-22T13:27:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-01-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cognitive Dissonance, Pt. 2", + "Sort Artist": "Raz Simone", + "Sort Name": "These Words", + "Persistent ID": "E14E82922465A9E3", + "Track Type": "Remote" + }, + { + "Track ID": "3179", + "Name": "Baby Jesus", + "Artist": "Raz Simone", + "Album Artist": "Raz Simone", + "Composer": "undef", + "Album": "Baby Jesus - EP", + "Genre": "\u0425\u0438\u043f-\u0445\u043e\u043f/\u0440\u044d\u043f", + "Kind": "Apple Music AAC audio file", + "Size": "8788806", + "Total Time": "251376", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2015", + "Date Modified": "2019-02-09T22:26:24Z", + "Date Added": "2019-02-09T22:26:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "84", + "Play Date": "3783770274", + "Play Date UTC": "2023-11-25T12:17:54Z", + "Skip Count": "3", + "Skip Date": "2019-02-17T16:17:06Z", + "Release Date": "2015-04-07T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Baby Jesus - EP", + "Sort Artist": "Raz Simone", + "Sort Name": "Baby Jesus", + "Persistent ID": "D0F784016046DE3F", + "Track Type": "Remote" + }, + { + "Track ID": "3181", + "Name": "All in My Mind", + "Artist": "Raz Simone", + "Album Artist": "Raz Simone", + "Composer": "undef", + "Album": "Baby Jesus - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9700090", + "Total Time": "276741", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2015", + "Date Modified": "2019-02-09T22:28:51Z", + "Date Added": "2019-02-09T22:28:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "78", + "Play Date": "3783667020", + "Play Date UTC": "2023-11-24T07:37:00Z", + "Skip Count": "2", + "Skip Date": "2022-04-24T10:25:43Z", + "Release Date": "2015-04-07T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Baby Jesus - EP", + "Sort Artist": "Raz Simone", + "Sort Name": "All in My Mind", + "Persistent ID": "15150AA8459C95BA", + "Track Type": "Remote" + }, + { + "Track ID": "3183", + "Name": "Light of the Seven", + "Artist": "Ramin Djawadi", + "Album Artist": "Ramin Djawadi", + "Composer": "Ramin Djawadi", + "Album": "Game of Thrones: Season 6 (Music from the HBO\u00ae Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "20079124", + "Total Time": "589095", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "26", + "Year": "2016", + "Date Modified": "2019-02-09T22:46:55Z", + "Date Added": "2019-02-09T22:46:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3772525833", + "Play Date UTC": "2023-07-18T08:50:33Z", + "Skip Count": "3", + "Skip Date": "2022-07-20T14:45:17Z", + "Release Date": "2016-06-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Game of Thrones: Season 6 (Music from the HBO\u00ae Series)", + "Sort Artist": "Ramin Djawadi", + "Sort Name": "Light of the Seven", + "Persistent ID": "CF12B2C1D8E89DD7", + "Track Type": "Remote" + }, + { + "Track ID": "3185", + "Name": "Blood of My Blood", + "Artist": "Ramin Djawadi", + "Album Artist": "Ramin Djawadi", + "Composer": "Ramin Djawadi", + "Album": "Game of Thrones: Season 6 (Music from the HBO\u00ae Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7919857", + "Total Time": "215262", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "26", + "Year": "2016", + "Date Modified": "2019-02-09T22:47:53Z", + "Date Added": "2019-02-09T22:47:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3778584252", + "Play Date UTC": "2023-09-26T11:44:12Z", + "Skip Count": -1, + "Skip Date": "2022-10-09T16:14:59Z", + "Release Date": "2016-06-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Game of Thrones: Season 6 (Music from the HBO\u00ae Series)", + "Sort Artist": "Ramin Djawadi", + "Sort Name": "Blood of My Blood", + "Persistent ID": "6DD7BBFAF60B550F", + "Track Type": "Remote" + }, + { + "Track ID": "3187", + "Name": "Juke Jam (feat. Justin Bieber & Towkio)", + "Artist": "Chance the Rapper", + "Album Artist": "Chance the Rapper", + "Composer": "Chance the Rapper, Justin Bieber, Mount Kimbie, Peter CottonTale, Rascal & Towkio", + "Album": "Coloring Book", + "Genre": "\u0425\u0438\u043f-\u0445\u043e\u043f/\u0440\u044d\u043f", + "Kind": "Apple Music AAC audio file", + "Size": "7636522", + "Total Time": "219683", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2019-02-09T22:59:09Z", + "Date Added": "2019-02-09T22:59:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "81", + "Play Date": "3783677605", + "Play Date UTC": "2023-11-24T10:33:25Z", + "Skip Count": "6", + "Skip Date": "2022-10-24T14:09:18Z", + "Release Date": "2016-05-13T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Coloring Book", + "Sort Artist": "Chance the Rapper", + "Sort Name": "Juke Jam (feat. Justin Bieber & Towkio)", + "Persistent ID": "A1772119BA405B64", + "Track Type": "Remote" + }, + { + "Track ID": "3189", + "Name": "Rare", + "Artist": "Raz Simone", + "Album Artist": "Raz Simone", + "Composer": "Raz Simone", + "Album": "Closer", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12902604", + "Total Time": "372000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "8", + "Year": "2017", + "Date Modified": "2019-02-10T19:29:05Z", + "Date Added": "2019-02-10T19:29:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "62", + "Play Date": "3773206166", + "Play Date UTC": "2023-07-26T05:49:26Z", + "Skip Count": "4", + "Skip Date": "2022-08-19T16:07:48Z", + "Release Date": "2017-07-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Closer", + "Sort Artist": "Raz Simone", + "Sort Name": "Rare", + "Persistent ID": "DEF42C9447CA6445", + "Track Type": "Remote" + }, + { + "Track ID": "3191", + "Name": "Outta Bounds (feat. Jay Park)", + "Artist": "Raz Simone", + "Album Artist": "Raz Simone", + "Composer": "Raz Simone", + "Album": "Closer", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9951633", + "Total Time": "287742", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "8", + "Year": "2018", + "Date Modified": "2019-02-10T20:33:56Z", + "Date Added": "2019-02-10T20:33:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3772623443", + "Play Date UTC": "2023-07-19T11:57:23Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-05-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Closer", + "Sort Artist": "Raz Simone", + "Sort Name": "Outta Bounds (feat. Jay Park)", + "Persistent ID": "484961ED67A30291", + "Track Type": "Remote" + }, + { + "Track ID": "3193", + "Name": "Hallelujah", + "Artist": "Raz Simone", + "Album Artist": "Raz Simone", + "Composer": "undef", + "Album": "Baby Jesus - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10407902", + "Total Time": "299337", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2015", + "Date Modified": "2019-02-11T06:49:24Z", + "Date Added": "2019-02-11T06:49:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3781157856", + "Play Date UTC": "2023-10-26T06:37:36Z", + "Skip Count": "1", + "Skip Date": "2020-01-21T15:43:33Z", + "Release Date": "2015-04-07T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "60", + "Sort Album": "Baby Jesus - EP", + "Sort Artist": "Raz Simone", + "Sort Name": "Hallelujah", + "Persistent ID": "9D646340133A3665", + "Track Type": "Remote" + }, + { + "Track ID": "3195", + "Name": "Altered Carbon Main Titles", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "3738662", + "Total Time": "99747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-02-12T13:56:49Z", + "Date Added": "2019-02-12T13:56:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3772784900", + "Play Date UTC": "2023-07-21T08:48:20Z", + "Skip Count": "4", + "Skip Date": "2021-05-10T23:00:28Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Altered Carbon Main Titles", + "Persistent ID": "B2B9891764ED89D8", + "Track Type": "Remote" + }, + { + "Track ID": "3197", + "Name": "Let My Baby Ride", + "Artist": "Sune Rose Wagner", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8168246", + "Total Time": "226760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-02-12T14:50:53Z", + "Date Added": "2019-02-12T14:50:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3778583543", + "Play Date UTC": "2023-09-26T11:32:23Z", + "Skip Count": "1", + "Skip Date": "2020-01-01T10:46:10Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Sune Rose Wagner", + "Sort Name": "Let My Baby Ride", + "Persistent ID": "DCE95A531E45BB0C", + "Track Type": "Remote" + }, + { + "Track ID": "3199", + "Name": "Ain\u2019t No Grave", + "Artist": "Ren\u00e9e Elise Goldsberry", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6211886", + "Total Time": "168933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-02-12T14:56:06Z", + "Date Added": "2019-02-12T14:56:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "68", + "Play Date": "3781449770", + "Play Date UTC": "2023-10-29T15:42:50Z", + "Skip Count": "2", + "Skip Date": "2021-05-11T13:22:39Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Ren\u00e9e Elise Goldsberry", + "Sort Name": "Ain\u2019t No Grave", + "Persistent ID": "3169A2D38E151A7E", + "Track Type": "Remote" + }, + { + "Track ID": "3201", + "Name": "Best Friends", + "Artist": "grandson", + "Album Artist": "grandson", + "Composer": "Jordan Benjamin, Kevin Hissink & Michael Abundes", + "Album": "Best Friends - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6417342", + "Total Time": "179840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-02-13T12:07:46Z", + "Date Added": "2019-02-13T12:07:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3781573855", + "Play Date UTC": "2023-10-31T02:10:55Z", + "Skip Count": -1, + "Skip Date": "2022-03-26T11:41:13Z", + "Release Date": "2017-04-12T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "60", + "Sort Album": "Best Friends - Single", + "Sort Artist": "grandson", + "Sort Name": "Best Friends", + "Persistent ID": "D4015788E690C8A4", + "Track Type": "Remote" + }, + { + "Track ID": "3203", + "Name": "Kiss Bang", + "Artist": "grandson", + "Album Artist": "grandson", + "Composer": "Jordan Benjamin, Kevin Hissink & Michael Abundes", + "Album": "Kiss Bang - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6255434", + "Total Time": "172941", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-02-13T17:03:32Z", + "Date Added": "2019-02-13T17:03:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3760866872", + "Play Date UTC": "2023-03-05T10:14:32Z", + "Skip Count": "2", + "Skip Date": "2022-07-12T16:07:56Z", + "Release Date": "2017-03-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Kiss Bang - Single", + "Sort Artist": "grandson", + "Sort Name": "Kiss Bang", + "Persistent ID": "AE6ECC6077C7F140", + "Track Type": "Remote" + }, + { + "Track ID": "3205", + "Name": "what are you so afraid of", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "J. Onfroy, J. Cunningham & R. Soukiasyan", + "Album": "SKINS", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5421213", + "Total Time": "150769", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2019-02-15T18:07:56Z", + "Date Added": "2019-02-15T18:07:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3778860275", + "Play Date UTC": "2023-09-29T16:24:35Z", + "Skip Count": "4", + "Skip Date": "2022-10-04T10:45:49Z", + "Release Date": "2018-12-07T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SKINS", + "Sort Artist": "XXXTENTACION", + "Sort Name": "what are you so afraid of", + "Persistent ID": "73A4954816A7C28D", + "Track Type": "Remote" + }, + { + "Track ID": "3207", + "Name": "Worth It", + "Artist": "Roy Woods", + "Album Artist": "Roy Woods", + "Composer": "Denzel Spencer & Jeffrey Offe", + "Album": "Worth It - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6811265", + "Total Time": "192632", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-15T18:10:36Z", + "Date Added": "2019-02-15T18:10:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3767704029", + "Play Date UTC": "2023-05-23T13:27:09Z", + "Skip Count": "3", + "Skip Date": "2022-10-23T10:22:37Z", + "Release Date": "2019-02-08T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Worth It - Single", + "Sort Artist": "Roy Woods", + "Sort Name": "Worth It", + "Persistent ID": "5613CAA83B0D2E09", + "Track Type": "Remote" + }, + { + "Track ID": "3209", + "Name": "In Over My Head II", + "Artist": "LUWTEN", + "Album Artist": "LUWTEN", + "Composer": "T. Douwstra & F. Wienk", + "Album": "In Over My Head II - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7104915", + "Total Time": "187617", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-15T18:32:33Z", + "Date Added": "2019-02-15T18:32:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3741347415", + "Play Date UTC": "2022-07-22T12:10:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-01-28T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "60", + "Sort Album": "In Over My Head II - Single", + "Sort Artist": "LUWTEN", + "Sort Name": "In Over My Head II", + "Persistent ID": "E13E952D6D21925A", + "Track Type": "Remote" + }, + { + "Track ID": "3211", + "Name": "Love Me Please (Acoustic)", + "Artist": "OCTAVIO the Dweeb", + "Album Artist": "OCTAVIO the Dweeb", + "Composer": "Octavio Herrera, SE Berrios & Danny Berrios", + "Album": "Dweeb Tapes", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8279042", + "Total Time": "233393", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "9", + "Year": "2020", + "Date Modified": "2019-02-16T08:21:33Z", + "Date Added": "2019-02-16T08:21:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780500548", + "Play Date UTC": "2023-10-18T16:02:28Z", + "Skip Count": "1", + "Skip Date": "2022-10-29T09:18:15Z", + "Release Date": "2020-02-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dweeb Tapes", + "Sort Artist": "OCTAVIO the Dweeb", + "Sort Name": "Love Me Please (Acoustic)", + "Persistent ID": "2AC9885543651388", + "Track Type": "Remote" + }, + { + "Track ID": "3213", + "Name": "Night Crawler", + "Artist": "Reo Cragun", + "Album Artist": "Reo Cragun", + "Composer": "Reo Cragun, Angel Brizuela, Jeffery Owusu Offe & Onassis Morris", + "Album": "Growing Pains", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7321228", + "Total Time": "205984", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2019-02-16T21:01:04Z", + "Date Added": "2019-02-16T21:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3780849204", + "Play Date UTC": "2023-10-22T16:53:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-07-07T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "60", + "Sort Album": "Growing Pains", + "Sort Artist": "Reo Cragun", + "Sort Name": "Night Crawler", + "Persistent ID": "E5BE399FFDB23032", + "Track Type": "Remote" + }, + { + "Track ID": "3215", + "Name": "Sweet Ride (feat. Nasty Mars)", + "Artist": "RINI", + "Album Artist": "RINI", + "Composer": "undef", + "Album": "Rini", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6590318", + "Total Time": "186667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2017", + "Date Modified": "2019-02-17T11:17:40Z", + "Date Added": "2019-02-17T11:17:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3764066125", + "Play Date UTC": "2023-04-11T10:55:25Z", + "Skip Count": "1", + "Skip Date": "2019-02-25T20:13:57Z", + "Release Date": "2017-05-25T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "60", + "Sort Album": "Rini", + "Sort Artist": "RINI", + "Sort Name": "Sweet Ride (feat. Nasty Mars)", + "Persistent ID": "3CE198B0CA9E2E96", + "Track Type": "Remote" + }, + { + "Track ID": "3217", + "Name": "HeldAGhost", + "Artist": "SurrenderDorothy", + "Album Artist": "SurrenderDorothy", + "Composer": "undef", + "Album": "WeNeverAskedForThis - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6466108", + "Total Time": "179373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-02-18T15:10:17Z", + "Date Added": "2019-02-18T15:10:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3781198316", + "Play Date UTC": "2023-10-26T17:51:56Z", + "Skip Count": "4", + "Skip Date": "2022-03-18T19:50:27Z", + "Release Date": "2017-03-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WeNeverAskedForThis - EP", + "Sort Artist": "SurrenderDorothy", + "Sort Name": "HeldAGhost", + "Persistent ID": "E3EEB0824EFFD282", + "Track Type": "Remote" + }, + { + "Track ID": "3219", + "Name": "Lust", + "Artist": "Lil Skies", + "Album Artist": "Lil Skies", + "Composer": "Alex Petit & Kimetrius Foose", + "Album": "Life of a Dark Rose", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5778961", + "Total Time": "156000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-02-18T15:21:50Z", + "Date Added": "2019-02-18T15:21:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "102", + "Play Date": "3779240320", + "Play Date UTC": "2023-10-04T01:58:40Z", + "Skip Count": "9", + "Skip Date": "2022-06-18T17:02:03Z", + "Release Date": "2017-12-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a Dark Rose", + "Sort Artist": "Lil Skies", + "Sort Name": "Lust", + "Persistent ID": "32B7FEF77058B04F", + "Track Type": "Remote" + }, + { + "Track ID": "3221", + "Name": "My Computer Was Stolen in Atlanta", + "Artist": "Netherfriends", + "Album Artist": "Netherfriends", + "Composer": "Netherfriends", + "Album": "Nocomputer", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7269521", + "Total Time": "204772", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2019-02-18T16:57:17Z", + "Date Added": "2019-02-18T16:57:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3783765772", + "Play Date UTC": "2023-11-25T11:02:52Z", + "Skip Count": "1", + "Skip Date": "2019-02-19T15:16:07Z", + "Release Date": "2016-01-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nocomputer", + "Sort Artist": "Netherfriends", + "Sort Name": "My Computer Was Stolen in Atlanta", + "Persistent ID": "E376505A55759868", + "Track Type": "Remote" + }, + { + "Track ID": "3223", + "Name": "Away from the Noise", + "Artist": "Noah Kittinger", + "Album Artist": "Noah Kittinger", + "Composer": "Noah Kittinger", + "Album": "Bloom", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7381404", + "Total Time": "207162", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "7", + "Year": "2016", + "Date Modified": "2019-02-20T10:40:27Z", + "Date Added": "2019-02-20T10:40:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3773540126", + "Play Date UTC": "2023-07-30T02:35:26Z", + "Skip Count": "3", + "Skip Date": "2022-03-11T09:03:02Z", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bloom", + "Sort Artist": "Noah Kittinger", + "Sort Name": "Away from the Noise", + "Persistent ID": "6EEE71124B726468", + "Track Type": "Remote" + }, + { + "Track ID": "3225", + "Name": "100 Bad Days", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7563261", + "Total Time": "210992", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-02-20T20:43:23Z", + "Date Added": "2019-02-20T20:43:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "55", + "Play Date": "3760857439", + "Play Date UTC": "2023-03-05T07:37:19Z", + "Skip Count": "2", + "Skip Date": "2022-09-20T11:02:13Z", + "Release Date": "2019-01-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "100 Bad Days", + "Persistent ID": "64FA79CD709173EB", + "Track Type": "Remote" + }, + { + "Track ID": "3227", + "Name": "Sober Up (feat. Rivers Cuomo)", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7834942", + "Total Time": "218763", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2019-02-20T20:46:55Z", + "Date Added": "2019-02-20T20:46:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3773526288", + "Play Date UTC": "2023-07-29T22:44:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Sober Up (feat. Rivers Cuomo)", + "Persistent ID": "ED44F44EAD438889", + "Track Type": "Remote" + }, + { + "Track ID": "3229", + "Name": "The Good Part", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8106365", + "Total Time": "227267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2019-02-20T20:47:08Z", + "Date Added": "2019-02-20T20:47:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3770288925", + "Play Date UTC": "2023-06-22T11:28:45Z", + "Skip Count": "1", + "Skip Date": "2023-06-15T12:53:14Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Good Part", + "Persistent ID": "AB627B6378381F46", + "Track Type": "Remote" + }, + { + "Track ID": "3231", + "Name": "Bleed Out", + "Artist": "Blue October", + "Album Artist": "Blue October", + "Composer": "Not Documented", + "Album": "Sway", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8772525", + "Total Time": "232840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2013", + "Date Modified": "2019-02-20T20:57:15Z", + "Date Added": "2019-02-20T20:57:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3767032844", + "Play Date UTC": "2023-05-15T19:00:44Z", + "Skip Count": "1", + "Skip Date": "2022-05-24T11:17:21Z", + "Release Date": "2013-06-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sway", + "Sort Artist": "Blue October", + "Sort Name": "Bleed Out", + "Persistent ID": "1ECC03A7B4659DB3", + "Track Type": "Remote" + }, + { + "Track ID": "3233", + "Name": "Check", + "Artist": "Young Thug", + "Album Artist": "Young Thug", + "Composer": "Jeffery Williams & London Holmes", + "Album": "Barter 6", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8157196", + "Total Time": "230693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2019-02-20T21:00:03Z", + "Date Added": "2019-02-20T21:00:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "124", + "Play Date": "3773643881", + "Play Date UTC": "2023-07-31T07:24:41Z", + "Skip Count": "1", + "Skip Date": "2020-12-01T20:04:36Z", + "Release Date": "2015-04-01T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "2130", + "Sort Album": "Barter 6", + "Sort Artist": "Young Thug", + "Sort Name": "Check", + "Persistent ID": "0A91FDE0006C0609", + "Track Type": "Remote" + }, + { + "Track ID": "3235", + "Name": "Never Go Back", + "Artist": "Dennis Lloyd", + "Album Artist": "Dennis Lloyd", + "Composer": "Nir Tibor", + "Album": "Never Go Back - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6290686", + "Total Time": "175424", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-20T21:08:43Z", + "Date Added": "2019-02-20T21:08:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3770988742", + "Play Date UTC": "2023-06-30T13:52:22Z", + "Skip Count": "1", + "Skip Date": "2019-02-21T05:40:10Z", + "Release Date": "2019-02-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Never Go Back - Single", + "Sort Artist": "Dennis Lloyd", + "Sort Name": "Never Go Back", + "Persistent ID": "0FC6926105DC015A", + "Track Type": "Remote" + }, + { + "Track ID": "3237", + "Name": "bury a friend", + "Artist": "Billie Eilish", + "Album Artist": "Billie Eilish", + "Composer": "FINNEAS & Billie Eilish", + "Album": "WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7091327", + "Total Time": "193149", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2019-02-20T21:10:32Z", + "Date Added": "2019-02-20T21:10:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3777373876", + "Play Date UTC": "2023-09-12T11:31:16Z", + "Skip Count": "5", + "Skip Date": "2023-08-15T10:37:09Z", + "Release Date": "2019-01-29T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?", + "Sort Artist": "Billie Eilish", + "Sort Name": "bury a friend", + "Persistent ID": "EDC3CDA37EDA549E", + "Track Type": "Remote" + }, + { + "Track ID": "3239", + "Name": "Leftovers", + "Artist": "Dennis Lloyd", + "Album Artist": "Dennis Lloyd", + "Composer": "Dennis Lloyd", + "Album": "Leftovers - Single", + "Genre": "Easy Listening", + "Kind": "Apple Music AAC audio file", + "Size": "6928981", + "Total Time": "192628", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-02-21T06:13:42Z", + "Date Added": "2019-02-21T06:13:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781705822", + "Play Date UTC": "2023-11-01T14:50:22Z", + "Skip Count": "2", + "Skip Date": "2022-09-04T16:01:48Z", + "Release Date": "2017-01-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Leftovers - Single", + "Sort Artist": "Dennis Lloyd", + "Sort Name": "Leftovers", + "Persistent ID": "680F682800CF3862", + "Track Type": "Remote" + }, + { + "Track ID": "3241", + "Name": "Think About It", + "Artist": "Dennis Lloyd", + "Album Artist": "Dennis Lloyd", + "Composer": "Dennis Lloyd", + "Album": "Think About It - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6920039", + "Total Time": "191688", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2019-02-21T06:17:07Z", + "Date Added": "2019-02-21T06:17:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3781321143", + "Play Date UTC": "2023-10-28T03:59:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-11-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Think About It - Single", + "Sort Artist": "Dennis Lloyd", + "Sort Name": "Think About It", + "Persistent ID": "542D43A46EEA8DF0", + "Track Type": "Remote" + }, + { + "Track ID": "3243", + "Name": "Moral of the Story", + "Artist": "Ashe", + "Album Artist": "Ashe", + "Composer": "undef", + "Album": "Moral of the Story - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7381918", + "Total Time": "201084", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2019-02-23T13:09:22Z", + "Date Added": "2019-02-23T13:09:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3783592091", + "Play Date UTC": "2023-11-23T10:48:11Z", + "Skip Count": "4", + "Skip Date": "2022-09-27T07:49:25Z", + "Release Date": "2019-02-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Moral of the Story - Single", + "Sort Artist": "Ashe", + "Sort Name": "Moral of the Story", + "Persistent ID": "617BCE79B119C07E", + "Track Type": "Remote" + }, + { + "Track ID": "3245", + "Name": "Racks on Racks", + "Artist": "Lil Pump", + "Album Artist": "Lil Pump", + "Composer": "Christian Dold, Gazzy Garcia & Sebastian Baldeon", + "Album": "Racks on Racks - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4923194", + "Total Time": "129778", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-23T13:56:00Z", + "Date Added": "2019-02-23T13:56:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783410711", + "Play Date UTC": "2023-11-21T08:25:11Z", + "Skip Count": "2", + "Skip Date": "2022-12-26T13:18:31Z", + "Release Date": "2019-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Racks on Racks - Single", + "Sort Artist": "Lil Pump", + "Sort Name": "Racks on Racks", + "Persistent ID": "A01804C7FDA3BE0E", + "Track Type": "Remote" + }, + { + "Track ID": "3247", + "Name": "Gold Veins", + "Artist": "Glints", + "Album Artist": "Glints", + "Composer": "Jens Paeyeneersg Yello, Jan Lemmens & Ennio Morricone", + "Album": "Gold Veins - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8084648", + "Total Time": "231150", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-23T14:46:45Z", + "Date Added": "2019-02-23T14:46:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3783357759", + "Play Date UTC": "2023-11-20T17:42:39Z", + "Skip Count": "8", + "Skip Date": "2023-05-26T20:02:12Z", + "Release Date": "2019-02-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold Veins - Single", + "Sort Artist": "Glints", + "Sort Name": "Gold Veins", + "Persistent ID": "39B07DCDC4AA1FA3", + "Track Type": "Remote" + }, + { + "Track ID": "3249", + "Name": "Bag Bwe (feat. Sir Michael Rocks)", + "Artist": "Supa Bwe", + "Album Artist": "Supa Bwe", + "Composer": "undef", + "Album": "Bag Bwe (feat. Sir Michael Rocks) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7520860", + "Total Time": "210732", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-23T15:24:12Z", + "Date Added": "2019-02-23T15:24:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3775744026", + "Play Date UTC": "2023-08-24T14:47:06Z", + "Skip Count": "4", + "Skip Date": "2022-11-16T20:06:27Z", + "Release Date": "2019-01-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bag Bwe (feat. Sir Michael Rocks) - Single", + "Sort Artist": "Supa Bwe", + "Sort Name": "Bag Bwe (feat. Sir Michael Rocks)", + "Persistent ID": "BB5CB76436EE430D", + "Track Type": "Remote" + }, + { + "Track ID": "3251", + "Name": "Say Less", + "Artist": "P. Wright", + "Album Artist": "P. Wright", + "Composer": "undef", + "Album": "Say Less - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5874036", + "Total Time": "161693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-02-24T05:17:45Z", + "Date Added": "2019-02-24T05:17:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3780833835", + "Play Date UTC": "2023-10-22T12:37:15Z", + "Skip Count": "1", + "Skip Date": "2019-02-24T10:28:03Z", + "Release Date": "2019-02-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Say Less - Single", + "Sort Artist": "P. Wright", + "Sort Name": "Say Less", + "Persistent ID": "39D38B00EA423EE9", + "Track Type": "Remote" + }, + { + "Track ID": "3253", + "Name": "disappear", + "Artist": "eli.", + "Album Artist": "eli.", + "Composer": "Eli Lucas", + "Album": "the way we used to love.", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7939147", + "Total Time": "225600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2019-02-25T08:41:40Z", + "Date Added": "2019-02-25T08:41:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3779917958", + "Play Date UTC": "2023-10-11T22:12:38Z", + "Skip Count": "2", + "Skip Date": "2019-05-07T05:54:46Z", + "Release Date": "2019-02-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "way we used to love.", + "Sort Artist": "eli.", + "Sort Name": "disappear", + "Persistent ID": "CB3FF115A3D2517B", + "Track Type": "Remote" + }, + { + "Track ID": "3255", + "Name": "What's Up Danger", + "Artist": "Blackway & Black Caviar", + "Album Artist": "Various Artists", + "Composer": "Jared Piccone & Yaw Sintim-misa", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7703180", + "Total Time": "222316", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "90", + "Play Date": "3783688621", + "Play Date UTC": "2023-11-24T13:37:01Z", + "Skip Count": "6", + "Skip Date": "2020-11-07T14:29:16Z", + "Release Date": "2018-11-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "2918", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Blackway & Black Caviar", + "Sort Name": "What's Up Danger", + "Persistent ID": "E9582A1B2D7003EC", + "Track Type": "Remote" + }, + { + "Track ID": "3257", + "Name": "Sunflower (Spider-Man: Into the Spider-Verse)", + "Artist": "Post Malone & Swae Lee", + "Album Artist": "Various Artists", + "Composer": "Carter Lang, Khalif Malik Ibin Shaman Brown, Louis Russel Bell, Austin Richard Post, William Walsh & Carl Rosen", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5858597", + "Total Time": "158040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "123", + "Play Date": "3781522384", + "Play Date UTC": "2023-10-30T11:53:04Z", + "Skip Count": "5", + "Skip Date": "2021-06-11T12:31:40Z", + "Release Date": "2018-10-19T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "100", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Post Malone & Swae Lee", + "Sort Name": "Sunflower (Spider-Man: Into the Spider-Verse)", + "Persistent ID": "B15715F85FC44F68", + "Track Type": "Remote" + }, + { + "Track ID": "3259", + "Name": "Way Up", + "Artist": "Jaden", + "Album Artist": "Various Artists", + "Composer": "Jaden, Omarr Rambert & Tremaine Winfrey", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5644955", + "Total Time": "153774", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "71", + "Play Date": "3780773249", + "Play Date UTC": "2023-10-21T19:47:29Z", + "Skip Count": "8", + "Skip Date": "2022-07-30T12:42:52Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Jaden", + "Sort Name": "Way Up", + "Persistent ID": "1C43F0C11B03C963", + "Track Type": "Remote" + }, + { + "Track ID": "3261", + "Name": "Familia (feat. Bantu) [Spider-Man: Into the Spider-Verse]", + "Artist": "Nicki Minaj & Anuel AA", + "Album Artist": "Various Artists", + "Composer": "Philip 'Pip' Kembo, Onika Tanya Maraj, Tinashe Sibanda, Emmanuel Gazmey Santiago & Carlos A. Su\u00e1rez", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6374673", + "Total Time": "174884", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3759844324", + "Play Date UTC": "2023-02-21T14:12:04Z", + "Skip Count": "1", + "Skip Date": "2022-02-23T22:53:00Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Nicki Minaj & Anuel AA", + "Sort Name": "Familia (feat. Bantu) [Spider-Man: Into the Spider-Verse]", + "Persistent ID": "57295A55F52129B8", + "Track Type": "Remote" + }, + { + "Track ID": "3263", + "Name": "Invincible", + "Artist": "Amin\u00e9", + "Album Artist": "Various Artists", + "Composer": "Om'Mas Keith, Dylan Meek & Adam Amin\u00e9 Daniel", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7028826", + "Total Time": "196398", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "76", + "Play Date": "3772721743", + "Play Date UTC": "2023-07-20T15:15:43Z", + "Skip Count": "4", + "Skip Date": "2022-08-11T12:52:17Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Amin\u00e9", + "Sort Name": "Invincible", + "Persistent ID": "70F1441169316604", + "Track Type": "Remote" + }, + { + "Track ID": "3265", + "Name": "Hide (feat. Seezyn)", + "Artist": "Juice WRLD", + "Album Artist": "Various Artists", + "Composer": "Jarad Higgins, Carl Chaney & George Dickinson", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7281558", + "Total Time": "205793", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "102", + "Play Date": "3781242889", + "Play Date UTC": "2023-10-27T06:14:49Z", + "Skip Count": "1", + "Skip Date": "2019-12-29T08:14:43Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "4540", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Juice WRLD", + "Sort Name": "Hide (feat. Seezyn)", + "Persistent ID": "987AF36410622461", + "Track Type": "Remote" + }, + { + "Track ID": "3267", + "Name": "Memories", + "Artist": "Thutmose", + "Album Artist": "Various Artists", + "Composer": "Umar Ibrahim & Vincent Van den Ende", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7205565", + "Total Time": "199149", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3781165767", + "Play Date UTC": "2023-10-26T08:49:27Z", + "Skip Count": -1, + "Skip Date": "2020-10-09T18:15:56Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Thutmose", + "Sort Name": "Memories", + "Persistent ID": "3F540803DCADC284", + "Track Type": "Remote" + }, + { + "Track ID": "3269", + "Name": "Save the Day (feat. Coi Leray & lougotcash)", + "Artist": "Ski Mask the Slump God & Jacquees", + "Album Artist": "Various Artists", + "Composer": "Raymond Arroyo, Rodriquez Broadnax, Stokeley Clevon Goulbourne, Coi Collins & Rahlou Ruth", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6484016", + "Total Time": "178714", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3759518121", + "Play Date UTC": "2023-02-17T19:35:21Z", + "Skip Count": "1", + "Skip Date": "2020-10-09T18:16:01Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Ski Mask the Slump God & Jacquees", + "Sort Name": "Save the Day (feat. Coi Leray & lougotcash)", + "Persistent ID": "4EF5F4EC8D3E0EF8", + "Track Type": "Remote" + }, + { + "Track ID": "3271", + "Name": "Let Go", + "Artist": "Beau Young Prince", + "Album Artist": "Various Artists", + "Composer": "Beau Young & Jaimy Lageweg", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6365782", + "Total Time": "177660", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3776336805", + "Play Date UTC": "2023-08-31T11:26:45Z", + "Skip Count": "1", + "Skip Date": "2020-10-12T09:26:15Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Beau Young Prince", + "Sort Name": "Let Go", + "Persistent ID": "6D70B0E70CACBE68", + "Track Type": "Remote" + }, + { + "Track ID": "3273", + "Name": "Scared of the Dark (feat. XXXTENTACION)", + "Artist": "Lil Wayne & Ty Dolla $ign", + "Album Artist": "Various Artists", + "Composer": "Dwayne Michael Carter, Jr., Samuel Denison Martin, Jahseh Dwayne Onfroy & Marco Antonio Rodriguez-Diaz, Jr.", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8368229", + "Total Time": "232999", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "174", + "Play Date": "3781395307", + "Play Date UTC": "2023-10-29T00:35:07Z", + "Skip Count": "8", + "Skip Date": "2021-07-13T22:24:59Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "100", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Lil Wayne & Ty Dolla $ign", + "Sort Name": "Scared of the Dark (feat. XXXTENTACION)", + "Persistent ID": "8B5BB866F8A2FC40", + "Track Type": "Remote" + }, + { + "Track ID": "3275", + "Name": "Elevate (feat. Denzel Curry, YBN Cordae, SwaVay & Trevor Rich)", + "Artist": "DJ Khalil", + "Album Artist": "Various Artists", + "Composer": "Denzel Curry, Trevor Rich, Didier Cohen, Daniel Seeff, Khalil Abdul-Rahman, Cordae Dunston & Andre Jones", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7846005", + "Total Time": "219396", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "119", + "Play Date": "3782894918", + "Play Date UTC": "2023-11-15T09:08:38Z", + "Skip Count": "9", + "Skip Date": "2022-09-09T10:54:09Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "100", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "DJ Khalil", + "Sort Name": "Elevate (feat. Denzel Curry, YBN Cordae, SwaVay & Trevor Rich)", + "Persistent ID": "2AE93549DC2394F1", + "Track Type": "Remote" + }, + { + "Track ID": "3277", + "Name": "Home", + "Artist": "Vince Staples", + "Album Artist": "Various Artists", + "Composer": "David Biral, Denzel Baptiste & Vincent Staples", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7744584", + "Total Time": "211321", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-02-25T13:46:19Z", + "Date Added": "2019-02-25T13:46:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3760548388", + "Play Date UTC": "2023-03-01T17:46:28Z", + "Skip Count": "1", + "Skip Date": "2020-12-12T21:45:16Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "Vince Staples", + "Sort Name": "Home", + "Persistent ID": "69899706DF090D6D", + "Track Type": "Remote" + }, + { + "Track ID": "3279", + "Name": "attached", + "Artist": "eli.", + "Album Artist": "eli.", + "Composer": "Eli Lucas", + "Album": "the way we used to love.", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7666897", + "Total Time": "220000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "17", + "Year": "2018", + "Date Modified": "2019-02-26T11:52:56Z", + "Date Added": "2019-02-26T11:52:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3773210637", + "Play Date UTC": "2023-07-26T07:03:57Z", + "Skip Count": "2", + "Skip Date": "2022-04-21T12:32:08Z", + "Release Date": "2018-08-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "way we used to love.", + "Sort Artist": "eli.", + "Sort Name": "attached", + "Persistent ID": "4DA66D1D0F1AFC2B", + "Track Type": "Remote" + }, + { + "Track ID": "3281", + "Name": "Meditate (feat. J.I.D.)", + "Artist": "EARTHGANG", + "Album Artist": "EARTHGANG", + "Composer": "undef", + "Album": "Rags - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9730643", + "Total Time": "278084", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2019-02-27T19:36:44Z", + "Date Added": "2019-02-27T19:36:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3766230223", + "Play Date UTC": "2023-05-06T12:03:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-09-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rags - EP", + "Sort Artist": "EARTHGANG", + "Sort Name": "Meditate (feat. J.I.D.)", + "Persistent ID": "A1917967326321D8", + "Track Type": "Remote" + }, + { + "Track ID": "3283", + "Name": "Table for One (feat. Elohim)", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Table for One (feat. Elohim) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9771926", + "Total Time": "278868", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-03-01T06:54:32Z", + "Date Added": "2019-03-01T06:54:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3783595865", + "Play Date UTC": "2023-11-23T11:51:05Z", + "Skip Count": "1", + "Skip Date": "2021-06-24T15:42:25Z", + "Release Date": "2018-10-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Table for One (feat. Elohim) - Single", + "Sort Artist": "AWOLNATION", + "Sort Name": "Table for One (feat. Elohim)", + "Persistent ID": "ED315836147BE02F", + "Track Type": "Remote" + }, + { + "Track ID": "3285", + "Name": "Jailbreak", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Run", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10036487", + "Total Time": "281115", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2019-03-01T06:57:15Z", + "Date Added": "2019-03-01T06:57:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3734121109", + "Play Date UTC": "2022-04-29T20:51:49Z", + "Skip Count": "1", + "Skip Date": "2020-11-26T23:01:59Z", + "Release Date": "2015-03-17T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Run", + "Sort Artist": "AWOLNATION", + "Sort Name": "Jailbreak", + "Persistent ID": "A4631BA5095EBB0C", + "Track Type": "Remote" + }, + { + "Track ID": "3287", + "Name": "Windows", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Run", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7798722", + "Total Time": "217206", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2019-03-01T06:57:19Z", + "Date Added": "2019-03-01T06:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3733744385", + "Play Date UTC": "2022-04-25T12:13:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-03-17T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Run", + "Sort Artist": "AWOLNATION", + "Sort Name": "Windows", + "Persistent ID": "2E5470BE059321B0", + "Track Type": "Remote" + }, + { + "Track ID": "3289", + "Name": "I Am", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Run", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "9900452", + "Total Time": "274323", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2019-03-01T06:57:27Z", + "Date Added": "2019-03-01T06:57:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3733854093", + "Play Date UTC": "2022-04-26T18:41:33Z", + "Skip Count": "1", + "Skip Date": "2021-01-30T18:44:06Z", + "Release Date": "2015-03-17T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Run", + "Sort Artist": "AWOLNATION", + "Sort Name": "I Am", + "Persistent ID": "494F6FF5FC03C486", + "Track Type": "Remote" + }, + { + "Track ID": "3291", + "Name": "Woman Woman", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Run", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7937721", + "Total Time": "217995", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2019-03-01T06:57:30Z", + "Date Added": "2019-03-01T06:57:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3730113691", + "Play Date UTC": "2022-03-14T11:41:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-03-17T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Run", + "Sort Artist": "AWOLNATION", + "Sort Name": "Woman Woman", + "Persistent ID": "336532B2BDC978F1", + "Track Type": "Remote" + }, + { + "Track ID": "3293", + "Name": "Lie Love Live Love", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Run", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10224940", + "Total Time": "281081", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2019-03-01T08:12:56Z", + "Date Added": "2019-03-01T08:12:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3731241930", + "Play Date UTC": "2022-03-27T13:05:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-03-17T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Run", + "Sort Artist": "AWOLNATION", + "Sort Name": "Lie Love Live Love", + "Persistent ID": "F6BF413E4ACD3D67", + "Track Type": "Remote" + }, + { + "Track ID": "3295", + "Name": "happysad", + "Artist": "Josh Golden", + "Album Artist": "Josh Golden", + "Composer": "Josh Golden, London Glorfield, Jacob Chatelain, Sean Myer & Mick Coogan", + "Album": "happysad - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6558402", + "Total Time": "174038", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-03-02T16:59:44Z", + "Date Added": "2019-03-02T16:59:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "58", + "Play Date": "3766850273", + "Play Date UTC": "2023-05-13T16:17:53Z", + "Skip Count": "6", + "Skip Date": "2020-12-05T05:45:09Z", + "Release Date": "2019-01-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "happysad - Single", + "Sort Artist": "Josh Golden", + "Sort Name": "happysad", + "Persistent ID": "39D9696204872A86", + "Track Type": "Remote" + }, + { + "Track ID": "3297", + "Name": "love me blind", + "Artist": "Josh Golden", + "Album Artist": "Josh Golden", + "Composer": "Josh Golden, Martin Coogan, Dave Burris & Sean Myer", + "Album": "love me blind - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7562403", + "Total Time": "209736", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-03-04T13:01:20Z", + "Date Added": "2019-03-04T13:01:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "157", + "Play Date": "3780906186", + "Play Date UTC": "2023-10-23T08:43:06Z", + "Skip Count": "11", + "Skip Date": "2021-05-17T09:39:42Z", + "Release Date": "2018-07-20T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "love me blind - Single", + "Sort Artist": "Josh Golden", + "Sort Name": "love me blind", + "Persistent ID": "76125F6269908E6D", + "Track Type": "Remote" + }, + { + "Track ID": "3299", + "Name": "heartbreak drugs", + "Artist": "Josh Golden", + "Album Artist": "Josh Golden", + "Composer": "Josh Golden, Sean Myer & Mick Coogan", + "Album": "happysad", + "Genre": "Pop", + "Kind": "AAC audio file", + "Size": "6306337", + "Total Time": "172058", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "8", + "Year": "2018", + "Date Modified": "2019-03-04T13:07:51Z", + "Date Added": "2019-03-04T13:07:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3696927695", + "Play Date UTC": "2021-02-23T09:21:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "happysad", + "Sort Artist": "Josh Golden", + "Sort Name": "heartbreak drugs", + "Persistent ID": "ED1B3DD81D002B4F", + "Track Type": "Remote" + }, + { + "Track ID": "3301", + "Name": "Fade Away", + "Artist": "Tom Walker", + "Album Artist": "Tom Walker", + "Composer": "Tom Walker", + "Album": "What a Time To Be Alive", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "9836757", + "Total Time": "283989", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2019-03-07T07:58:52Z", + "Date Added": "2019-03-07T07:58:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3760963353", + "Play Date UTC": "2023-03-06T13:02:33Z", + "Skip Count": "3", + "Skip Date": "2022-06-21T05:05:57Z", + "Release Date": "2019-03-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "What a Time To Be Alive", + "Sort Artist": "Tom Walker", + "Sort Name": "Fade Away", + "Persistent ID": "83C17FF8657EB1F0", + "Track Type": "Remote" + }, + { + "Track ID": "3303", + "Name": "Pain", + "Artist": "Josh A", + "Album Artist": "Josh A", + "Composer": "Josh A", + "Album": "Fearless", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6604141", + "Total Time": "188042", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "15", + "Year": "2019", + "Date Modified": "2019-03-08T14:43:49Z", + "Date Added": "2019-03-08T14:43:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "79", + "Play Date": "3780394721", + "Play Date UTC": "2023-10-17T10:38:41Z", + "Skip Count": "3", + "Skip Date": "2021-05-05T08:02:56Z", + "Release Date": "2019-01-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fearless", + "Sort Artist": "Josh A", + "Sort Name": "Pain", + "Persistent ID": "FD5B45D153255686", + "Track Type": "Remote" + }, + { + "Track ID": "3305", + "Name": "Endlessly", + "Artist": "Muse", + "Album Artist": "Muse", + "Composer": "Chris Wolstenholme, Dominic Howard & Matthew Bellamy", + "Album": "Absolution", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8420965", + "Total Time": "229302", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "15", + "Year": "2003", + "Date Modified": "2019-03-10T13:42:46Z", + "Date Added": "2019-03-10T13:42:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "88", + "Play Date": "3773844782", + "Play Date UTC": "2023-08-02T15:13:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2003-09-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Absolution", + "Sort Artist": "Muse", + "Sort Name": "Endlessly", + "Persistent ID": "3312191455109948", + "Track Type": "Remote" + }, + { + "Track ID": "3307", + "Name": "Invest", + "Artist": "Big Scary", + "Album Artist": "Big Scary", + "Composer": "undef", + "Album": "Not Art", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9461901", + "Total Time": "270707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2019-03-11T04:39:04Z", + "Date Added": "2019-03-11T04:39:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "110", + "Play Date": "3781199756", + "Play Date UTC": "2023-10-26T18:15:56Z", + "Skip Count": "2", + "Skip Date": "2022-05-18T09:25:38Z", + "Release Date": "2013-06-28T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Not Art", + "Sort Artist": "Big Scary", + "Sort Name": "Invest", + "Persistent ID": "EA0DE163CADA550E", + "Track Type": "Remote" + }, + { + "Track ID": "3309", + "Name": "Boris", + "Artist": "Lo-Fang", + "Album Artist": "Lo-Fang", + "Composer": "Valeska Anna Steiner & Adrian Stern", + "Album": "Blue Film", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7631494", + "Total Time": "217840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2013", + "Date Modified": "2019-03-11T04:51:26Z", + "Date Added": "2019-03-11T04:51:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "107", + "Play Date": "3783755347", + "Play Date UTC": "2023-11-25T08:09:07Z", + "Skip Count": "1", + "Skip Date": "2019-03-28T21:35:54Z", + "Release Date": "2013-08-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blue Film", + "Sort Artist": "Lo-Fang", + "Sort Name": "Boris", + "Persistent ID": "01313C13C89510E3", + "Track Type": "Remote" + }, + { + "Track ID": "3311", + "Name": "Heimf\u00f6rin", + "Artist": "\u00c1sgeir", + "Album Artist": "\u00c1sgeir", + "Composer": "Asgeir Einarsson & Einar Einarsson", + "Album": "D\u00fdr\u00f0 \u00cd Dau\u00f0a\u00fe\u00f6gn", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10150792", + "Total Time": "292053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2012", + "Date Modified": "2019-03-11T05:00:27Z", + "Date Added": "2019-03-11T05:00:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "70", + "Play Date": "3765359633", + "Play Date UTC": "2023-04-26T10:13:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "D\u00fdr\u00f0 \u00cd Dau\u00f0a\u00fe\u00f6gn", + "Sort Artist": "\u00c1sgeir", + "Sort Name": "Heimf\u00f6rin", + "Persistent ID": "C30F244AB1F602BC", + "Track Type": "Remote" + }, + { + "Track ID": "3313", + "Name": "Betray", + "Artist": "Son Lux", + "Album Artist": "Son Lux", + "Composer": "undef", + "Album": "At War With Walls & Mazes", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "11539409", + "Total Time": "305293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2008", + "Date Modified": "2019-03-11T08:16:22Z", + "Date Added": "2019-03-11T08:16:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "75", + "Play Date": "3760088532", + "Play Date UTC": "2023-02-24T10:02:12Z", + "Skip Count": "2", + "Skip Date": "2022-11-04T10:18:31Z", + "Release Date": "2008-02-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "At War With Walls & Mazes", + "Sort Artist": "Son Lux", + "Sort Name": "Betray", + "Persistent ID": "0EA28E1888690A27", + "Track Type": "Remote" + }, + { + "Track ID": "3315", + "Name": "Next Up Forever", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9186191", + "Total Time": "256547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-03-12T13:22:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3761049732", + "Play Date UTC": "2023-03-07T13:02:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Next Up Forever", + "Persistent ID": "ADD1026B69202014", + "Track Type": "Remote" + }, + { + "Track ID": "3317", + "Name": "Birthday Party", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met, Ryan Met, David Lynch & Peter Ivers", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7934791", + "Total Time": "223948", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-03-12T13:22:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781176964", + "Play Date UTC": "2023-10-26T11:56:04Z", + "Skip Count": "1", + "Skip Date": "2023-03-15T08:58:16Z", + "Release Date": "2019-03-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Birthday Party", + "Persistent ID": "A05D42B5ADF26D8D", + "Track Type": "Remote" + }, + { + "Track ID": "3319", + "Name": "Don't Throw out My Legos", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9037797", + "Total Time": "250839", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-03-12T13:22:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3767807947", + "Play Date UTC": "2023-05-24T18:19:07Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Don't Throw out My Legos", + "Persistent ID": "3B9FA14526E54C95", + "Track Type": "Remote" + }, + { + "Track ID": "3321", + "Name": "Break My Face", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8056782", + "Total Time": "226336", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-03-12T13:22:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3773531430", + "Play Date UTC": "2023-07-30T00:10:30Z", + "Skip Count": "1", + "Skip Date": "2022-08-10T18:37:10Z", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Break My Face", + "Persistent ID": "ED49DF0FB2F819E8", + "Track Type": "Remote" + }, + { + "Track ID": "3323", + "Name": "The Entertainment's Here", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6775234", + "Total Time": "187263", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-03-12T13:22:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3777375077", + "Play Date UTC": "2023-09-12T11:51:17Z", + "Skip Count": "4", + "Skip Date": "2023-10-17T09:56:19Z", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Entertainment's Here", + "Persistent ID": "6C80CE653379F408", + "Track Type": "Remote" + }, + { + "Track ID": "3325", + "Name": "Karma", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8685173", + "Total Time": "245270", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-03-12T13:22:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3783713796", + "Play Date UTC": "2023-11-24T20:36:36Z", + "Skip Count": "2", + "Skip Date": "2023-02-04T16:17:20Z", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Karma", + "Persistent ID": "5262CCF064D9C23A", + "Track Type": "Remote" + }, + { + "Track ID": "3327", + "Name": "Beats", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7281935", + "Total Time": "198572", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-03-12T13:22:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3766398464", + "Play Date UTC": "2023-05-08T10:47:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Beats", + "Persistent ID": "A4754CD720EE2B7E", + "Track Type": "Remote" + }, + { + "Track ID": "3329", + "Name": "Dear Winter", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6126855", + "Total Time": "168126", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-04-04T21:02:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3782885565", + "Play Date UTC": "2023-11-15T06:32:45Z", + "Skip Count": "5", + "Skip Date": "2023-07-01T05:11:22Z", + "Release Date": "2019-04-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Dear Winter", + "Persistent ID": "4F3DEE127164D0C0", + "Track Type": "Remote" + }, + { + "Track ID": "3331", + "Name": "Finale (Can't Wait to See What You Do Next)", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "Neotheater", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9730903", + "Total Time": "277718", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-03-12T13:22:35Z", + "Date Added": "2019-03-12T13:22:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3767784596", + "Play Date UTC": "2023-05-24T11:49:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Neotheater", + "Sort Artist": "AJR", + "Sort Name": "Finale (Can't Wait to See What You Do Next)", + "Persistent ID": "9427E3DA101685D7", + "Track Type": "Remote" + }, + { + "Track ID": "3333", + "Name": "The Blanket of Night", + "Artist": "Elbow", + "Album Artist": "Elbow", + "Composer": "Guy Garvey, Craig Potter, Mark Potter, Richard Jupp & Pete Turner", + "Album": "The Take Off and Landing of Everything", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9432733", + "Total Time": "262446", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2019-03-13T21:09:29Z", + "Date Added": "2019-03-13T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "63", + "Play Date": "3783769542", + "Play Date UTC": "2023-11-25T12:05:42Z", + "Skip Count": "3", + "Skip Date": "2020-03-17T04:41:45Z", + "Release Date": "2014-03-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Take Off and Landing of Everything", + "Sort Artist": "Elbow", + "Sort Name": "Blanket of Night", + "Persistent ID": "73247B22410AB9B6", + "Track Type": "Remote" + }, + { + "Track ID": "3335", + "Name": "21 Gun Salute", + "Artist": "Half Moon Run", + "Album Artist": "Half Moon Run", + "Composer": "Half Moon Run, Devon Portielje, Conner Molander & Dylan Phillips", + "Album": "Dark Eyes", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10640201", + "Total Time": "292409", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2012", + "Date Modified": "2019-03-15T04:53:05Z", + "Date Added": "2019-03-15T04:53:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "79", + "Play Date": "3782476012", + "Play Date UTC": "2023-11-10T12:46:52Z", + "Skip Count": "1", + "Skip Date": "2022-10-09T16:04:15Z", + "Release Date": "2012-03-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dark Eyes", + "Sort Artist": "Half Moon Run", + "Sort Name": "21 Gun Salute", + "Persistent ID": "ABAB99F8D964C42A", + "Track Type": "Remote" + }, + { + "Track ID": "3337", + "Name": "Cali", + "Artist": "Lay Coast", + "Album Artist": "Lay Coast", + "Composer": "undef", + "Album": "Cali - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7135630", + "Total Time": "203632", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780845174", + "Play Date UTC": "2023-10-22T15:46:14Z", + "Skip Count": "1", + "Skip Date": "2022-10-09T16:15:30Z", + "Release Date": "2016-02-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cali - Single", + "Sort Artist": "Lay Coast", + "Sort Name": "Cali", + "Persistent ID": "EAB2E8B71F77E30E", + "Track Type": "Remote" + }, + { + "Track ID": "3339", + "Name": "The Adventures of Larry and Tina", + "Artist": "Wax and EOM", + "Album Artist": "Wax and EOM", + "Composer": "undef", + "Album": "Liquid Courage", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10387467", + "Total Time": "300480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2008", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3783753850", + "Play Date UTC": "2023-11-25T07:44:10Z", + "Skip Count": "2", + "Skip Date": "2019-04-02T04:30:05Z", + "Release Date": "2008-11-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Liquid Courage", + "Sort Artist": "Wax and EOM", + "Sort Name": "Adventures of Larry and Tina", + "Persistent ID": "4D6C5E673D78CE97", + "Track Type": "Remote" + }, + { + "Track ID": "3341", + "Name": "Green", + "Artist": "Eventide", + "Album Artist": "Eventide", + "Composer": "undef", + "Album": "Swells EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7035782", + "Total Time": "197042", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2014", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3770985279", + "Play Date UTC": "2023-06-30T12:54:39Z", + "Skip Count": "1", + "Skip Date": "2022-03-15T05:26:38Z", + "Release Date": "2014-06-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Swells EP", + "Sort Artist": "Eventide", + "Sort Name": "Green", + "Persistent ID": "A169A3D38FA0C9B8", + "Track Type": "Remote" + }, + { + "Track ID": "3343", + "Name": "ain't trippin", + "Artist": "blackbear", + "Album Artist": "blackbear", + "Composer": "Nic-Nac", + "Album": "deadroses", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6645748", + "Total Time": "185556", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3782885960", + "Play Date UTC": "2023-11-15T06:39:20Z", + "Skip Count": "1", + "Skip Date": "2019-03-21T07:35:17Z", + "Release Date": "2015-02-14T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "deadroses", + "Sort Artist": "blackbear", + "Sort Name": "ain't trippin", + "Persistent ID": "7E3FB0F01E64C384", + "Track Type": "Remote" + }, + { + "Track ID": "3345", + "Name": "Ya Know (feat. The Internet)", + "Artist": "Odd Future", + "Album Artist": "Odd Future", + "Composer": "Hal Williams, Matthew Martin & Sydney Bennett", + "Album": "The OF Tape, Vol. 2", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8969297", + "Total Time": "240733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2012", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3760000055", + "Play Date UTC": "2023-02-23T09:27:35Z", + "Skip Count": "2", + "Skip Date": "2022-04-23T20:29:33Z", + "Release Date": "2012-03-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "OF Tape, Vol. 2", + "Sort Artist": "Odd Future", + "Sort Name": "Ya Know (feat. The Internet)", + "Persistent ID": "CDD1F34F95F5059E", + "Track Type": "Remote" + }, + { + "Track ID": "3347", + "Name": "It's Pretty When You Cry", + "Artist": "Anthro Beats", + "Album Artist": "Anthro Beats", + "Composer": "undef", + "Album": "If Tomorrow Never Comes", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8025820", + "Total Time": "226250", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2014", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3767701794", + "Play Date UTC": "2023-05-23T12:49:54Z", + "Skip Count": "1", + "Skip Date": "2019-03-26T09:43:48Z", + "Release Date": "2014-12-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "If Tomorrow Never Comes", + "Sort Artist": "Anthro Beats", + "Sort Name": "It's Pretty When You Cry", + "Persistent ID": "1433E57379AD44ED", + "Track Type": "Remote" + }, + { + "Track ID": "3349", + "Name": "No Help Needed", + "Artist": "Hippie Sabotage", + "Album Artist": "Hippie Sabotage", + "Composer": "0", + "Album": "Vacants (Deluxe Edition)", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7234405", + "Total Time": "202475", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "23", + "Year": "2014", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3781450518", + "Play Date UTC": "2023-10-29T15:55:18Z", + "Skip Count": "2", + "Skip Date": "2023-03-24T20:54:07Z", + "Release Date": "2014-09-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Vacants (Deluxe Edition)", + "Sort Artist": "Hippie Sabotage", + "Sort Name": "No Help Needed", + "Persistent ID": "B630FE5EA7C3CACD", + "Track Type": "Remote" + }, + { + "Track ID": "3351", + "Name": "We (feat. CeeLo Green)", + "Artist": "Mac Miller", + "Album Artist": "Mac Miller", + "Composer": "Adam Feeney, Malcolm McCormick, Stephen Bruner & Thomas Callaway", + "Album": "The Divine Feminine", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "11326552", + "Total Time": "319273", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2016", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3769952925", + "Play Date UTC": "2023-06-18T14:08:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-19T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divine Feminine", + "Sort Artist": "Mac Miller", + "Sort Name": "We (feat. CeeLo Green)", + "Persistent ID": "B0FDCD920135CC8C", + "Track Type": "Remote" + }, + { + "Track ID": "3353", + "Name": "Lean On", + "Artist": "Eli Sostre", + "Album Artist": "Eli Sostre", + "Composer": "undef", + "Album": "Still up All Night", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4983959", + "Total Time": "141333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "115", + "Play Date": "3773850047", + "Play Date UTC": "2023-08-02T16:40:47Z", + "Skip Count": "2", + "Skip Date": "2019-05-01T06:06:44Z", + "Release Date": "2016-08-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Still up All Night", + "Sort Artist": "Eli Sostre", + "Sort Name": "Lean On", + "Persistent ID": "966A948FC3545190", + "Track Type": "Remote" + }, + { + "Track ID": "3355", + "Name": "I'm Going (feat. Ben West)", + "Artist": "Fredo Santana", + "Album Artist": "Fredo Santana", + "Composer": "undef", + "Album": "Ain't No Money Like Trap Money, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8692048", + "Total Time": "254545", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "15", + "Year": "2015", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3779898098", + "Play Date UTC": "2023-10-11T16:41:38Z", + "Skip Count": "1", + "Skip Date": "2019-03-19T14:31:36Z", + "Release Date": "2015-05-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ain't No Money Like Trap Money, Vol. 1", + "Sort Artist": "Fredo Santana", + "Sort Name": "I'm Going (feat. Ben West)", + "Persistent ID": "3CD71B39BC60AAAD", + "Track Type": "Remote" + }, + { + "Track ID": "3357", + "Name": "Hollywood (feat. Safe)", + "Artist": "Nessly", + "Album Artist": "Nessly", + "Composer": "undef", + "Album": "Still Finessin'", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5804932", + "Total Time": "158447", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "65", + "Play Date": "3781620251", + "Play Date UTC": "2023-10-31T15:04:11Z", + "Skip Count": "2", + "Skip Date": "2023-03-13T15:39:41Z", + "Release Date": "2016-05-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Still Finessin'", + "Sort Artist": "Nessly", + "Sort Name": "Hollywood (feat. Safe)", + "Persistent ID": "3A63A48F4C091F8E", + "Track Type": "Remote" + }, + { + "Track ID": "3359", + "Name": "To the Moon", + "Artist": "Phora", + "Album Artist": "Phora", + "Composer": "Adrian Velasquez, Alex Isley, Anthony Ruiz & Marco Archer", + "Album": "Yours Truly Forever", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8975692", + "Total Time": "252320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "16", + "Year": "2017", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "61", + "Play Date": "3783779702", + "Play Date UTC": "2023-11-25T14:55:02Z", + "Skip Count": "1", + "Skip Date": "2019-03-19T14:29:59Z", + "Release Date": "2017-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Yours Truly Forever", + "Sort Artist": "Phora", + "Sort Name": "To the Moon", + "Persistent ID": "728B7A3EAABE918F", + "Track Type": "Remote" + }, + { + "Track ID": "3361", + "Name": "Enemy", + "Artist": "Eddie Zuko", + "Album Artist": "Eddie Zuko", + "Composer": "Eddie Zuko", + "Album": "Enemy - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5278378", + "Total Time": "145848", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3781192994", + "Play Date UTC": "2023-10-26T16:23:14Z", + "Skip Count": "2", + "Skip Date": "2019-03-25T16:43:22Z", + "Release Date": "2017-04-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Enemy - Single", + "Sort Artist": "Eddie Zuko", + "Sort Name": "Enemy", + "Persistent ID": "5FCE1F3F2CD3744D", + "Track Type": "Remote" + }, + { + "Track ID": "3363", + "Name": "September", + "Artist": "Shotta Spence", + "Album Artist": "Shotta Spence", + "Composer": "Spencer David Lee & Von Vuai", + "Album": "Upfall", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11826557", + "Total Time": "343864", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "15", + "Year": "2016", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3768298949", + "Play Date UTC": "2023-05-30T10:42:29Z", + "Skip Count": "1", + "Skip Date": "2019-03-18T10:45:20Z", + "Release Date": "2016-07-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Upfall", + "Sort Artist": "Shotta Spence", + "Sort Name": "September", + "Persistent ID": "28CBA951D929A413", + "Track Type": "Remote" + }, + { + "Track ID": "3365", + "Name": "Brother", + "Artist": "\u00a1MAYDAY!", + "Album Artist": "\u00a1MAYDAY!", + "Composer": "\u00a1MAYDAY!", + "Album": "Future Vintage", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7265580", + "Total Time": "203424", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "19", + "Year": "2015", + "Date Modified": "2019-03-17T17:59:28Z", + "Date Added": "2019-03-17T17:59:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3779701941", + "Play Date UTC": "2023-10-09T10:12:21Z", + "Skip Count": "3", + "Skip Date": "2020-11-08T07:00:38Z", + "Release Date": "2015-09-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Future Vintage", + "Sort Artist": "\u00a1MAYDAY!", + "Sort Name": "Brother", + "Persistent ID": "F3301845961539CD", + "Track Type": "Remote" + }, + { + "Track ID": "3367", + "Name": "Solo", + "Artist": "Frank Ocean", + "Album Artist": "Frank Ocean", + "Composer": "undef", + "Album": "Blonde", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9270235", + "Total Time": "257380", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2019-03-17T17:59:29Z", + "Date Added": "2019-03-17T17:59:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3783769820", + "Play Date UTC": "2023-11-25T12:10:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-20T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blonde", + "Sort Artist": "Frank Ocean", + "Sort Name": "Solo", + "Persistent ID": "EBDEEB7CC28C7F74", + "Track Type": "Remote" + }, + { + "Track ID": "3369", + "Name": "Autograph", + "Artist": "Ye Ali", + "Album Artist": "Ye Ali", + "Composer": "Yusuf Ali", + "Album": "TrapHouse Jodeci", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9782497", + "Total Time": "279353", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2019-03-17T17:59:29Z", + "Date Added": "2019-03-17T17:59:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3764051725", + "Play Date UTC": "2023-04-11T06:55:25Z", + "Skip Count": "1", + "Skip Date": "2021-03-06T13:44:44Z", + "Release Date": "2016-09-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TrapHouse Jodeci", + "Sort Artist": "Ye Ali", + "Sort Name": "Autograph", + "Persistent ID": "304FEE3DD72A8CEF", + "Track Type": "Remote" + }, + { + "Track ID": "3371", + "Name": "Only 19", + "Artist": "R.Chris", + "Album Artist": "R.Chris", + "Composer": "Christian Ruiz", + "Album": "Vibes - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "6927466", + "Total Time": "191007", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2019-03-17T17:59:29Z", + "Date Added": "2019-03-17T17:59:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3643454956", + "Play Date UTC": "2019-06-15T11:49:16Z", + "Skip Count": "2", + "Skip Date": "2019-03-24T19:29:02Z", + "Release Date": "2017-01-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Vibes - EP", + "Sort Artist": "R.Chris", + "Sort Name": "Only 19", + "Persistent ID": "B5BDA12316E09C0A", + "Track Type": "Remote" + }, + { + "Track ID": "3373", + "Name": "The Formula", + "Artist": "Russ", + "Album Artist": "Russ", + "Composer": "undef", + "Album": "The Formula - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5941257", + "Total Time": "166348", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2019-03-17T17:59:29Z", + "Date Added": "2019-03-17T17:59:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "125", + "Play Date": "3780497077", + "Play Date UTC": "2023-10-18T15:04:37Z", + "Skip Count": "5", + "Skip Date": "2022-05-28T12:53:10Z", + "Release Date": "2015-11-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "2193", + "Sort Album": "Formula - Single", + "Sort Artist": "Russ", + "Sort Name": "Formula", + "Persistent ID": "207B8E1DE7B4F922", + "Track Type": "Remote" + }, + { + "Track ID": "3375", + "Name": "Enjoyed Your Bud", + "Artist": "Afroman", + "Album Artist": "Afroman", + "Composer": "Joseph Foreman & John P Randall", + "Album": "Marijuana Music", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "15761509", + "Total Time": "461662", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "17", + "Year": "2013", + "Date Modified": "2019-03-17T17:59:29Z", + "Date Added": "2019-03-17T17:59:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3766061264", + "Play Date UTC": "2023-05-04T13:07:44Z", + "Skip Count": "6", + "Skip Date": "2023-03-15T18:50:41Z", + "Release Date": "2013-07-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marijuana Music", + "Sort Artist": "Afroman", + "Sort Name": "Enjoyed Your Bud", + "Persistent ID": "268B86CC35FD24B1", + "Track Type": "Remote" + }, + { + "Track ID": "3377", + "Name": "Better Hope", + "Artist": "Felix Snow & Wintertime", + "Album Artist": "Felix Snow & Wintertime", + "Composer": "Felix Snow & T'ziah Roy", + "Album": "No Winter Without Snow - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6368835", + "Total Time": "175775", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-03-17T17:59:29Z", + "Date Added": "2019-03-17T17:59:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "235", + "Play Date": "3779902746", + "Play Date UTC": "2023-10-11T17:59:06Z", + "Skip Count": "11", + "Skip Date": "2021-09-14T18:52:32Z", + "Release Date": "2017-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Winter Without Snow - EP", + "Sort Artist": "Felix Snow & Wintertime", + "Sort Name": "Better Hope", + "Persistent ID": "326C41D6BFCB4F60", + "Track Type": "Remote" + }, + { + "Track ID": "3379", + "Name": "You Might Find Yours", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "You Might Find Yours - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "5312651", + "Total Time": "151028", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-03-21T16:21:17Z", + "Date Added": "2019-03-21T16:21:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3783762752", + "Play Date UTC": "2023-11-25T10:12:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "You Might Find Yours - Single", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "You Might Find Yours", + "Persistent ID": "A98F1A7F64D76676", + "Track Type": "Remote" + }, + { + "Track ID": "3381", + "Name": "I Like Girls (feat. Lil Skies)", + "Artist": "PnB Rock", + "Album Artist": "PnB Rock", + "Composer": "Rakim Hasheem Allen, Christian Ward, Kimetrius Foose, James Foye III, Austin Owens, Michael Williams, Ib Kornum & Lars Stagis", + "Album": "I Like Girls (feat. Lil Skies) - Single", + "Genre": "\u0425\u0438\u043f-\u0445\u043e\u043f/\u0440\u044d\u043f", + "Kind": "Apple Music AAC audio file", + "Size": "5649419", + "Total Time": "155093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-03-23T20:06:51Z", + "Date Added": "2019-03-23T20:06:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "243", + "Play Date": "3783780426", + "Play Date UTC": "2023-11-25T15:07:06Z", + "Skip Count": "7", + "Skip Date": "2021-11-04T17:22:27Z", + "Release Date": "2019-03-20T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "I Like Girls (feat. Lil Skies) - Single", + "Sort Artist": "PnB Rock", + "Sort Name": "I Like Girls (feat. Lil Skies)", + "Persistent ID": "D1E1DF36AA7CF8DA", + "Track Type": "Remote" + }, + { + "Track ID": "3383", + "Name": "Broken Romance (feat. Lexi the Lexiconist)", + "Artist": "mac moon", + "Album Artist": "mac moon", + "Composer": "Justin Mcguinness", + "Album": "Broken Romance (feat. Lexi the Lexiconist) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5982696", + "Total Time": "165731", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-03-30T20:00:16Z", + "Date Added": "2019-03-30T20:00:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "101", + "Play Date": "3760286032", + "Play Date UTC": "2023-02-26T16:53:52Z", + "Skip Count": "4", + "Skip Date": "2021-02-01T20:51:46Z", + "Release Date": "2019-02-08T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Broken Romance (feat. Lexi the Lexiconist) - Single", + "Sort Artist": "mac moon", + "Sort Name": "Broken Romance (feat. Lexi the Lexiconist)", + "Persistent ID": "7FC183EE75DB52B3", + "Track Type": "Remote" + }, + { + "Track ID": "3385", + "Name": "My Neighbor Is a Drug Dealer", + "Artist": "Beagles", + "Album Artist": "Beagles", + "Composer": "undef", + "Album": "Beagles", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7795875", + "Total Time": "187283", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "8", + "Year": "2016", + "Date Modified": "2019-03-31T21:48:40Z", + "Date Added": "2019-03-31T21:48:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3781353038", + "Play Date UTC": "2023-10-28T12:50:38Z", + "Skip Count": "2", + "Skip Date": "2021-02-06T21:04:53Z", + "Release Date": "2016-06-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Beagles", + "Sort Artist": "Beagles", + "Sort Name": "My Neighbor Is a Drug Dealer", + "Persistent ID": "0012C3BE9D6081D9", + "Track Type": "Remote" + }, + { + "Track ID": "3387", + "Name": "Black Guitar", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino & Amedeo Pace", + "Album": "Penny Sparkle", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11142474", + "Total Time": "319627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2010", + "Date Modified": "2019-04-02T12:53:19Z", + "Date Added": "2019-04-02T12:53:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3783771247", + "Play Date UTC": "2023-11-25T12:34:07Z", + "Skip Count": "2", + "Skip Date": "2021-07-09T18:12:35Z", + "Release Date": "2010-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Penny Sparkle", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Black Guitar", + "Persistent ID": "0B3FE2A33CF51078", + "Track Type": "Remote" + }, + { + "Track ID": "3389", + "Name": "used to", + "Artist": "Josh Golden", + "Album Artist": "Josh Golden", + "Composer": "Keith Varon & Joshua Lewis Golden", + "Album": "used to - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6583725", + "Total Time": "181090", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-04-03T04:49:33Z", + "Date Added": "2019-04-03T04:49:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3761759517", + "Play Date UTC": "2023-03-15T18:11:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-10-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "used to - Single", + "Sort Artist": "Josh Golden", + "Sort Name": "used to", + "Persistent ID": "F310C1D59926A70C", + "Track Type": "Remote" + }, + { + "Track ID": "3391", + "Name": "Louis V. Lover", + "Artist": "Felix Snow & Wintertime", + "Album Artist": "Felix Snow & Wintertime", + "Composer": "Felix Snow & T'ziah Roy", + "Album": "No Winter Without Snow - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4928119", + "Total Time": "128640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-04-03T14:32:31Z", + "Date Added": "2019-04-03T14:32:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3773534339", + "Play Date UTC": "2023-07-30T00:58:59Z", + "Skip Count": "3", + "Skip Date": "2022-11-21T06:24:55Z", + "Release Date": "2017-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Winter Without Snow - EP", + "Sort Artist": "Felix Snow & Wintertime", + "Sort Name": "Louis V. Lover", + "Persistent ID": "C8F1C4BD1626F523", + "Track Type": "Remote" + }, + { + "Track ID": "3393", + "Name": "Real Deal Freestyle", + "Artist": "Felix Snow & Wintertime", + "Album Artist": "Felix Snow & Wintertime", + "Composer": "Felix Snow & T'ziah Roy", + "Album": "No Winter Without Snow - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5126839", + "Total Time": "134563", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-04-03T22:13:26Z", + "Date Added": "2019-04-03T22:13:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3771044602", + "Play Date UTC": "2023-07-01T05:23:22Z", + "Skip Count": "1", + "Skip Date": "2022-12-16T09:39:47Z", + "Release Date": "2017-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Winter Without Snow - EP", + "Sort Artist": "Felix Snow & Wintertime", + "Sort Name": "Real Deal Freestyle", + "Persistent ID": "0E382F924EFBF10D", + "Track Type": "Remote" + }, + { + "Track ID": "3395", + "Name": "In My Bag", + "Artist": "Felix Snow & Wintertime", + "Album Artist": "Felix Snow & Wintertime", + "Composer": "Felix Snow & T'ziah Roy", + "Album": "No Winter Without Snow - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6553079", + "Total Time": "181748", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-04-03T22:13:34Z", + "Date Added": "2019-04-03T22:13:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3779319378", + "Play Date UTC": "2023-10-04T23:56:18Z", + "Skip Count": "2", + "Skip Date": "2023-02-08T15:37:43Z", + "Release Date": "2017-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Winter Without Snow - EP", + "Sort Artist": "Felix Snow & Wintertime", + "Sort Name": "In My Bag", + "Persistent ID": "6473C96CBBB3B25F", + "Track Type": "Remote" + }, + { + "Track ID": "3397", + "Name": "Slide Thru", + "Artist": "Felix Snow & Wintertime", + "Album Artist": "Felix Snow & Wintertime", + "Composer": "Felix Snow & T'ziah Roy", + "Album": "No Winter Without Snow - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7665276", + "Total Time": "210796", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-04-03T22:13:34Z", + "Date Added": "2019-04-03T22:13:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3781618112", + "Play Date UTC": "2023-10-31T14:28:32Z", + "Skip Count": "2", + "Skip Date": "2023-10-25T09:18:50Z", + "Release Date": "2017-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Winter Without Snow - EP", + "Sort Artist": "Felix Snow & Wintertime", + "Sort Name": "Slide Thru", + "Persistent ID": "80175920CBD5AACC", + "Track Type": "Remote" + }, + { + "Track ID": "3399", + "Name": "Winter Workout Plan", + "Artist": "Felix Snow & Wintertime", + "Album Artist": "Felix Snow & Wintertime", + "Composer": "Felix Snow & T'ziah Roy", + "Album": "No Winter Without Snow - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5422282", + "Total Time": "142826", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-04-03T22:13:34Z", + "Date Added": "2019-04-03T22:13:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3776230295", + "Play Date UTC": "2023-08-30T05:51:35Z", + "Skip Count": "1", + "Skip Date": "2022-07-14T15:25:09Z", + "Release Date": "2017-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Winter Without Snow - EP", + "Sort Artist": "Felix Snow & Wintertime", + "Sort Name": "Winter Workout Plan", + "Persistent ID": "27950F48A13A273D", + "Track Type": "Remote" + }, + { + "Track ID": "3401", + "Name": "What\u2019s Broken with You?", + "Artist": "Vaboh", + "Album Artist": "Vaboh", + "Composer": "Vaboh", + "Album": "What\u2019s Broken with You? - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5713812", + "Total Time": "157612", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-04-06T06:09:29Z", + "Date Added": "2019-04-06T06:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "58", + "Play Date": "3763643836", + "Play Date UTC": "2023-04-06T13:37:16Z", + "Skip Count": "2", + "Skip Date": "2021-02-12T05:45:19Z", + "Release Date": "2019-03-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "What\u2019s Broken with You? - Single", + "Sort Artist": "Vaboh", + "Sort Name": "What\u2019s Broken with You?", + "Persistent ID": "098DA5905AF0EBA1", + "Track Type": "Remote" + }, + { + "Track ID": "3403", + "Name": "Lester", + "Artist": "Dan & Drum", + "Album Artist": "Dan & Drum", + "Composer": "Dan & Drum", + "Album": "Growl Pop", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7970782", + "Total Time": "219928", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2019-04-07T13:19:48Z", + "Date Added": "2019-04-07T13:19:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3783666744", + "Play Date UTC": "2023-11-24T07:32:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Growl Pop", + "Sort Artist": "Dan & Drum", + "Sort Name": "Lester", + "Persistent ID": "FF3480029D1826B0", + "Track Type": "Remote" + }, + { + "Track ID": "3405", + "Name": "All We Are", + "Artist": "Andy Kong", + "Album Artist": "Andy Kong", + "Composer": "undef", + "Album": "Meteor Showers - EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "9808994", + "Total Time": "279876", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2015", + "Date Modified": "2019-04-08T09:22:06Z", + "Date Added": "2019-04-08T09:22:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3779631312", + "Play Date UTC": "2023-10-08T14:35:12Z", + "Skip Count": "1", + "Skip Date": "2022-11-16T06:02:42Z", + "Release Date": "2015-05-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Meteor Showers - EP", + "Sort Artist": "Andy Kong", + "Sort Name": "All We Are", + "Persistent ID": "78FB75E2C6322D2B", + "Track Type": "Remote" + }, + { + "Track ID": "3407", + "Name": "How It Is (feat. The Plug)", + "Artist": "Roddy Ricch, Chip & Yxng Bane", + "Album Artist": "Roddy Ricch, Chip & Yxng Bane", + "Composer": "undef", + "Album": "How It Is (feat. The Plug) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9663080", + "Total Time": "277551", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-04-12T11:43:38Z", + "Date Added": "2019-04-12T11:43:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "67", + "Play Date": "3781465364", + "Play Date UTC": "2023-10-29T20:02:44Z", + "Skip Count": "1", + "Skip Date": "2022-10-25T17:11:07Z", + "Release Date": "2019-02-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "How It Is (feat. The Plug) - Single", + "Sort Artist": "Roddy Ricch, Chip & Yxng Bane", + "Sort Name": "How It Is (feat. The Plug)", + "Persistent ID": "6A522398492BE452", + "Track Type": "Remote" + }, + { + "Track ID": "3409", + "Name": "Stray", + "Artist": "Grace VanderWaal", + "Album Artist": "Grace VanderWaal", + "Composer": "Grace VanderWaal", + "Album": "Stray - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6844602", + "Total Time": "190787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-04-14T14:40:52Z", + "Date Added": "2019-04-14T14:40:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3780191708", + "Play Date UTC": "2023-10-15T02:15:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-02-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stray - Single", + "Sort Artist": "Grace VanderWaal", + "Sort Name": "Stray", + "Persistent ID": "60BC7C27E28EBB16", + "Track Type": "Remote" + }, + { + "Track ID": "3411", + "Name": "Stay Up", + "Artist": "Eric Reprid", + "Album Artist": "Eric Reprid", + "Composer": "Shi Yi Liu", + "Album": "Stay Up - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5286057", + "Total Time": "141504", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-04-17T09:31:39Z", + "Date Added": "2019-04-17T09:31:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3767807064", + "Play Date UTC": "2023-05-24T18:04:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stay Up - Single", + "Sort Artist": "Eric Reprid", + "Sort Name": "Stay Up", + "Persistent ID": "8EDF785320453250", + "Track Type": "Remote" + }, + { + "Track ID": "3413", + "Name": "U & Us", + "Artist": "Quinn XCII", + "Album Artist": "Quinn XCII", + "Composer": "Mikael Temrowski, Imad Roy El-Amine, Roget Chahayed, Garrett Nash & Grant Yarber", + "Album": "From Michigan With Love", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7958447", + "Total Time": "226000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-04-17T09:47:09Z", + "Date Added": "2019-04-17T09:47:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3775566145", + "Play Date UTC": "2023-08-22T13:22:25Z", + "Skip Count": "1", + "Skip Date": "2022-11-10T13:15:03Z", + "Release Date": "2019-02-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "From Michigan With Love", + "Sort Artist": "Quinn XCII", + "Sort Name": "U & Us", + "Persistent ID": "754A25519CA31B3D", + "Track Type": "Remote" + }, + { + "Track ID": "3415", + "Name": "LUV ME", + "Artist": "Jay Prince", + "Album Artist": "Jay Prince", + "Composer": "Jazon Kawu-Eugenio", + "Album": "WONDER - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7176263", + "Total Time": "202293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2019-04-17T11:07:50Z", + "Date Added": "2019-04-17T11:07:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3770015472", + "Play Date UTC": "2023-06-19T07:31:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-01-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WONDER - EP", + "Sort Artist": "Jay Prince", + "Sort Name": "LUV ME", + "Persistent ID": "6D3560C44854B88F", + "Track Type": "Remote" + }, + { + "Track ID": "3417", + "Name": "Lucy", + "Artist": "Matt Easton", + "Album Artist": "Matt Easton", + "Composer": "Matt Easton", + "Album": "Lucy - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7665922", + "Total Time": "217500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-04-17T16:50:32Z", + "Date Added": "2019-04-17T16:50:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781062452", + "Play Date UTC": "2023-10-25T04:07:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lucy - Single", + "Sort Artist": "Matt Easton", + "Sort Name": "Lucy", + "Persistent ID": "D7B66168EF6E6646", + "Track Type": "Remote" + }, + { + "Track ID": "3419", + "Name": "Brother", + "Artist": "Matt Easton", + "Album Artist": "Matt Easton", + "Composer": "undef", + "Album": "The Phantom Image - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8768320", + "Total Time": "235998", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2015", + "Date Modified": "2019-04-17T17:20:53Z", + "Date Added": "2019-04-17T17:20:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3780850271", + "Play Date UTC": "2023-10-22T17:11:11Z", + "Skip Count": "2", + "Skip Date": "2022-08-19T16:08:24Z", + "Release Date": "2015-05-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Phantom Image - EP", + "Sort Artist": "Matt Easton", + "Sort Name": "Brother", + "Persistent ID": "C8CDC7789E8C64EF", + "Track Type": "Remote" + }, + { + "Track ID": "3421", + "Name": "Glisten", + "Artist": "Mwk", + "Album Artist": "Mwk", + "Composer": "Dylan MCD", + "Album": "Glisten - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5185134", + "Total Time": "141000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-04-17T17:23:37Z", + "Date Added": "2019-04-17T17:23:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "72", + "Play Date": "3781317815", + "Play Date UTC": "2023-10-28T03:03:35Z", + "Skip Count": "4", + "Skip Date": "2022-09-17T05:41:38Z", + "Release Date": "2019-02-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Glisten - Single", + "Sort Artist": "Mwk", + "Sort Name": "Glisten", + "Persistent ID": "A9C9703327BA1A78", + "Track Type": "Remote" + }, + { + "Track ID": "3423", + "Name": "Amerika", + "Artist": "Young the Giant", + "Album Artist": "Young the Giant", + "Composer": "Eric Cannata, Francois Comtois, Jacob Tilley, Payam Doostzadeh & Sameer Gadhia", + "Album": "Home of the Strange", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8802090", + "Total Time": "240240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2019-04-17T17:25:57Z", + "Date Added": "2019-04-17T17:25:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3761722705", + "Play Date UTC": "2023-03-15T07:58:25Z", + "Skip Count": "2", + "Skip Date": "2022-11-02T14:31:21Z", + "Release Date": "2016-04-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Home of the Strange", + "Sort Artist": "Young the Giant", + "Sort Name": "Amerika", + "Persistent ID": "619B44EE573E4405", + "Track Type": "Remote" + }, + { + "Track ID": "3425", + "Name": "Something to Believe In (Live Acoustic)", + "Artist": "Young the Giant", + "Album Artist": "Young the Giant", + "Composer": "Alex Salibian, Eric Cannata, Francois Comtois, Jacob Tilley, Payam Doostzadeh & Sameer Gadhia", + "Album": "Something to Believe In (Live Acoustic) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7949827", + "Total Time": "224400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2019-04-17T17:26:13Z", + "Date Added": "2019-04-17T17:26:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3779697458", + "Play Date UTC": "2023-10-09T08:57:38Z", + "Skip Count": "1", + "Skip Date": "2022-07-16T13:53:41Z", + "Release Date": "2016-08-26T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Something to Believe In (Live Acoustic) - Single", + "Sort Artist": "Young the Giant", + "Sort Name": "Something to Believe In (Live Acoustic)", + "Persistent ID": "AA317921D6349129", + "Track Type": "Remote" + }, + { + "Track ID": "3427", + "Name": "Roy G. Rainbows", + "Artist": "Matt Easton", + "Album Artist": "Matt Easton", + "Composer": "Matt Easton & Timothy P. Sullivan", + "Album": "Roy G. Rainbows - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8322128", + "Total Time": "235745", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-04-17T17:44:16Z", + "Date Added": "2019-04-17T17:44:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3783678602", + "Play Date UTC": "2023-11-24T10:50:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-05-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Roy G. Rainbows - Single", + "Sort Artist": "Matt Easton", + "Sort Name": "Roy G. Rainbows", + "Persistent ID": "DD0176FB610845E7", + "Track Type": "Remote" + }, + { + "Track ID": "3429", + "Name": "San Clemente Glass House", + "Artist": "Matt Easton", + "Album Artist": "Matt Easton", + "Composer": "undef", + "Album": "San Clemente Glass House - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "10855676", + "Total Time": "312115", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-04-18T05:27:35Z", + "Date Added": "2019-04-18T05:27:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3770624681", + "Play Date UTC": "2023-06-26T08:44:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-06-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "San Clemente Glass House - Single", + "Sort Artist": "Matt Easton", + "Sort Name": "San Clemente Glass House", + "Persistent ID": "72AAAE70A9C50964", + "Track Type": "Remote" + }, + { + "Track ID": "3431", + "Name": "bad guy", + "Artist": "Billie Eilish", + "Album Artist": "Billie Eilish", + "Composer": "FINNEAS & Billie Eilish", + "Album": "WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7204218", + "Total Time": "194088", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2019-04-18T08:12:03Z", + "Date Added": "2019-04-18T08:12:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3777373404", + "Play Date UTC": "2023-09-12T11:23:24Z", + "Skip Count": "5", + "Skip Date": "2022-08-19T16:11:17Z", + "Release Date": "2019-03-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?", + "Sort Artist": "Billie Eilish", + "Sort Name": "bad guy", + "Persistent ID": "95B423119490A067", + "Track Type": "Remote" + }, + { + "Track ID": "3433", + "Name": "Nonstop", + "Artist": "Drake", + "Album Artist": "Drake", + "Composer": "A. Graham, B. / Chambers & D. Wilson", + "Album": "Scorpion", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8484864", + "Total Time": "238613", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2019-04-18T08:30:47Z", + "Date Added": "2019-04-18T08:30:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3783402993", + "Play Date UTC": "2023-11-21T06:16:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scorpion", + "Sort Artist": "Drake", + "Sort Name": "Nonstop", + "Persistent ID": "11CE5F9E597F70A7", + "Track Type": "Remote" + }, + { + "Track ID": "3435", + "Name": "Talk", + "Artist": "Khalid", + "Album Artist": "Khalid", + "Composer": "Khalid Robinson, Howard Lawrence & Guy Lawrence", + "Album": "Free Spirit", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7147644", + "Total Time": "197573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-04-18T12:20:14Z", + "Date Added": "2019-04-18T12:20:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3773127756", + "Play Date UTC": "2023-07-25T08:02:36Z", + "Skip Count": "1", + "Skip Date": "2019-05-01T14:37:06Z", + "Release Date": "2019-02-09T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Free Spirit", + "Sort Artist": "Khalid", + "Sort Name": "Talk", + "Persistent ID": "5FBF8045E0AA1172", + "Track Type": "Remote" + }, + { + "Track ID": "3437", + "Name": "Murder on My Mind", + "Artist": "YNW Melly", + "Album Artist": "YNW Melly", + "Composer": "undef", + "Album": "I Am You", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9537248", + "Total Time": "268434", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "15", + "Year": "2017", + "Date Modified": "2019-04-19T17:12:50Z", + "Date Added": "2019-04-19T17:12:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "135", + "Play Date": "3783771721", + "Play Date UTC": "2023-11-25T12:42:01Z", + "Skip Count": "4", + "Skip Date": "2021-01-25T11:38:51Z", + "Release Date": "2017-10-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Am You", + "Sort Artist": "YNW Melly", + "Sort Name": "Murder on My Mind", + "Persistent ID": "672769B53BFFE88E", + "Track Type": "Remote" + }, + { + "Track ID": "3439", + "Name": "Aint Goin Back", + "Artist": "Russ", + "Album Artist": "Russ", + "Composer": "Russell Vitale", + "Album": "Aint Goin Back - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6132847", + "Total Time": "170270", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-04-20T06:36:52Z", + "Date Added": "2019-04-20T06:36:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3766771079", + "Play Date UTC": "2023-05-12T18:17:59Z", + "Skip Count": "4", + "Skip Date": "2022-12-05T21:45:53Z", + "Release Date": "2019-03-26T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Aint Goin Back - Single", + "Sort Artist": "Russ", + "Sort Name": "Aint Goin Back", + "Persistent ID": "6C84B391C0369661", + "Track Type": "Remote" + }, + { + "Track ID": "3441", + "Name": "Drip Too Hard", + "Artist": "Lil Baby & Gunna", + "Album Artist": "Lil Baby & Gunna", + "Composer": "Dominique Jones, Sergio Kitchens & Chandler Durham", + "Album": "Drip Harder", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5428386", + "Total Time": "145543", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-04-20T19:46:45Z", + "Date Added": "2019-04-20T19:46:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3781435362", + "Play Date UTC": "2023-10-29T11:42:42Z", + "Skip Count": "2", + "Skip Date": "2021-05-30T21:00:59Z", + "Release Date": "2018-09-12T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drip Harder", + "Sort Artist": "Lil Baby & Gunna", + "Sort Name": "Drip Too Hard", + "Persistent ID": "7ECFA74BC47D921D", + "Track Type": "Remote" + }, + { + "Track ID": "3443", + "Name": "HEY CHILD", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Andrew Wells, Casey Harris, Sam Nelson Harris & Adam Levin", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7406427", + "Total Time": "208653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2019-04-20T20:49:22Z", + "Date Added": "2019-04-20T20:49:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3770356804", + "Play Date UTC": "2023-06-23T06:20:04Z", + "Skip Count": "2", + "Skip Date": "2019-06-16T12:30:54Z", + "Release Date": "2019-04-19T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "HEY CHILD", + "Persistent ID": "5667BEDEE89079D4", + "Track Type": "Remote" + }, + { + "Track ID": "3445", + "Name": "Bad Husband (feat. X Ambassadors)", + "Artist": "Eminem", + "Album Artist": "Eminem", + "Composer": "Marshall Mathers", + "Album": "Revival", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10167682", + "Total Time": "287893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "19", + "Year": "2017", + "Date Modified": "2019-04-21T08:38:15Z", + "Date Added": "2019-04-21T08:38:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3773761664", + "Play Date UTC": "2023-08-01T16:07:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Revival", + "Sort Artist": "Eminem", + "Sort Name": "Bad Husband (feat. X Ambassadors)", + "Persistent ID": "F375EECB43649C2C", + "Track Type": "Remote" + }, + { + "Track ID": "3447", + "Name": "DEUTSCHLAND", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "11642783", + "Total Time": "323031", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-04-22T12:13:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783766739", + "Play Date UTC": "2023-11-25T11:18:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-28T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "DEUTSCHLAND", + "Persistent ID": "4914DA0829EF2FA5", + "Track Type": "Remote" + }, + { + "Track ID": "3449", + "Name": "RADIO", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9745004", + "Total Time": "277397", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-04-25T21:26:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3782381339", + "Play Date UTC": "2023-11-09T10:28:59Z", + "Skip Count": "1", + "Skip Date": "2022-10-22T09:10:38Z", + "Release Date": "2019-04-26T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "RADIO", + "Persistent ID": "D8F3B6CBA7CF4525", + "Track Type": "Remote" + }, + { + "Track ID": "3451", + "Name": "ZEIG DICH", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9406896", + "Total Time": "255845", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-05-16T21:09:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3782383561", + "Play Date UTC": "2023-11-09T11:06:01Z", + "Skip Count": "1", + "Skip Date": "2020-01-29T10:38:24Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "ZEIG DICH", + "Persistent ID": "B659B6A198BE6DA6", + "Track Type": "Remote" + }, + { + "Track ID": "3453", + "Name": "AUSL\u00c4NDER", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8258147", + "Total Time": "231603", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-05-16T21:44:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3782381062", + "Play Date UTC": "2023-11-09T10:24:22Z", + "Skip Count": "2", + "Skip Date": "2022-06-01T08:15:38Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "AUSL\u00c4NDER", + "Persistent ID": "176B08F63BE6658C", + "Track Type": "Remote" + }, + { + "Track ID": "3455", + "Name": "SEX", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8427156", + "Total Time": "236529", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-05-16T21:09:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3782383990", + "Play Date UTC": "2023-11-09T11:13:10Z", + "Skip Count": "1", + "Skip Date": "2022-05-18T11:28:24Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "SEX", + "Persistent ID": "CCD454376E25BE24", + "Track Type": "Remote" + }, + { + "Track ID": "3457", + "Name": "PUPPE", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9732773", + "Total Time": "273707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-05-16T21:09:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3782385497", + "Play Date UTC": "2023-11-09T11:38:17Z", + "Skip Count": "1", + "Skip Date": "2022-02-14T16:43:51Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "PUPPE", + "Persistent ID": "FA82DDF5F259D342", + "Track Type": "Remote" + }, + { + "Track ID": "3459", + "Name": "WAS ICH LIEBE", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9569073", + "Total Time": "269046", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-05-16T21:09:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783679616", + "Play Date UTC": "2023-11-24T11:06:56Z", + "Skip Count": "1", + "Skip Date": "2022-11-09T14:46:54Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "WAS ICH LIEBE", + "Persistent ID": "30D188EA7399FDEC", + "Track Type": "Remote" + }, + { + "Track ID": "3461", + "Name": "DIAMANT", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "5580822", + "Total Time": "154299", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-05-16T21:09:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3782386151", + "Play Date UTC": "2023-11-09T11:49:11Z", + "Skip Count": "1", + "Skip Date": "2021-02-28T00:22:39Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "DIAMANT", + "Persistent ID": "76DC72A07B249CD4", + "Track Type": "Remote" + }, + { + "Track ID": "3463", + "Name": "TATTOO", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8794394", + "Total Time": "251659", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-05-16T21:09:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3782814450", + "Play Date UTC": "2023-11-14T10:47:30Z", + "Skip Count": "1", + "Skip Date": "2022-02-26T18:30:43Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "TATTOO", + "Persistent ID": "58BC23F53A769548", + "Track Type": "Remote" + }, + { + "Track ID": "3465", + "Name": "HALLOMANN", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "RAMMSTEIN", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9080777", + "Total Time": "251634", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-04-22T12:13:50Z", + "Date Added": "2019-05-16T21:09:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3782389088", + "Play Date UTC": "2023-11-09T12:38:08Z", + "Skip Count": "2", + "Skip Date": "2022-02-09T11:09:01Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "HALLOMANN", + "Persistent ID": "1133716A9E417A5D", + "Track Type": "Remote" + }, + { + "Track ID": "3467", + "Name": "Antidote", + "Artist": "TYLERxCORDY", + "Album Artist": "TYLERxCORDY", + "Composer": "Tyler Cordy & Dan Edinberg", + "Album": "Antidote - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6495873", + "Total Time": "174375", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-04-26T11:39:18Z", + "Date Added": "2019-04-26T11:39:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "70", + "Play Date": "3782901515", + "Play Date UTC": "2023-11-15T10:58:35Z", + "Skip Count": "2", + "Skip Date": "2022-09-30T16:10:29Z", + "Release Date": "2019-03-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Antidote - Single", + "Sort Artist": "TYLERxCORDY", + "Sort Name": "Antidote", + "Persistent ID": "0D6F9B64C01B34E5", + "Track Type": "Remote" + }, + { + "Track ID": "3469", + "Name": "Cute", + "Artist": "Cyrus", + "Album Artist": "Cyrus", + "Composer": "Cyrus", + "Album": "Cute - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11249661", + "Total Time": "321649", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-04-26T11:45:18Z", + "Date Added": "2019-04-26T11:45:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "55", + "Play Date": "3781062774", + "Play Date UTC": "2023-10-25T04:12:54Z", + "Skip Count": "1", + "Skip Date": "2023-02-07T12:17:13Z", + "Release Date": "2019-03-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cute - Single", + "Sort Artist": "Cyrus", + "Sort Name": "Cute", + "Persistent ID": "68001B4DFCA6A4F0", + "Track Type": "Remote" + }, + { + "Track ID": "3471", + "Name": "Whippin (feat. Felix Snow)", + "Artist": "Kiiara", + "Album Artist": "Kiiara", + "Composer": "David Singer-Vine, Felix Snow, Jonathan Adam Mills, Kiiara Saulters & Kurtis Mckenzie", + "Album": "Whippin (feat. Felix Snow) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5846575", + "Total Time": "160597", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2019-04-29T10:26:21Z", + "Date Added": "2019-04-29T10:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "77", + "Play Date": "3776433384", + "Play Date UTC": "2023-09-01T14:16:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Whippin (feat. Felix Snow) - Single", + "Sort Artist": "Kiiara", + "Sort Name": "Whippin (feat. Felix Snow)", + "Persistent ID": "AAAC6BE0273F079C", + "Track Type": "Remote" + }, + { + "Track ID": "3473", + "Name": "Wonderful Life", + "Artist": "Katie Melua", + "Album Artist": "Katie Melua", + "Composer": "Colin Vearncombe", + "Album": "Wonderful Life - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8543328", + "Total Time": "247153", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2014", + "Date Modified": "2019-05-02T05:05:46Z", + "Date Added": "2019-05-02T05:05:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780837275", + "Play Date UTC": "2023-10-22T13:34:35Z", + "Skip Count": "1", + "Skip Date": "2021-04-03T13:56:12Z", + "Release Date": "2014-11-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wonderful Life - Single", + "Sort Artist": "Katie Melua", + "Sort Name": "Wonderful Life", + "Persistent ID": "2947565BF7408822", + "Track Type": "Remote" + }, + { + "Track ID": "3475", + "Name": "Caffeine", + "Artist": "Lolo Zoua\u00ef", + "Album Artist": "Lolo Zoua\u00ef", + "Composer": "Lolo Zoua\u00ef & Stelios Phili", + "Album": "High Highs to Low Lows", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5784331", + "Total Time": "159733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-05-03T07:31:14Z", + "Date Added": "2019-05-03T07:31:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "110", + "Play Date": "3776618901", + "Play Date UTC": "2023-09-03T17:48:21Z", + "Skip Count": "6", + "Skip Date": "2022-10-09T15:30:55Z", + "Release Date": "2019-04-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "High Highs to Low Lows", + "Sort Artist": "Lolo Zoua\u00ef", + "Sort Name": "Caffeine", + "Persistent ID": "589E22E1DD15C708", + "Track Type": "Remote" + }, + { + "Track ID": "3477", + "Name": "1000 Backyard Pools", + "Artist": "Harry Teardrop", + "Album Artist": "Harry Teardrop", + "Composer": "Harry Teardrop, Drake Li & James Ivy", + "Album": "1000 Backyard Pools - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7177273", + "Total Time": "191750", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2019", + "Date Modified": "2019-05-03T09:49:02Z", + "Date Added": "2019-05-03T09:49:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3781319247", + "Play Date UTC": "2023-10-28T03:27:27Z", + "Skip Count": "1", + "Skip Date": "2022-04-23T19:21:27Z", + "Release Date": "2019-05-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "1000 Backyard Pools - EP", + "Sort Artist": "Harry Teardrop", + "Sort Name": "1000 Backyard Pools", + "Persistent ID": "A4FEE881C2D3B1FD", + "Track Type": "Remote" + }, + { + "Track ID": "3479", + "Name": "Sober", + "Artist": "WESLEY", + "Album Artist": "WESLEY", + "Composer": "Wesley Stromberg, Dan Whittemore, Roland Spreckley & WESLEY", + "Album": "Sober - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6077713", + "Total Time": "169076", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-05-05T09:04:12Z", + "Date Added": "2019-05-05T09:04:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "70", + "Play Date": "3780760673", + "Play Date UTC": "2023-10-21T16:17:53Z", + "Skip Count": "5", + "Skip Date": "2021-09-07T06:34:32Z", + "Release Date": "2019-02-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sober - Single", + "Sort Artist": "WESLEY", + "Sort Name": "Sober", + "Persistent ID": "CE6439E4A9807977", + "Track Type": "Remote" + }, + { + "Track ID": "3481", + "Name": "The Bird", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "SYML", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9668559", + "Total Time": "274355", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-05-05T15:16:06Z", + "Date Added": "2019-05-05T15:16:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "100", + "Play Date": "3781573675", + "Play Date UTC": "2023-10-31T02:07:55Z", + "Skip Count": "11", + "Skip Date": "2023-09-28T13:29:35Z", + "Release Date": "2019-05-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "SYML", + "Sort Artist": "SYML", + "Sort Name": "Bird", + "Persistent ID": "59A96FF8E4B7D14C", + "Track Type": "Remote" + }, + { + "Track ID": "3483", + "Name": "Carefree", + "Artist": "RINI", + "Album Artist": "RINI", + "Composer": "undef", + "Album": "Rini", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7390414", + "Total Time": "216000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2017", + "Date Modified": "2019-05-05T16:07:13Z", + "Date Added": "2019-05-05T16:07:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3760421653", + "Play Date UTC": "2023-02-28T06:34:13Z", + "Skip Count": "3", + "Skip Date": "2023-10-26T16:20:40Z", + "Release Date": "2017-05-25T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rini", + "Sort Artist": "RINI", + "Sort Name": "Carefree", + "Persistent ID": "74AB65D29DBFCED1", + "Track Type": "Remote" + }, + { + "Track ID": "3485", + "Name": "World Wide Web", + "Artist": "Danger Incorporated", + "Album Artist": "Danger Incorporated", + "Composer": "Austin Peacock & Keeling Thompson", + "Album": "World Wide Web - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6759439", + "Total Time": "183004", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2016", + "Date Modified": "2019-05-05T16:19:10Z", + "Date Added": "2019-05-05T16:19:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "96", + "Play Date": "3766691620", + "Play Date UTC": "2023-05-11T20:13:40Z", + "Skip Count": "3", + "Skip Date": "2022-11-16T20:29:10Z", + "Release Date": "2016-10-31T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "World Wide Web - EP", + "Sort Artist": "Danger Incorporated", + "Sort Name": "World Wide Web", + "Persistent ID": "C71722318966FF45", + "Track Type": "Remote" + }, + { + "Track ID": "3487", + "Name": "Us and Them", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Us and Them - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6913462", + "Total Time": "196517", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2019-05-07T06:24:51Z", + "Date Added": "2019-05-07T06:24:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3783692682", + "Play Date UTC": "2023-11-24T14:44:42Z", + "Skip Count": "2", + "Skip Date": "2019-06-26T13:56:24Z", + "Release Date": "2019-04-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Us and Them - Single", + "Sort Artist": "Derek Pope", + "Sort Name": "Us and Them", + "Persistent ID": "EDF7AAE7343F348C", + "Track Type": "Remote" + }, + { + "Track ID": "3489", + "Name": "GoldenEye", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "GoldenEye - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7070223", + "Total Time": "200000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-05-07T06:26:11Z", + "Date Added": "2019-05-07T06:26:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3767805065", + "Play Date UTC": "2023-05-24T17:31:05Z", + "Skip Count": "2", + "Skip Date": "2021-02-01T20:49:10Z", + "Release Date": "2017-08-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "GoldenEye - Single", + "Sort Artist": "Derek Pope", + "Sort Name": "GoldenEye", + "Persistent ID": "BBA57BA5F47A0B7D", + "Track Type": "Remote" + }, + { + "Track ID": "3491", + "Name": "Forget It (feat. Oliver Tree)", + "Artist": "Getter", + "Album Artist": "Getter", + "Composer": "undef", + "Album": "Radical Dude! - EP", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "7460792", + "Total Time": "212632", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2016", + "Date Modified": "2019-05-07T20:26:35Z", + "Date Added": "2019-05-07T20:26:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3780686481", + "Play Date UTC": "2023-10-20T19:41:21Z", + "Skip Count": "1", + "Skip Date": "2022-07-24T14:21:14Z", + "Release Date": "2016-03-11T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Radical Dude! - EP", + "Sort Artist": "Getter", + "Sort Name": "Forget It (feat. Oliver Tree)", + "Persistent ID": "818FE754D4992519", + "Track Type": "Remote" + }, + { + "Track ID": "3493", + "Name": "Enemy", + "Artist": "Oliver Tree & Whethan", + "Album Artist": "Oliver Tree", + "Composer": "Ethan Snoreck & Oliver Tree Nickell", + "Album": "Alien Boy - EP", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "4275872", + "Total Time": "114313", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-05-07T20:31:54Z", + "Date Added": "2019-05-07T20:31:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3663147047", + "Play Date UTC": "2020-01-29T09:50:47Z", + "Skip Count": "2", + "Skip Date": "2019-05-17T07:37:58Z", + "Release Date": "2017-09-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Alien Boy - EP", + "Sort Artist": "Oliver Tree & Whethan", + "Sort Name": "Enemy", + "Persistent ID": "4451296930A1A430", + "Track Type": "Remote" + }, + { + "Track ID": "3495", + "Name": "Sleep Deprived", + "Artist": "Vaboh", + "Album Artist": "Vaboh", + "Composer": "Vaboh", + "Album": "How to Be Happy - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5185183", + "Total Time": "140322", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2019", + "Date Modified": "2019-05-11T09:56:33Z", + "Date Added": "2019-05-11T09:56:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "149", + "Play Date": "3782992840", + "Play Date UTC": "2023-11-16T12:20:40Z", + "Skip Count": "10", + "Skip Date": "2022-03-15T18:00:48Z", + "Release Date": "2019-04-19T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "How to Be Happy - Single", + "Sort Artist": "Vaboh", + "Sort Name": "Sleep Deprived", + "Persistent ID": "6ED03B36C0A18C9B", + "Track Type": "Remote" + }, + { + "Track ID": "3497", + "Name": "I Met a Witch In the Woods", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "undef", + "Album": "I Met a Witch In the Woods - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "4924103", + "Total Time": "134192", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-05-11T13:01:08Z", + "Date Added": "2019-05-11T13:01:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3734258401", + "Play Date UTC": "2022-05-01T11:00:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-10-10T00:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Met a Witch In the Woods - Single", + "Sort Artist": "$uicideboy$", + "Sort Name": "I Met a Witch In the Woods", + "Persistent ID": "5D04B86399F6A4F2", + "Track Type": "Remote" + }, + { + "Track ID": "3499", + "Name": "Mistakes Before I\u2019m Gone", + "Artist": "Vaboh", + "Album Artist": "Vaboh", + "Composer": "Vaboh", + "Album": "Mistakes Before I\u2019m Gone - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4902452", + "Total Time": "132414", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-05-12T08:24:04Z", + "Date Added": "2019-05-12T08:24:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3781615139", + "Play Date UTC": "2023-10-31T13:38:59Z", + "Skip Count": "4", + "Skip Date": "2021-12-08T22:25:44Z", + "Release Date": "2018-04-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mistakes Before I\u2019m Gone - Single", + "Sort Artist": "Vaboh", + "Sort Name": "Mistakes Before I\u2019m Gone", + "Persistent ID": "40A65ADEEC895E1A", + "Track Type": "Remote" + }, + { + "Track ID": "3501", + "Name": "Walk It Talk It (feat. Drake)", + "Artist": "Migos", + "Album Artist": "Migos", + "Composer": "Quavious Marshall, Kiari Cephus, Kirsnick Ball, Aubrey Graham, OG Parker & Jerel", + "Album": "Culture II", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9693961", + "Total Time": "276147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "24", + "Year": "2018", + "Date Modified": "2019-05-14T07:05:42Z", + "Date Added": "2019-05-14T07:05:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3781185368", + "Play Date UTC": "2023-10-26T14:16:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-01-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Culture II", + "Sort Artist": "Migos", + "Sort Name": "Walk It Talk It (feat. Drake)", + "Persistent ID": "11895D979BBDAB8A", + "Track Type": "Remote" + }, + { + "Track ID": "3503", + "Name": "Versace (feat. Drake) [Remix]", + "Artist": "Migos", + "Album Artist": "Migos", + "Composer": "undef", + "Album": "Versace (feat. Drake) [Remix] - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8780201", + "Total Time": "246047", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2013", + "Date Modified": "2019-05-14T09:39:58Z", + "Date Added": "2019-05-14T09:39:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3775819211", + "Play Date UTC": "2023-08-25T11:40:11Z", + "Skip Count": "3", + "Skip Date": "2023-05-30T05:55:15Z", + "Release Date": "2013-06-22T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "4508", + "Sort Album": "Versace (feat. Drake) [Remix] - Single", + "Sort Artist": "Migos", + "Sort Name": "Versace (feat. Drake) [Remix]", + "Persistent ID": "2D6DBF407A9611C7", + "Track Type": "Remote" + }, + { + "Track ID": "3505", + "Name": "Small Conversations at Parties", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "The Introverted Socialite", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9080538", + "Total Time": "257015", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "7", + "Year": "2016", + "Date Modified": "2019-05-14T15:51:48Z", + "Date Added": "2019-05-14T15:51:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "58", + "Play Date": "3762757987", + "Play Date UTC": "2023-03-27T07:33:07Z", + "Skip Count": "3", + "Skip Date": "2019-05-20T05:43:42Z", + "Release Date": "2016-12-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Introverted Socialite", + "Sort Artist": "Derek Pope", + "Sort Name": "Small Conversations at Parties", + "Persistent ID": "595FF575A338C9D3", + "Track Type": "Remote" + }, + { + "Track ID": "3507", + "Name": "Ski Mask (feat. Los & Sahtyre)", + "Artist": "Atlantic Haze", + "Album Artist": "Atlantic Haze", + "Composer": "undef", + "Album": "Ski Mask (feat. Los & Sahtyre) - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6000249", + "Total Time": "162500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2019-05-15T04:17:30Z", + "Date Added": "2019-05-15T04:17:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781058715", + "Play Date UTC": "2023-10-25T03:05:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-07-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ski Mask (feat. Los & Sahtyre) - Single", + "Sort Artist": "Atlantic Haze", + "Sort Name": "Ski Mask (feat. Los & Sahtyre)", + "Persistent ID": "AD157EE7313453A6", + "Track Type": "Remote" + }, + { + "Track ID": "3509", + "Name": "147Am", + "Artist": "mac moon", + "Album Artist": "mac moon", + "Composer": "Justin Mcguinness", + "Album": "147Am - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3293645", + "Total Time": "83204", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-05-17T07:41:19Z", + "Date Added": "2019-05-17T07:41:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781165567", + "Play Date UTC": "2023-10-26T08:46:07Z", + "Skip Count": "1", + "Skip Date": "2019-05-23T05:10:29Z", + "Release Date": "2019-02-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "147Am - Single", + "Sort Artist": "mac moon", + "Sort Name": "147Am", + "Persistent ID": "7CA4E26488008746", + "Track Type": "Remote" + }, + { + "Track ID": "3511", + "Name": "Baptize Me", + "Artist": "X Ambassadors & Jacob Banks", + "Album Artist": "Various Artists", + "Composer": "Sam Harris, Casey Harris, Eric Frederic & Adam Levin", + "Album": "For the Throne (Music Inspired by the HBO Series Game of Thrones)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7832091", + "Total Time": "217933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2019-05-18T07:26:05Z", + "Date Added": "2019-05-18T07:26:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3783663943", + "Play Date UTC": "2023-11-24T06:45:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "For the Throne (Music Inspired by the HBO Series Game of Thrones)", + "Sort Artist": "X Ambassadors & Jacob Banks", + "Sort Name": "Baptize Me", + "Persistent ID": "CBBCB2982F365F59", + "Track Type": "Remote" + }, + { + "Track ID": "3513", + "Name": "Drown", + "Artist": "Andru", + "Album Artist": "Andru", + "Composer": "undef", + "Album": "The Negative Ep", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7303118", + "Total Time": "204465", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "8", + "Year": "2015", + "Date Modified": "2019-05-20T04:55:21Z", + "Date Added": "2019-05-20T04:55:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3770104051", + "Play Date UTC": "2023-06-20T08:07:31Z", + "Skip Count": "2", + "Skip Date": "2021-10-25T13:53:01Z", + "Release Date": "2015-05-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Negative Ep", + "Sort Artist": "Andru", + "Sort Name": "Drown", + "Persistent ID": "FFAE6018B3D3B0F3", + "Track Type": "Remote" + }, + { + "Track ID": "3515", + "Name": "monsoon", + "Artist": "Hippo Campus", + "Album Artist": "Hippo Campus", + "Composer": "Nathen Stocker, Whistler Allen, Jake Luppen & Zach Sutton", + "Album": "landmark", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8338472", + "Total Time": "222820", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2016", + "Date Modified": "2019-05-20T07:48:01Z", + "Date Added": "2019-05-20T07:48:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3762588180", + "Play Date UTC": "2023-03-25T08:23:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-11-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "landmark", + "Sort Artist": "Hippo Campus", + "Sort Name": "monsoon", + "Persistent ID": "629191D54CBD83F4", + "Track Type": "Remote" + }, + { + "Track ID": "3517", + "Name": "heavy snow", + "Artist": "Christian French", + "Album Artist": "Christian French", + "Composer": "Christian Blake French", + "Album": "heavy snow - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7788735", + "Total Time": "221360", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-05-24T19:05:23Z", + "Date Added": "2019-05-24T19:05:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3783767130", + "Play Date UTC": "2023-11-25T11:25:30Z", + "Skip Count": "1", + "Skip Date": "2019-06-02T06:38:55Z", + "Release Date": "2019-03-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "heavy snow - Single", + "Sort Artist": "Christian French", + "Sort Name": "heavy snow", + "Persistent ID": "6FD1D891F9C7B30F", + "Track Type": "Remote" + }, + { + "Track ID": "3519", + "Name": "Us vs the World", + "Artist": "ilyTOMMY", + "Album Artist": "ilyTOMMY", + "Composer": "Tommelik Ward", + "Album": "Us vs the World - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4680913", + "Total Time": "122253", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-05-24T19:06:18Z", + "Date Added": "2019-05-24T19:06:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3767610645", + "Play Date UTC": "2023-05-22T11:30:45Z", + "Skip Count": "3", + "Skip Date": "2022-09-14T10:13:53Z", + "Release Date": "2019-03-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Us vs the World - Single", + "Sort Artist": "ilyTOMMY", + "Sort Name": "Us vs the World", + "Persistent ID": "93322BE6F783A44E", + "Track Type": "Remote" + }, + { + "Track ID": "3521", + "Name": "Gone (feat. Trevor Daniel)", + "Artist": "sober rob", + "Album Artist": "sober rob", + "Composer": "Robert Connelly, Alex Dowbnia & Trevor Daniel", + "Album": "Reset", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6834565", + "Total Time": "190163", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2019-05-25T10:09:02Z", + "Date Added": "2019-05-25T10:09:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3779899499", + "Play Date UTC": "2023-10-11T17:04:59Z", + "Skip Count": "3", + "Skip Date": "2022-06-21T04:58:29Z", + "Release Date": "2019-04-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reset", + "Sort Artist": "sober rob", + "Sort Name": "Gone (feat. Trevor Daniel)", + "Persistent ID": "160E1BED71DD767C", + "Track Type": "Remote" + }, + { + "Track ID": "3523", + "Name": "Backdrop", + "Artist": "Ngahere Wafer", + "Album Artist": "Ngahere Wafer", + "Composer": "Thomas Williams & Ngahere Wafer", + "Album": "Backdrop - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6106160", + "Total Time": "173871", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-05-25T10:54:24Z", + "Date Added": "2019-05-25T10:54:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3778766450", + "Play Date UTC": "2023-09-28T14:20:50Z", + "Skip Count": "1", + "Skip Date": "2021-10-06T21:53:43Z", + "Release Date": "2019-04-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Backdrop - Single", + "Sort Artist": "Ngahere Wafer", + "Sort Name": "Backdrop", + "Persistent ID": "5ACE08B4E8089029", + "Track Type": "Remote" + }, + { + "Track ID": "3525", + "Name": "Six Feet Under", + "Artist": "Billie Eilish", + "Album Artist": "Billie Eilish", + "Composer": "FINNEAS", + "Album": "Six Feet Under - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6962618", + "Total Time": "189613", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2019-05-26T07:04:27Z", + "Date Added": "2019-05-26T07:04:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3783402461", + "Play Date UTC": "2023-11-21T06:07:41Z", + "Skip Count": "1", + "Skip Date": "2020-04-18T11:12:13Z", + "Release Date": "2016-06-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Six Feet Under - Single", + "Sort Artist": "Billie Eilish", + "Sort Name": "Six Feet Under", + "Persistent ID": "B11C5B388CFF95F9", + "Track Type": "Remote" + }, + { + "Track ID": "3527", + "Name": "Iscariot", + "Artist": "WALK THE MOON", + "Album Artist": "WALK THE MOON", + "Composer": "Nicholas Petricca", + "Album": "Walk the Moon (Expanded Edition)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11266011", + "Total Time": "322640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2012", + "Date Modified": "2019-05-26T10:52:52Z", + "Date Added": "2019-05-26T10:52:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3781393901", + "Play Date UTC": "2023-10-29T00:11:41Z", + "Skip Count": "2", + "Skip Date": "2022-06-21T05:06:02Z", + "Release Date": "2012-06-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Walk the Moon (Expanded Edition)", + "Sort Artist": "WALK THE MOON", + "Sort Name": "Iscariot", + "Persistent ID": "EC2051EF5D1040A4", + "Track Type": "Remote" + }, + { + "Track ID": "3529", + "Name": "HOLD YOU DOWN", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Malay Ho, Sam Harris, Casey Harris, Adam Levin, Eric Frederic & Jacob Kasher Hindlin", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7068950", + "Total Time": "197933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": -1, + "Year": "2019", + "Date Modified": "2019-05-31T19:50:58Z", + "Date Added": "2019-05-31T19:50:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781052675", + "Play Date UTC": "2023-10-25T01:24:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "HOLD YOU DOWN", + "Persistent ID": "4D6EAEEEE9036CC3", + "Track Type": "Remote" + }, + { + "Track ID": "3531", + "Name": "New Ones (feat. NoCap)", + "Artist": "Quando Rondo", + "Album Artist": "Quando Rondo", + "Composer": "undef", + "Album": "From the Neighborhood to the Stage", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6446447", + "Total Time": "178449", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2019-05-31T20:16:38Z", + "Date Added": "2019-05-31T20:16:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3773530686", + "Play Date UTC": "2023-07-29T23:58:06Z", + "Skip Count": "4", + "Skip Date": "2022-09-09T14:50:48Z", + "Release Date": "2019-05-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "From the Neighborhood to the Stage", + "Sort Artist": "Quando Rondo", + "Sort Name": "New Ones (feat. NoCap)", + "Persistent ID": "C15191CCBD1BBEB9", + "Track Type": "Remote" + }, + { + "Track ID": "3533", + "Name": "Hyrule Temple", + "Artist": "bbno$ & DJ Yung Vamp", + "Album Artist": "bbno$ & DJ Yung Vamp", + "Composer": "Alexander Gumuchian", + "Album": "Hyrule Temple - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6378308", + "Total Time": "177231", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-06-01T02:24:06Z", + "Date Added": "2019-06-01T02:24:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3762836354", + "Play Date UTC": "2023-03-28T05:19:14Z", + "Skip Count": "4", + "Skip Date": "2023-10-12T22:27:26Z", + "Release Date": "2019-03-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hyrule Temple - Single", + "Sort Artist": "bbno$ & DJ Yung Vamp", + "Sort Name": "Hyrule Temple", + "Persistent ID": "33C32634BC5EAC70", + "Track Type": "Remote" + }, + { + "Track ID": "3535", + "Name": "Sunlight", + "Artist": "Nick Murphy", + "Album Artist": "Nick Murphy", + "Composer": "Dave Harrington & Nick Murphy", + "Album": "Run Fast Sleep Naked", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7598307", + "Total Time": "211563", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-01T07:12:15Z", + "Date Added": "2019-06-01T07:12:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3783354396", + "Play Date UTC": "2023-11-20T16:46:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Run Fast Sleep Naked", + "Sort Artist": "Nick Murphy", + "Sort Name": "Sunlight", + "Persistent ID": "BA183ACCC58201E1", + "Track Type": "Remote" + }, + { + "Track ID": "3537", + "Name": "Honest", + "Artist": "K.A.A.N., Bleverly Hills & Dem Jointz", + "Album Artist": "K.A.A.N., Bleverly Hills & Dem Jointz", + "Composer": "Courtney Blevins, Dwayne Allen Abernathy Jr & Brandon Perry", + "Album": "Gathering", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7585367", + "Total Time": "209917", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2019", + "Date Modified": "2019-06-01T15:54:21Z", + "Date Added": "2019-06-01T15:54:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3770190402", + "Play Date UTC": "2023-06-21T08:06:42Z", + "Skip Count": "2", + "Skip Date": "2022-10-16T07:45:56Z", + "Release Date": "2019-03-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gathering", + "Sort Artist": "K.A.A.N., Bleverly Hills & Dem Jointz", + "Sort Name": "Honest", + "Persistent ID": "C35BB84DAFFFAA9A", + "Track Type": "Remote" + }, + { + "Track ID": "3539", + "Name": "minimal", + "Artist": "ROLE MODEL", + "Album Artist": "ROLE MODEL", + "Composer": "Tucker Pillsbury", + "Album": "minimal - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5944462", + "Total Time": "163340", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-06-01T16:44:30Z", + "Date Added": "2019-06-01T16:44:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3782978420", + "Play Date UTC": "2023-11-16T08:20:20Z", + "Skip Count": "3", + "Skip Date": "2023-06-16T13:03:27Z", + "Release Date": "2019-05-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "minimal - Single", + "Sort Artist": "ROLE MODEL", + "Sort Name": "minimal", + "Persistent ID": "158C5868FD4550E8", + "Track Type": "Remote" + }, + { + "Track ID": "3541", + "Name": "Times New Roman", + "Artist": "Sean McVerry", + "Album Artist": "Sean McVerry", + "Composer": "undef", + "Album": "Times New Roman - Single", + "Genre": "Pop", + "Kind": "AAC audio file", + "Size": "7586394", + "Total Time": "204048", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-06-01T18:23:12Z", + "Date Added": "2019-06-01T18:23:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3752138577", + "Play Date UTC": "2022-11-24T09:42:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Times New Roman - Single", + "Sort Artist": "Sean McVerry", + "Sort Name": "Times New Roman", + "Persistent ID": "B03C48D88A8802E9", + "Track Type": "Remote" + }, + { + "Track ID": "3543", + "Name": "Living Wrong (feat. Glc & Nico Segal)", + "Artist": "The O'My's", + "Album Artist": "The O'My's", + "Composer": "undef", + "Album": "Chicago Style", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "12287631", + "Total Time": "357695", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "7", + "Year": "2012", + "Date Modified": "2019-06-03T06:34:53Z", + "Date Added": "2019-06-03T06:34:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781318372", + "Play Date UTC": "2023-10-28T03:12:52Z", + "Skip Count": "4", + "Skip Date": "2022-04-16T22:57:30Z", + "Release Date": "2012-09-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Chicago Style", + "Sort Artist": "O'My's", + "Sort Name": "O'My's", + "Persistent ID": "Living Wrong (feat. Glc & Nico Segal)", + "Track Type": "4B40B7BD95AF1D98" + }, + { + "Track ID": "3545", + "Name": "I Loved You", + "Artist": "iLoveMakonnen", + "Album Artist": "iLoveMakonnen", + "Composer": "iLoveMakonnen", + "Album": "I LOVE MAKONNEN 2", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "12047831", + "Total Time": "346700", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "7", + "Year": "2015", + "Date Modified": "2019-06-03T07:36:27Z", + "Date Added": "2019-06-03T07:36:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3773820617", + "Play Date UTC": "2023-08-02T08:30:17Z", + "Skip Count": "1", + "Skip Date": "2019-06-03T10:43:44Z", + "Release Date": "2015-11-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I LOVE MAKONNEN 2", + "Sort Artist": "iLoveMakonnen", + "Sort Name": "I Loved You", + "Persistent ID": "BB0D4F5B1F9FA13C", + "Track Type": "Remote" + }, + { + "Track ID": "3547", + "Name": "Walking Down the Line", + "Artist": "Kids These Days", + "Album Artist": "Kids These Days", + "Composer": "Erin Stewart, John Paul Floyd, Nicolas Segal, Rajiv Halim, Victor Mensah, Liam Cunningham & Lane Beckstrom,Greg Landfair Jr", + "Album": "Hard Times - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9489596", + "Total Time": "264192", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2011", + "Date Modified": "2019-06-03T09:45:54Z", + "Date Added": "2019-06-03T09:45:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3771825015", + "Play Date UTC": "2023-07-10T06:10:15Z", + "Skip Count": "1", + "Skip Date": "2021-06-18T19:35:47Z", + "Release Date": "2011-06-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hard Times - EP", + "Sort Artist": "Kids These Days", + "Sort Name": "Walking Down the Line", + "Persistent ID": "150CBEBBDB44A956", + "Track Type": "Remote" + }, + { + "Track ID": "3549", + "Name": "Adolescent", + "Artist": "Andru", + "Album Artist": "Andru", + "Composer": "undef", + "Album": "The Negative Ep", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7455618", + "Total Time": "212014", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "8", + "Year": "2015", + "Date Modified": "2019-06-03T10:53:46Z", + "Date Added": "2019-06-03T10:53:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3770358662", + "Play Date UTC": "2023-06-23T06:51:02Z", + "Skip Count": "6", + "Skip Date": "2022-08-06T11:03:18Z", + "Release Date": "2015-05-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Negative Ep", + "Sort Artist": "Andru", + "Sort Name": "Adolescent", + "Persistent ID": "1527B118BAF3841A", + "Track Type": "Remote" + }, + { + "Track ID": "3551", + "Name": "Old Town Road (feat. Billy Ray Cyrus) [Remix]", + "Artist": "Lil Nas X", + "Album Artist": "Lil Nas X", + "Composer": "Billy Ray Cyrus, Montero Lamar Hill, Michael Trent Reznor, Atticus Matthew Ross & Jocelyn Donald", + "Album": "Old Town Road (feat. Billy Ray Cyrus) [Remix] - Single", + "Genre": "Country", + "Kind": "Apple Music AAC audio file", + "Size": "5779303", + "Total Time": "157067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-06-03T10:57:10Z", + "Date Added": "2019-06-03T10:57:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3782982014", + "Play Date UTC": "2023-11-16T09:20:14Z", + "Skip Count": "3", + "Skip Date": "2022-04-23T21:00:19Z", + "Release Date": "2019-04-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Old Town Road (feat. Billy Ray Cyrus) [Remix] - Single", + "Sort Artist": "Lil Nas X", + "Sort Name": "Old Town Road (feat. Billy Ray Cyrus) [Remix]", + "Persistent ID": "DD86B6238E61DFB4", + "Track Type": "Remote" + }, + { + "Track ID": "3553", + "Name": "Billie Jean$", + "Artist": "Drippetrippe", + "Album Artist": "Drippetrippe", + "Composer": "Drippetrippe & Lamarcus Walker", + "Album": "Billie Jean$ - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5539069", + "Total Time": "150465", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-06-03T10:59:24Z", + "Date Added": "2019-06-03T10:59:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3781243040", + "Play Date UTC": "2023-10-27T06:17:20Z", + "Skip Count": "2", + "Skip Date": "2023-10-31T13:04:43Z", + "Release Date": "2019-05-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Billie Jean$ - Single", + "Sort Artist": "Drippetrippe", + "Sort Name": "Billie Jean$", + "Persistent ID": "A72F027E4A0A86D8", + "Track Type": "Remote" + }, + { + "Track ID": "3555", + "Name": "Old Town Road (feat. Billy Ray Cyrus)", + "Artist": "Lil Nas X", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "Hip-Hop/Rap", + "Kind": "MPEG-4 video file", + "Size": "68011152", + "Total Time": "308933", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2019", + "Date Modified": "2019-06-03T11:03:40Z", + "Date Added": "2019-06-03T11:03:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3738691545", + "Play Date UTC": "2022-06-21T18:25:45Z", + "Skip Count": "4", + "Skip Date": "2022-06-06T22:26:09Z", + "Release Date": "2019-05-17T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Lil Nas X", + "Sort Name": "Old Town Road (feat. Billy Ray Cyrus)", + "Persistent ID": "859A1E85A4C2BCFA", + "Track Type": "Remote" + }, + { + "Track ID": "3557", + "Name": "Kill Yourself (Part III)", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "My Liver Will Handle What My Heart Can't", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5407126", + "Total Time": "145078", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2019-06-04T14:25:33Z", + "Date Added": "2019-06-04T14:25:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3783453984", + "Play Date UTC": "2023-11-21T20:26:24Z", + "Skip Count": "1", + "Skip Date": "2022-01-03T18:35:04Z", + "Release Date": "2015-09-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "My Liver Will Handle What My Heart Can't", + "Sort Artist": "$uicideboy$", + "Sort Name": "Kill Yourself (Part III)", + "Persistent ID": "8E4703278B0EEE26", + "Track Type": "Remote" + }, + { + "Track ID": "3559", + "Name": "Killing 2 Birds with 22 Stones (feat. MUNKY)", + "Artist": "$uicideboy$ & Trais Barker", + "Album Artist": "$uicideboy$ & Travis Barker", + "Composer": "Aristos Petrou & Scott Arceneaux Jr.", + "Album": "Live Fast, Die Whenever - EP", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5256502", + "Total Time": "143259", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-06-04T14:56:58Z", + "Date Added": "2019-06-04T14:56:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3779864982", + "Play Date UTC": "2023-10-11T07:29:42Z", + "Skip Count": "1", + "Skip Date": "2022-11-29T16:10:30Z", + "Release Date": "2019-05-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Live Fast, Die Whenever - EP", + "Sort Artist": "$uicideboy$ & Trais Barker", + "Sort Name": "Killing 2 Birds with 22 Stones (feat. MUNKY)", + "Persistent ID": "DC50B5EF739C2632", + "Track Type": "Remote" + }, + { + "Track ID": "3561", + "Name": "Cool People In LA ---", + "Artist": "Bret James", + "Album Artist": "Bret James", + "Composer": "Bret Loehr", + "Album": "Cool - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8659021", + "Total Time": "243187", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2019", + "Date Modified": "2019-06-11T05:27:47Z", + "Date Added": "2019-06-11T05:27:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3783593747", + "Play Date UTC": "2023-11-23T11:15:47Z", + "Skip Count": "4", + "Skip Date": "2023-03-15T12:08:31Z", + "Release Date": "2019-04-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cool - EP", + "Sort Artist": "Bret James", + "Sort Name": "undef", + "Persistent ID": "FED3AC602B5C64A7", + "Track Type": "Remote" + }, + { + "Track ID": "3563", + "Name": "I Lost a Friend", + "Artist": "FINNEAS", + "Album Artist": "FINNEAS", + "Composer": "FINNEAS", + "Album": "I Lost a Friend - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8198066", + "Total Time": "237020", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-06-11T05:45:22Z", + "Date Added": "2019-06-11T05:45:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3783780664", + "Play Date UTC": "2023-11-25T15:11:04Z", + "Skip Count": "2", + "Skip Date": "2022-11-14T16:45:25Z", + "Release Date": "2019-05-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Lost a Friend - Single", + "Sort Artist": "FINNEAS", + "Sort Name": "I Lost a Friend", + "Persistent ID": "9154B7D78EEEAD59", + "Track Type": "Remote" + }, + { + "Track ID": "3565", + "Name": "CONFIDENCE (feat. K.Flay)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris, Adam Levine, Kristine Flaherty, Julian Gramma & Dylan Cleary Krell", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6408523", + "Total Time": "173373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-14T05:35:35Z", + "Date Added": "2019-06-14T05:35:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3767710845", + "Play Date UTC": "2023-05-23T15:20:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "CONFIDENCE (feat. K.Flay)", + "Persistent ID": "51F711222B087A1B", + "Track Type": "Remote" + }, + { + "Track ID": "3567", + "Name": "QUICKSAND", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris, Adam Levin, Jayson Dezuzio & Eric Frederic", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6774777", + "Total Time": "189827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-14T05:37:39Z", + "Date Added": "2019-06-14T05:37:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3772623634", + "Play Date UTC": "2023-07-19T12:00:34Z", + "Skip Count": "3", + "Skip Date": "2022-04-30T07:37:55Z", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "QUICKSAND", + "Persistent ID": "884EFE361DBDFB92", + "Track Type": "Remote" + }, + { + "Track ID": "3569", + "Name": "RULE", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris, Adam Levin & James Ho", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7404313", + "Total Time": "205960", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-14T06:22:25Z", + "Date Added": "2019-06-14T06:22:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3783694971", + "Play Date UTC": "2023-11-24T15:22:51Z", + "Skip Count": "1", + "Skip Date": "2022-04-16T22:56:01Z", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "RULE", + "Persistent ID": "30DF76BACC1D1327", + "Track Type": "Remote" + }, + { + "Track ID": "3571", + "Name": "HISTORY", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris & Adam Levin", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8966956", + "Total Time": "257680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-14T06:22:25Z", + "Date Added": "2019-06-14T06:22:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3781394492", + "Play Date UTC": "2023-10-29T00:21:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "HISTORY", + "Persistent ID": "AE2335FB2971DCBD", + "Track Type": "Remote" + }, + { + "Track ID": "3573", + "Name": "RECOVER", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris, Adam Levin, Eric Frederic & Justin Tranter", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7587689", + "Total Time": "212693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-14T06:22:25Z", + "Date Added": "2019-06-14T06:22:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3767798611", + "Play Date UTC": "2023-05-24T15:43:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "RECOVER", + "Persistent ID": "78708BD90225BEB6", + "Track Type": "Remote" + }, + { + "Track ID": "3575", + "Name": "WASTELAND", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris, Adam Levin & Eric Frederic", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6917882", + "Total Time": "188933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-14T06:22:25Z", + "Date Added": "2019-06-14T06:22:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3770534735", + "Play Date UTC": "2023-06-25T07:45:35Z", + "Skip Count": -1, + "Skip Date": "2022-10-09T16:15:09Z", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "WASTELAND", + "Persistent ID": "A6BB03B9BE130B49", + "Track Type": "Remote" + }, + { + "Track ID": "3577", + "Name": "SHADOWS", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris, Adam Levin, Eric Frederic, Emily Warren & Jayson Dezuzio", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6897146", + "Total Time": "194640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-14T06:22:25Z", + "Date Added": "2019-06-14T06:22:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3776170618", + "Play Date UTC": "2023-08-29T13:16:58Z", + "Skip Count": "4", + "Skip Date": "2022-07-15T10:33:55Z", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "SHADOWS", + "Persistent ID": "F58D0CA91F8CC61E", + "Track Type": "Remote" + }, + { + "Track ID": "3579", + "Name": "I DON\u2019T KNOW HOW TO PRAY", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris & Adam Levin", + "Album": "ORION", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4776583", + "Total Time": "133453", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-06-14T06:22:25Z", + "Date Added": "2019-06-14T06:22:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3775742783", + "Play Date UTC": "2023-08-24T14:26:23Z", + "Skip Count": "1", + "Skip Date": "2022-08-19T16:10:18Z", + "Release Date": "2019-06-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORION", + "Sort Artist": "X Ambassadors", + "Sort Name": "I DON\u2019T KNOW HOW TO PRAY", + "Persistent ID": "1A5132500FD64570", + "Track Type": "Remote" + }, + { + "Track ID": "3581", + "Name": "Make It Last", + "Artist": "Therr Maitz", + "Album Artist": "Therr Maitz", + "Composer": "undef", + "Album": "Unicorn", + "Genre": "Alternative", + "Kind": "MPEG-4 video file", + "Size": "44853112", + "Total Time": "198083", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "17", + "Year": "2015", + "Date Modified": "2019-06-14T06:24:48Z", + "Date Added": "2019-06-14T06:24:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3761061132", + "Play Date UTC": "2023-03-07T16:12:12Z", + "Skip Count": "4", + "Skip Date": "2022-02-12T22:33:41Z", + "Release Date": "2015-03-04T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Unicorn", + "Sort Artist": "Therr Maitz", + "Sort Name": "Make It Last", + "Persistent ID": "3C327CBAA0FB8653", + "Track Type": "Remote" + }, + { + "Track ID": "3583", + "Name": "Pop Out Again (feat. Lil Baby & Gunna)", + "Artist": "Polo G", + "Album Artist": "Polo G", + "Composer": "Polo G, Lil Tjay, Jo\u00e3o Victor Alba Duarte & Dylan Berg", + "Album": "Die a Legend", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7959066", + "Total Time": "223787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2019-06-22T19:58:52Z", + "Date Added": "2019-06-22T19:58:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3783774395", + "Play Date UTC": "2023-11-25T13:26:35Z", + "Skip Count": "2", + "Skip Date": "2022-11-10T19:24:14Z", + "Release Date": "2019-06-07T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Die a Legend", + "Sort Artist": "Polo G", + "Sort Name": "Pop Out Again (feat. Lil Baby & Gunna)", + "Persistent ID": "236045ED9E5E31D8", + "Track Type": "Remote" + }, + { + "Track ID": "3585", + "Name": "Out Tha Mud", + "Artist": "Roddy Ricch", + "Album Artist": "Roddy Ricch", + "Composer": "June James & Rodrick Moore", + "Album": "Out Tha Mud - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7603116", + "Total Time": "212052", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-06-22T19:58:59Z", + "Date Added": "2019-06-22T19:58:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3768311010", + "Play Date UTC": "2023-05-30T14:03:30Z", + "Skip Count": "1", + "Skip Date": "2022-08-30T06:47:55Z", + "Release Date": "2019-05-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Out Tha Mud - Single", + "Sort Artist": "Roddy Ricch", + "Sort Name": "Out Tha Mud", + "Persistent ID": "7BB5F9F7B0026C83", + "Track Type": "Remote" + }, + { + "Track ID": "3587", + "Name": "PARANOID", + "Artist": "Russ", + "Album Artist": "Russ", + "Composer": "Russ", + "Album": "PARANOID - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6563228", + "Total Time": "181933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2019-06-22T20:01:22Z", + "Date Added": "2019-06-22T20:01:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3770986069", + "Play Date UTC": "2023-06-30T13:07:49Z", + "Skip Count": "4", + "Skip Date": "2022-10-19T16:40:02Z", + "Release Date": "2019-06-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "PARANOID - Single", + "Sort Artist": "Russ", + "Sort Name": "PARANOID", + "Persistent ID": "D15A5F8C96257FE4", + "Track Type": "Remote" + }, + { + "Track ID": "3589", + "Name": "The War", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "In My Body - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "12144614", + "Total Time": "354265", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2016", + "Date Modified": "2019-06-26T15:39:41Z", + "Date Added": "2019-06-26T15:39:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3760604390", + "Play Date UTC": "2023-03-02T09:19:50Z", + "Skip Count": "5", + "Skip Date": "2022-04-23T18:14:20Z", + "Release Date": "2016-09-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "In My Body - EP", + "Sort Artist": "SYML", + "Sort Name": "War", + "Persistent ID": "9B964C78063917C2", + "Track Type": "Remote" + }, + { + "Track ID": "3591", + "Name": "Ransom", + "Artist": "Lil Tecca", + "Album Artist": "Lil Tecca", + "Composer": "Nick Mira, Taz Taylor & Tyler-Justin Anthony Sharpe", + "Album": "Ransom - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4873705", + "Total Time": "131248", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-07-09T13:17:44Z", + "Date Added": "2019-07-09T13:17:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3783685419", + "Play Date UTC": "2023-11-24T12:43:39Z", + "Skip Count": "3", + "Skip Date": "2022-11-28T16:35:54Z", + "Release Date": "2019-05-22T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ransom - Single", + "Sort Artist": "Lil Tecca", + "Sort Name": "Ransom", + "Persistent ID": "C7AD86E237EC927A", + "Track Type": "Remote" + }, + { + "Track ID": "3593", + "Name": "Rainy Days with You (feat. Khai Dreams)", + "Artist": "RudeManners", + "Album Artist": "RudeManners", + "Composer": "RudeManners", + "Album": "Rainy Days with You (feat. Khai Dreams) - Single", + "Genre": "Downtempo", + "Kind": "Apple Music AAC audio file", + "Size": "5257136", + "Total Time": "147644", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-07-10T19:35:16Z", + "Date Added": "2019-07-10T19:35:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3780125766", + "Play Date UTC": "2023-10-14T07:56:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-03-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rainy Days with You (feat. Khai Dreams) - Single", + "Sort Artist": "RudeManners", + "Sort Name": "Rainy Days with You (feat. Khai Dreams)", + "Persistent ID": "83D1F654370BF503", + "Track Type": "Remote" + }, + { + "Track ID": "3595", + "Name": "Push Off", + "Artist": "The Palms", + "Album Artist": "The Palms", + "Composer": "undef", + "Album": "Push Off - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8098175", + "Total Time": "230950", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2019-07-10T20:07:04Z", + "Date Added": "2019-07-10T20:07:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3780391052", + "Play Date UTC": "2023-10-17T09:37:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-04-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Push Off - Single", + "Sort Artist": "Palms", + "Sort Name": "Palms", + "Persistent ID": "Push Off", + "Track Type": "BBF7EE7F0AEB5F40" + }, + { + "Track ID": "3597", + "Name": "All4you", + "Artist": "The Palms", + "Album Artist": "The Palms", + "Composer": "undef", + "Album": "Sway - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8254638", + "Total Time": "220462", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2016", + "Date Modified": "2019-07-10T20:14:16Z", + "Date Added": "2019-07-10T20:14:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3776345122", + "Play Date UTC": "2023-08-31T13:45:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sway - EP", + "Sort Artist": "Palms", + "Sort Name": "Palms", + "Persistent ID": "All4you", + "Track Type": "66EB36B4748C4121" + }, + { + "Track ID": "3599", + "Name": "This Bitch", + "Artist": "The Palms", + "Album Artist": "The Palms", + "Composer": "undef", + "Album": "This Bitch - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7399163", + "Total Time": "208018", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-07-10T20:16:24Z", + "Date Added": "2019-07-10T20:16:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3776170302", + "Play Date UTC": "2023-08-29T13:11:42Z", + "Skip Count": "1", + "Skip Date": "2019-07-11T06:33:29Z", + "Release Date": "2017-10-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Bitch - Single", + "Sort Artist": "Palms", + "Sort Name": "Palms", + "Persistent ID": "This Bitch", + "Track Type": "1A82241239BC98F8" + }, + { + "Track ID": "3601", + "Name": "Luna", + "Artist": "Jon Waltz", + "Album Artist": "Jon Waltz", + "Composer": "Danny Dwyer, Colin Moriarty, Jon Savare Walter & Eric Raymond Lynch", + "Album": "Monochrome", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6320129", + "Total Time": "178462", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2019", + "Date Modified": "2019-07-12T18:50:06Z", + "Date Added": "2019-07-12T18:50:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3773667896", + "Play Date UTC": "2023-07-31T14:04:56Z", + "Skip Count": "3", + "Skip Date": "2022-11-02T05:15:01Z", + "Release Date": "2019-06-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Monochrome", + "Sort Artist": "Jon Waltz", + "Sort Name": "Luna", + "Persistent ID": "8A59C939F4E55965", + "Track Type": "Remote" + }, + { + "Track ID": "3603", + "Name": "Rescue Me", + "Artist": "OneRepublic", + "Album Artist": "OneRepublic", + "Composer": "Brent Kutzle & Ryan Tedder", + "Album": "Rescue Me - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5819037", + "Total Time": "158900", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-07-12T19:00:41Z", + "Date Added": "2019-07-12T19:00:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3782814045", + "Play Date UTC": "2023-11-14T10:40:45Z", + "Skip Count": "5", + "Skip Date": "2022-10-05T05:45:08Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rescue Me - Single", + "Sort Artist": "OneRepublic", + "Sort Name": "Rescue Me", + "Persistent ID": "0A8155E94C4A0981", + "Track Type": "Remote" + }, + { + "Track ID": "3605", + "Name": "dead yet (with phem)", + "Artist": "gabriel black", + "Album Artist": "gabriel black", + "Composer": "gabriel black, Cisco Adler, Austen Afridi & phem", + "Album": "dead yet (with phem) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5914085", + "Total Time": "161867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-07-13T08:42:00Z", + "Date Added": "2019-07-13T08:42:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3780776305", + "Play Date UTC": "2023-10-21T20:38:25Z", + "Skip Count": "3", + "Skip Date": "2022-04-16T22:54:32Z", + "Release Date": "2019-06-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "dead yet (with phem) - Single", + "Sort Artist": "gabriel black", + "Sort Name": "dead yet (with phem)", + "Persistent ID": "D37DCB22025A659F", + "Track Type": "Remote" + }, + { + "Track ID": "3607", + "Name": "Some Other Way", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Some Other Way - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6215959", + "Total Time": "175821", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2019-07-13T08:49:08Z", + "Date Added": "2019-07-13T08:49:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3766061959", + "Play Date UTC": "2023-05-04T13:19:19Z", + "Skip Count": "2", + "Skip Date": "2019-07-18T13:35:56Z", + "Release Date": "2019-06-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Some Other Way - Single", + "Sort Artist": "Derek Pope", + "Sort Name": "Some Other Way", + "Persistent ID": "D8599105FD0C24A3", + "Track Type": "Remote" + }, + { + "Track ID": "3609", + "Name": "Inbetween", + "Artist": "Russ", + "Album Artist": "Russ", + "Composer": "undef", + "Album": "Inbetween - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5817440", + "Total Time": "162795", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2019-07-13T09:06:08Z", + "Date Added": "2019-07-13T09:06:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3767702108", + "Play Date UTC": "2023-05-23T12:55:08Z", + "Skip Count": "1", + "Skip Date": "2022-08-16T16:34:14Z", + "Release Date": "2016-01-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Inbetween - Single", + "Sort Artist": "Russ", + "Sort Name": "Inbetween", + "Persistent ID": "995FA0C10F29CC17", + "Track Type": "Remote" + }, + { + "Track ID": "3611", + "Name": "Goodbye", + "Artist": "Russ", + "Album Artist": "Russ", + "Composer": "undef", + "Album": "Pink Elephant", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8917410", + "Total Time": "252858", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "8", + "Year": "2014", + "Date Modified": "2019-07-13T09:08:47Z", + "Date Added": "2019-07-13T09:08:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3780135477", + "Play Date UTC": "2023-10-14T10:37:57Z", + "Skip Count": "2", + "Skip Date": "2021-05-11T13:39:06Z", + "Release Date": "2014-01-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pink Elephant", + "Sort Artist": "Russ", + "Sort Name": "Goodbye", + "Persistent ID": "3CF9EEF8894FEF28", + "Track Type": "Remote" + }, + { + "Track ID": "3613", + "Name": "Give Me Peace of Mind", + "Artist": "dandelion hands", + "Album Artist": "dandelion hands", + "Composer": "undef", + "Album": "{Commissions III]", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6320660", + "Total Time": "178110", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2019-07-14T13:21:13Z", + "Date Added": "2019-07-14T13:21:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3780192881", + "Play Date UTC": "2023-10-15T02:34:41Z", + "Skip Count": "1", + "Skip Date": "2019-07-16T08:54:06Z", + "Release Date": "2017-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "{Commissions III]", + "Sort Artist": "dandelion hands", + "Sort Name": "Give Me Peace of Mind", + "Persistent ID": "64B56E509F93A73C", + "Track Type": "Remote" + }, + { + "Track ID": "3615", + "Name": "Freight Train", + "Artist": "Ieuan", + "Album Artist": "Ieuan", + "Composer": "Sarah Jackson Holman", + "Album": "Freight Train - Single", + "Genre": "Pop", + "Kind": "AAC audio file", + "Size": "8976759", + "Total Time": "251009", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2014", + "Date Modified": "2019-07-14T13:34:19Z", + "Date Added": "2019-07-14T13:34:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3646042019", + "Play Date UTC": "2019-07-15T10:26:59Z", + "Skip Count": "1", + "Skip Date": "2019-07-16T14:53:55Z", + "Release Date": "2014-06-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Freight Train - Single", + "Sort Artist": "Ieuan", + "Sort Name": "Freight Train", + "Persistent ID": "D79270BE90D9AEC4", + "Track Type": "Remote" + }, + { + "Track ID": "3617", + "Name": "Morning Bell", + "Artist": "Radiohead", + "Album Artist": "Radiohead", + "Composer": "Colin Greenwood, Ed O'Brien, Jonny Greenwood, Phil Selway & Thom Yorke", + "Album": "Kid A", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10153005", + "Total Time": "275800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2000", + "Date Modified": "2019-07-14T14:55:54Z", + "Date Added": "2019-07-14T14:55:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3761318873", + "Play Date UTC": "2023-03-10T15:47:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2000-09-27T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Kid A", + "Sort Artist": "Radiohead", + "Sort Name": "Morning Bell", + "Persistent ID": "C88B7B4E8DD62F1A", + "Track Type": "Remote" + }, + { + "Track ID": "3619", + "Name": "Cellophane", + "Artist": "Pageant Boys", + "Album Artist": "Pageant Boys", + "Composer": "undef", + "Album": "Shadowboxing - EP", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8828580", + "Total Time": "242243", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2019-07-14T16:19:22Z", + "Date Added": "2019-07-14T16:19:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3770358241", + "Play Date UTC": "2023-06-23T06:44:01Z", + "Skip Count": "1", + "Skip Date": "2019-07-18T13:40:53Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1257", + "Sort Album": "Shadowboxing - EP", + "Sort Artist": "Pageant Boys", + "Sort Name": "Cellophane", + "Persistent ID": "E266062D7D0FABFE", + "Track Type": "Remote" + }, + { + "Track ID": "3621", + "Name": "Fountain", + "Artist": "Pageant Boys", + "Album Artist": "Pageant Boys", + "Composer": "undef", + "Album": "Shadowboxing - EP", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8042522", + "Total Time": "228305", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2019-07-14T17:27:28Z", + "Date Added": "2019-07-14T17:27:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781705408", + "Play Date UTC": "2023-11-01T14:43:28Z", + "Skip Count": "2", + "Skip Date": "2019-07-20T14:35:23Z", + "Release Date": "2017-05-19T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Shadowboxing - EP", + "Sort Artist": "Pageant Boys", + "Sort Name": "Fountain", + "Persistent ID": "95D267B535D5D720", + "Track Type": "Remote" + }, + { + "Track ID": "3623", + "Name": "For a Moment", + "Artist": "Pageant Boys", + "Album Artist": "Pageant Boys", + "Composer": "Alexander Sheppard", + "Album": "What's Next KC Sessions - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10756518", + "Total Time": "317678", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2018", + "Date Modified": "2019-07-14T21:46:27Z", + "Date Added": "2019-07-14T21:46:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3772620188", + "Play Date UTC": "2023-07-19T11:03:08Z", + "Skip Count": -1, + "Skip Date": "2022-07-21T07:16:03Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "What's Next KC Sessions - Single", + "Sort Artist": "Pageant Boys", + "Sort Name": "For a Moment", + "Persistent ID": "AC11255F32DC50E5", + "Track Type": "Remote" + }, + { + "Track ID": "3625", + "Name": "Versatile", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Kodak Black & Martin McCurtis", + "Album": "Project Baby 2: All Grown Up (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "14500932", + "Total Time": "418628", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "27", + "Year": "2017", + "Date Modified": "2019-07-15T16:20:10Z", + "Date Added": "2019-07-15T16:20:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783595095", + "Play Date UTC": "2023-11-23T11:38:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Project Baby 2: All Grown Up (Deluxe)", + "Sort Artist": "Kodak Black", + "Sort Name": "Versatile", + "Persistent ID": "0F53E8E494013416", + "Track Type": "Remote" + }, + { + "Track ID": "3627", + "Name": "Change My Ways", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "DJ Khaled, Khaled Khaled, Kodak Black, Krystyana Czeiner & Nick The Piff", + "Album": "Project Baby 2: All Grown Up (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8458001", + "Total Time": "239299", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "27", + "Year": "2017", + "Date Modified": "2019-07-15T16:27:36Z", + "Date Added": "2019-07-15T16:27:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3771743068", + "Play Date UTC": "2023-07-09T07:24:28Z", + "Skip Count": "1", + "Skip Date": "2019-07-16T14:54:13Z", + "Release Date": "2017-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Project Baby 2: All Grown Up (Deluxe)", + "Sort Artist": "Kodak Black", + "Sort Name": "Change My Ways", + "Persistent ID": "E921321BDBDF5E9A", + "Track Type": "Remote" + }, + { + "Track ID": "3629", + "Name": "Need a Break", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Kodak Black, SkipOnDaBeat & Thomas Klingensmith", + "Album": "Project Baby 2: All Grown Up (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8576201", + "Total Time": "243652", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "27", + "Year": "2017", + "Date Modified": "2019-07-15T18:17:29Z", + "Date Added": "2019-07-15T18:17:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3783710032", + "Play Date UTC": "2023-11-24T19:33:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Project Baby 2: All Grown Up (Deluxe)", + "Sort Artist": "Kodak Black", + "Sort Name": "Need a Break", + "Persistent ID": "E77C1B2D370B7555", + "Track Type": "Remote" + }, + { + "Track ID": "3631", + "Name": "My Klik (feat. John Wicks & JackBoy)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Jack Boy, John Wicks, Kodak Black & Taz Taylor", + "Album": "Project Baby 2: All Grown Up (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7412419", + "Total Time": "205712", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "27", + "Year": "2017", + "Date Modified": "2019-07-15T18:43:01Z", + "Date Added": "2019-07-15T18:43:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781523641", + "Play Date UTC": "2023-10-30T12:14:01Z", + "Skip Count": "1", + "Skip Date": "2020-09-07T05:15:05Z", + "Release Date": "2017-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Project Baby 2: All Grown Up (Deluxe)", + "Sort Artist": "Kodak Black", + "Sort Name": "My Klik (feat. John Wicks & JackBoy)", + "Persistent ID": "47A2EDB757848C40", + "Track Type": "Remote" + }, + { + "Track ID": "3633", + "Name": "My Choppa Hate N****s", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Shayaa Joseph, Leland Wayne, Kevin Gromringer & Tim Gomringer", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5452408", + "Total Time": "148640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2019-07-17T14:32:52Z", + "Date Added": "2019-07-17T14:32:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "450", + "Play Date": "3781050486", + "Play Date UTC": "2023-10-25T00:48:06Z", + "Skip Count": "9", + "Skip Date": "2023-11-02T11:49:55Z", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Without Warning", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "My Choppa Hate Niggas", + "Persistent ID": "8EDEE7267AF1C95C", + "Track Type": "Remote" + }, + { + "Track ID": "3635", + "Name": "If You Only Knew", + "Artist": "Okay(K)", + "Album Artist": "Okay(K)", + "Composer": "undef", + "Album": "Lucy Wrap(s) - EP", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "5760262", + "Total Time": "160000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-07-18T20:38:26Z", + "Date Added": "2019-07-18T20:38:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3770099593", + "Play Date UTC": "2023-06-20T06:53:13Z", + "Skip Count": "1", + "Skip Date": "2022-06-24T12:31:09Z", + "Release Date": "2017-02-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lucy Wrap(s) - EP", + "Sort Artist": "Okay(K)", + "Sort Name": "If You Only Knew", + "Persistent ID": "7217DC3F068AC268", + "Track Type": "Remote" + }, + { + "Track ID": "3637", + "Name": "Cookin' Eggs (Interlude)", + "Artist": "Okay(K)", + "Album Artist": "Okay(K)", + "Composer": "undef", + "Album": "Lucy Wrap(s) - EP", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "2210832", + "Total Time": "50000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2019-07-18T20:43:16Z", + "Date Added": "2019-07-18T20:43:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3767770045", + "Play Date UTC": "2023-05-24T07:47:25Z", + "Skip Count": "1", + "Skip Date": "2022-10-16T10:05:56Z", + "Release Date": "2017-02-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lucy Wrap(s) - EP", + "Sort Artist": "Okay(K)", + "Sort Name": "Cookin' Eggs (Interlude)", + "Persistent ID": "C36A62FDE28F8DC3", + "Track Type": "Remote" + }, + { + "Track ID": "3639", + "Name": "Preach (feat. Lexie)", + "Artist": "Okay(K)", + "Album Artist": "Okay(K)", + "Composer": "undef", + "Album": "(Tmrw) - EP", + "Genre": "R&B/Soul", + "Kind": "AAC audio file", + "Size": "9721725", + "Total Time": "275132", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2019-07-18T20:47:08Z", + "Date Added": "2019-07-18T20:47:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3760179967", + "Play Date UTC": "2023-02-25T11:26:07Z", + "Skip Count": "2", + "Skip Date": "2022-06-24T12:42:33Z", + "Release Date": "2017-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "(Tmrw) - EP", + "Sort Artist": "Okay(K)", + "Sort Name": "Preach (feat. Lexie)", + "Persistent ID": "6240AEB6EFC01194", + "Track Type": "Remote" + }, + { + "Track ID": "3641", + "Name": "Overdue (feat. Travis Scott)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Leland Wayne, Jacques Webster, Hannah Robinson, Annie Strand & Richard Phillips", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6096964", + "Total Time": "166093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-07-18T20:56:23Z", + "Date Added": "2019-07-18T20:56:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "84", + "Play Date": "3775211959", + "Play Date UTC": "2023-08-18T10:59:19Z", + "Skip Count": "9", + "Skip Date": "2023-10-29T01:41:42Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "Overdue (feat. Travis Scott)", + "Persistent ID": "9BB26841ADBE7655", + "Track Type": "Remote" + }, + { + "Track ID": "3643", + "Name": "No Type", + "Artist": "Rae Sremmurd", + "Album Artist": "Rae Sremmurd", + "Composer": "Mike Williams, A.Brown & K. Brown", + "Album": "SremmLife", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7157635", + "Total Time": "200080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2019-07-18T20:57:39Z", + "Date Added": "2019-07-18T20:57:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3778860625", + "Play Date UTC": "2023-09-29T16:30:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SremmLife", + "Sort Artist": "Rae Sremmurd", + "Sort Name": "No Type", + "Persistent ID": "FBA74ABDA058C188", + "Track Type": "Remote" + }, + { + "Track ID": "3645", + "Name": "Dead to Me", + "Artist": "Vaboh", + "Album Artist": "Vaboh", + "Composer": "Vaboh", + "Album": "Dead to Me - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4628459", + "Total Time": "123429", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-07-18T21:07:02Z", + "Date Added": "2019-07-18T21:07:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3773641700", + "Play Date UTC": "2023-07-31T06:48:20Z", + "Skip Count": "1", + "Skip Date": "2022-10-16T13:31:53Z", + "Release Date": "2019-06-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dead to Me - Single", + "Sort Artist": "Vaboh", + "Sort Name": "Dead to Me", + "Persistent ID": "7A5E12BA4CE1C7DD", + "Track Type": "Remote" + }, + { + "Track ID": "3647", + "Name": "Maria", + "Artist": "grandson", + "Album Artist": "grandson", + "Composer": "Brad Wilk, Tim Commerford, Tom Morello & Zack de la Rocha", + "Album": "Maria - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6795109", + "Total Time": "188571", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-07-18T21:22:47Z", + "Date Added": "2019-07-18T21:22:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3783586451", + "Play Date UTC": "2023-11-23T09:14:11Z", + "Skip Count": "1", + "Skip Date": "2022-07-17T08:47:12Z", + "Release Date": "2019-05-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Maria - Single", + "Sort Artist": "grandson", + "Sort Name": "Maria", + "Persistent ID": "DF1357F52805D30D", + "Track Type": "Remote" + }, + { + "Track ID": "3649", + "Name": "Make Me Laugh", + "Artist": "TRACE", + "Album Artist": "TRACE", + "Composer": "Mike Derenzo & Tracy Le", + "Album": "Make Me Laugh - Single", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "6683909", + "Total Time": "185438", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-07-18T21:26:08Z", + "Date Added": "2019-07-18T21:26:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3778764701", + "Play Date UTC": "2023-09-28T13:51:41Z", + "Skip Count": "1", + "Skip Date": "2022-11-16T20:14:16Z", + "Release Date": "2019-06-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1604", + "Sort Album": "Make Me Laugh - Single", + "Sort Artist": "TRACE", + "Sort Name": "Make Me Laugh", + "Persistent ID": "72FD8395BB932B40", + "Track Type": "Remote" + }, + { + "Track ID": "3651", + "Name": "Thoughts & Prayers", + "Artist": "grandson", + "Album Artist": "grandson", + "Composer": "Jordan Benjamin, Kevin Hissink & Taylor Bird", + "Album": "Thoughts & Prayers - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7993296", + "Total Time": "225333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-07-20T07:59:45Z", + "Date Added": "2019-07-20T07:59:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3781616208", + "Play Date UTC": "2023-10-31T13:56:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Thoughts & Prayers - Single", + "Sort Artist": "grandson", + "Sort Name": "Thoughts & Prayers", + "Persistent ID": "FC452E5F6E4DE8CF", + "Track Type": "Remote" + }, + { + "Track ID": "3653", + "Name": "Riot", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Hugo Chan", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9657016", + "Total Time": "274988", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2019-07-21T13:10:05Z", + "Date Added": "2019-07-21T13:10:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3781060123", + "Play Date UTC": "2023-10-25T03:28:43Z", + "Skip Count": "3", + "Skip Date": "2023-07-18T06:25:30Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "Riot", + "Persistent ID": "34DA8D9C834FC2E0", + "Track Type": "Remote" + }, + { + "Track ID": "3655", + "Name": "N", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Peder Losneg\u00e5rd, Tyler Cole & Mateo Arias", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8170581", + "Total Time": "231034", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2019-07-21T13:30:01Z", + "Date Added": "2019-07-21T13:30:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3779319609", + "Play Date UTC": "2023-10-05T00:00:09Z", + "Skip Count": "4", + "Skip Date": "2022-08-19T16:10:52Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "N", + "Persistent ID": "21339659F6E33F12", + "Track Type": "Remote" + }, + { + "Track ID": "3657", + "Name": "My Old Flame", + "Artist": "Matt Kronish", + "Album Artist": "Matt Kronish", + "Composer": "undef", + "Album": "Winter in Southern California - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "9794999", + "Total Time": "275514", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2016", + "Date Modified": "2019-07-24T13:05:25Z", + "Date Added": "2019-07-24T13:05:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3777367220", + "Play Date UTC": "2023-09-12T09:40:20Z", + "Skip Count": "4", + "Skip Date": "2021-10-03T17:44:12Z", + "Release Date": "2016-02-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Winter in Southern California - Single", + "Sort Artist": "Matt Kronish", + "Sort Name": "My Old Flame", + "Persistent ID": "80E46633BFC7AA5E", + "Track Type": "Remote" + }, + { + "Track ID": "3659", + "Name": "Please Tell Me", + "Artist": "Future", + "Album Artist": "Future", + "Composer": "Nayvadius Wilburn & Tony Son", + "Album": "SAVE ME", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7230599", + "Total Time": "204520", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2019-07-25T09:12:04Z", + "Date Added": "2019-07-25T09:12:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3782903783", + "Play Date UTC": "2023-11-15T11:36:23Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-07T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SAVE ME", + "Sort Artist": "Future", + "Sort Name": "Please Tell Me", + "Persistent ID": "07C0A8055D80AAFC", + "Track Type": "Remote" + }, + { + "Track ID": "3661", + "Name": "Midnight", + "Artist": "Prettyboys", + "Album Artist": "Prettyboys", + "Composer": "Dominic Tousignant & Loic Drouin", + "Album": "Midnight06", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9003002", + "Total Time": "256093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2019-07-26T09:10:08Z", + "Date Added": "2019-07-26T09:10:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3776164365", + "Play Date UTC": "2023-08-29T11:32:45Z", + "Skip Count": "2", + "Skip Date": "2023-09-26T07:57:13Z", + "Release Date": "2019-06-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Midnight06", + "Sort Artist": "Prettyboys", + "Sort Name": "Midnight", + "Persistent ID": "6519E8A58209EA88", + "Track Type": "Remote" + }, + { + "Track ID": "3663", + "Name": "Happiest Year", + "Artist": "Jaymes Young", + "Album Artist": "Jaymes Young", + "Composer": "Jaymes Young", + "Album": "Happiest Year - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8134691", + "Total Time": "228443", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-07-26T14:18:54Z", + "Date Added": "2019-07-26T14:18:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783681417", + "Play Date UTC": "2023-11-24T11:36:57Z", + "Skip Count": "1", + "Skip Date": "2021-06-24T23:30:51Z", + "Release Date": "2017-06-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Happiest Year - Single", + "Sort Artist": "Jaymes Young", + "Sort Name": "Happiest Year", + "Persistent ID": "EFE9590D4A87468F", + "Track Type": "Remote" + }, + { + "Track ID": "3665", + "Name": "Due In June", + "Artist": "\u00a1MAYDAY!", + "Album Artist": "\u00a1MAYDAY!", + "Composer": "\u00a1MAYDAY!", + "Album": "Take Me to Your Leader", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6485638", + "Total Time": "180933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "19", + "Year": "2012", + "Date Modified": "2019-07-29T11:48:18Z", + "Date Added": "2019-07-29T11:48:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "70", + "Play Date": "3767523551", + "Play Date UTC": "2023-05-21T11:19:11Z", + "Skip Count": "3", + "Skip Date": "2020-02-01T06:04:41Z", + "Release Date": "2012-03-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Take Me to Your Leader", + "Sort Artist": "\u00a1MAYDAY!", + "Sort Name": "Due In June", + "Persistent ID": "262DD0E69A98BA4D", + "Track Type": "Remote" + }, + { + "Track ID": "3667", + "Name": "Wtf", + "Artist": "Xavier", + "Album Artist": "Xavier", + "Composer": "Xavier Tubianosa", + "Album": "Wtf - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6721106", + "Total Time": "188317", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-08-02T09:04:45Z", + "Date Added": "2019-08-02T09:04:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781201282", + "Play Date UTC": "2023-10-26T18:41:22Z", + "Skip Count": "2", + "Skip Date": "2022-12-10T08:14:10Z", + "Release Date": "2019-06-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wtf - Single", + "Sort Artist": "Xavier", + "Sort Name": "Wtf", + "Persistent ID": "6F2789BF3718ABFB", + "Track Type": "Remote" + }, + { + "Track ID": "3669", + "Name": "Thought I Had It All Figured Out", + "Artist": "Hateful", + "Album Artist": "Hateful", + "Composer": "Viktor Edfalk", + "Album": "Thought I Had It All Figured Out - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5241620", + "Total Time": "142493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-08-13T14:46:18Z", + "Date Added": "2019-08-13T14:46:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3783680770", + "Play Date UTC": "2023-11-24T11:26:10Z", + "Skip Count": "1", + "Skip Date": "2022-06-24T11:41:02Z", + "Release Date": "2019-06-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Thought I Had It All Figured Out - Single", + "Sort Artist": "Hateful", + "Sort Name": "Thought I Had It All Figured Out", + "Persistent ID": "171F5934D41D4E9F", + "Track Type": "Remote" + }, + { + "Track ID": "3671", + "Name": "Money In The Grave (feat. Rick Ross)", + "Artist": "Drake", + "Album Artist": "Drake", + "Composer": "Aubrey Graham, W. Roberts, L. Currie, C. Dade & A. Joergensen", + "Album": "The Best In The World Pack - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7278315", + "Total Time": "205369", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2019", + "Date Modified": "2019-08-13T14:57:59Z", + "Date Added": "2019-08-13T14:57:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3779182718", + "Play Date UTC": "2023-10-03T09:58:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Best In The World Pack - Single", + "Sort Artist": "Drake", + "Sort Name": "Money In The Grave (feat. Rick Ross)", + "Persistent ID": "053877D0410831B0", + "Track Type": "Remote" + }, + { + "Track ID": "3673", + "Name": "whoa (mind in awe)", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "J. Onfroy, J. Cunningham & R. Soukiasyan", + "Album": "SKINS", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5759892", + "Total Time": "157777", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2019-08-13T15:28:51Z", + "Date Added": "2019-08-13T15:28:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3783777422", + "Play Date UTC": "2023-11-25T14:17:02Z", + "Skip Count": "3", + "Skip Date": "2022-03-28T11:38:52Z", + "Release Date": "2018-12-07T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SKINS", + "Sort Artist": "XXXTENTACION", + "Sort Name": "whoa (mind in awe)", + "Persistent ID": "F15F3F64C2578678", + "Track Type": "Remote" + }, + { + "Track ID": "3675", + "Name": "Falling Down (Bonus Track)", + "Artist": "Lil Peep & XXXTENTACION", + "Album Artist": "Lil Peep", + "Composer": "Gustav Ahr, Jahseh Onfroy, Valentin Leon Blavatnik, iLoveMakonnen, Michael Williams II & Aaron Jackson", + "Album": "Come Over When You're Sober, Pt. 2 (Bonus)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7147719", + "Total Time": "196400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2019-08-13T15:45:13Z", + "Date Added": "2019-08-13T15:45:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3778371745", + "Play Date UTC": "2023-09-24T00:42:25Z", + "Skip Count": "2", + "Skip Date": "2023-09-28T15:41:47Z", + "Release Date": "2018-09-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Come Over When You're Sober, Pt. 2 (Bonus)", + "Sort Artist": "Lil Peep & XXXTENTACION", + "Sort Name": "Falling Down (Bonus Track)", + "Persistent ID": "3CB219C17303690E", + "Track Type": "Remote" + }, + { + "Track ID": "3677", + "Name": "Everybody Dies in Their Nightmares", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "17", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3758050", + "Total Time": "95467", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2019-08-13T16:05:59Z", + "Date Added": "2019-08-13T16:05:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3767800494", + "Play Date UTC": "2023-05-24T16:14:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "17", + "Sort Artist": "XXXTENTACION", + "Sort Name": "Everybody Dies in Their Nightmares", + "Persistent ID": "8C92C4C31FC3E6DC", + "Track Type": "Remote" + }, + { + "Track ID": "3679", + "Name": "Save Me", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "17", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5924266", + "Total Time": "163202", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2019-08-13T16:06:00Z", + "Date Added": "2019-08-13T16:06:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3781086711", + "Play Date UTC": "2023-10-25T10:51:51Z", + "Skip Count": -1, + "Skip Date": "2021-09-14T10:24:05Z", + "Release Date": "2017-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "17", + "Sort Artist": "XXXTENTACION", + "Sort Name": "Save Me", + "Persistent ID": "1EA64D4F386531FE", + "Track Type": "Remote" + }, + { + "Track ID": "3681", + "Name": "Robbery", + "Artist": "Juice WRLD", + "Album Artist": "Juice WRLD", + "Composer": "Nick Mira & Jarad Higgins", + "Album": "Death Race for Love", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8607928", + "Total Time": "240051", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "22", + "Year": "2019", + "Date Modified": "2019-08-13T17:52:09Z", + "Date Added": "2019-08-13T17:52:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3781570941", + "Play Date UTC": "2023-10-31T01:22:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-02-13T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Death Race for Love", + "Sort Artist": "Juice WRLD", + "Sort Name": "Robbery", + "Persistent ID": "B7D85A294951EBA8", + "Track Type": "Remote" + }, + { + "Track ID": "3683", + "Name": "Syphilis", + "Artist": "Juice WRLD", + "Album Artist": "Juice WRLD", + "Composer": "Jarad Higgins, Daveon Jackson & Ronald LaTour", + "Album": "Death Race for Love", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4986134", + "Total Time": "131761", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "22", + "Year": "2019", + "Date Modified": "2019-08-13T19:07:29Z", + "Date Added": "2019-08-13T19:07:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780838893", + "Play Date UTC": "2023-10-22T14:01:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Death Race for Love", + "Sort Artist": "Juice WRLD", + "Sort Name": "Syphilis", + "Persistent ID": "E4E3403D2F56C045", + "Track Type": "Remote" + }, + { + "Track ID": "3685", + "Name": "SKELETONS", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster", + "Album": "ASTROWORLD", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5400177", + "Total Time": "145588", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "2018", + "Date Modified": "2019-08-14T06:06:46Z", + "Date Added": "2019-08-14T06:06:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3779631032", + "Play Date UTC": "2023-10-08T14:30:32Z", + "Skip Count": "1", + "Skip Date": "2020-12-12T00:10:22Z", + "Release Date": "2018-08-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ASTROWORLD", + "Sort Artist": "Travis Scott", + "Sort Name": "SKELETONS", + "Persistent ID": "892C28B7A0148D7D", + "Track Type": "Remote" + }, + { + "Track ID": "3687", + "Name": "Pure Water", + "Artist": "Mustard & Migos", + "Album Artist": "Mustard & Migos", + "Composer": "Dijon McFarlane, Quavios Keyate Marshall, Kirsnick Khari Ball, Kiari Kendrell Cephus & SHAHRUKH KHAN", + "Album": "Pure Water - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6977166", + "Total Time": "194520", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-08-14T10:05:54Z", + "Date Added": "2019-08-14T10:05:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3780911564", + "Play Date UTC": "2023-10-23T10:12:44Z", + "Skip Count": "1", + "Skip Date": "2023-07-19T05:55:57Z", + "Release Date": "2019-01-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pure Water - Single", + "Sort Artist": "Mustard & Migos", + "Sort Name": "Pure Water", + "Persistent ID": "381330D3D86F69F0", + "Track Type": "Remote" + }, + { + "Track ID": "3689", + "Name": "Do the Most", + "Artist": "Marty Grimes", + "Album Artist": "Marty Grimes", + "Composer": "Marty Grimes", + "Album": "Do the Most - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6117784", + "Total Time": "168333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-08-16T08:03:15Z", + "Date Added": "2019-08-16T08:03:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3780129670", + "Play Date UTC": "2023-10-14T09:01:10Z", + "Skip Count": "1", + "Skip Date": "2023-04-18T09:47:18Z", + "Release Date": "2019-07-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Do the Most - Single", + "Sort Artist": "Marty Grimes", + "Sort Name": "Do the Most", + "Persistent ID": "06622051A2213275", + "Track Type": "Remote" + }, + { + "Track ID": "3691", + "Name": "Out Da Cut", + "Artist": "Rellim & Donnatella", + "Album Artist": "Rellim & Donnatella", + "Composer": "Eric Michael Miller, Rellim & Donnatella", + "Album": "Out Da Cut - Single", + "Genre": "Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8042417", + "Total Time": "227814", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-08-16T08:32:34Z", + "Date Added": "2019-08-16T08:32:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3759585078", + "Play Date UTC": "2023-02-18T14:11:18Z", + "Skip Count": "2", + "Skip Date": "2022-03-15T17:59:33Z", + "Release Date": "2019-06-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Out Da Cut - Single", + "Sort Artist": "Rellim & Donnatella", + "Sort Name": "Out Da Cut", + "Persistent ID": "1CB5DCAF3B1642D8", + "Track Type": "Remote" + }, + { + "Track ID": "3693", + "Name": "Eyes Open", + "Artist": "Andy Okoro & Eddie Okoro", + "Album Artist": "Andy Okoro & Eddie Okoro", + "Composer": "Andy Okoro & Eddie Okoro", + "Album": "Undeniable", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6468068", + "Total Time": "176065", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2019-08-17T07:45:07Z", + "Date Added": "2019-08-17T07:45:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3776234971", + "Play Date UTC": "2023-08-30T07:09:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Undeniable", + "Sort Artist": "Andy Okoro & Eddie Okoro", + "Sort Name": "Eyes Open", + "Persistent ID": "EDC80926B347F50C", + "Track Type": "Remote" + }, + { + "Track ID": "3695", + "Name": "Kinda Broke.", + "Artist": "Yvng Knight", + "Album Artist": "Yvng Knight", + "Composer": "Jacob Knight Moser", + "Album": "Daydream.", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6020777", + "Total Time": "169249", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2019", + "Date Modified": "2019-08-17T07:48:52Z", + "Date Added": "2019-08-17T07:48:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3766772841", + "Play Date UTC": "2023-05-12T18:47:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Daydream.", + "Sort Artist": "Yvng Knight", + "Sort Name": "Kinda Broke.", + "Persistent ID": "B8BED9136D17FB94", + "Track Type": "Remote" + }, + { + "Track ID": "3697", + "Name": "Bleed.", + "Artist": "Yvng Knight", + "Album Artist": "Yvng Knight", + "Composer": "Jacob Knight Moser", + "Album": "Daydream.", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4399041", + "Total Time": "117166", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2019", + "Date Modified": "2019-08-20T09:07:07Z", + "Date Added": "2019-08-20T09:07:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3781615885", + "Play Date UTC": "2023-10-31T13:51:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Daydream.", + "Sort Artist": "Yvng Knight", + "Sort Name": "Bleed.", + "Persistent ID": "6F2330CB1C53998C", + "Track Type": "Remote" + }, + { + "Track ID": "3699", + "Name": "Hit Me Like That Snare (Jimi Charles Moody Version)", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Thom Green, Ben Cullum, Fergus Brignall, Harley Alexander-Sule, Gus Unger-Hamilton & Joe Newman", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7791510", + "Total Time": "212406", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3733822177", + "Play Date UTC": "2022-04-26T09:49:37Z", + "Skip Count": "1", + "Skip Date": "2019-08-26T15:00:54Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "Hit Me Like That Snare (Jimi Charles Moody Version)", + "Persistent ID": "77C393ADF789032C", + "Track Type": "Remote" + }, + { + "Track ID": "3701", + "Name": "In Cold Blood (feat. Kontra K) [Kontra K Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman, Thom Green, Maximilian Diehn & Gus Unger-Hamilton", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7808992", + "Total Time": "214750", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3782993611", + "Play Date UTC": "2023-11-16T12:33:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-03-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "In Cold Blood (feat. Kontra K) [Kontra K Version]", + "Persistent ID": "7AEBE58BB2F86B65", + "Track Type": "Remote" + }, + { + "Track ID": "3703", + "Name": "Pleader (feat. Pj Sin Suela) [Trooko Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Thom Green, Pedro-Juan V\u00e1zquez, Gus Unger-Hamilton & Joe Newman", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10092969", + "Total Time": "286182", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3736202111", + "Play Date UTC": "2022-05-23T22:55:11Z", + "Skip Count": "1", + "Skip Date": "2019-08-29T18:12:49Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "Pleader (feat. Pj Sin Suela) [Trooko Version]", + "Persistent ID": "040997CD36507A79", + "Track Type": "Remote" + }, + { + "Track ID": "3705", + "Name": "In Cold Blood (feat. Pusha T) [Twin Shadow Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Terrence LeVarr Thornton, Joe Newman & Thom Green", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "6122702", + "Total Time": "166528", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3733225750", + "Play Date UTC": "2022-04-19T12:09:10Z", + "Skip Count": "1", + "Skip Date": "2022-03-26T17:57:07Z", + "Release Date": "2017-03-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "In Cold Blood (feat. Pusha T) [Twin Shadow Version]", + "Persistent ID": "A781399E03CEE6DF", + "Track Type": "Remote" + }, + { + "Track ID": "3707", + "Name": "Deadcrush (feat. Danny Brown) [The Alchemist x Trooko Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Daniel Sewell, Joe Newman, Thom Green & Gus Unger-Hamilton", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8627615", + "Total Time": "243570", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3733921656", + "Play Date UTC": "2022-04-27T13:27:36Z", + "Skip Count": "1", + "Skip Date": "2021-11-03T14:44:47Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "Deadcrush (feat. Danny Brown) [The Alchemist x Trooko Version]", + "Persistent ID": "75DBDACA94A49BEB", + "Track Type": "Remote" + }, + { + "Track ID": "3709", + "Name": "House of the Rising Sun (feat. Tuka) [Tuka Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman, Gus Unger-Hamilton, Thom Green, Brendan Tuckerman, Traditional & Sam Sakr", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10365734", + "Total Time": "293837", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3733229093", + "Play Date UTC": "2022-04-19T13:04:53Z", + "Skip Count": "1", + "Skip Date": "2022-03-22T08:01:16Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "House of the Rising Sun (feat. Tuka) [Tuka Version]", + "Persistent ID": "6BAB79A766A591E3", + "Track Type": "Remote" + }, + { + "Track ID": "3711", + "Name": "Adeline (feat. Hex & Paigey Cakey) [ADP Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Paige Meade, Thom Green, Joe Newman, Brendan Behan, Dominic Wright, Hans Zimmer & Gus Unger-Hamilton", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7958030", + "Total Time": "226716", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3737399673", + "Play Date UTC": "2022-06-06T19:34:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "Adeline (feat. Hex & Paigey Cakey) [ADP Version]", + "Persistent ID": "05B4C367F6802F1F", + "Track Type": "Remote" + }, + { + "Track ID": "3713", + "Name": "3WW (feat. Lomepal) [Lomepal Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Thom Green, Joe Newman, Antoine Valentinelli & Gus Unger-Hamilton", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "6995936", + "Total Time": "195685", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3737192027", + "Play Date UTC": "2022-06-04T09:53:47Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-03-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "3WW (feat. Lomepal) [Lomepal Version]", + "Persistent ID": "329541720F0EC044", + "Track Type": "Remote" + }, + { + "Track ID": "3715", + "Name": "3WW (feat. Little Simz) [OTG Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman, osiris wilson, Simbiatu Ajikawo & Thom Green", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10698887", + "Total Time": "307432", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3734529135", + "Play Date UTC": "2022-05-04T14:12:15Z", + "Skip Count": "2", + "Skip Date": "2021-08-01T10:56:00Z", + "Release Date": "2017-03-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "3WW (feat. Little Simz) [OTG Version]", + "Persistent ID": "BEF99540B024BB79", + "Track Type": "Remote" + }, + { + "Track ID": "3717", + "Name": "Last Year (feat. GoldLink) [Terrace Martin Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman, Thom Green, Gus Unger-Hamilton & DeAnthony Carlos", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8972443", + "Total Time": "257603", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3733686225", + "Play Date UTC": "2022-04-24T20:03:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "Last Year (feat. GoldLink) [Terrace Martin Version]", + "Persistent ID": "1B545D082148FF6E", + "Track Type": "Remote" + }, + { + "Track ID": "3719", + "Name": "Hit Me Like That Snare (feat. Rejjie Snow) [Rejjie Snow Version]", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman, Alex Anyaegbunam, Gus Unger-Hamilton & Thom Green", + "Album": "Reduxer", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "6604927", + "Total Time": "179743", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-08-26T15:00:10Z", + "Date Added": "2019-08-26T15:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3735292717", + "Play Date UTC": "2022-05-13T10:18:37Z", + "Skip Count": "1", + "Skip Date": "2021-08-01T13:58:46Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reduxer", + "Sort Artist": "alt-J", + "Sort Name": "Hit Me Like That Snare (feat. Rejjie Snow) [Rejjie Snow Version]", + "Persistent ID": "3DAD2F64896D59BA", + "Track Type": "Remote" + }, + { + "Track ID": "3721", + "Name": "Pleader", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "RELAXER", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "12447618", + "Total Time": "348547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "8", + "Year": "2017", + "Date Modified": "2019-08-28T18:38:58Z", + "Date Added": "2019-08-28T18:38:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3737194514", + "Play Date UTC": "2022-06-04T10:35:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RELAXER", + "Sort Artist": "alt-J", + "Sort Name": "Pleader", + "Persistent ID": "9FE2828B936B53EC", + "Track Type": "Remote" + }, + { + "Track ID": "3723", + "Name": "Greygoose", + "Artist": "Yung Lean", + "Album Artist": "Yung Lean", + "Composer": "undef", + "Album": "Lavender - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7002626", + "Total Time": "196000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2013", + "Date Modified": "2019-09-01T16:48:26Z", + "Date Added": "2019-09-01T16:48:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "67", + "Play Date": "3780770718", + "Play Date UTC": "2023-10-21T19:05:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-08-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lavender - Single", + "Sort Artist": "Yung Lean", + "Sort Name": "Greygoose", + "Persistent ID": "041B849BE5BCB33E", + "Track Type": "Remote" + }, + { + "Track ID": "3725", + "Name": "Suicide Watch", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "Ricky Hil", + "Album": "Candy Painted Coffins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8074467", + "Total Time": "225171", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2019-09-02T13:24:15Z", + "Date Added": "2019-09-02T13:24:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3769950310", + "Play Date UTC": "2023-06-18T13:25:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-07-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Candy Painted Coffins", + "Sort Artist": "Ricky Hil", + "Sort Name": "Suicide Watch", + "Persistent ID": "A140E8F74A0AF331", + "Track Type": "Remote" + }, + { + "Track ID": "3727", + "Name": "Double Darkness", + "Artist": "Big Scary", + "Album Artist": "Big Scary", + "Composer": "Tom Iansek", + "Album": "Animal", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9695523", + "Total Time": "275947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2016", + "Date Modified": "2019-09-05T04:11:20Z", + "Date Added": "2019-09-05T04:11:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3780392888", + "Play Date UTC": "2023-10-17T10:08:08Z", + "Skip Count": "1", + "Skip Date": "2019-09-15T16:01:14Z", + "Release Date": "2016-09-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Animal", + "Sort Artist": "Big Scary", + "Sort Name": "Double Darkness", + "Persistent ID": "6B6D38DBB1E643EA", + "Track Type": "Remote" + }, + { + "Track ID": "3729", + "Name": "Got It, Lost It", + "Artist": "Big Scary", + "Album Artist": "Big Scary", + "Composer": "Big Scary", + "Album": "Vacation", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9291096", + "Total Time": "263307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2011", + "Date Modified": "2019-09-05T04:16:42Z", + "Date Added": "2019-09-05T04:16:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "99", + "Play Date": "3781352716", + "Play Date UTC": "2023-10-28T12:45:16Z", + "Skip Count": "1", + "Skip Date": "2021-05-10T22:53:24Z", + "Release Date": "2011-10-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Vacation", + "Sort Artist": "Big Scary", + "Sort Name": "Got It, Lost It", + "Persistent ID": "5B2DD0024D3620FA", + "Track Type": "Remote" + }, + { + "Track ID": "3731", + "Name": "Child in a Tree", + "Artist": "Big Scary", + "Album Artist": "Big Scary", + "Composer": "Big Scary", + "Album": "Vacation", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7906730", + "Total Time": "218747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2011", + "Date Modified": "2019-09-05T04:21:36Z", + "Date Added": "2019-09-05T04:21:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3776172606", + "Play Date UTC": "2023-08-29T13:50:06Z", + "Skip Count": "1", + "Skip Date": "2019-09-07T08:36:56Z", + "Release Date": "2011-10-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Vacation", + "Sort Artist": "Big Scary", + "Sort Name": "Child in a Tree", + "Persistent ID": "81DD59BE97451480", + "Track Type": "Remote" + }, + { + "Track ID": "3733", + "Name": "Future Holds", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "Future Holds - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "6293487", + "Total Time": "175005", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-09-06T10:38:37Z", + "Date Added": "2019-09-06T10:38:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "137", + "Play Date": "3783495256", + "Play Date UTC": "2023-11-22T07:54:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Future Holds - Single", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "Future Holds", + "Persistent ID": "9181A5B87C847A7B", + "Track Type": "Remote" + }, + { + "Track ID": "3735", + "Name": "Stolen", + "Artist": "Son Lux", + "Album Artist": "Son Lux", + "Composer": "undef", + "Album": "Remedy - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8601028", + "Total Time": "240240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2017", + "Date Modified": "2019-09-09T04:50:59Z", + "Date Added": "2019-09-09T04:50:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "109", + "Play Date": "3770109874", + "Play Date UTC": "2023-06-20T09:44:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Remedy - EP", + "Sort Artist": "Son Lux", + "Sort Name": "Stolen", + "Persistent ID": "14ABC1681817D277", + "Track Type": "Remote" + }, + { + "Track ID": "3737", + "Name": "Still", + "Artist": "Foo Fighters", + "Album Artist": "Foo Fighters", + "Composer": "Foo Fighters", + "Album": "In Your Honor", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10939869", + "Total Time": "312826", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "10", + "Year": "2005", + "Date Modified": "2019-09-09T10:51:31Z", + "Date Added": "2019-09-09T10:51:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "122", + "Play Date": "3780917295", + "Play Date UTC": "2023-10-23T11:48:15Z", + "Skip Count": "3", + "Skip Date": "2022-03-15T18:25:05Z", + "Release Date": "2005-06-14T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "In Your Honor", + "Sort Artist": "Foo Fighters", + "Sort Name": "Still", + "Persistent ID": "BD4E649340588878", + "Track Type": "Remote" + }, + { + "Track ID": "3739", + "Name": "Moving Mountains", + "Artist": "ANIMA!", + "Album Artist": "ANIMA!", + "Composer": "undef", + "Album": "Art:Work - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8374853", + "Total Time": "226818", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2016", + "Date Modified": "2019-09-09T17:21:49Z", + "Date Added": "2019-09-09T17:21:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3776235875", + "Play Date UTC": "2023-08-30T07:24:35Z", + "Skip Count": "1", + "Skip Date": "2019-09-13T08:40:37Z", + "Release Date": "2016-12-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Art:Work - EP", + "Sort Artist": "ANIMA!", + "Sort Name": "Moving Mountains", + "Persistent ID": "EADE00B8FB326924", + "Track Type": "Remote" + }, + { + "Track ID": "3741", + "Name": "X (feat. Future)", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "9096833", + "Total Time": "258880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2019-09-17T09:14:54Z", + "Date Added": "2019-09-17T09:14:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "286", + "Play Date": "3735300531", + "Play Date UTC": "2022-05-13T12:28:51Z", + "Skip Count": "3", + "Skip Date": "2021-09-12T19:29:03Z", + "Release Date": "2016-07-14T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "X (feat. Future)", + "Persistent ID": "F00722C1F16CABE5", + "Track Type": "Remote" + }, + { + "Track ID": "3743", + "Name": "Feel It", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "5880990", + "Total Time": "163387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2019-09-17T11:08:59Z", + "Date Added": "2019-09-17T11:08:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "268", + "Play Date": "3731752920", + "Play Date UTC": "2022-04-02T11:02:00Z", + "Skip Count": "2", + "Skip Date": "2022-04-16T22:46:46Z", + "Release Date": "2016-07-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Feel It", + "Persistent ID": "FAB2511ED54B1B50", + "Track Type": "Remote" + }, + { + "Track ID": "3745", + "Name": "I'm Gonna Be", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7104096", + "Total Time": "200680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "73", + "Play Date": "3783060931", + "Play Date UTC": "2023-11-17T07:15:31Z", + "Skip Count": "1", + "Skip Date": "2021-10-03T11:19:30Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "I'm Gonna Be", + "Persistent ID": "D12159C25C96D39E", + "Track Type": "Remote" + }, + { + "Track ID": "3747", + "Name": "On the Road (feat. Meek Mill & Lil Baby)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Nick Mira, Austin Post, Robert Williams, Dominique Jones, Billy Walsh & Tavoris Hollins, Jr.", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7739896", + "Total Time": "218317", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3783409108", + "Play Date UTC": "2023-11-21T07:58:28Z", + "Skip Count": "2", + "Skip Date": "2021-03-16T04:36:02Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "On the Road (feat. Meek Mill & Lil Baby)", + "Persistent ID": "7C040834DD66437D", + "Track Type": "Remote" + }, + { + "Track ID": "3749", + "Name": "Die For Me (feat. Future & Halsey)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Andrew Watt, Happy Perez, Austin Post, Nayvadius Wilburn, Ashley Frangipane & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8691194", + "Total Time": "245268", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "80", + "Play Date": "3783004275", + "Play Date UTC": "2023-11-16T15:31:15Z", + "Skip Count": "4", + "Skip Date": "2021-10-03T15:05:44Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Die For Me (feat. Future & Halsey)", + "Persistent ID": "A1B9E46FCCF1F37E", + "Track Type": "Remote" + }, + { + "Track ID": "3751", + "Name": "Circles", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post, Kaan Gunesberk, Adam Feeney & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7733632", + "Total Time": "215277", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "148", + "Play Date": "3783007410", + "Play Date UTC": "2023-11-16T16:23:30Z", + "Skip Count": "6", + "Skip Date": "2022-06-28T16:09:51Z", + "Release Date": "2019-08-30T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Circles", + "Persistent ID": "9C7727CACABE2490", + "Track Type": "Remote" + }, + { + "Track ID": "3753", + "Name": "Internet", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post, Kanye West & Dacoury Dahi Natche", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4677474", + "Total Time": "123390", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3783013700", + "Play Date UTC": "2023-11-16T18:08:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Internet", + "Persistent ID": "69FE0651037E39D8", + "Track Type": "Remote" + }, + { + "Track ID": "3755", + "Name": "Staring at the Sun (feat. SZA)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Matt Tavares, Austin Post, Solana Rowe, Adam Feeney & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6201258", + "Total Time": "168276", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3783671955", + "Play Date UTC": "2023-11-24T08:59:15Z", + "Skip Count": "2", + "Skip Date": "2021-04-15T20:07:01Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Staring at the Sun (feat. SZA)", + "Persistent ID": "A2D734C6C6BB8186", + "Track Type": "Remote" + }, + { + "Track ID": "3757", + "Name": "Take What You Want (feat. Ozzy Osbourne & Travis Scott)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Andrew Watt, Austin Post, Ozzy Osbourne, Jacques Webster & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8264998", + "Total Time": "229580", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "82", + "Play Date": "3783007862", + "Play Date UTC": "2023-11-16T16:31:02Z", + "Skip Count": "11", + "Skip Date": "2022-09-01T09:29:55Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Take What You Want (feat. Ozzy Osbourne & Travis Scott)", + "Persistent ID": "F5B61DAD28DB595A", + "Track Type": "Remote" + }, + { + "Track ID": "3759", + "Name": "Hollywood's Bleeding", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Brian Lee, Austin Post, Billy Walsh & Carter Lang", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5679447", + "Total Time": "156265", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "138", + "Play Date": "3783012370", + "Play Date UTC": "2023-11-16T17:46:10Z", + "Skip Count": "10", + "Skip Date": "2023-02-26T20:04:24Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Hollywood's Bleeding", + "Persistent ID": "314FB0A8AA160DD0", + "Track Type": "Remote" + }, + { + "Track ID": "3761", + "Name": "I Know", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5322260", + "Total Time": "141441", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "67", + "Play Date": "3783056818", + "Play Date UTC": "2023-11-17T06:06:58Z", + "Skip Count": "2", + "Skip Date": "2022-08-19T16:10:05Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "I Know", + "Persistent ID": "6B79313F795CCE22", + "Track Type": "Remote" + }, + { + "Track ID": "3763", + "Name": "Saint-Tropez", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Jahaan Akil Sweet, Louis Bell, Austin Post, Adam Feeney, Nima Jahanbin, Paimon Jahanbin & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5609150", + "Total Time": "150865", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "122", + "Play Date": "3783008755", + "Play Date UTC": "2023-11-16T16:45:55Z", + "Skip Count": "9", + "Skip Date": "2022-10-09T15:24:22Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Saint-Tropez", + "Persistent ID": "6D62816763EBB693", + "Track Type": "Remote" + }, + { + "Track ID": "3765", + "Name": "Myself", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Emile Haynie, Austin Post, Joshua Tillman & Adam Feeney", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5792736", + "Total Time": "158123", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "66", + "Play Date": "3783594485", + "Play Date UTC": "2023-11-23T11:28:05Z", + "Skip Count": "1", + "Skip Date": "2023-10-12T22:35:54Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Myself", + "Persistent ID": "2E098290BABDB102", + "Track Type": "Remote" + }, + { + "Track ID": "3767", + "Name": "Goodbyes (feat. Young Thug)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Brian Lee, Louis Bell, Austin Post, Billy Walsh, Jeffery Williams, Jessie Lauren Foutz & Val Blavatnik", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6445775", + "Total Time": "174843", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "70", + "Play Date": "3783711114", + "Play Date UTC": "2023-11-24T19:51:54Z", + "Skip Count": "2", + "Skip Date": "2023-10-12T22:35:59Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Goodbyes (feat. Young Thug)", + "Persistent ID": "B645969EC9031E3C", + "Track Type": "Remote" + }, + { + "Track ID": "3769", + "Name": "A Thousand Bad Times", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Kaan Gunesberk, Austin Post, Adam Feeney & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7878758", + "Total Time": "221183", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "75", + "Play Date": "3783058054", + "Play Date UTC": "2023-11-17T06:27:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Thousand Bad Times", + "Persistent ID": "1E876D335AD52C76", + "Track Type": "Remote" + }, + { + "Track ID": "3771", + "Name": "Allergic", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Brian Lee, Austin Post & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5795234", + "Total Time": "156891", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3783005569", + "Play Date UTC": "2023-11-16T15:52:49Z", + "Skip Count": "14", + "Skip Date": "2023-07-19T11:40:14Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Allergic", + "Persistent ID": "35E4540B07376857", + "Track Type": "Remote" + }, + { + "Track ID": "3773", + "Name": "Wow.", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post, Adam Feeny & Billy Walsh", + "Album": "Hollywood's Bleeding", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5594776", + "Total Time": "149507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": -1, + "Year": "2018", + "Date Modified": "2019-09-18T16:26:21Z", + "Date Added": "2019-09-18T16:26:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "95", + "Play Date": "3783011753", + "Play Date UTC": "2023-11-16T17:35:53Z", + "Skip Count": "3", + "Skip Date": "2021-11-02T16:14:28Z", + "Release Date": "2018-12-24T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hollywood's Bleeding", + "Sort Artist": "Post Malone", + "Sort Name": "Wow.", + "Persistent ID": "C5A3FA0BA8C07F67", + "Track Type": "Remote" + }, + { + "Track ID": "3775", + "Name": "I Just Want You", + "Artist": "Ozzy Osbourne", + "Album Artist": "Ozzy Osbourne", + "Composer": "Ozzy Osbourne & Jim Vallance", + "Album": "Ozzmosis (Bonus Track Version)", + "Genre": "Hard Rock", + "Kind": "Apple Music AAC audio file", + "Size": "10965653", + "Total Time": "296123", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "1995", + "Date Modified": "2019-09-18T18:16:48Z", + "Date Added": "2019-09-18T18:16:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783410581", + "Play Date UTC": "2023-11-21T08:23:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1995-10-23T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ozzmosis (Bonus Track Version)", + "Sort Artist": "Ozzy Osbourne", + "Sort Name": "I Just Want You", + "Persistent ID": "A5C94F0256B68DE1", + "Track Type": "Remote" + }, + { + "Track ID": "3777", + "Name": "Mr Sal", + "Artist": "Niska", + "Album Artist": "Niska", + "Composer": "Saydiq & Sam H", + "Album": "Mr Sal", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6230520", + "Total Time": "177333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "18", + "Year": "2019", + "Date Modified": "2019-09-20T08:34:46Z", + "Date Added": "2019-09-20T08:34:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "79", + "Play Date": "3783682465", + "Play Date UTC": "2023-11-24T11:54:25Z", + "Skip Count": "7", + "Skip Date": "2022-11-11T18:39:34Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mr Sal", + "Sort Artist": "Niska", + "Sort Name": "Mr Sal", + "Persistent ID": "A9869F57F7AAD4CE", + "Track Type": "Remote" + }, + { + "Track ID": "3779", + "Name": "Memories", + "Artist": "Maroon 5", + "Album Artist": "Maroon 5", + "Composer": "Adam Levine, Michael Pollack, Jonathan Bellion, Jordan Johnson, Stefan Johnson, Vincent Ford & Jacob Kasher Hindlin", + "Album": "Memories - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6808629", + "Total Time": "189486", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-09-24T11:03:40Z", + "Date Added": "2019-09-24T11:03:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3776255129", + "Play Date UTC": "2023-08-30T12:45:29Z", + "Skip Count": "1", + "Skip Date": "2022-09-01T09:30:19Z", + "Release Date": "2019-09-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Memories - Single", + "Sort Artist": "Maroon 5", + "Sort Name": "Memories", + "Persistent ID": "DE80E9F1A502FD70", + "Track Type": "Remote" + }, + { + "Track ID": "3781", + "Name": "Under the Same Sun", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom (Deluxe Edition)", + "Genre": "Alternative Folk", + "Kind": "Apple Music AAC audio file", + "Size": "10070968", + "Total Time": "286280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "17", + "Year": "2011", + "Date Modified": "2019-09-24T17:24:06Z", + "Date Added": "2019-09-24T17:24:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3771825543", + "Play Date UTC": "2023-07-10T06:19:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-01-01T12:00:00Z", + "Album Rating": "40", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "40", + "Sort Album": "Every Kingdom (Deluxe Edition)", + "Sort Artist": "Ben Howard", + "Sort Name": "Under the Same Sun", + "Persistent ID": "1C5C9C8C5ECE847C", + "Track Type": "Remote" + }, + { + "Track ID": "3783", + "Name": "Nica Libres At Dusk", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard, Mickey Smith, Kyle Keegan, Nathan Wason, India Bourne & Richard Thomas", + "Album": "Noonday Dream", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "14254968", + "Total Time": "394320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2019-09-24T17:48:02Z", + "Date Added": "2019-09-24T17:48:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3766664094", + "Play Date UTC": "2023-05-11T12:34:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noonday Dream", + "Sort Artist": "Ben Howard", + "Sort Name": "Nica Libres At Dusk", + "Persistent ID": "5F102F16E8C84E3F", + "Track Type": "Remote" + }, + { + "Track ID": "3785", + "Name": "Gracious", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom (Deluxe Edition)", + "Genre": "Alternative Folk", + "Kind": "Apple Music AAC audio file", + "Size": "10421346", + "Total Time": "297173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "17", + "Year": "2011", + "Date Modified": "2019-09-24T18:09:27Z", + "Date Added": "2019-09-24T18:09:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3767036462", + "Play Date UTC": "2023-05-15T20:01:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-01-01T12:00:00Z", + "Album Rating": "40", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "40", + "Sort Album": "Every Kingdom (Deluxe Edition)", + "Sort Artist": "Ben Howard", + "Sort Name": "Gracious", + "Persistent ID": "42F4FE017538DB3C", + "Track Type": "Remote" + }, + { + "Track ID": "3787", + "Name": "The Girl on the Couch", + "Artist": "Okay(K)", + "Album Artist": "Okay(K)", + "Composer": "undef", + "Album": "The Girl on the Couch EP - EP", + "Genre": "R&B/Soul", + "Kind": "AAC audio file", + "Size": "3985858", + "Total Time": "104226", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2019", + "Date Modified": "2019-09-25T16:59:32Z", + "Date Added": "2019-09-25T16:59:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3727605841", + "Play Date UTC": "2022-02-13T11:04:01Z", + "Skip Count": "1", + "Skip Date": "2019-09-25T19:38:13Z", + "Release Date": "2019-09-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Girl on the Couch EP - EP", + "Sort Artist": "Okay(K)", + "Sort Name": "Girl on the Couch", + "Persistent ID": "85B1904379884BFE", + "Track Type": "Remote" + }, + { + "Track ID": "3789", + "Name": "Slow Dancing W/ Jazz", + "Artist": "Okay(K)", + "Album Artist": "Okay(K)", + "Composer": "undef", + "Album": "slow dancing w/ jazz - Single", + "Genre": "Pop", + "Kind": "AAC audio file", + "Size": "8984166", + "Total Time": "254537", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-09-25T16:59:49Z", + "Date Added": "2019-09-25T16:59:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3760470672", + "Play Date UTC": "2023-02-28T20:11:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-08-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "slow dancing w/ jazz - Single", + "Sort Artist": "Okay(K)", + "Sort Name": "Slow Dancing W/ Jazz", + "Persistent ID": "8E618A7DAAD4165D", + "Track Type": "Remote" + }, + { + "Track ID": "3791", + "Name": "Sarah's Song", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "Syldd", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7944301", + "Total Time": "225667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2019-09-25T17:23:30Z", + "Date Added": "2019-09-25T17:23:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3760253032", + "Play Date UTC": "2023-02-26T07:43:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Syldd", + "Sort Artist": "Ricky Hil", + "Sort Name": "Sarah's Song", + "Persistent ID": "27E1234C29375F7D", + "Track Type": "Remote" + }, + { + "Track ID": "3793", + "Name": "Nomads (feat. The Weeknd)", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "Syldd", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8437471", + "Total Time": "241427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2019-09-25T17:25:55Z", + "Date Added": "2019-09-25T17:25:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3774950122", + "Play Date UTC": "2023-08-15T10:15:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Syldd", + "Sort Artist": "Ricky Hil", + "Sort Name": "Nomads (feat. The Weeknd)", + "Persistent ID": "90A8DB4C1AE993F6", + "Track Type": "Remote" + }, + { + "Track ID": "3795", + "Name": "Beautiful When You're Sad", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "Syldd", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "10372082", + "Total Time": "298373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2019-09-25T17:36:48Z", + "Date Added": "2019-09-25T17:36:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781174196", + "Play Date UTC": "2023-10-26T11:09:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Syldd", + "Sort Artist": "Ricky Hil", + "Sort Name": "Beautiful When You're Sad", + "Persistent ID": "CE4C2F6E6F41377E", + "Track Type": "Remote" + }, + { + "Track ID": "3797", + "Name": "Walk Around Here", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "Ricky Hil", + "Album": "Candy Painted Coffins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4626528", + "Total Time": "124974", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2019-09-25T18:18:02Z", + "Date Added": "2019-09-25T18:18:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3782979129", + "Play Date UTC": "2023-11-16T08:32:09Z", + "Skip Count": "1", + "Skip Date": "2022-11-26T14:51:57Z", + "Release Date": "2015-07-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Candy Painted Coffins", + "Sort Artist": "Ricky Hil", + "Sort Name": "Walk Around Here", + "Persistent ID": "34EABB9B9CDE60AD", + "Track Type": "Remote" + }, + { + "Track ID": "3799", + "Name": "Psych Ward Blues", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "Ricky Hil", + "Album": "Candy Painted Coffins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7288761", + "Total Time": "205009", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2019-09-25T19:05:15Z", + "Date Added": "2019-09-25T19:05:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3776335336", + "Play Date UTC": "2023-08-31T11:02:16Z", + "Skip Count": "1", + "Skip Date": "2020-02-01T06:07:04Z", + "Release Date": "2015-07-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Candy Painted Coffins", + "Sort Artist": "Ricky Hil", + "Sort Name": "Psych Ward Blues", + "Persistent ID": "056F780E5071E2A5", + "Track Type": "Remote" + }, + { + "Track ID": "3801", + "Name": "Superman", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "Ricky Hil", + "Album": "Candy Painted Coffins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8874098", + "Total Time": "252669", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2019-09-25T19:16:37Z", + "Date Added": "2019-09-25T19:16:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3758766317", + "Play Date UTC": "2023-02-09T02:45:17Z", + "Skip Count": "1", + "Skip Date": "2023-10-03T15:22:49Z", + "Release Date": "2015-07-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Candy Painted Coffins", + "Sort Artist": "Ricky Hil", + "Sort Name": "Superman", + "Persistent ID": "FC4E23D81C8A9BEB", + "Track Type": "Remote" + }, + { + "Track ID": "3803", + "Name": "Paranoia", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "Ricky Hil", + "Album": "Candy Painted Coffins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7988795", + "Total Time": "224600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2019-09-25T19:16:37Z", + "Date Added": "2019-09-25T19:16:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3773235345", + "Play Date UTC": "2023-07-26T13:55:45Z", + "Skip Count": "2", + "Skip Date": "2022-01-14T11:05:04Z", + "Release Date": "2015-07-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Candy Painted Coffins", + "Sort Artist": "Ricky Hil", + "Sort Name": "Paranoia", + "Persistent ID": "0115DBAAA5066553", + "Track Type": "Remote" + }, + { + "Track ID": "3805", + "Name": "Skys Black", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "Ricky Hil", + "Album": "Candy Painted Coffins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6001782", + "Total Time": "152772", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2019-09-25T19:16:37Z", + "Date Added": "2019-09-25T19:16:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3783412668", + "Play Date UTC": "2023-11-21T08:57:48Z", + "Skip Count": "3", + "Skip Date": "2022-09-20T11:02:54Z", + "Release Date": "2015-07-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Candy Painted Coffins", + "Sort Artist": "Ricky Hil", + "Sort Name": "Skys Black", + "Persistent ID": "0858C603358FA2DC", + "Track Type": "Remote" + }, + { + "Track ID": "3807", + "Name": "Chained", + "Artist": "The xx", + "Album Artist": "The xx", + "Composer": "Oliver Sim & Romy Madley Croft", + "Album": "Coexist", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6110458", + "Total Time": "167547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2012", + "Date Modified": "2019-09-25T19:22:59Z", + "Date Added": "2019-09-25T19:22:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3770487924", + "Play Date UTC": "2023-06-24T18:45:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-08-07T07:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Coexist", + "Sort Artist": "xx", + "Sort Name": "xx", + "Persistent ID": "Chained", + "Track Type": "9555A955F0E45F27" + }, + { + "Track ID": "3809", + "Name": "All the Time 2", + "Artist": "Wintertime", + "Album Artist": "Wintertime", + "Composer": "undef", + "Album": "All the Time 2 - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5510899", + "Total Time": "150271", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2019-09-25T19:45:30Z", + "Date Added": "2019-09-25T19:45:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3773545992", + "Play Date UTC": "2023-07-30T04:13:12Z", + "Skip Count": "2", + "Skip Date": "2023-01-20T20:35:03Z", + "Release Date": "2016-10-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "All the Time 2 - Single", + "Sort Artist": "Wintertime", + "Sort Name": "All the Time 2", + "Persistent ID": "517FF4997E1CAC79", + "Track Type": "Remote" + }, + { + "Track ID": "3811", + "Name": "4 Door", + "Artist": "Wintertime", + "Album Artist": "Wintertime", + "Composer": "Wintertime", + "Album": "4 Door - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "5566540", + "Total Time": "151894", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2019-09-25T19:46:31Z", + "Date Added": "2019-09-25T19:46:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3711821020", + "Play Date UTC": "2021-08-14T18:23:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-07-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "4 Door - Single", + "Sort Artist": "Wintertime", + "Sort Name": "4 Door", + "Persistent ID": "632770A9A2937A6A", + "Track Type": "Remote" + }, + { + "Track ID": "3813", + "Name": "Feeling Like (feat. Jeezy)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Honorable C.N.O.T.E, Jay Jenkins & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "8097045", + "Total Time": "228259", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3776429967", + "Play Date UTC": "2023-09-01T13:19:27Z", + "Skip Count": "1", + "Skip Date": "2023-06-25T09:03:29Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Feeling Like (feat. Jeezy)", + "Persistent ID": "96024D929C8249E4", + "Track Type": "Remote" + }, + { + "Track ID": "3815", + "Name": "Why They Call You Kodak", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Ben Billions & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7532846", + "Total Time": "213655", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3779316921", + "Play Date UTC": "2023-10-04T23:15:21Z", + "Skip Count": "2", + "Skip Date": "2022-07-24T13:34:16Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Why They Call You Kodak", + "Persistent ID": "0C769CD706BF7067", + "Track Type": "Remote" + }, + { + "Track ID": "3817", + "Name": "There He Go", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Aaron Lockhart Jr. & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7053734", + "Total Time": "196113", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3780497275", + "Play Date UTC": "2023-10-18T15:07:55Z", + "Skip Count": "1", + "Skip Date": "2022-10-23T08:19:35Z", + "Release Date": "2016-12-23T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "There He Go", + "Persistent ID": "30DCDFDB440C2A47", + "Track Type": "Remote" + }, + { + "Track ID": "3819", + "Name": "Save You", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Ben Billions, Kodak Black & NAV", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "8477395", + "Total Time": "238687", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3773644726", + "Play Date UTC": "2023-07-31T07:38:46Z", + "Skip Count": "3", + "Skip Date": "2022-10-29T09:19:23Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Save You", + "Persistent ID": "4246B9F6EBECE41E", + "Track Type": "Remote" + }, + { + "Track ID": "3821", + "Name": "Conscience (feat. Future)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "DY, Future & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7846597", + "Total Time": "219754", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781196402", + "Play Date UTC": "2023-10-26T17:20:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Conscience (feat. Future)", + "Persistent ID": "D7CE25649D2E7836", + "Track Type": "Remote" + }, + { + "Track ID": "3823", + "Name": "Tunnel Vision", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Kevin Gomringer, Kodak Black, Metro Boomin, Southside & Tim Gomringer", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "9533050", + "Total Time": "268187", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3783321889", + "Play Date UTC": "2023-11-20T07:44:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-17T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Tunnel Vision", + "Persistent ID": "906CF7128E7E61A6", + "Track Type": "Remote" + }, + { + "Track ID": "3825", + "Name": "Corrlinks and JPay", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "30 Roc & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6619958", + "Total Time": "182833", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783684619", + "Play Date UTC": "2023-11-24T12:30:19Z", + "Skip Count": "1", + "Skip Date": "2019-10-02T12:42:15Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Corrlinks and JPay", + "Persistent ID": "CC10C5EE1679A98D", + "Track Type": "Remote" + }, + { + "Track ID": "3827", + "Name": "Reminiscing (feat. A Boogie wit da Hoodie)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "A Boogie wit da Hoodie, Ben Billions, Dyryk & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7962598", + "Total Time": "225132", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781535847", + "Play Date UTC": "2023-10-30T15:37:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Boogie wit da Hoodie, Ben Billions, Dyryk & Kodak Black", + "Persistent ID": "Reminiscing (feat. A Boogie wit da Hoodie)", + "Track Type": "5AA6D27C508B59D8" + }, + { + "Track ID": "3829", + "Name": "Side N***a", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "C-Clip Beatz & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7509190", + "Total Time": "209808", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3766559336", + "Play Date UTC": "2023-05-10T07:28:56Z", + "Skip Count": "1", + "Skip Date": "2023-03-28T09:39:35Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Side Nigga", + "Persistent ID": "0C54B9F8848FE1AF", + "Track Type": "Remote" + }, + { + "Track ID": "3831", + "Name": "Off the Land", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Kodak Black, Rex Kudo & Wheezy", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7986076", + "Total Time": "225726", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3775566979", + "Play Date UTC": "2023-08-22T13:36:19Z", + "Skip Count": "2", + "Skip Date": "2022-08-11T13:38:04Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Off the Land", + "Persistent ID": "4A0A802038D2EC87", + "Track Type": "Remote" + }, + { + "Track ID": "3833", + "Name": "U Ain't Never", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Ben Billions & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7531819", + "Total Time": "209707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3773156125", + "Play Date UTC": "2023-07-25T15:55:25Z", + "Skip Count": "2", + "Skip Date": "2023-10-29T11:55:50Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "U Ain't Never", + "Persistent ID": "1578CC8228EC9CE2", + "Track Type": "Remote" + }, + { + "Track ID": "3835", + "Name": "Twenty 8", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Daris Meachem & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6503297", + "Total Time": "179591", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3760962856", + "Play Date UTC": "2023-03-06T12:54:16Z", + "Skip Count": "3", + "Skip Date": "2023-10-21T19:05:24Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Twenty 8", + "Persistent ID": "B2A50BDEA3237336", + "Track Type": "Remote" + }, + { + "Track ID": "3837", + "Name": "Patty Cake", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Ben Billions, Kodak Black, Ness & Nick Seeley", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6996134", + "Total Time": "198110", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3777563585", + "Play Date UTC": "2023-09-14T16:13:05Z", + "Skip Count": -1, + "Skip Date": "2022-10-10T13:38:30Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Patty Cake", + "Persistent ID": "DA5AF80F09961B4F", + "Track Type": "Remote" + }, + { + "Track ID": "3839", + "Name": "Coolin and Booted", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Ben Billions, DannyBoyStyles & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7666017", + "Total Time": "214782", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3776171902", + "Play Date UTC": "2023-08-29T13:38:22Z", + "Skip Count": "2", + "Skip Date": "2022-08-21T12:14:06Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Coolin and Booted", + "Persistent ID": "2EE9B3BF3C726545", + "Track Type": "Remote" + }, + { + "Track ID": "3841", + "Name": "Candy Paint (feat. Bun B)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Bun B, Jan Branicki, Kevin Price & Kodak Black", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7778829", + "Total Time": "218990", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3775745468", + "Play Date UTC": "2023-08-24T15:11:08Z", + "Skip Count": "2", + "Skip Date": "2021-04-07T18:31:09Z", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Candy Paint (feat. Bun B)", + "Persistent ID": "BCBAE58F78A3FA94", + "Track Type": "Remote" + }, + { + "Track ID": "3843", + "Name": "Up in Here", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Charlie Handsome, Kodak Black & Rex Kudo", + "Album": "Painting Pictures", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6417931", + "Total Time": "175682", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2017", + "Date Modified": "2019-09-26T12:45:28Z", + "Date Added": "2019-09-26T12:45:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3773848141", + "Play Date UTC": "2023-08-02T16:09:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-03-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Painting Pictures", + "Sort Artist": "Kodak Black", + "Sort Name": "Up in Here", + "Persistent ID": "561FBDD9CA2BFEA8", + "Track Type": "Remote" + }, + { + "Track ID": "3845", + "Name": "Tremosine", + "Artist": "George Ogilvie", + "Album Artist": "George Ogilvie", + "Composer": "George Ogilvie", + "Album": "White Out", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11804113", + "Total Time": "343573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2019-09-27T09:23:03Z", + "Date Added": "2019-09-27T09:23:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3768380769", + "Play Date UTC": "2023-05-31T09:26:09Z", + "Skip Count": "2", + "Skip Date": "2022-08-16T15:28:12Z", + "Release Date": "2020-02-06T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "White Out", + "Sort Artist": "George Ogilvie", + "Sort Name": "Tremosine", + "Persistent ID": "20E372886FEDC4BC", + "Track Type": "Remote" + }, + { + "Track ID": "3847", + "Name": "Shelter (feat. Ropoporose & BRNS)", + "Artist": "Namdose", + "Album Artist": "Namdose", + "Composer": "Antoine Meersseman, Romain Benard, Pauline Benard, Timoth\u00e9e Philippe & Diego Leyder", + "Album": "Shelter (feat. Ropoporose & BRNS) - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "9217602", + "Total Time": "259077", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-09-27T09:31:17Z", + "Date Added": "2019-09-27T09:31:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3773763435", + "Play Date UTC": "2023-08-01T16:37:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Shelter (feat. Ropoporose & BRNS) - Single", + "Sort Artist": "Namdose", + "Sort Name": "Shelter (feat. Ropoporose & BRNS)", + "Persistent ID": "7EDD4DB1F6F4F676", + "Track Type": "Remote" + }, + { + "Track ID": "3849", + "Name": "Open", + "Artist": "Luke Howard", + "Album Artist": "Luke Howard", + "Composer": "Luke Howard", + "Album": "More Heart Stories - EP", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "7330440", + "Total Time": "182648", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2018", + "Date Modified": "2019-09-27T11:11:34Z", + "Date Added": "2019-09-27T11:11:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3778583726", + "Play Date UTC": "2023-09-26T11:35:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "More Heart Stories - EP", + "Sort Artist": "Luke Howard", + "Sort Name": "Open", + "Persistent ID": "866C19098AD98206", + "Track Type": "Remote" + }, + { + "Track ID": "3851", + "Name": "Miss You", + "Artist": "Trentem\u00f8ller", + "Album Artist": "Trentem\u00f8ller", + "Composer": "Trentem\u00f8ller", + "Album": "The Last Resort", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "8807549", + "Total Time": "247818", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "13", + "Track Count": "13", + "Year": "2006", + "Date Modified": "2019-09-27T11:17:12Z", + "Date Added": "2019-09-27T11:17:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781535621", + "Play Date UTC": "2023-10-30T15:33:41Z", + "Skip Count": "3", + "Skip Date": "2021-09-24T20:09:09Z", + "Release Date": "2006-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Last Resort", + "Sort Artist": "Trentem\u00f8ller", + "Sort Name": "Miss You", + "Persistent ID": "CFD73ACBAA7D5080", + "Track Type": "Remote" + }, + { + "Track ID": "3853", + "Name": "On the Esplanade", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8268322", + "Total Time": "220640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2019-09-27T11:24:07Z", + "Date Added": "2019-09-27T11:24:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3765125678", + "Play Date UTC": "2023-04-23T17:14:38Z", + "Skip Count": "1", + "Skip Date": "2022-03-15T17:17:55Z", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "On the Esplanade", + "Persistent ID": "EF0D39FC0CF2DD04", + "Track Type": "Remote" + }, + { + "Track ID": "3855", + "Name": "XO TOUR Llif3", + "Artist": "Lil Uzi Vert", + "Album Artist": "Lil Uzi Vert", + "Composer": "Bryan Lamar Simmons, Bryan Simmons & Lil Uzi Vert", + "Album": "XO TOUR Llif3 - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6651445", + "Total Time": "182707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-09-27T13:32:10Z", + "Date Added": "2019-09-27T13:32:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "111", + "Play Date": "3783782823", + "Play Date UTC": "2023-11-25T15:47:03Z", + "Skip Count": "5", + "Skip Date": "2022-11-26T14:59:23Z", + "Release Date": "2017-02-26T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "XO TOUR Llif3 - Single", + "Sort Artist": "Lil Uzi Vert", + "Sort Name": "XO TOUR Llif3", + "Persistent ID": "BC67463A2932B398", + "Track Type": "Remote" + }, + { + "Track ID": "3857", + "Name": "Paradox", + "Artist": "Jaymes Young", + "Album Artist": "Jaymes Young", + "Composer": "undef", + "Album": "Paradox - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8152370", + "Total Time": "230493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-10-04T16:09:03Z", + "Date Added": "2019-10-04T16:09:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3781355026", + "Play Date UTC": "2023-10-28T13:23:46Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Paradox - Single", + "Sort Artist": "Jaymes Young", + "Sort Name": "Paradox", + "Persistent ID": "E38649B0B7FAEFD9", + "Track Type": "Remote" + }, + { + "Track ID": "3859", + "Name": "probably<3", + "Artist": "Sueco", + "Album Artist": "Sueco", + "Composer": "Jad Antoury & William Henry Victor Schultz", + "Album": "MISCREANT", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5230846", + "Total Time": "141053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-10-11T09:47:05Z", + "Date Added": "2019-10-11T09:47:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "95", + "Play Date": "3772816116", + "Play Date UTC": "2023-07-21T17:28:36Z", + "Skip Count": "5", + "Skip Date": "2023-02-22T15:01:27Z", + "Release Date": "2019-09-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "MISCREANT", + "Sort Artist": "Sueco", + "Sort Name": "probably<3", + "Persistent ID": "841DC22D7B284553", + "Track Type": "Remote" + }, + { + "Track ID": "3861", + "Name": "Fiction", + "Artist": "Lund", + "Album Artist": "Lund", + "Composer": "Robert Lund", + "Album": "Fiction - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9677857", + "Total Time": "279515", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-10-12T08:30:05Z", + "Date Added": "2019-10-12T08:30:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781206555", + "Play Date UTC": "2023-10-26T20:09:15Z", + "Skip Count": "3", + "Skip Date": "2020-12-10T16:54:02Z", + "Release Date": "2019-07-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fiction - Single", + "Sort Artist": "Lund", + "Sort Name": "Fiction", + "Persistent ID": "28CEC198EF3AA6F5", + "Track Type": "Remote" + }, + { + "Track ID": "3863", + "Name": "Sick Lullaby (feat. Keaton Henson)", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "9552546", + "Total Time": "273729", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": -1, + "Year": "2017", + "Date Modified": "2019-10-14T11:37:52Z", + "Date Added": "2019-10-14T11:37:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3782992326", + "Play Date UTC": "2023-11-16T12:12:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-01-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Sick Lullaby (feat. Keaton Henson)", + "Persistent ID": "335118B18A83297A", + "Track Type": "Remote" + }, + { + "Track ID": "3865", + "Name": "You", + "Artist": "Keaton Henson", + "Album Artist": "Keaton Henson", + "Composer": "Keaton Henson", + "Album": "Birthdays", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9947872", + "Total Time": "282680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2013", + "Date Modified": "2019-10-15T04:23:10Z", + "Date Added": "2019-10-15T04:23:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "81", + "Play Date": "3780127602", + "Play Date UTC": "2023-10-14T08:26:42Z", + "Skip Count": "6", + "Skip Date": "2019-11-03T06:45:10Z", + "Release Date": "2013-02-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Birthdays", + "Sort Artist": "Keaton Henson", + "Sort Name": "You", + "Persistent ID": "E34645B3915E6FCA", + "Track Type": "Remote" + }, + { + "Track ID": "3867", + "Name": "Farewell (feat. ESKA, Dhani Harrison, Keaton Henson, James Lavelle, Jack Leonard, M\u00efnk, Liela Moss, Elliott Power, YS\u00c9E & Steven Young)", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "13204747", + "Total Time": "376530", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-15T08:53:57Z", + "Date Added": "2019-10-15T08:53:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3782886489", + "Play Date UTC": "2023-11-15T06:48:09Z", + "Skip Count": "2", + "Skip Date": "2022-11-26T15:03:11Z", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Farewell (feat. ESKA, Dhani Harrison, Keaton Henson, James Lavelle, Jack Leonard, M\u00efnk, Liela Moss, Elliott Power, YS\u00c9E & Steven Young)", + "Persistent ID": "5A67353E568614D3", + "Track Type": "Remote" + }, + { + "Track ID": "3869", + "Name": "No Where to Run / Bandits", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "11653214", + "Total Time": "334876", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783685120", + "Play Date UTC": "2023-11-24T12:38:40Z", + "Skip Count": "1", + "Skip Date": "2022-08-05T19:24:41Z", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "No Where to Run / Bandits", + "Persistent ID": "E677656543618C32", + "Track Type": "Remote" + }, + { + "Track ID": "3871", + "Name": "Iter 3: Keep on Runnin\u2019", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "2233852", + "Total Time": "56113", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780686538", + "Play Date UTC": "2023-10-20T19:42:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Iter 3: Keep on Runnin\u2019", + "Persistent ID": "2889D744F0D45017", + "Track Type": "Remote" + }, + { + "Track ID": "3873", + "Name": "Arms Length (feat. Callum Finn, M\u00efnk & Elliott Power)", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "10571810", + "Total Time": "296184", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3776162492", + "Play Date UTC": "2023-08-29T11:01:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Arms Length (feat. Callum Finn, M\u00efnk & Elliott Power)", + "Persistent ID": "F314054D3F74DEB6", + "Track Type": "Remote" + }, + { + "Track ID": "3875", + "Name": "Sonata (feat. Keaton Henson)", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "10888214", + "Total Time": "318239", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781529389", + "Play Date UTC": "2023-10-30T13:49:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Sonata (feat. Keaton Henson)", + "Persistent ID": "F6E472389570C0AE", + "Track Type": "Remote" + }, + { + "Track ID": "3877", + "Name": "Iter 2: How Do You Feel?", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "2734326", + "Total Time": "66771", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783669565", + "Play Date UTC": "2023-11-24T08:19:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Iter 2: How Do You Feel?", + "Persistent ID": "FFCEB46B48472184", + "Track Type": "Remote" + }, + { + "Track ID": "3879", + "Name": "Iter 5: Friend or Foe", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "1599413", + "Total Time": "33405", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781081045", + "Play Date UTC": "2023-10-25T09:17:25Z", + "Skip Count": "1", + "Skip Date": "2022-04-07T15:47:50Z", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Iter 5: Friend or Foe", + "Persistent ID": "3CE785FFC8125105", + "Track Type": "Remote" + }, + { + "Track ID": "3881", + "Name": "Stole Enough (feat. M\u00efnk)", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6728669", + "Total Time": "189027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781615329", + "Play Date UTC": "2023-10-31T13:42:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Stole Enough (feat. M\u00efnk)", + "Persistent ID": "6E5299EC7C56DF87", + "Track Type": "Remote" + }, + { + "Track ID": "3883", + "Name": "Sunrise (Always Comes Around) [feat. Liela Moss]", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "13760270", + "Total Time": "402422", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": -1, + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3781622676", + "Play Date UTC": "2023-10-31T15:44:36Z", + "Skip Count": "1", + "Skip Date": "2022-02-22T15:02:51Z", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Sunrise (Always Comes Around) [feat. Liela Moss]", + "Persistent ID": "68AEEC14B72D3235", + "Track Type": "Remote" + }, + { + "Track ID": "3885", + "Name": "Iter 1: Have You Looked at Yourself?", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "2151445", + "Total Time": "49875", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3780848558", + "Play Date UTC": "2023-10-22T16:42:38Z", + "Skip Count": "1", + "Skip Date": "2019-10-19T15:10:52Z", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Iter 1: Have You Looked at Yourself?", + "Persistent ID": "97DEBF63EA2A1931", + "Track Type": "Remote" + }, + { + "Track ID": "3887", + "Name": "Cowboys or Indians (feat. Elliott Power, M\u00efnk & YS\u00c9E)", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "13429416", + "Total Time": "380349", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3772705405", + "Play Date UTC": "2023-07-20T10:43:25Z", + "Skip Count": "1", + "Skip Date": "2023-10-12T16:42:45Z", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Cowboys or Indians (feat. Elliott Power, M\u00efnk & YS\u00c9E)", + "Persistent ID": "5268243F3BA04315", + "Track Type": "Remote" + }, + { + "Track ID": "3889", + "Name": "The Road (feat. ESKA)", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "13612994", + "Total Time": "382845", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781385480", + "Play Date UTC": "2023-10-28T21:51:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Road (feat. ESKA)", + "Persistent ID": "D81F16ACF307AC99", + "Track Type": "Remote" + }, + { + "Track ID": "3891", + "Name": "Looking for the Rain (feat. Mark Lanegan & ESKA)", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "12913139", + "Total Time": "361870", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3780309384", + "Play Date UTC": "2023-10-16T10:56:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Looking for the Rain (feat. Mark Lanegan & ESKA)", + "Persistent ID": "A32B4B4F904559E7", + "Track Type": "Remote" + }, + { + "Track ID": "3893", + "Name": "Iter 4: We Are Stardust", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "The Road, Pt. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "2375456", + "Total Time": "59554", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-10-16T11:04:30Z", + "Date Added": "2019-10-16T11:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3781059848", + "Play Date UTC": "2023-10-25T03:24:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Road, Pt. 1", + "Sort Artist": "UNKLE", + "Sort Name": "Iter 4: We Are Stardust", + "Persistent ID": "AEEB811BFF8B8F5A", + "Track Type": "Remote" + }, + { + "Track ID": "3895", + "Name": "Initium", + "Artist": "Keaton Henson", + "Album Artist": "Keaton Henson", + "Composer": "Keaton Henson", + "Album": "Six Lethargies", + "Genre": "Classical Crossover", + "Kind": "Apple Music AAC audio file", + "Size": "20830117", + "Total Time": "572187", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2019-10-16T11:10:20Z", + "Date Added": "2019-10-16T11:10:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3779315980", + "Play Date UTC": "2023-10-04T22:59:40Z", + "Skip Count": "4", + "Skip Date": "2022-08-13T15:49:56Z", + "Release Date": "2019-10-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Six Lethargies", + "Sort Artist": "Keaton Henson", + "Sort Name": "Initium", + "Persistent ID": "A08A12969458C835", + "Track Type": "Remote" + }, + { + "Track ID": "3897", + "Name": "M\u00e9chant (feat. Ninho)", + "Artist": "Niska", + "Album Artist": "Niska", + "Composer": "Dopebwoy", + "Album": "Mr Sal", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6748582", + "Total Time": "191133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2019", + "Date Modified": "2019-10-18T07:19:18Z", + "Date Added": "2019-10-18T07:19:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3783768482", + "Play Date UTC": "2023-11-25T11:48:02Z", + "Skip Count": "6", + "Skip Date": "2023-07-20T15:00:34Z", + "Release Date": "2019-09-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mr Sal", + "Sort Artist": "Niska", + "Sort Name": "M\u00e9chant (feat. Ninho)", + "Persistent ID": "9C9C09029FE6D074", + "Track Type": "Remote" + }, + { + "Track ID": "3899", + "Name": "Bucking the System (feat. Kevin Gates)", + "Artist": "Gucci Mane", + "Album Artist": "Gucci Mane", + "Composer": "Kevin Gilyard, Radric Davis & Xavier Dotson", + "Album": "Woptober II", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7402502", + "Total Time": "202927", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2019-10-18T08:53:14Z", + "Date Added": "2019-10-18T08:53:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3776431713", + "Play Date UTC": "2023-09-01T13:48:33Z", + "Skip Count": "1", + "Skip Date": "2020-12-09T14:58:11Z", + "Release Date": "2019-10-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Woptober II", + "Sort Artist": "Gucci Mane", + "Sort Name": "Bucking the System (feat. Kevin Gates)", + "Persistent ID": "EAB7B7214288CCE0", + "Track Type": "Remote" + }, + { + "Track ID": "3901", + "Name": "Burn My Shadow", + "Artist": "UNKLE", + "Album Artist": "UNKLE", + "Composer": "undef", + "Album": "War Stories", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "10572765", + "Total Time": "297147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "2007", + "Date Modified": "2019-10-19T15:47:56Z", + "Date Added": "2019-10-19T15:47:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3766664672", + "Play Date UTC": "2023-05-11T12:44:32Z", + "Skip Count": "1", + "Skip Date": "2023-03-15T17:40:47Z", + "Release Date": "2007-07-02T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "War Stories", + "Sort Artist": "UNKLE", + "Sort Name": "Burn My Shadow", + "Persistent ID": "16C711BB8DF50FD8", + "Track Type": "Remote" + }, + { + "Track ID": "3903", + "Name": "Talk Is Cheap", + "Artist": "Chet Faker", + "Album Artist": "Chet Faker", + "Composer": "Nick Murphy", + "Album": "Built on Glass", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7768933", + "Total Time": "218067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2014", + "Date Modified": "2019-10-20T14:10:23Z", + "Date Added": "2019-10-20T14:10:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781572373", + "Play Date UTC": "2023-10-31T01:46:13Z", + "Skip Count": "2", + "Skip Date": "2022-04-23T18:13:43Z", + "Release Date": "1975-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Built on Glass", + "Sort Artist": "Chet Faker", + "Sort Name": "Talk Is Cheap", + "Persistent ID": "CEFC4CF8E6888E8E", + "Track Type": "Remote" + }, + { + "Track ID": "3905", + "Name": "HIGHEST IN THE ROOM", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster", + "Album": "HIGHEST IN THE ROOM - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6729322", + "Total Time": "175721", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-10-23T10:45:00Z", + "Date Added": "2019-10-23T10:45:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "179", + "Play Date": "3783264493", + "Play Date UTC": "2023-11-19T15:48:13Z", + "Skip Count": "4", + "Skip Date": "2021-04-28T10:55:30Z", + "Release Date": "2019-10-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "HIGHEST IN THE ROOM - Single", + "Sort Artist": "Travis Scott", + "Sort Name": "HIGHEST IN THE ROOM", + "Persistent ID": "A352FAA12D680009", + "Track Type": "Remote" + }, + { + "Track ID": "3907", + "Name": "hot girl bummer", + "Artist": "blackbear", + "Album Artist": "blackbear", + "Composer": "Andrew Goldstein & Matthew Tyler Musto", + "Album": "everything means nothing", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6698064", + "Total Time": "188344", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-10-23T13:48:07Z", + "Date Added": "2019-10-23T13:48:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "87", + "Play Date": "3770987346", + "Play Date UTC": "2023-06-30T13:29:06Z", + "Skip Count": "2", + "Skip Date": "2019-10-31T04:05:10Z", + "Release Date": "2019-08-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "everything means nothing", + "Sort Artist": "blackbear", + "Sort Name": "hot girl bummer", + "Persistent ID": "EB6E6ED69681F726", + "Track Type": "Remote" + }, + { + "Track ID": "3909", + "Name": "Messing With My Head", + "Artist": "Smoothboi Ezra", + "Album Artist": "Smoothboi Ezra", + "Composer": "Rebecca Williams", + "Album": "Is It - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6884598", + "Total Time": "193333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2019", + "Date Modified": "2019-10-25T18:10:44Z", + "Date Added": "2019-10-25T18:10:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "176", + "Play Date": "3771690578", + "Play Date UTC": "2023-07-08T16:49:38Z", + "Skip Count": "3", + "Skip Date": "2020-12-08T21:00:27Z", + "Release Date": "2019-09-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Is It - EP", + "Sort Artist": "Smoothboi Ezra", + "Sort Name": "Messing With My Head", + "Persistent ID": "B05556FB8E835377", + "Track Type": "Remote" + }, + { + "Track ID": "3911", + "Name": "Opal Ocean", + "Artist": "slenderbodies", + "Album Artist": "slenderbodies", + "Composer": "undef", + "Album": "Fabulist - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7970219", + "Total Time": "225992", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2019-11-04T15:25:18Z", + "Date Added": "2019-11-04T15:25:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3776163045", + "Play Date UTC": "2023-08-29T11:10:45Z", + "Skip Count": "1", + "Skip Date": "2019-11-08T06:47:32Z", + "Release Date": "2017-04-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fabulist - EP", + "Sort Artist": "slenderbodies", + "Sort Name": "Opal Ocean", + "Persistent ID": "20742367009EC6A7", + "Track Type": "Remote" + }, + { + "Track ID": "3913", + "Name": "Sides", + "Artist": "Balthazar", + "Album Artist": "Balthazar", + "Composer": "Jinte Deprez & Maarten Devoldere", + "Album": "Rats", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7072678", + "Total Time": "188048", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2012", + "Date Modified": "2019-11-04T18:17:29Z", + "Date Added": "2019-11-04T18:17:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783577011", + "Play Date UTC": "2023-11-23T06:36:51Z", + "Skip Count": "2", + "Skip Date": "2022-07-06T10:34:26Z", + "Release Date": "2012-10-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rats", + "Sort Artist": "Balthazar", + "Sort Name": "Sides", + "Persistent ID": "66CD9FAD4A478F54", + "Track Type": "Remote" + }, + { + "Track ID": "3915", + "Name": "Grace", + "Artist": "Jacob Banks", + "Album Artist": "Jacob Banks", + "Composer": "undef", + "Album": "The Paradox", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7643552", + "Total Time": "216000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "8", + "Year": "2015", + "Date Modified": "2019-11-05T05:56:49Z", + "Date Added": "2019-11-05T05:56:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780911781", + "Play Date UTC": "2023-10-23T10:16:21Z", + "Skip Count": "1", + "Skip Date": "2019-11-08T06:48:32Z", + "Release Date": "2015-07-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Paradox", + "Sort Artist": "Jacob Banks", + "Sort Name": "Grace", + "Persistent ID": "B0DC0CDBD0E22540", + "Track Type": "Remote" + }, + { + "Track ID": "3917", + "Name": "Follow God", + "Artist": "Kanye West", + "Album Artist": "Kanye West", + "Composer": "Kanye West, Jahmal Gwin, Bryant Bell, Aaron Butts, Calvin Eubanks & Curtis Eubanks", + "Album": "JESUS IS KING", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4030231", + "Total Time": "104591", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-11-08T10:30:15Z", + "Date Added": "2019-11-08T10:30:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "73", + "Play Date": "3768835623", + "Play Date UTC": "2023-06-05T15:47:03Z", + "Skip Count": "3", + "Skip Date": "2020-01-12T06:27:58Z", + "Release Date": "2019-10-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JESUS IS KING", + "Sort Artist": "Kanye West", + "Sort Name": "Follow God", + "Persistent ID": "481E1DC1A6AE2A12", + "Track Type": "Remote" + }, + { + "Track ID": "3919", + "Name": "Into the Woods", + "Artist": "Pumarosa", + "Album Artist": "Pumarosa", + "Composer": "Isabel Munoz-Newsome, James Neville, John Tomoya Forster & Nicholas Owen", + "Album": "Devastation", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11697850", + "Total Time": "319333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-11-08T15:37:19Z", + "Date Added": "2019-11-08T15:37:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3772084335", + "Play Date UTC": "2023-07-13T06:12:15Z", + "Skip Count": "1", + "Skip Date": "2019-11-11T17:14:17Z", + "Release Date": "2019-11-01T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Devastation", + "Sort Artist": "Pumarosa", + "Sort Name": "Into the Woods", + "Persistent ID": "664AF31736476C25", + "Track Type": "Remote" + }, + { + "Track ID": "3921", + "Name": "God Is", + "Artist": "Kanye West", + "Album Artist": "Kanye West", + "Composer": "Kanye West, Warryn Campbell, Federico Vindver, Angel Lopez, Timothy Lee Mckenzie, Victory Elyse Boyd & Robert Fryson", + "Album": "JESUS IS KING", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7326484", + "Total Time": "203141", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-11-10T11:28:09Z", + "Date Added": "2019-11-10T11:28:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3781622903", + "Play Date UTC": "2023-10-31T15:48:23Z", + "Skip Count": "2", + "Skip Date": "2021-02-04T21:59:58Z", + "Release Date": "2019-10-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JESUS IS KING", + "Sort Artist": "Kanye West", + "Sort Name": "God Is", + "Persistent ID": "A0A4C368FC005F89", + "Track Type": "Remote" + }, + { + "Track ID": "3923", + "Name": "Closed on Sunday", + "Artist": "Kanye West", + "Album Artist": "Kanye West", + "Composer": "Kanye West, Federico Vindver, Angel Lopez, Brian Miller, Timothy Mosley, Terrence Thornton, Gene Thornton, Rennard East, Victory Elyse Boyd & \"Chango\" Farias Gomez", + "Album": "JESUS IS KING", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5586425", + "Total Time": "151873", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2019-11-10T11:32:58Z", + "Date Added": "2019-11-10T11:32:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3775291173", + "Play Date UTC": "2023-08-19T08:59:33Z", + "Skip Count": "2", + "Skip Date": "2020-01-12T06:27:48Z", + "Release Date": "2019-10-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JESUS IS KING", + "Sort Artist": "Kanye West", + "Sort Name": "Closed on Sunday", + "Persistent ID": "AF2450F1D25CDB21", + "Track Type": "Remote" + }, + { + "Track ID": "3925", + "Name": "Hot (feat. Gunna)", + "Artist": "Young Thug", + "Album Artist": "Young Thug", + "Composer": "undef", + "Album": "So Much Fun", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6959254", + "Total Time": "193027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "19", + "Year": "2019", + "Date Modified": "2019-11-11T17:09:18Z", + "Date Added": "2019-11-11T17:09:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3770985887", + "Play Date UTC": "2023-06-30T13:04:47Z", + "Skip Count": "2", + "Skip Date": "2019-11-11T19:10:29Z", + "Release Date": "2019-08-16T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Much Fun", + "Sort Artist": "Young Thug", + "Sort Name": "Hot (feat. Gunna)", + "Persistent ID": "FBADDE65F8D9F7A6", + "Track Type": "Remote" + }, + { + "Track ID": "3927", + "Name": "Last Stand Kovacs V1", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "1731102", + "Total Time": "34147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-11-12T07:29:28Z", + "Date Added": "2019-11-12T07:29:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3774949650", + "Play Date UTC": "2023-08-15T10:07:30Z", + "Skip Count": "4", + "Skip Date": "2023-06-18T18:35:39Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Last Stand Kovacs V1", + "Persistent ID": "C73307862416EAE7", + "Track Type": "Remote" + }, + { + "Track ID": "3929", + "Name": "Consciousness", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "11130670", + "Total Time": "323440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-11-12T07:29:28Z", + "Date Added": "2019-11-12T07:29:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783354184", + "Play Date UTC": "2023-11-20T16:43:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Consciousness", + "Persistent ID": "BE11DFC27A8C78CE", + "Track Type": "Remote" + }, + { + "Track ID": "3931", + "Name": "Her Daughter", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "9294551", + "Total Time": "267120", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-11-12T07:29:28Z", + "Date Added": "2019-11-12T07:29:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781571380", + "Play Date UTC": "2023-10-31T01:29:40Z", + "Skip Count": "1", + "Skip Date": "2022-07-12T14:01:20Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Her Daughter", + "Persistent ID": "4AD69C3A2DF2B122", + "Track Type": "Remote" + }, + { + "Track ID": "3933", + "Name": "Bancroft Shows Kovacs", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7817351", + "Total Time": "224680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-11-12T07:29:28Z", + "Date Added": "2019-11-12T07:29:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780391677", + "Play Date UTC": "2023-10-17T09:47:57Z", + "Skip Count": "2", + "Skip Date": "2022-02-06T17:39:02Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Bancroft Shows Kovacs", + "Persistent ID": "783595F48FF8C3FE", + "Track Type": "Remote" + }, + { + "Track ID": "3935", + "Name": "More Human Than Human", + "Artist": "Sune Rose Wagner", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "4532795", + "Total Time": "113067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-11-12T07:29:28Z", + "Date Added": "2019-11-12T07:29:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3765801892", + "Play Date UTC": "2023-05-01T13:04:52Z", + "Skip Count": "1", + "Skip Date": "2022-09-27T06:54:08Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Sune Rose Wagner", + "Sort Name": "More Human Than Human", + "Persistent ID": "94F60BD9204F9BB5", + "Track Type": "Remote" + }, + { + "Track ID": "3937", + "Name": "Passing the Book", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "4879099", + "Total Time": "131387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-11-12T07:29:28Z", + "Date Added": "2019-11-12T07:29:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3777369863", + "Play Date UTC": "2023-09-12T10:24:23Z", + "Skip Count": "3", + "Skip Date": "2022-11-08T16:02:29Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Passing the Book", + "Persistent ID": "EFB460FB29A2A4AE", + "Track Type": "Remote" + }, + { + "Track ID": "3939", + "Name": "Attacked By Troopers", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "2540491", + "Total Time": "62800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-11-12T07:29:28Z", + "Date Added": "2019-11-12T07:29:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781193792", + "Play Date UTC": "2023-10-26T16:36:32Z", + "Skip Count": "1", + "Skip Date": "2022-12-12T06:07:36Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Attacked By Troopers", + "Persistent ID": "8FCFACAC0B6414A9", + "Track Type": "Remote" + }, + { + "Track ID": "3941", + "Name": "The Patchwork Man", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "Altered Carbon (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "2057886", + "Total Time": "46893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-11-12T07:29:28Z", + "Date Added": "2019-11-12T07:29:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3773536932", + "Play Date UTC": "2023-07-30T01:42:12Z", + "Skip Count": "1", + "Skip Date": "2022-10-05T20:43:02Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Altered Carbon (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Patchwork Man", + "Persistent ID": "88A492D1157097D7", + "Track Type": "Remote" + }, + { + "Track ID": "3943", + "Name": "BLACK METAL TERRORIST l 13 M T", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Isaac De Boni, Michael Mule, Ronald Spence Jr. & Michael Hirschenberg", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5971972", + "Total Time": "161627", + "Disc Number": "3", + "Disc Count": "3", + "Track Number": "4", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "64", + "Play Date": "3767006991", + "Play Date UTC": "2023-05-15T11:49:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "BLACK METAL TERRORIST l 13 M T", + "Persistent ID": "B1465EF6B8EF07B5", + "Track Type": "Remote" + }, + { + "Track ID": "3945", + "Name": "SUPER SAIYAN SUPERMAN l ZUPER ZA1YAN ZUPERMAN", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Isaac De Boni, Michael Mule & Justin Elwin", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4851165", + "Total Time": "132813", + "Disc Number": "2", + "Disc Count": "3", + "Track Number": "1", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "57", + "Play Date": "3767802701", + "Play Date UTC": "2023-05-24T16:51:41Z", + "Skip Count": "2", + "Skip Date": "2020-01-12T06:27:10Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "SUPER SAIYAN SUPERMAN l ZUPER ZA1YAN ZUPERMAN", + "Persistent ID": "44A45F315755B25B", + "Track Type": "Remote" + }, + { + "Track ID": "3947", + "Name": "SWITCH IT UP l ZWITCH 1T UP", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Ronald Spence Jr. & Ramon Ibanga Jr", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6151579", + "Total Time": "175907", + "Disc Number": "2", + "Disc Count": "3", + "Track Number": "2", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3776621342", + "Play Date UTC": "2023-09-03T18:29:02Z", + "Skip Count": "2", + "Skip Date": "2020-01-12T06:27:13Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "SWITCH IT UP l ZWITCH 1T UP", + "Persistent ID": "5683781DFEFC4320", + "Track Type": "Remote" + }, + { + "Track ID": "3949", + "Name": "PERCS l PERCZ", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6900952", + "Total Time": "186627", + "Disc Number": "3", + "Disc Count": "3", + "Track Number": "2", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3782476592", + "Play Date UTC": "2023-11-10T12:56:32Z", + "Skip Count": "1", + "Skip Date": "2019-11-19T14:07:12Z", + "Release Date": "2018-05-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "PERCS l PERCZ", + "Persistent ID": "468C0938A4CEF3F2", + "Track Type": "Remote" + }, + { + "Track ID": "3951", + "Name": "MAD I GOT IT l MAD 1 GOT 1T", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Isaac De Boni, Michael Mule, Kevin Saurer, Jeff Saurer & Javohn Griffin", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8229613", + "Total Time": "232293", + "Disc Number": "2", + "Disc Count": "3", + "Track Number": "3", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3781767076", + "Play Date UTC": "2023-11-02T07:51:16Z", + "Skip Count": "3", + "Skip Date": "2020-09-28T14:04:42Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "MAD I GOT IT l MAD 1 GOT 1T", + "Persistent ID": "233B83E56FC219A7", + "Track Type": "Remote" + }, + { + "Track ID": "3953", + "Name": "TABOO l TA13OO", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Isaac De Boni, Michael Mule, Michael Hirschenberg & Latisha Hyman", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7247644", + "Total Time": "197440", + "Disc Number": "1", + "Disc Count": "3", + "Track Number": "1", + "Track Count": "3", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3773543283", + "Play Date UTC": "2023-07-30T03:28:03Z", + "Skip Count": "1", + "Skip Date": "2021-05-05T22:07:59Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "TABOO l TA13OO", + "Persistent ID": "83862FD9E2D1285C", + "Track Type": "Remote" + }, + { + "Track ID": "3955", + "Name": "SIRENS l Z1RENZ (feat. J.I.D)", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Destin Route, Dacoury Natche & Billie Eilish", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8762033", + "Total Time": "236107", + "Disc Number": "2", + "Disc Count": "3", + "Track Number": "4", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3776233670", + "Play Date UTC": "2023-08-30T06:47:50Z", + "Skip Count": "2", + "Skip Date": "2022-08-13T09:28:49Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "SIRENS l Z1RENZ (feat. J.I.D)", + "Persistent ID": "4D8BAF8CD379352B", + "Track Type": "Remote" + }, + { + "Track ID": "3957", + "Name": "BLACK BALLOONS l 13LACK 13ALLOONZ (feat. Twelve'len & GoldLink)", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, D'Anthony Carlos, Lavares Joseph, Isaac De Boni, Michael Mule & Ryan DeGrandy", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7653082", + "Total Time": "210960", + "Disc Number": "1", + "Disc Count": "3", + "Track Number": "2", + "Track Count": "3", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3763675575", + "Play Date UTC": "2023-04-06T22:26:15Z", + "Skip Count": "2", + "Skip Date": "2020-01-12T06:27:01Z", + "Release Date": "2018-07-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "BLACK BALLOONS l 13LACK 13ALLOONZ (feat. Twelve'len & GoldLink)", + "Persistent ID": "E462D28E95A7EF0E", + "Track Type": "Remote" + }, + { + "Track ID": "3959", + "Name": "VENGEANCE l VENGEANCE (feat. JPEGMAFIA & ZillaKami)", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Barrington Devaugh Hendricks, Junius Donald Rogers, Ryan DeGrandy, Isaac De Boni & Michael Mule", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8511888", + "Total Time": "240213", + "Disc Number": "3", + "Disc Count": "3", + "Track Number": "3", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3782902899", + "Play Date UTC": "2023-11-15T11:21:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "VENGEANCE l VENGEANCE (feat. JPEGMAFIA & ZillaKami)", + "Persistent ID": "3B06BF7C75D917E8", + "Track Type": "Remote" + }, + { + "Track ID": "3961", + "Name": "CASH MANIAC l CAZH MAN1AC (feat. Nyyjerya)", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Imani Taylor, Ryan DeGrandy, Isaac De Boni, Michael Mule & Samuel Ahana", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7216315", + "Total Time": "198773", + "Disc Number": "1", + "Disc Count": "3", + "Track Number": "3", + "Track Count": "3", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3780130834", + "Play Date UTC": "2023-10-14T09:20:34Z", + "Skip Count": "3", + "Skip Date": "2022-11-16T20:16:58Z", + "Release Date": "2018-07-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "CASH MANIAC l CAZH MAN1AC (feat. Nyyjerya)", + "Persistent ID": "D7BD86A85E1FFF75", + "Track Type": "Remote" + }, + { + "Track ID": "3963", + "Name": "SUMO l ZUMO", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry & Charlie Heat", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8008123", + "Total Time": "227373", + "Disc Number": "1", + "Disc Count": "3", + "Track Number": "4", + "Track Count": -1, + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3752167776", + "Play Date UTC": "2022-11-24T17:49:36Z", + "Skip Count": "3", + "Skip Date": "2021-10-21T15:18:36Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "SUMO l ZUMO", + "Persistent ID": "3FEA51B7CCC1EEC1", + "Track Type": "Remote" + }, + { + "Track ID": "3965", + "Name": "THE BLACKEST BALLOON l THE 13LACKEZT 13ALLOON", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Isaac De Boni, Michael Mule & Ryan DeGrandy", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6576269", + "Total Time": "175173", + "Disc Number": "3", + "Disc Count": "3", + "Track Number": "1", + "Track Count": "4", + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3775828495", + "Play Date UTC": "2023-08-25T14:14:55Z", + "Skip Count": "1", + "Skip Date": "2020-01-12T06:27:45Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "BLACKEST BALLOON l THE 13LACKEZT 13ALLOON", + "Persistent ID": "BB2E693A2BF412C9", + "Track Type": "Remote" + }, + { + "Track ID": "3967", + "Name": "CLOUT COBAIN l CLOUT CO13A1N", + "Artist": "Denzel Curry", + "Album Artist": "Denzel Curry", + "Composer": "Denzel Curry, Mike Hector & Julian Gramma", + "Album": "TA13OO", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8206146", + "Total Time": "231333", + "Disc Number": "2", + "Disc Count": "3", + "Track Number": "5", + "Track Count": -1, + "Year": "2018", + "Date Modified": "2019-11-13T15:42:45Z", + "Date Added": "2019-11-13T15:42:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3776351499", + "Play Date UTC": "2023-08-31T15:31:39Z", + "Skip Count": "2", + "Skip Date": "2020-01-12T06:27:30Z", + "Release Date": "2018-07-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TA13OO", + "Sort Artist": "Denzel Curry", + "Sort Name": "CLOUT COBAIN l CLOUT CO13A1N", + "Persistent ID": "6A60733AE029014D", + "Track Type": "Remote" + }, + { + "Track ID": "3969", + "Name": "Tokyo Drifting", + "Artist": "Glass Animals & Denzel Curry", + "Album Artist": "Glass Animals & Denzel Curry", + "Composer": "Denzel Curry, Dave Bayley & Caiphus Semenya", + "Album": "Tokyo Drifting - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8201801", + "Total Time": "217693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-11-14T04:17:00Z", + "Date Added": "2019-11-14T04:17:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781355887", + "Play Date UTC": "2023-10-28T13:38:07Z", + "Skip Count": "5", + "Skip Date": "2021-06-11T11:46:45Z", + "Release Date": "2019-11-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tokyo Drifting - Single", + "Sort Artist": "Glass Animals & Denzel Curry", + "Sort Name": "Tokyo Drifting", + "Persistent ID": "A4D5F0725B9679CC", + "Track Type": "Remote" + }, + { + "Track ID": "3971", + "Name": "Overflow", + "Artist": "ANIMA!", + "Album Artist": "ANIMA!", + "Composer": "undef", + "Album": "Grow Your Garden", + "Genre": "Indie Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8705095", + "Total Time": "227507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "9", + "Year": "2019", + "Date Modified": "2019-11-20T05:10:55Z", + "Date Added": "2019-11-20T05:10:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780193108", + "Play Date UTC": "2023-10-15T02:38:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Grow Your Garden", + "Sort Artist": "ANIMA!", + "Sort Name": "Overflow", + "Persistent ID": "00FCE4B48BD0633F", + "Track Type": "Remote" + }, + { + "Track ID": "3973", + "Name": "Thoughts Of A Child (feat. The New Ukrainians)", + "Artist": "Chip Taylor & The New Ukrainians", + "Album Artist": "Chip Taylor & The New Ukrainians", + "Composer": "undef", + "Album": "F**k All The Perfect People (feat. The New Ukrainians)", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "9368250", + "Total Time": "266107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2012", + "Date Modified": "2019-11-20T10:00:12Z", + "Date Added": "2019-11-20T10:00:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3770985693", + "Play Date UTC": "2023-06-30T13:01:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-01-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F**k All The Perfect People (feat. The New Ukrainians)", + "Sort Artist": "Chip Taylor & The New Ukrainians", + "Sort Name": "Thoughts Of A Child (feat. The New Ukrainians)", + "Persistent ID": "F0C37E19A89EF05A", + "Track Type": "Remote" + }, + { + "Track ID": "3975", + "Name": "Just a Thought", + "Artist": "Chelou", + "Album Artist": "Chelou", + "Composer": "Maya Jane Coles & Adam R. S. Gray", + "Album": "Out of Sight", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6743376", + "Total Time": "189219", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2019-11-20T10:27:09Z", + "Date Added": "2019-11-20T10:27:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3780915857", + "Play Date UTC": "2023-10-23T11:24:17Z", + "Skip Count": "3", + "Skip Date": "2022-10-22T13:37:54Z", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Out of Sight", + "Sort Artist": "Chelou", + "Sort Name": "Just a Thought", + "Persistent ID": "D0BA7199500E5665", + "Track Type": "Remote" + }, + { + "Track ID": "3977", + "Name": "Yolo", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "B-Sides", + "Genre": "New Acoustic", + "Kind": "Apple Music AAC audio file", + "Size": "5295910", + "Total Time": "141690", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "20", + "Year": "2013", + "Date Modified": "2019-11-21T19:51:49Z", + "Date Added": "2019-11-21T19:51:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3780654025", + "Play Date UTC": "2023-10-20T10:40:25Z", + "Skip Count": "5", + "Skip Date": "2022-07-07T22:37:39Z", + "Release Date": "2013-04-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "B-Sides", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "Yolo", + "Persistent ID": "31420C5C20BD1268", + "Track Type": "Remote" + }, + { + "Track ID": "3979", + "Name": "It's Ok (Acoustic)", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "B-Sides", + "Genre": "New Acoustic", + "Kind": "Apple Music AAC audio file", + "Size": "6845270", + "Total Time": "191351", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "20", + "Year": "2013", + "Date Modified": "2019-11-23T11:58:46Z", + "Date Added": "2019-11-23T11:58:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3782803887", + "Play Date UTC": "2023-11-14T07:51:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-04-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "B-Sides", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "It's Ok (Acoustic)", + "Persistent ID": "752C34D901C9AF0B", + "Track Type": "Remote" + }, + { + "Track ID": "3981", + "Name": "Bajo el agua", + "Artist": "Manuel Medrano", + "Album Artist": "Manuel Medrano", + "Composer": "Manuel Medrano", + "Album": "Bajo el agua - Single", + "Genre": "Pop Latino", + "Kind": "Apple Music AAC audio file", + "Size": "7917882", + "Total Time": "222410", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2019-11-23T14:28:23Z", + "Date Added": "2019-11-23T14:28:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3783453839", + "Play Date UTC": "2023-11-21T20:23:59Z", + "Skip Count": "5", + "Skip Date": "2022-06-20T10:51:47Z", + "Release Date": "2015-07-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bajo el agua - Single", + "Sort Artist": "Manuel Medrano", + "Sort Name": "Bajo el agua", + "Persistent ID": "4DB495724C6F5499", + "Track Type": "Remote" + }, + { + "Track ID": "3983", + "Name": "Loyal", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "C-Clip Beatz & Kodak Black", + "Album": "Heart Break Kodak", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6008971", + "Total Time": "165821", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2018", + "Date Modified": "2019-11-26T13:44:52Z", + "Date Added": "2019-11-26T13:44:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3776233007", + "Play Date UTC": "2023-08-30T06:36:47Z", + "Skip Count": "1", + "Skip Date": "2021-02-04T21:57:06Z", + "Release Date": "2018-02-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Heart Break Kodak", + "Sort Artist": "Kodak Black", + "Sort Name": "Loyal", + "Persistent ID": "A1107C3F15387253", + "Track Type": "Remote" + }, + { + "Track ID": "3985", + "Name": "ExorciSSm", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9855823", + "Total Time": "281842", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3772806729", + "Play Date UTC": "2023-07-21T14:52:09Z", + "Skip Count": -1, + "Skip Date": "2020-02-22T07:37:30Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "ExorciSSm", + "Persistent ID": "FD3053BA59F9605D", + "Track Type": "Remote" + }, + { + "Track ID": "3987", + "Name": "Somebody Will Take Her", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6001271", + "Total Time": "165719", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3761031290", + "Play Date UTC": "2023-03-07T07:54:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "Somebody Will Take Her", + "Persistent ID": "FBE53A6BCF999795", + "Track Type": "Remote" + }, + { + "Track ID": "3989", + "Name": "She Tastes Like Bubble Gum", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8394038", + "Total Time": "239341", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3776148963", + "Play Date UTC": "2023-08-29T07:16:03Z", + "Skip Count": "2", + "Skip Date": "2023-07-06T06:08:06Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "She Tastes Like Bubble Gum", + "Persistent ID": "17D366BB8AAAAB4B", + "Track Type": "Remote" + }, + { + "Track ID": "3991", + "Name": "What a Love (feat. Bonic)", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7913127", + "Total Time": "222885", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3776336627", + "Play Date UTC": "2023-08-31T11:23:47Z", + "Skip Count": "1", + "Skip Date": "2022-08-21T11:06:37Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "What a Love (feat. Bonic)", + "Persistent ID": "F1621C463E89A0AF", + "Track Type": "Remote" + }, + { + "Track ID": "3993", + "Name": "Wherever I Got You", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7871409", + "Total Time": "222064", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3781600602", + "Play Date UTC": "2023-10-31T09:36:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "Wherever I Got You", + "Persistent ID": "6FDCC49DDB618D98", + "Track Type": "Remote" + }, + { + "Track ID": "3995", + "Name": "Zips", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6583305", + "Total Time": "179162", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:40Z", + "Date Added": "2019-11-27T13:18:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3779175478", + "Play Date UTC": "2023-10-03T07:57:58Z", + "Skip Count": "2", + "Skip Date": "2023-01-04T06:37:34Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "Zips", + "Persistent ID": "16E259ABDAE46127", + "Track Type": "Remote" + }, + { + "Track ID": "3997", + "Name": "She Loves Me but I Don't Like Her", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8465203", + "Total Time": "240448", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3770987588", + "Play Date UTC": "2023-06-30T13:33:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "She Loves Me but I Don't Like Her", + "Persistent ID": "2349E86910D3F3A1", + "Track Type": "Remote" + }, + { + "Track ID": "3999", + "Name": "Pray for Me Baby", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10464042", + "Total Time": "300660", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3765359148", + "Play Date UTC": "2023-04-26T10:05:48Z", + "Skip Count": "2", + "Skip Date": "2022-01-18T22:56:27Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "Pray for Me Baby", + "Persistent ID": "AEBB969C5CD64953", + "Track Type": "Remote" + }, + { + "Track ID": "4001", + "Name": "Woh Woh (feat. Jay 305)", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7241427", + "Total Time": "204126", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783412323", + "Play Date UTC": "2023-11-21T08:52:03Z", + "Skip Count": "7", + "Skip Date": "2023-10-14T08:56:31Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "Woh Woh (feat. Jay 305)", + "Persistent ID": "429B0A988D211D3F", + "Track Type": "Remote" + }, + { + "Track ID": "4003", + "Name": "I See a Ho Through My Window (feat. Jid Mack)", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6486509", + "Total Time": "179459", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:39Z", + "Date Added": "2019-11-27T13:18:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3758664026", + "Play Date UTC": "2023-02-07T22:20:26Z", + "Skip Count": "5", + "Skip Date": "2022-12-26T09:39:29Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "I See a Ho Through My Window (feat. Jid Mack)", + "Persistent ID": "F2B70BA76EAAE3E3", + "Track Type": "Remote" + }, + { + "Track ID": "4005", + "Name": "You Don't Wanna Go Down", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9226833", + "Total Time": "265350", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:40Z", + "Date Added": "2019-11-27T13:18:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3772715504", + "Play Date UTC": "2023-07-20T13:31:44Z", + "Skip Count": "1", + "Skip Date": "2022-08-21T11:26:08Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "You Don't Wanna Go Down", + "Persistent ID": "1D895F3456E49876", + "Track Type": "Remote" + }, + { + "Track ID": "4007", + "Name": "Devil Don't Take Me There", + "Artist": "Ricky Hil", + "Album Artist": "Ricky Hil", + "Composer": "undef", + "Album": "ExorciSSm, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8195380", + "Total Time": "232263", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2019-11-27T13:18:40Z", + "Date Added": "2019-11-27T13:18:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783770703", + "Play Date UTC": "2023-11-25T12:25:03Z", + "Skip Count": "3", + "Skip Date": "2023-10-05T00:34:04Z", + "Release Date": "2016-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ExorciSSm, Vol. 1", + "Sort Artist": "Ricky Hil", + "Sort Name": "Devil Don't Take Me There", + "Persistent ID": "487DDC0113F6FE28", + "Track Type": "Remote" + }, + { + "Track ID": "4009", + "Name": "Precedent", + "Artist": "Kyle Lux", + "Album Artist": "Kyle Lux", + "Composer": "Kyle Tolbert", + "Album": "No Roof Access", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7181849", + "Total Time": "201069", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2019-11-30T12:20:28Z", + "Date Added": "2019-11-30T12:20:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781196736", + "Play Date UTC": "2023-10-26T17:25:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Roof Access", + "Sort Artist": "Kyle Lux", + "Sort Name": "Precedent", + "Persistent ID": "CC70C3C34813D4E3", + "Track Type": "Remote" + }, + { + "Track ID": "4011", + "Name": "Out of Sight (feat. T\u00e9m\u00e9 Tan)", + "Artist": "Jaguar Jaguar", + "Album Artist": "Jaguar Jaguar", + "Composer": "Thomas Lauwers, Dries Meeus, Ruben Vanhoutte, Emiel Raeymaekers, Jasper Segers & Tanguy Haesevoets", + "Album": "Out of Sight (feat. T\u00e9m\u00e9 Tan) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6994906", + "Total Time": "195513", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-11-30T19:14:12Z", + "Date Added": "2019-11-30T19:14:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3777370257", + "Play Date UTC": "2023-09-12T10:30:57Z", + "Skip Count": "2", + "Skip Date": "2023-10-14T09:08:59Z", + "Release Date": "2019-11-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Out of Sight (feat. T\u00e9m\u00e9 Tan) - Single", + "Sort Artist": "Jaguar Jaguar", + "Sort Name": "Out of Sight (feat. T\u00e9m\u00e9 Tan)", + "Persistent ID": "C8C00575D5C21F15", + "Track Type": "Remote" + }, + { + "Track ID": "4013", + "Name": "Mood Swings", + "Artist": "A Boogie wit da Hoodie", + "Album Artist": "A Boogie wit da Hoodie", + "Composer": "Artist Dubose & Wesley Glass", + "Album": "Mood Swings - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5675329", + "Total Time": "156960", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-12-01T14:22:23Z", + "Date Added": "2019-12-01T14:22:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3781193728", + "Play Date UTC": "2023-10-26T16:35:28Z", + "Skip Count": "1", + "Skip Date": "2021-06-02T18:59:04Z", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mood Swings - Single", + "Sort Artist": "Boogie wit da Hoodie", + "Sort Name": "Boogie wit da Hoodie", + "Persistent ID": "Mood Swings", + "Track Type": "1D219FB500BFD65C" + }, + { + "Track ID": "4015", + "Name": "Closure", + "Artist": "Trevor Daniel", + "Album Artist": "Trevor Daniel", + "Composer": "Trevor Neill, Danny Snodgrass Jr. & Nick Mira", + "Album": "Restless - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6861637", + "Total Time": "191581", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-12-02T04:17:51Z", + "Date Added": "2019-12-02T04:17:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3772874890", + "Play Date UTC": "2023-07-22T09:48:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Restless - EP", + "Sort Artist": "Trevor Daniel", + "Sort Name": "Closure", + "Persistent ID": "426C957E5700FF8A", + "Track Type": "Remote" + }, + { + "Track ID": "4017", + "Name": "\u0628\u0646\u06cc \u0622\u062f\u0645", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Alice Coltrane, Chris Martin, Guy Berryman, Harcourt Whyte, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunset", + "Kind": "Alternative", + "Size": "7198671", + "Total Time": "194667", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3776618741", + "Play Date UTC": "2023-09-03T17:45:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "\u0628\u0646\u06cc \u0622\u062f\u0645", + "Track Type": "C37E5318F7BB9106" + }, + { + "Track ID": "4019", + "Name": "Champion of the World", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Andy Monaghan, Chris Martin, Guy Berryman, Harcourt Whyte, Jonny Buckland, Scott John Hutchison, Simon Liddell & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunset", + "Kind": "Alternative", + "Size": "9127787", + "Total Time": "257547", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "7", + "Track Count": -1, + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3779916732", + "Play Date UTC": "2023-10-11T21:52:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-20T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Champion of the World", + "Track Type": "DEF342E2F8E7FAFA" + }, + { + "Track ID": "4021", + "Name": "Cry Cry Cry", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Bert Berns, Chris Martin, Guy Berryman, Jacob Collier, Jerry Ragovoy, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunset", + "Kind": "Alternative", + "Size": "5993498", + "Total Time": "167280", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "4", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3780833246", + "Play Date UTC": "2023-10-22T12:27:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Cry Cry Cry", + "Track Type": "F2119083ED245B79" + }, + { + "Track ID": "4023", + "Name": "Old Friends", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunset", + "Kind": "Alternative", + "Size": "5449445", + "Total Time": "146947", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "5", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3754421066", + "Play Date UTC": "2022-12-20T19:44:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Old Friends", + "Track Type": "BF6721430C4134B5" + }, + { + "Track ID": "4025", + "Name": "Orphans", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland, Moses Martin & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunset", + "Kind": "Alternative", + "Size": "7204322", + "Total Time": "197533", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3759916822", + "Play Date UTC": "2023-02-22T10:20:22Z", + "Skip Count": -1, + "Skip Date": "2019-12-03T10:45:04Z", + "Release Date": "2019-10-24T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Orphans", + "Track Type": "E7103261A5D31563" + }, + { + "Track ID": "4027", + "Name": "\u00c8k\u00f3", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunset", + "Kind": "Alternative", + "Size": "5768102", + "Total Time": "157867", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "3", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3780775790", + "Play Date UTC": "2023-10-21T20:29:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "\u00c8k\u00f3", + "Track Type": "52D7954E55644F8F" + }, + { + "Track ID": "4029", + "Name": "Guns", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunset", + "Kind": "Alternative", + "Size": "4362712", + "Total Time": "115080", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3776166806", + "Play Date UTC": "2023-08-29T12:13:26Z", + "Skip Count": -1, + "Skip Date": "2022-11-21T13:36:35Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Guns", + "Track Type": "72852B8A9D61687D" + }, + { + "Track ID": "4031", + "Name": "Everyday Life", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, John Metcalfe, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunset", + "Kind": "Alternative", + "Size": "9032134", + "Total Time": "258533", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "8", + "Track Count": -1, + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3781061612", + "Play Date UTC": "2023-10-25T03:53:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Everyday Life", + "Track Type": "AB28E5D271FE0BF3" + }, + { + "Track ID": "4033", + "Name": "Arabesque", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Drew Goddard, Femi Kuti, Guy Berryman, Jonny Buckland, Paul Van Haver & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunrise", + "Kind": "Alternative", + "Size": "11964828", + "Total Time": "340280", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "7", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783074347", + "Play Date UTC": "2023-11-17T10:59:07Z", + "Skip Count": "2", + "Skip Date": "2022-08-17T12:33:13Z", + "Release Date": "2019-10-24T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Arabesque", + "Track Type": "AF32C2539848AF02" + }, + { + "Track ID": "4035", + "Name": "When I Need a Friend", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunrise", + "Kind": "Alternative", + "Size": "5780525", + "Total Time": "155000", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "8", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3777135471", + "Play Date UTC": "2023-09-09T17:17:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "When I Need a Friend", + "Track Type": "32129F39CE6EB219" + }, + { + "Track ID": "4037", + "Name": "Daddy", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunrise", + "Kind": "Alternative", + "Size": "10531090", + "Total Time": "298320", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "5", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3782990983", + "Play Date UTC": "2023-11-16T11:49:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-20T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Daddy", + "Track Type": "21272971D84A2ADA" + }, + { + "Track ID": "4039", + "Name": "WOTW/POTP", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunrise", + "Kind": "Alternative", + "Size": "3236160", + "Total Time": "76933", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3761062789", + "Play Date UTC": "2023-03-07T16:39:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "WOTW/POTP", + "Track Type": "2C96246D5977780E" + }, + { + "Track ID": "4041", + "Name": "Trouble In Town", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunrise", + "Kind": "Alternative", + "Size": "9718570", + "Total Time": "278907", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "3", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3782977658", + "Play Date UTC": "2023-11-16T08:07:38Z", + "Skip Count": "1", + "Skip Date": "2022-10-23T05:30:12Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Trouble In Town", + "Track Type": "2F0C140EA642F320" + }, + { + "Track ID": "4043", + "Name": "BrokEn", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunrise", + "Kind": "Alternative", + "Size": "5917671", + "Total Time": "150200", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "4", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3782802351", + "Play Date UTC": "2023-11-14T07:25:51Z", + "Skip Count": "2", + "Skip Date": "2022-07-19T10:46:35Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "BrokEn", + "Track Type": "8502CD7024BAA946" + }, + { + "Track ID": "4045", + "Name": "Sunrise", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Davide Rossi, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunrise", + "Kind": "Alternative", + "Size": "5685246", + "Total Time": "151093", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3782903453", + "Play Date UTC": "2023-11-15T11:30:53Z", + "Skip Count": "3", + "Skip Date": "2021-12-02T08:47:08Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Sunrise", + "Track Type": "9B46EB8E2D9E9EE3" + }, + { + "Track ID": "4047", + "Name": "Church", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Amjad Sabri, Chris Martin, Davide Rossi, Guy Berryman, Jacob Collier, Jonny Buckland, Mikkel D. Eriksen, Norah Shaqur, Tor Erik Hermansen & Will Champion", + "Album": "Everyday Life", + "Genre": "Sunrise", + "Kind": "Alternative", + "Size": "8215255", + "Total Time": "230013", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2019-12-03T10:04:09Z", + "Date Added": "2019-12-03T10:04:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781570701", + "Play Date UTC": "2023-10-31T01:18:21Z", + "Skip Count": "3", + "Skip Date": "2022-12-08T12:56:12Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Everyday Life", + "Sort Name": "Coldplay", + "Persistent ID": "Church", + "Track Type": "BCA80371C8AFDBF9" + }, + { + "Track ID": "4049", + "Name": "North Korea", + "Artist": "Josh A & iAmJakeHill", + "Album Artist": "Josh A & iAmJakeHill", + "Composer": "undef", + "Album": "Better off Dead", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5685687", + "Total Time": "153835", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2019-12-03T10:41:09Z", + "Date Added": "2019-12-03T10:41:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781450088", + "Play Date UTC": "2023-10-29T15:48:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-10-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Better off Dead", + "Sort Artist": "Josh A & iAmJakeHill", + "Sort Name": "North Korea", + "Persistent ID": "036AAE946FE9F658", + "Track Type": "Remote" + }, + { + "Track ID": "4051", + "Name": "Gucci Coffin", + "Artist": "Josh A & iAmJakeHill", + "Album Artist": "Josh A & iAmJakeHill", + "Composer": "undef", + "Album": "Better off Dead", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6658583", + "Total Time": "180005", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2019-12-03T10:43:02Z", + "Date Added": "2019-12-03T10:43:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3773542811", + "Play Date UTC": "2023-07-30T03:20:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-10-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Better off Dead", + "Sort Artist": "Josh A & iAmJakeHill", + "Sort Name": "Gucci Coffin", + "Persistent ID": "810B26CDDDE4A309", + "Track Type": "Remote" + }, + { + "Track ID": "4053", + "Name": "My Kind of Woman", + "Artist": "Mac DeMarco", + "Album Artist": "Mac DeMarco", + "Composer": "undef", + "Album": "2", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6841334", + "Total Time": "190846", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2012", + "Date Modified": "2019-12-06T04:50:35Z", + "Date Added": "2019-12-06T04:50:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781203366", + "Play Date UTC": "2023-10-26T19:16:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-10-16T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "2", + "Sort Artist": "Mac DeMarco", + "Sort Name": "My Kind of Woman", + "Persistent ID": "CE908F0757C6980A", + "Track Type": "Remote" + }, + { + "Track ID": "4055", + "Name": "Chamber of Reflection", + "Artist": "Mac DeMarco", + "Album Artist": "Mac DeMarco", + "Composer": "undef", + "Album": "Salad Days", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8690546", + "Total Time": "231724", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2019-12-06T04:53:40Z", + "Date Added": "2019-12-06T04:53:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781538780", + "Play Date UTC": "2023-10-30T16:26:20Z", + "Skip Count": "3", + "Skip Date": "2021-04-04T18:11:28Z", + "Release Date": "2014-04-01T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Salad Days", + "Sort Artist": "Mac DeMarco", + "Sort Name": "Chamber of Reflection", + "Persistent ID": "C4FCA7BB5078F738", + "Track Type": "Remote" + }, + { + "Track ID": "4057", + "Name": "On the Level", + "Artist": "Mac DeMarco", + "Album Artist": "Mac DeMarco", + "Composer": "undef", + "Album": "This Old Dog", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "7900541", + "Total Time": "227653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2019-12-06T20:38:05Z", + "Date Added": "2019-12-06T20:38:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3781790931", + "Play Date UTC": "2023-11-02T14:28:51Z", + "Skip Count": "5", + "Skip Date": "2022-12-27T13:17:44Z", + "Release Date": "2017-04-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Old Dog", + "Sort Artist": "Mac DeMarco", + "Sort Name": "On the Level", + "Persistent ID": "FC4AF2392DF8999B", + "Track Type": "Remote" + }, + { + "Track ID": "4059", + "Name": "Drifters & Trawlers", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "undef", + "Album": "Merrie Land", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5661610", + "Total Time": "154853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-12-08T11:12:31Z", + "Date Added": "2019-12-08T11:12:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3765360799", + "Play Date UTC": "2023-04-26T10:33:19Z", + "Skip Count": "3", + "Skip Date": "2022-06-24T11:40:55Z", + "Release Date": "2018-11-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Merrie Land", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Drifters & Trawlers", + "Track Type": "AE9C9FB7D3ED57CA" + }, + { + "Track ID": "4061", + "Name": "Ribbons", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "undef", + "Album": "Merrie Land", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6280066", + "Total Time": "172227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-12-09T07:10:03Z", + "Date Added": "2019-12-09T07:10:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3782884536", + "Play Date UTC": "2023-11-15T06:15:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Merrie Land", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Ribbons", + "Track Type": "45352A26DBF35D64" + }, + { + "Track ID": "4063", + "Name": "Gun to the Head", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "undef", + "Album": "Merrie Land", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9497423", + "Total Time": "259107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2019-12-09T15:38:21Z", + "Date Added": "2019-12-09T15:38:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781464919", + "Play Date UTC": "2023-10-29T19:55:19Z", + "Skip Count": "1", + "Skip Date": "2022-08-12T08:31:40Z", + "Release Date": "2018-11-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Merrie Land", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Gun to the Head", + "Track Type": "D31A65E0C44B6A12" + }, + { + "Track ID": "4065", + "Name": "80s Life", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7478109", + "Total Time": "208187", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783363066", + "Play Date UTC": "2023-11-20T19:11:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "80s Life", + "Track Type": "5ECBA5B1E0F084B5" + }, + { + "Track ID": "4067", + "Name": "History Song", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Abarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7338319", + "Total Time": "185973", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3783711300", + "Play Date UTC": "2023-11-24T19:55:00Z", + "Skip Count": "1", + "Skip Date": "2019-12-11T05:00:05Z", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "History Song", + "Track Type": "C717A2D91DB0BA76" + }, + { + "Track ID": "4069", + "Name": "Northern Whale", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8868141", + "Total Time": "234133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3773528875", + "Play Date UTC": "2023-07-29T23:27:55Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Northern Whale", + "Track Type": "9FC170F872BFED71" + }, + { + "Track ID": "4071", + "Name": "Kingdom of Doom", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6247615", + "Total Time": "162867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2006", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3781536200", + "Play Date UTC": "2023-10-30T15:43:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2006-11-20T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Kingdom of Doom", + "Track Type": "ABB9546F8567B22E" + }, + { + "Track ID": "4073", + "Name": "Behind the Sun", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6027087", + "Total Time": "158453", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783494956", + "Play Date UTC": "2023-11-22T07:49:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Behind the Sun", + "Track Type": "2A413E54CE476B3F" + }, + { + "Track ID": "4075", + "Name": "Herculean", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8458148", + "Total Time": "239640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2006", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3772873423", + "Play Date UTC": "2023-07-22T09:23:43Z", + "Skip Count": "1", + "Skip Date": "2023-05-23T06:05:16Z", + "Release Date": "2006-10-10T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Herculean", + "Track Type": "891DCDCDF1795CC2" + }, + { + "Track ID": "4077", + "Name": "Green Fields (feat. James Dring)", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5784545", + "Total Time": "146333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3783454861", + "Play Date UTC": "2023-11-21T20:41:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Green Fields (feat. James Dring)", + "Track Type": "412A6D6B1CECEB1A" + }, + { + "Track ID": "4079", + "Name": "Three Changes", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Paul Simonon & Damon Albarn", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9199258", + "Total Time": "255040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3776172387", + "Play Date UTC": "2023-08-29T13:46:27Z", + "Skip Count": "2", + "Skip Date": "2021-06-12T18:07:07Z", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Three Changes", + "Track Type": "F1428E876E79F129" + }, + { + "Track ID": "4081", + "Name": "The Good, The Bad and the Queen", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "The Good, the Bad & the Queen", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "15762612", + "Total Time": "420293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3776334500", + "Play Date UTC": "2023-08-31T10:48:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Good, the Bad & the Queen", + "Track Type": "Good, The Bad and the Queen" + }, + { + "Track ID": "4083", + "Name": "The Bunting Song", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Paul Simonon & Damon Albarn", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8685813", + "Total Time": "227280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3777023344", + "Play Date UTC": "2023-09-08T10:09:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Bunting Song", + "Track Type": "7C5F4D718B01C282" + }, + { + "Track ID": "4085", + "Name": "A Soldier's Tale", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "The Good, the Bad & the Queen", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5511045", + "Total Time": "150000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2019-12-09T16:20:07Z", + "Date Added": "2019-12-09T16:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3776153881", + "Play Date UTC": "2023-08-29T08:38:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good, the Bad & the Queen", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Soldier's Tale", + "Track Type": "EFF478A1BEC7F3CF" + }, + { + "Track ID": "4087", + "Name": "Tribunal", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7383513", + "Total Time": "208510", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "25", + "Track Count": -1, + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3773207226", + "Play Date UTC": "2023-07-26T06:07:06Z", + "Skip Count": "1", + "Skip Date": "2022-07-15T17:51:15Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Tribunal", + "Persistent ID": "BEA12E66452E7B10", + "Track Type": "Remote" + }, + { + "Track ID": "4089", + "Name": "Command Module Cobb", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "2560152", + "Total Time": "62869", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "24", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3773542382", + "Play Date UTC": "2023-07-30T03:13:02Z", + "Skip Count": "2", + "Skip Date": "2022-08-24T07:47:47Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Command Module Cobb", + "Persistent ID": "918F877C6CDC0B7F", + "Track Type": "Remote" + }, + { + "Track ID": "4091", + "Name": "Heroes", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5360976", + "Total Time": "144576", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3753607879", + "Play Date UTC": "2022-12-11T09:51:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Heroes", + "Persistent ID": "6244615B9428D8E0", + "Track Type": "Remote" + }, + { + "Track ID": "4093", + "Name": "Heading for the Landing", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5764264", + "Total Time": "159061", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3781385097", + "Play Date UTC": "2023-10-28T21:44:57Z", + "Skip Count": "4", + "Skip Date": "2022-07-12T15:44:52Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Heading for the Landing", + "Persistent ID": "7920B81E4E15D6F8", + "Track Type": "Remote" + }, + { + "Track ID": "4095", + "Name": "Woman on the Moon", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6553057", + "Total Time": "184061", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "26", + "Track Count": -1, + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3761060725", + "Play Date UTC": "2023-03-07T16:05:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Woman on the Moon", + "Persistent ID": "9E8184F8E496E0B7", + "Track Type": "Remote" + }, + { + "Track ID": "4097", + "Name": "Flight Director", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "3525180", + "Total Time": "90564", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "22", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3766952037", + "Play Date UTC": "2023-05-14T20:33:57Z", + "Skip Count": "1", + "Skip Date": "2022-05-28T12:58:19Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Flight Director", + "Persistent ID": "797BDB369D99D286", + "Track Type": "Remote" + }, + { + "Track ID": "4099", + "Name": "Von Braun", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5114378", + "Total Time": "139762", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "21", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3772617969", + "Play Date UTC": "2023-07-19T10:26:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Von Braun", + "Persistent ID": "C3315C07253E9913", + "Track Type": "Remote" + }, + { + "Track ID": "4101", + "Name": "Lit Match", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "3845597", + "Total Time": "99761", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "23", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780379584", + "Play Date UTC": "2023-10-17T06:26:24Z", + "Skip Count": "1", + "Skip Date": "2022-08-19T16:10:33Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Lit Match", + "Persistent ID": "D150C9C62BEE4BA7", + "Track Type": "Remote" + }, + { + "Track ID": "4103", + "Name": "Lonely Research", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6496695", + "Total Time": "181056", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3782884717", + "Play Date UTC": "2023-11-15T06:18:37Z", + "Skip Count": "1", + "Skip Date": "2022-08-06T10:15:45Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Lonely Research", + "Persistent ID": "E39A734F2244DFA9", + "Track Type": "Remote" + }, + { + "Track ID": "4105", + "Name": "Ants", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6751623", + "Total Time": "188203", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3780827391", + "Play Date UTC": "2023-10-22T10:49:51Z", + "Skip Count": "1", + "Skip Date": "2023-11-15T10:55:37Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Ants", + "Persistent ID": "BB3BF86BDF098E33", + "Track Type": "Remote" + }, + { + "Track ID": "4107", + "Name": "Landing", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8572742", + "Total Time": "241195", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3766404236", + "Play Date UTC": "2023-05-08T12:23:56Z", + "Skip Count": "1", + "Skip Date": "2023-01-18T13:12:33Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Landing", + "Persistent ID": "392FE614F7DFB87D", + "Track Type": "Remote" + }, + { + "Track ID": "4109", + "Name": "Armed Booster / Another Ship", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "21762047", + "Total Time": "643243", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3781521413", + "Play Date UTC": "2023-10-30T11:36:53Z", + "Skip Count": "2", + "Skip Date": "2022-07-17T12:13:49Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Armed Booster / Another Ship", + "Persistent ID": "5E27FB2ACB169556", + "Track Type": "Remote" + }, + { + "Track ID": "4111", + "Name": "Questioned on Tape", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5436810", + "Total Time": "150443", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3782904739", + "Play Date UTC": "2023-11-15T11:52:19Z", + "Skip Count": "3", + "Skip Date": "2023-11-21T06:12:35Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Questioned on Tape", + "Persistent ID": "06195205DE90E8E8", + "Track Type": "Remote" + }, + { + "Track ID": "4113", + "Name": "Smoke", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5461710", + "Total Time": "149813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783663168", + "Play Date UTC": "2023-11-24T06:32:48Z", + "Skip Count": "5", + "Skip Date": "2023-10-13T16:14:37Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Smoke", + "Persistent ID": "F2E0DF2BC507B609", + "Track Type": "Remote" + }, + { + "Track ID": "4115", + "Name": "Moon Miss America", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7933243", + "Total Time": "222635", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3772619317", + "Play Date UTC": "2023-07-19T10:48:37Z", + "Skip Count": "1", + "Skip Date": "2022-05-18T19:41:38Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Moon Miss America", + "Persistent ID": "58E542A76E451E90", + "Track Type": "Remote" + }, + { + "Track ID": "4117", + "Name": "Water, Pt. 1", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5561790", + "Total Time": "152811", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3776336199", + "Play Date UTC": "2023-08-31T11:16:39Z", + "Skip Count": "1", + "Skip Date": "2022-11-02T15:31:30Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Water, Pt. 1", + "Persistent ID": "E8B86B85FEB07E82", + "Track Type": "Remote" + }, + { + "Track ID": "4119", + "Name": "Hurry to Watch", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "3488600", + "Total Time": "90027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3773849694", + "Play Date UTC": "2023-08-02T16:34:54Z", + "Skip Count": "2", + "Skip Date": "2023-07-22T09:12:17Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Hurry to Watch", + "Persistent ID": "E6F1E1313AF64816", + "Track Type": "Remote" + }, + { + "Track ID": "4121", + "Name": "Karen and Ed", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "3362895", + "Total Time": "86272", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3780393457", + "Play Date UTC": "2023-10-17T10:17:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Karen and Ed", + "Persistent ID": "81BEAB4B18CF651F", + "Track Type": "Remote" + }, + { + "Track ID": "4123", + "Name": "Moon", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "1864116", + "Total Time": "39360", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781598915", + "Play Date UTC": "2023-10-31T09:08:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Moon", + "Persistent ID": "6B5AA1D0ADEFE291", + "Track Type": "Remote" + }, + { + "Track ID": "4125", + "Name": "Water, Pt. 2", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "15741927", + "Total Time": "461397", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3783848623", + "Play Date UTC": "2023-11-26T10:03:43Z", + "Skip Count": "1", + "Skip Date": "2023-07-11T15:20:30Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1214", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Water, Pt. 2", + "Persistent ID": "1B570D8014761398", + "Track Type": "Remote" + }, + { + "Track ID": "4127", + "Name": "Career Over / No Russians", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "4096272", + "Total Time": "109023", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3758957723", + "Play Date UTC": "2023-02-11T07:55:23Z", + "Skip Count": "2", + "Skip Date": "2022-12-11T14:29:20Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Career Over / No Russians", + "Persistent ID": "F5EA35CCC76EF357", + "Track Type": "Remote" + }, + { + "Track ID": "4129", + "Name": "Lower Molly", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6702899", + "Total Time": "188756", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783409569", + "Play Date UTC": "2023-11-21T08:06:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Lower Molly", + "Persistent ID": "4B7D8483C1EA7E96", + "Track Type": "Remote" + }, + { + "Track ID": "4131", + "Name": "Ellen and Deke In Trouble", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6532028", + "Total Time": "182976", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-22T11:51:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3777023098", + "Play Date UTC": "2023-09-08T10:04:58Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Ellen and Deke In Trouble", + "Persistent ID": "6E74370CC8483921", + "Track Type": "Remote" + }, + { + "Track ID": "4133", + "Name": "Race to the Moon (Piano Suite)", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "12611388", + "Total Time": "371154", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3760430202", + "Play Date UTC": "2023-02-28T08:56:42Z", + "Skip Count": "2", + "Skip Date": "2022-11-27T20:59:44Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Race to the Moon (Piano Suite)", + "Persistent ID": "68B4760EA52845F8", + "Track Type": "Remote" + }, + { + "Track ID": "4135", + "Name": "For All Mankind Main Title", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "3043397", + "Total Time": "80253", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3775565517", + "Play Date UTC": "2023-08-22T13:11:57Z", + "Skip Count": "1", + "Skip Date": "2022-05-28T13:02:51Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "For All Mankind Main Title", + "Persistent ID": "9F4807AB230952D8", + "Track Type": "Remote" + }, + { + "Track ID": "4137", + "Name": "For All Jazz-Kind", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "undef", + "Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8474577", + "Total Time": "242240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2019-12-14T15:27:05Z", + "Date Added": "2019-12-14T15:27:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3760253747", + "Play Date UTC": "2023-02-26T07:55:47Z", + "Skip Count": "2", + "Skip Date": "2023-06-17T18:25:05Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For All Mankind: Season 1 (Apple TV+ Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "For All Jazz-Kind", + "Persistent ID": "0F211AA08B27FB66", + "Track Type": "Remote" + }, + { + "Track ID": "4139", + "Name": "Poor Meemo", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "1985920", + "Total Time": "42080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783767774", + "Play Date UTC": "2023-11-25T11:36:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Poor Meemo", + "Persistent ID": "D25AD8BB5C35E514", + "Track Type": "Remote" + }, + { + "Track ID": "4141", + "Name": "The East", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "12174256", + "Total Time": "354947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780497630", + "Play Date UTC": "2023-10-18T15:13:50Z", + "Skip Count": "1", + "Skip Date": "2023-05-14T12:13:51Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "East", + "Persistent ID": "502E9CE826D433F9", + "Track Type": "Remote" + }, + { + "Track ID": "4143", + "Name": "Orchestra for Nikki", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "17302961", + "Total Time": "506173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3783687240", + "Play Date UTC": "2023-11-24T13:14:00Z", + "Skip Count": "3", + "Skip Date": "2023-05-07T14:26:58Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Orchestra for Nikki", + "Persistent ID": "A240F93F351716A0", + "Track Type": "Remote" + }, + { + "Track ID": "4145", + "Name": "The Robbery", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6289573", + "Total Time": "177173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783454162", + "Play Date UTC": "2023-11-21T20:29:22Z", + "Skip Count": "6", + "Skip Date": "2023-06-30T11:46:16Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Robbery", + "Persistent ID": "69F836337E86392B", + "Track Type": "Remote" + }, + { + "Track ID": "4147", + "Name": "Wrench and Swango", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "4053236", + "Total Time": "96880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3782980886", + "Play Date UTC": "2023-11-16T09:01:26Z", + "Skip Count": "4", + "Skip Date": "2023-11-25T13:32:18Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Wrench and Swango", + "Persistent ID": "583D517D1C3BB3B6", + "Track Type": "Remote" + }, + { + "Track ID": "4149", + "Name": "Varga", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8853958", + "Total Time": "263040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3767794275", + "Play Date UTC": "2023-05-24T14:31:15Z", + "Skip Count": "1", + "Skip Date": "undef", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Varga", + "Persistent ID": "F196E1FA0F841A3D", + "Track Type": "Remote" + }, + { + "Track ID": "4151", + "Name": "Fingerprint Scanner", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "1529874", + "Total Time": "30827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3777374890", + "Play Date UTC": "2023-09-12T11:48:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Fingerprint Scanner", + "Persistent ID": "088629F6DFDEEC3C", + "Track Type": "Remote" + }, + { + "Track ID": "4153", + "Name": "Wrench and Nikki Steal a Truck", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6166984", + "Total Time": "162787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783709267", + "Play Date UTC": "2023-11-24T19:21:07Z", + "Skip Count": "1", + "Skip Date": "2023-10-17T16:24:39Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Wrench and Nikki Steal a Truck", + "Persistent ID": "15F2E7514F013782", + "Track Type": "Remote" + }, + { + "Track ID": "4155", + "Name": "Fargo Main Theme (Season 3)", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5346751", + "Total Time": "148160", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3760902211", + "Play Date UTC": "2023-03-05T20:03:31Z", + "Skip Count": "1", + "Skip Date": "2022-07-24T13:22:31Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Fargo Main Theme (Season 3)", + "Persistent ID": "F62C30AF62027544", + "Track Type": "Remote" + }, + { + "Track ID": "4157", + "Name": "The Russians (Alternate Version)", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5167301", + "Total Time": "146227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3767778678", + "Play Date UTC": "2023-05-24T10:11:18Z", + "Skip Count": "2", + "Skip Date": "2022-05-10T11:32:41Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Russians (Alternate Version)", + "Persistent ID": "CC2682B2E21C91B4", + "Track Type": "Remote" + }, + { + "Track ID": "4159", + "Name": "Ship of Fools", + "Artist": "Jeff Russo & Noah Hawley", + "Album Artist": "Jeff Russo", + "Composer": "Karl Edmond De Vere Wallinger", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "14198779", + "Total Time": "425507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "21", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783453398", + "Play Date UTC": "2023-11-21T20:16:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo & Noah Hawley", + "Sort Name": "Ship of Fools", + "Persistent ID": "8BB3D654BF237DD7", + "Track Type": "Remote" + }, + { + "Track ID": "4161", + "Name": "Fargo Main Theme (Choir)", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "4911939", + "Total Time": "136667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3783709779", + "Play Date UTC": "2023-11-24T19:29:39Z", + "Skip Count": "2", + "Skip Date": "2021-09-29T08:57:49Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Fargo Main Theme (Choir)", + "Persistent ID": "36805ECB8B94347E", + "Track Type": "Remote" + }, + { + "Track ID": "4163", + "Name": "For Nikki", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "17301420", + "Total Time": "519293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783661690", + "Play Date UTC": "2023-11-24T06:08:10Z", + "Skip Count": "1", + "Skip Date": "2021-02-01T18:29:24Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "For Nikki", + "Persistent ID": "40420E703A36EFF8", + "Track Type": "Remote" + }, + { + "Track ID": "4165", + "Name": "Nikki, Ray and AC", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8341453", + "Total Time": "232027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3776346242", + "Play Date UTC": "2023-08-31T14:04:02Z", + "Skip Count": "2", + "Skip Date": "2023-10-08T14:27:49Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Nikki, Ray and AC", + "Persistent ID": "45B63E71F29D4803", + "Track Type": "Remote" + }, + { + "Track ID": "4167", + "Name": "Horn Heavy", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8448143", + "Total Time": "240507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3783688176", + "Play Date UTC": "2023-11-24T13:29:36Z", + "Skip Count": "3", + "Skip Date": "2022-06-19T09:31:20Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Horn Heavy", + "Persistent ID": "68FDB46D1510E6A4", + "Track Type": "Remote" + }, + { + "Track ID": "4169", + "Name": "The Russians", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5169472", + "Total Time": "145053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3782802653", + "Play Date UTC": "2023-11-14T07:30:53Z", + "Skip Count": "1", + "Skip Date": "2023-10-03T12:55:14Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Russians", + "Persistent ID": "C311219D9A91C212", + "Track Type": "Remote" + }, + { + "Track ID": "4171", + "Name": "The Meeting", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "2272332", + "Total Time": "54387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3769952604", + "Play Date UTC": "2023-06-18T14:03:24Z", + "Skip Count": "4", + "Skip Date": "2023-05-31T15:35:21Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Meeting", + "Persistent ID": "AFBD0755B7C4868D", + "Track Type": "Remote" + }, + { + "Track ID": "4173", + "Name": "Year Three Murder", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6589926", + "Total Time": "184280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3782978256", + "Play Date UTC": "2023-11-16T08:17:36Z", + "Skip Count": "1", + "Skip Date": "2022-11-09T14:47:27Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Year Three Murder", + "Persistent ID": "41CE3AAA43DD60DA", + "Track Type": "Remote" + }, + { + "Track ID": "4175", + "Name": "Nikki in Tub", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6313554", + "Total Time": "175713", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3767610354", + "Play Date UTC": "2023-05-22T11:25:54Z", + "Skip Count": "1", + "Skip Date": "2022-08-14T16:48:19Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Nikki in Tub", + "Persistent ID": "CB7245546E549D54", + "Track Type": "Remote" + }, + { + "Track ID": "4177", + "Name": "Minsky (I Can Help)", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "12276093", + "Total Time": "356227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "21", + "Year": "2017", + "Date Modified": "2019-12-14T15:27:11Z", + "Date Added": "2019-12-14T15:27:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3758716395", + "Play Date UTC": "2023-02-08T12:53:15Z", + "Skip Count": "3", + "Skip Date": "2023-10-09T09:59:59Z", + "Release Date": "2017-08-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 3 (An Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Minsky (I Can Help)", + "Persistent ID": "426FF1DE3DD221DF", + "Track Type": "Remote" + }, + { + "Track ID": "4179", + "Name": "Rye's Theme", + "Artist": "Jeff Russo & USC Drum Corps", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Fargo Year 2 (Score from the Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6387804", + "Total Time": "171320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "28", + "Year": "2016", + "Date Modified": "2019-12-16T04:07:44Z", + "Date Added": "2019-12-16T04:07:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781383318", + "Play Date UTC": "2023-10-28T21:15:18Z", + "Skip Count": "6", + "Skip Date": "2022-11-26T08:42:59Z", + "Release Date": "2016-03-25T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fargo Year 2 (Score from the Original MGM / FXP Television Series)", + "Sort Artist": "Jeff Russo & USC Drum Corps", + "Sort Name": "Rye's Theme", + "Persistent ID": "FA56B0806679F1CF", + "Track Type": "Remote" + }, + { + "Track ID": "4181", + "Name": "Didn't Leave Nobody But the Baby", + "Artist": "Noah Hawley & Jeff Russo", + "Album Artist": "Various Artists", + "Composer": "Alan Lomax, Gillian Welch & T Bone Burnett", + "Album": "Fargo Year 2 (Songs from the Original MGM / FXP Television Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6369067", + "Total Time": "173753", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "15", + "Year": "2016", + "Date Modified": "2019-12-16T04:12:34Z", + "Date Added": "2019-12-16T04:12:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3757522812", + "Play Date UTC": "2023-01-25T17:20:12Z", + "Skip Count": "2", + "Skip Date": "2021-09-29T09:27:08Z", + "Release Date": "2016-03-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Fargo Year 2 (Songs from the Original MGM / FXP Television Series)", + "Sort Artist": "Noah Hawley & Jeff Russo", + "Sort Name": "Didn't Leave Nobody But the Baby", + "Persistent ID": "23B4FD017B31BEFA", + "Track Type": "Remote" + }, + { + "Track ID": "4183", + "Name": "The Umbrella Academy", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "The Umbrella Academy (Original Series Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "11132968", + "Total Time": "317627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "15", + "Year": "2019", + "Date Modified": "2019-12-16T04:16:43Z", + "Date Added": "2019-12-16T04:16:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3777018919", + "Play Date UTC": "2023-09-08T08:55:19Z", + "Skip Count": "1", + "Skip Date": "2019-12-29T14:07:03Z", + "Release Date": "2019-02-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Umbrella Academy (Original Series Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Umbrella Academy", + "Persistent ID": "C48A8B8B61FD8A6D", + "Track Type": "Remote" + }, + { + "Track ID": "4185", + "Name": "Hell & Back", + "Artist": "Azizi Gibson", + "Album Artist": "Azizi Gibson", + "Composer": "undef", + "Album": "Chimera Act", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5916463", + "Total Time": "167000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2019-12-19T05:23:22Z", + "Date Added": "2019-12-19T05:23:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783685287", + "Play Date UTC": "2023-11-24T12:41:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Chimera Act", + "Sort Artist": "Azizi Gibson", + "Sort Name": "Hell & Back", + "Persistent ID": "4EC77F9E3CFEB830", + "Track Type": "Remote" + }, + { + "Track ID": "4187", + "Name": "paradise", + "Artist": "Marco Luka", + "Album Artist": "Marco Luka", + "Composer": "Marco Luka & Josh Bishop", + "Album": "paradise - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5053546", + "Total Time": "140000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2019-12-19T05:29:02Z", + "Date Added": "2019-12-19T05:29:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "80", + "Play Date": "3783450464", + "Play Date UTC": "2023-11-21T19:27:44Z", + "Skip Count": "3", + "Skip Date": "2021-12-08T15:16:56Z", + "Release Date": "2019-04-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "paradise - Single", + "Sort Artist": "Marco Luka", + "Sort Name": "paradise", + "Persistent ID": "FE43C6E04DA0CF4F", + "Track Type": "Remote" + }, + { + "Track ID": "4189", + "Name": "Prosecco", + "Artist": "Croosh", + "Album Artist": "Croosh", + "Composer": "Jamir Malek & Peterson Faustin", + "Album": "Crazy Virgo", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6201766", + "Total Time": "176842", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2019-12-19T05:32:04Z", + "Date Added": "2019-12-19T05:32:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3783849223", + "Play Date UTC": "2023-11-26T10:13:43Z", + "Skip Count": "1", + "Skip Date": "2019-12-22T11:50:12Z", + "Release Date": "2019-08-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Crazy Virgo", + "Sort Artist": "Croosh", + "Sort Name": "Prosecco", + "Persistent ID": "403D4A0A28BCA1B1", + "Track Type": "Remote" + }, + { + "Track ID": "4191", + "Name": "Ghost Stories", + "Artist": "Anthony Russo", + "Album Artist": "Anthony Russo", + "Composer": "Anthony Russo", + "Album": "Basement Demos - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7018550", + "Total Time": "196160", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2016", + "Date Modified": "2019-12-23T10:36:51Z", + "Date Added": "2019-12-23T10:36:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3776428320", + "Play Date UTC": "2023-09-01T12:52:00Z", + "Skip Count": "3", + "Skip Date": "2021-06-21T11:56:30Z", + "Release Date": "2016-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Basement Demos - EP", + "Sort Artist": "Anthony Russo", + "Sort Name": "Ghost Stories", + "Persistent ID": "BB27E386AF988E32", + "Track Type": "Remote" + }, + { + "Track ID": "4193", + "Name": "Righteous", + "Artist": "Hippie Sabotage", + "Album Artist": "Hippie Sabotage", + "Composer": "J. Saurer & K. Saurer", + "Album": "Righteous - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "10098495", + "Total Time": "292206", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2019-12-23T10:47:29Z", + "Date Added": "2019-12-23T10:47:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3781685274", + "Play Date UTC": "2023-11-01T09:07:54Z", + "Skip Count": "2", + "Skip Date": "2020-02-01T06:04:58Z", + "Release Date": "2017-12-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Righteous - Single", + "Sort Artist": "Hippie Sabotage", + "Sort Name": "Righteous", + "Persistent ID": "32E9B9E3C70FA983", + "Track Type": "Remote" + }, + { + "Track ID": "4195", + "Name": "Evil", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Antics", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7746342", + "Total Time": "215827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2004", + "Date Modified": "2019-12-27T16:31:26Z", + "Date Added": "2019-12-27T16:31:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3771823967", + "Play Date UTC": "2023-07-10T05:52:47Z", + "Skip Count": "2", + "Skip Date": "2023-05-27T10:41:57Z", + "Release Date": "2004-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Antics", + "Sort Artist": "Interpol", + "Sort Name": "Evil", + "Persistent ID": "AD7FE71DD701CB1A", + "Track Type": "Remote" + }, + { + "Track ID": "4197", + "Name": "Peta (feat. Meek Mill)", + "Artist": "Roddy Ricch", + "Album Artist": "Roddy Ricch", + "Composer": "Rodrick Moore, Ozan Yildirim, Nils Noehden & Robert Williams", + "Album": "Please Excuse Me For Being Antisocial", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7258001", + "Total Time": "198849", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2020-01-01T21:44:00Z", + "Date Added": "2020-01-01T21:44:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "75", + "Play Date": "3766834182", + "Play Date UTC": "2023-05-13T11:49:42Z", + "Skip Count": "1", + "Skip Date": "2020-01-22T08:05:01Z", + "Release Date": "2019-12-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Please Excuse Me For Being Antisocial", + "Sort Artist": "Roddy Ricch", + "Sort Name": "Peta (feat. Meek Mill)", + "Persistent ID": "06082058992EDB77", + "Track Type": "Remote" + }, + { + "Track ID": "4199", + "Name": "WHAT TO DO? (feat. Don Toliver)", + "Artist": "JACKBOYS & Travis Scott", + "Album Artist": "JACKBOYS & Travis Scott", + "Composer": "Jacques Webster, Caleb Zackery Toliver, James Austin Cyr, Julius-Alexander Brown & Niv Kalisky", + "Album": "JACKBOYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8969290", + "Total Time": "250142", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2020-01-01T21:44:08Z", + "Date Added": "2020-01-01T21:44:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "151", + "Play Date": "3767988716", + "Play Date UTC": "2023-05-26T20:31:56Z", + "Skip Count": "7", + "Skip Date": "2022-04-30T07:20:00Z", + "Release Date": "2019-12-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JACKBOYS", + "Sort Artist": "JACKBOYS & Travis Scott", + "Sort Name": "WHAT TO DO? (feat. Don Toliver)", + "Persistent ID": "33594FFB3D52B835", + "Track Type": "Remote" + }, + { + "Track ID": "4201", + "Name": "War Baby", + "Artist": "Roddy Ricch", + "Album Artist": "Roddy Ricch", + "Composer": "Rodrick Moore, Eric Anthony Sandoval & Ashley Kember", + "Album": "Please Excuse Me For Being Antisocial", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7039129", + "Total Time": "195668", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2020-01-02T14:27:13Z", + "Date Added": "2020-01-02T14:27:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "173", + "Play Date": "3781768310", + "Play Date UTC": "2023-11-02T08:11:50Z", + "Skip Count": "2", + "Skip Date": "2022-03-15T18:53:28Z", + "Release Date": "2019-12-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Please Excuse Me For Being Antisocial", + "Sort Artist": "Roddy Ricch", + "Sort Name": "War Baby", + "Persistent ID": "5AA6E519A9127210", + "Track Type": "Remote" + }, + { + "Track ID": "4203", + "Name": "Find a Way", + "Artist": "Tyler James Bellinger", + "Album Artist": "Tyler James Bellinger", + "Composer": "Tyler James Bellinger, Michael MacAllister & Daniel Choder", + "Album": "Find a Way - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7757447", + "Total Time": "216630", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2020-01-04T18:40:07Z", + "Date Added": "2020-01-04T18:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3773849603", + "Play Date UTC": "2023-08-02T16:33:23Z", + "Skip Count": "2", + "Skip Date": "2022-10-27T15:12:51Z", + "Release Date": "2019-11-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Find a Way - Single", + "Sort Artist": "Tyler James Bellinger", + "Sort Name": "Find a Way", + "Persistent ID": "84CA58F1534B4418", + "Track Type": "Remote" + }, + { + "Track ID": "4205", + "Name": "Bullet In A Gun", + "Artist": "Imagine Dragons", + "Album Artist": "Imagine Dragons", + "Composer": "Jayson Dezuzio, Alexander Grant, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman", + "Album": "Origins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7340693", + "Total Time": "204853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-01-09T06:06:13Z", + "Date Added": "2020-01-09T06:06:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3783774729", + "Play Date UTC": "2023-11-25T13:32:09Z", + "Skip Count": "2", + "Skip Date": "2022-04-16T23:25:40Z", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Origins", + "Sort Artist": "Imagine Dragons", + "Sort Name": "Bullet In A Gun", + "Persistent ID": "A27DD5654C47DA00", + "Track Type": "Remote" + }, + { + "Track ID": "4207", + "Name": "Legend", + "Artist": "The Score", + "Album Artist": "The Score", + "Composer": "Edan Dover & Eddie Anthony", + "Album": "ATLAS (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6852422", + "Total Time": "189120", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "28", + "Year": "2017", + "Date Modified": "2020-01-09T06:11:20Z", + "Date Added": "2020-01-09T06:11:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3783454352", + "Play Date UTC": "2023-11-21T20:32:32Z", + "Skip Count": "2", + "Skip Date": "2022-11-19T21:52:36Z", + "Release Date": "2017-02-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ATLAS (Deluxe)", + "Sort Artist": "Score", + "Sort Name": "Score", + "Persistent ID": "Legend", + "Track Type": "04B033BC1DF01B56" + }, + { + "Track ID": "4209", + "Name": "Faithfully", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Poltergeist - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6144337", + "Total Time": "171781", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2019", + "Date Modified": "2020-01-09T06:19:57Z", + "Date Added": "2020-01-09T06:19:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3761738973", + "Play Date UTC": "2023-03-15T12:29:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Poltergeist - EP", + "Sort Artist": "Derek Pope", + "Sort Name": "Faithfully", + "Persistent ID": "3193AB62B853B2FD", + "Track Type": "Remote" + }, + { + "Track ID": "4211", + "Name": "Only If You Run", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8428629", + "Total Time": "228560", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3781890675", + "Play Date UTC": "2023-11-03T18:11:15Z", + "Skip Count": "2", + "Skip Date": "2022-04-16T23:12:17Z", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Only If You Run", + "Persistent ID": "5B77B12BC0DE10A6", + "Track Type": "Remote" + }, + { + "Track ID": "4213", + "Name": "Girl on the Sporting News", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6308133", + "Total Time": "173040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3766923776", + "Play Date UTC": "2023-05-14T12:42:56Z", + "Skip Count": "2", + "Skip Date": "2023-01-23T09:19:25Z", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Girl on the Sporting News", + "Persistent ID": "3756B6CF513DD566", + "Track Type": "Remote" + }, + { + "Track ID": "4215", + "Name": "Games for Days", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8493051", + "Total Time": "237320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3778862772", + "Play Date UTC": "2023-09-29T17:06:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Games for Days", + "Persistent ID": "DCD61A88B9E775DB", + "Track Type": "Remote" + }, + { + "Track ID": "4217", + "Name": "H", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is ... Skyscraper (Bonus Track Version)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6008109", + "Total Time": "158640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3760420622", + "Play Date UTC": "2023-02-28T06:17:02Z", + "Skip Count": "2", + "Skip Date": "2022-01-06T21:06:03Z", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Julian Plenti Is ... Skyscraper (Bonus Track Version)", + "Sort Artist": "Julian Plenti", + "Sort Name": "H", + "Persistent ID": "551B666BAF2CFDBC", + "Track Type": "Remote" + }, + { + "Track ID": "4219", + "Name": "Fun That We Have", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8077313", + "Total Time": "221387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3780850945", + "Play Date UTC": "2023-10-22T17:22:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Fun That We Have", + "Persistent ID": "F76DC93664056614", + "Track Type": "Remote" + }, + { + "Track ID": "4221", + "Name": "Madrid Song", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4751195", + "Total Time": "127947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3781465488", + "Play Date UTC": "2023-10-29T20:04:48Z", + "Skip Count": "2", + "Skip Date": "2023-01-11T20:58:22Z", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Madrid Song", + "Persistent ID": "6A987A0573D06A58", + "Track Type": "Remote" + }, + { + "Track ID": "4223", + "Name": "No Chance Survival", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8671162", + "Total Time": "243480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3773532150", + "Play Date UTC": "2023-07-30T00:22:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "No Chance Survival", + "Persistent ID": "A55C472EBD933A01", + "Track Type": "Remote" + }, + { + "Track ID": "4225", + "Name": "Games for Days (Single Version)", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8317670", + "Total Time": "229209", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3781320101", + "Play Date UTC": "2023-10-28T03:41:41Z", + "Skip Count": "2", + "Skip Date": "2023-05-23T05:46:24Z", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Games for Days (Single Version)", + "Persistent ID": "D16B784B29DAB310", + "Track Type": "Remote" + }, + { + "Track ID": "4227", + "Name": "Unwind", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7427243", + "Total Time": "198400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3783763124", + "Play Date UTC": "2023-11-25T10:18:44Z", + "Skip Count": "1", + "Skip Date": "2020-02-26T04:21:50Z", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Unwind", + "Persistent ID": "FF44B6D8E06DF015", + "Track Type": "Remote" + }, + { + "Track ID": "4229", + "Name": "Skyscraper", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7541984", + "Total Time": "199507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3752586997", + "Play Date UTC": "2022-11-29T14:16:37Z", + "Skip Count": "2", + "Skip Date": "2022-04-12T11:09:03Z", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Skyscraper", + "Persistent ID": "476AC20F1395391F", + "Track Type": "Remote" + }, + { + "Track ID": "4231", + "Name": "Fly As You Might", + "Artist": "Julian Plenti", + "Album Artist": "Julian Plenti", + "Composer": "Julian Plenti", + "Album": "Julian Plenti Is... Skyscraper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8880969", + "Total Time": "237133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2020-01-09T06:22:13Z", + "Date Added": "2020-01-09T06:22:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780905483", + "Play Date UTC": "2023-10-23T08:31:23Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2009-08-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Julian Plenti Is... Skyscraper", + "Sort Artist": "Julian Plenti", + "Sort Name": "Fly As You Might", + "Persistent ID": "400A6D47C795E1BC", + "Track Type": "Remote" + }, + { + "Track ID": "4233", + "Name": "Close Your Mouth Now", + "Artist": "Raz Simone", + "Album Artist": "Raz Simone", + "Composer": "Raz Simone", + "Album": "Still Love", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6372481", + "Total Time": "176000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "15", + "Year": "2019", + "Date Modified": "2020-01-14T11:59:49Z", + "Date Added": "2020-01-14T11:59:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781183991", + "Play Date UTC": "2023-10-26T13:53:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-01-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Still Love", + "Sort Artist": "Raz Simone", + "Sort Name": "Close Your Mouth Now", + "Persistent ID": "E152ACE1D7A7847F", + "Track Type": "Remote" + }, + { + "Track ID": "4235", + "Name": "Middle of the Night", + "Artist": "Elley Duh\u00e9", + "Album Artist": "Elley Duh\u00e9", + "Composer": "Elley Duh\u00e9, Andrew Wells, Sam Roman & SAM ROMANS", + "Album": "MIDDLE of the NIGHT - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6983369", + "Total Time": "184448", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-01-18T10:43:31Z", + "Date Added": "2020-01-18T10:43:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781770021", + "Play Date UTC": "2023-11-02T08:40:21Z", + "Skip Count": "4", + "Skip Date": "2022-03-04T07:48:26Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "MIDDLE of the NIGHT - Single", + "Sort Artist": "Elley Duh\u00e9", + "Sort Name": "Middle of the Night", + "Persistent ID": "A7E07633ED4E586B", + "Track Type": "Remote" + }, + { + "Track ID": "4237", + "Name": "Darkness", + "Artist": "Eminem", + "Album Artist": "Eminem", + "Composer": "M. Mathers, R. Montgomery, L. Resto & P. Simon", + "Album": "Music To Be Murdered By", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11679965", + "Total Time": "337147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "20", + "Year": "2020", + "Date Modified": "2020-01-19T06:13:33Z", + "Date Added": "2020-01-19T06:13:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3781520764", + "Play Date UTC": "2023-10-30T11:26:04Z", + "Skip Count": "1", + "Skip Date": "2022-11-23T17:49:27Z", + "Release Date": "2020-01-17T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Music To Be Murdered By", + "Sort Artist": "Eminem", + "Sort Name": "Darkness", + "Persistent ID": "7C5087DA435B4728", + "Track Type": "Remote" + }, + { + "Track ID": "4239", + "Name": "You Melt Away the Snow (feat. Powfu)", + "Artist": "Teqkoi", + "Album Artist": "Teqkoi", + "Composer": "Teqkoi", + "Album": "You Melt Away the Snow (feat. Powfu) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6260731", + "Total Time": "175622", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2020-01-27T13:38:01Z", + "Date Added": "2020-01-27T13:38:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3783670500", + "Play Date UTC": "2023-11-24T08:35:00Z", + "Skip Count": "1", + "Skip Date": "2020-02-05T05:46:44Z", + "Release Date": "2018-12-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "You Melt Away the Snow (feat. Powfu) - Single", + "Sort Artist": "Teqkoi", + "Sort Name": "You Melt Away the Snow (feat. Powfu)", + "Persistent ID": "05AC595531168CBF", + "Track Type": "Remote" + }, + { + "Track ID": "4241", + "Name": "Hallowed Ft. Emily Raymond", + "Artist": "Lund", + "Album Artist": "Lund", + "Composer": "Robert Lund & Lund", + "Album": "BlkBird", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8844553", + "Total Time": "251112", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2020-01-27T20:00:56Z", + "Date Added": "2020-01-27T20:00:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3780128660", + "Play Date UTC": "2023-10-14T08:44:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-06-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BlkBird", + "Sort Artist": "Lund", + "Sort Name": "Hallowed Ft. Emily Raymond", + "Persistent ID": "D3FF35CC658CB24D", + "Track Type": "Remote" + }, + { + "Track ID": "4243", + "Name": "Heaven", + "Artist": "FINNEAS", + "Album Artist": "FINNEAS", + "Composer": "undef", + "Album": "Heaven - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8009225", + "Total Time": "222664", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2020-01-27T20:15:03Z", + "Date Added": "2020-01-27T20:15:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3781569759", + "Play Date UTC": "2023-10-31T01:02:39Z", + "Skip Count": "1", + "Skip Date": "2020-01-30T17:49:57Z", + "Release Date": "2018-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Heaven - Single", + "Sort Artist": "FINNEAS", + "Sort Name": "Heaven", + "Persistent ID": "C4FEBAD4F8D4759C", + "Track Type": "Remote" + }, + { + "Track ID": "4245", + "Name": "Lonely Nights", + "Artist": "ilyTOMMY", + "Album Artist": "ilyTOMMY", + "Composer": "undef", + "Album": "Lonely Nights - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "6707213", + "Total Time": "185881", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2020-01-27T20:19:53Z", + "Date Added": "2020-01-27T20:19:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "63", + "Play Date": "3761577773", + "Play Date UTC": "2023-03-13T15:42:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lonely Nights - Single", + "Sort Artist": "ilyTOMMY", + "Sort Name": "Lonely Nights", + "Persistent ID": "08940DAE45B5FFC1", + "Track Type": "Remote" + }, + { + "Track ID": "4247", + "Name": "Blackstar", + "Artist": "Maya Beiser, Ambient Orchestra & Evan Ziporyn", + "Album Artist": "Maya Beiser, Ambient Orchestra & Evan Ziporyn", + "Composer": "David Bowie", + "Album": "Bowie Cello Symphonic: Blackstar", + "Genre": "Classical Crossover", + "Kind": "Apple Music AAC audio file", + "Size": "23424862", + "Total Time": "686525", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "8", + "Year": "2020", + "Date Modified": "2020-01-31T07:24:47Z", + "Date Added": "2020-01-31T07:24:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3778862133", + "Play Date UTC": "2023-09-29T16:55:33Z", + "Skip Count": "1", + "Skip Date": "2023-01-15T09:59:53Z", + "Release Date": "2020-01-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bowie Cello Symphonic: Blackstar", + "Sort Artist": "Maya Beiser, Ambient Orchestra & Evan Ziporyn", + "Sort Name": "Blackstar", + "Persistent ID": "96E292406DBA1BA3", + "Track Type": "Remote" + }, + { + "Track ID": "4249", + "Name": "Dreams", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "Timothy Sommers, Ben Burgess, Dwayne Carter, Alexander Joseph Delicata, Aaron Zuckerman & Jeremy Dussolliett", + "Album": "Funeral", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8154593", + "Total Time": "227680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2020-02-02T16:32:42Z", + "Date Added": "2020-02-02T16:32:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "86", + "Play Date": "3783595328", + "Play Date UTC": "2023-11-23T11:42:08Z", + "Skip Count": "2", + "Skip Date": "2021-06-12T08:06:34Z", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Funeral", + "Sort Artist": "Lil Wayne", + "Sort Name": "Dreams", + "Persistent ID": "25C6277933D1AFED", + "Track Type": "Remote" + }, + { + "Track ID": "4251", + "Name": "Flight 99 (feat. Masego)", + "Artist": "Please Wait, Ta-ku & matt mcwaters", + "Album Artist": "Please Wait, Ta-ku & matt mcwaters", + "Composer": "matt mcwaters, Regan Matthews & Micah Davis", + "Album": "Black & White - EP", + "Genre": "Contemporary R&B", + "Kind": "Apple Music AAC audio file", + "Size": "6211270", + "Total Time": "167143", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2020-02-03T19:01:36Z", + "Date Added": "2020-02-03T19:01:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "62", + "Play Date": "3758630778", + "Play Date UTC": "2023-02-07T13:06:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Black & White - EP", + "Sort Artist": "Please Wait, Ta-ku & matt mcwaters", + "Sort Name": "Flight 99 (feat. Masego)", + "Persistent ID": "6030CA54AA598547", + "Track Type": "Remote" + }, + { + "Track ID": "4253", + "Name": "SHUT UP", + "Artist": "DaBaby", + "Album Artist": "DaBaby", + "Composer": "Jonathan Kirk, De'Juane Dunwood & Vid Vucenovic", + "Album": "SHUT UP - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6178456", + "Total Time": "170192", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-02-14T21:34:52Z", + "Date Added": "2020-02-14T21:34:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3781447434", + "Play Date UTC": "2023-10-29T15:03:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-02-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SHUT UP - Single", + "Sort Artist": "DaBaby", + "Sort Name": "SHUT UP", + "Persistent ID": "66C9A5CB3631AC57", + "Track Type": "Remote" + }, + { + "Track ID": "4255", + "Name": "I'm over You", + "Artist": "Vaboh", + "Album Artist": "Vaboh", + "Composer": "Vaboh", + "Album": "Love Anxiety 2", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3920530", + "Total Time": "102400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2020-02-16T14:36:29Z", + "Date Added": "2020-02-16T14:36:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3779238411", + "Play Date UTC": "2023-10-04T01:26:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-12-07T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Love Anxiety 2", + "Sort Artist": "Vaboh", + "Sort Name": "I'm over You", + "Persistent ID": "1F74C492C9B0BA87", + "Track Type": "Remote" + }, + { + "Track ID": "4257", + "Name": "Everyone Knows", + "Artist": "Jutes", + "Album Artist": "Jutes", + "Composer": "Andrew Luce, Miles Shepperd & Jordan Lutes", + "Album": "Overrated", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5179954", + "Total Time": "141913", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "7", + "Year": "2020", + "Date Modified": "2020-02-16T14:48:30Z", + "Date Added": "2020-02-16T14:48:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3782981660", + "Play Date UTC": "2023-11-16T09:14:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-02-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Overrated", + "Sort Artist": "Jutes", + "Sort Name": "Everyone Knows", + "Persistent ID": "8775701925F1AA90", + "Track Type": "Remote" + }, + { + "Track ID": "4259", + "Name": "Bed", + "Artist": "Yeek", + "Album Artist": "Yeek", + "Composer": "sebastian carandang", + "Album": "Blackheart - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7701777", + "Total Time": "211858", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2018", + "Date Modified": "2020-02-16T22:14:46Z", + "Date Added": "2020-02-16T22:14:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "118", + "Play Date": "3775801380", + "Play Date UTC": "2023-08-25T06:43:00Z", + "Skip Count": "2", + "Skip Date": "2020-12-01T19:46:21Z", + "Release Date": "2018-05-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1919", + "Sort Album": "Blackheart - EP", + "Sort Artist": "Yeek", + "Sort Name": "Bed", + "Persistent ID": "097267A61E59F0C5", + "Track Type": "Remote" + }, + { + "Track ID": "4261", + "Name": "No Limitations", + "Artist": "Tidus", + "Album Artist": "Tidus", + "Composer": "undef", + "Album": "Before It's Too Late - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11264020", + "Total Time": "346233", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2020-02-17T16:23:03Z", + "Date Added": "2020-02-17T16:23:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3768834403", + "Play Date UTC": "2023-06-05T15:26:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Before It's Too Late - EP", + "Sort Artist": "Tidus", + "Sort Name": "No Limitations", + "Persistent ID": "971A7D3D338E57FB", + "Track Type": "Remote" + }, + { + "Track ID": "4263", + "Name": "What You Need", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "Abel Tesfaye & Jeremy Rose", + "Album": "Trilogy", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7112997", + "Total Time": "196653", + "Disc Number": "1", + "Disc Count": "3", + "Track Number": "2", + "Track Count": "10", + "Year": "2011", + "Date Modified": "2020-02-17T18:09:26Z", + "Date Added": "2020-02-17T18:09:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3767274317", + "Play Date UTC": "2023-05-18T14:05:17Z", + "Skip Count": "3", + "Skip Date": "2022-10-22T09:41:41Z", + "Release Date": "2011-03-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trilogy", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "What You Need", + "Track Type": "41EF4C5BBA7A8B78" + }, + { + "Track ID": "4265", + "Name": "The Path", + "Artist": "Hippie Sabotage", + "Album Artist": "Hippie Sabotage", + "Composer": "J. Saurer & K. Saurer", + "Album": "The Path - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6718119", + "Total Time": "189701", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2020-02-17T19:01:56Z", + "Date Added": "2020-02-17T19:01:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3783685609", + "Play Date UTC": "2023-11-24T12:46:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Path - Single", + "Sort Artist": "Hippie Sabotage", + "Sort Name": "Path", + "Persistent ID": "E87C20F158502E2F", + "Track Type": "Remote" + }, + { + "Track ID": "4267", + "Name": "Goodnight", + "Artist": "Nick Murphy", + "Album Artist": "Nick Murphy", + "Composer": "undef", + "Album": "Goodnight - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9662773", + "Total Time": "261983", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-02-18T04:54:52Z", + "Date Added": "2020-02-18T04:54:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3780135738", + "Play Date UTC": "2023-10-14T10:42:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-02-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Goodnight - Single", + "Sort Artist": "Nick Murphy", + "Sort Name": "Goodnight", + "Persistent ID": "C78D0F9DD7055916", + "Track Type": "Remote" + }, + { + "Track ID": "4269", + "Name": "EARFQUAKE", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6837581", + "Total Time": "190073", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:08:20Z", + "Date Added": "2020-02-20T19:08:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "126", + "Play Date": "3783452378", + "Play Date UTC": "2023-11-21T19:59:38Z", + "Skip Count": "8", + "Skip Date": "2021-12-13T20:57:02Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "EARFQUAKE", + "Persistent ID": "8DDCF5EC69C2DD24", + "Track Type": "Remote" + }, + { + "Track ID": "4271", + "Name": "I DON'T LOVE YOU ANYMORE", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5908921", + "Total Time": "161200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "81", + "Play Date": "3781063570", + "Play Date UTC": "2023-10-25T04:26:10Z", + "Skip Count": "1", + "Skip Date": "2022-10-03T13:12:11Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "I DON'T LOVE YOU ANYMORE", + "Persistent ID": "B42772452E8B6A83", + "Track Type": "Remote" + }, + { + "Track ID": "4273", + "Name": "RUNNING OUT OF TIME", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6438288", + "Total Time": "177219", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "97", + "Play Date": "3781617456", + "Play Date UTC": "2023-10-31T14:17:36Z", + "Skip Count": "5", + "Skip Date": "2023-08-14T09:53:03Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "RUNNING OUT OF TIME", + "Persistent ID": "CA21E9B52036A5E5", + "Track Type": "Remote" + }, + { + "Track ID": "4275", + "Name": "WHAT'S GOOD", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7360960", + "Total Time": "205637", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "79", + "Play Date": "3780151047", + "Play Date UTC": "2023-10-14T14:57:27Z", + "Skip Count": "1", + "Skip Date": "2021-03-25T17:05:30Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "WHAT'S GOOD", + "Persistent ID": "2C638CCEB534CE39", + "Track Type": "Remote" + }, + { + "Track ID": "4277", + "Name": "GONE, GONE / THANK YOU", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma, Cullen Omori, Tatsuro Yamashita & Alan O Day", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12969997", + "Total Time": "375387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "80", + "Play Date": "3767699342", + "Play Date UTC": "2023-05-23T12:09:02Z", + "Skip Count": "1", + "Skip Date": "2021-03-02T05:22:52Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1810", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "GONE, GONE / THANK YOU", + "Persistent ID": "316391972E631E1F", + "Track Type": "Remote" + }, + { + "Track ID": "4279", + "Name": "ARE WE STILL FRIENDS?", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma & Al Green", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9327503", + "Total Time": "265480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3783710937", + "Play Date UTC": "2023-11-24T19:48:57Z", + "Skip Count": -1, + "Skip Date": "2020-02-28T05:47:55Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "ARE WE STILL FRIENDS?", + "Persistent ID": "60BB04B613ECB220", + "Track Type": "Remote" + }, + { + "Track ID": "4281", + "Name": "EXACTLY WHAT YOU RUN FROM YOU END UP CHASING", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "1024331", + "Total Time": "14627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "121", + "Play Date": "3781538547", + "Play Date UTC": "2023-10-30T16:22:27Z", + "Skip Count": "1", + "Skip Date": "2021-05-11T12:29:29Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "EXACTLY WHAT YOU RUN FROM YOU END UP CHASING", + "Persistent ID": "F352E675FFDDED14", + "Track Type": "Remote" + }, + { + "Track ID": "4283", + "Name": "I THINK", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7609084", + "Total Time": "212016", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "96", + "Play Date": "3781448671", + "Play Date UTC": "2023-10-29T15:24:31Z", + "Skip Count": "5", + "Skip Date": "2021-09-15T20:53:26Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "I THINK", + "Persistent ID": "89979996D9E1E7AB", + "Track Type": "Remote" + }, + { + "Track ID": "4285", + "Name": "PUPPET", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma, Kanye West, Walter Byers, Luis Leal & David Smith", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6566031", + "Total Time": "179003", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "83", + "Play Date": "3780150841", + "Play Date UTC": "2023-10-14T14:54:01Z", + "Skip Count": "6", + "Skip Date": "2023-10-25T09:17:32Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "PUPPET", + "Persistent ID": "D3392196D076747D", + "Track Type": "Remote" + }, + { + "Track ID": "4287", + "Name": "NEW MAGIC WAND", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7741659", + "Total Time": "195327", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "154", + "Play Date": "3783808037", + "Play Date UTC": "2023-11-25T22:47:17Z", + "Skip Count": "8", + "Skip Date": "2022-03-15T18:53:41Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "NEW MAGIC WAND", + "Persistent ID": "414FFD5C892237FE", + "Track Type": "Remote" + }, + { + "Track ID": "4289", + "Name": "IGOR'S THEME", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7339009", + "Total Time": "200684", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "123", + "Play Date": "3780180011", + "Play Date UTC": "2023-10-14T23:00:11Z", + "Skip Count": "8", + "Skip Date": "2022-03-06T08:54:25Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "IGOR'S THEME", + "Persistent ID": "83CF59165FD84CF5", + "Track Type": "Remote" + }, + { + "Track ID": "4291", + "Name": "A BOY IS A GUN", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "IGOR", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7513945", + "Total Time": "210253", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2020-02-20T19:38:13Z", + "Date Added": "2020-02-20T19:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "86", + "Play Date": "3781531447", + "Play Date UTC": "2023-10-30T14:24:07Z", + "Skip Count": "4", + "Skip Date": "2021-09-20T20:42:08Z", + "Release Date": "2019-05-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IGOR", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "BOY IS A GUN", + "Persistent ID": "374EB0D62B2B67C1", + "Track Type": "Remote" + }, + { + "Track ID": "4293", + "Name": "Everytime", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8716575", + "Total Time": "242213", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "5", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3780846548", + "Play Date UTC": "2023-10-22T16:09:08Z", + "Skip Count": "2", + "Skip Date": "2022-08-19T16:19:13Z", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Everytime", + "Persistent ID": "DD7F1EE1DA3C30F6", + "Track Type": "Remote" + }, + { + "Track ID": "4295", + "Name": "Bad Habit", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Edwin Congreave, Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10025079", + "Total Time": "280267", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "4", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3776337881", + "Play Date UTC": "2023-08-31T11:44:41Z", + "Skip Count": "1", + "Skip Date": "2022-11-20T14:26:41Z", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Bad Habit", + "Persistent ID": "C72D76D220CDCFF0", + "Track Type": "Remote" + }, + { + "Track ID": "4297", + "Name": "My Number", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8990368", + "Total Time": "238853", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "3", + "Track Count": "11", + "Year": "2012", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3781156306", + "Play Date UTC": "2023-10-26T06:11:46Z", + "Skip Count": "4", + "Skip Date": "2022-12-03T23:50:32Z", + "Release Date": "2012-12-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "My Number", + "Persistent ID": "A067AF221BAAD580", + "Track Type": "Remote" + }, + { + "Track ID": "4299", + "Name": "Providence", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8623424", + "Total Time": "247933", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "9", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3783002246", + "Play Date UTC": "2023-11-16T14:57:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Providence", + "Persistent ID": "5C78C0F7564EF484", + "Track Type": "Remote" + }, + { + "Track ID": "4301", + "Name": "Milk & Black Spiders", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Edwin Congreave, Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11040320", + "Total Time": "317253", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "8", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3783449731", + "Play Date UTC": "2023-11-21T19:15:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Milk & Black Spiders", + "Persistent ID": "8A38E42B3C5B759B", + "Track Type": "Remote" + }, + { + "Track ID": "4303", + "Name": "Out of the Woods", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Edwin Congreave, Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7398220", + "Total Time": "204947", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "7", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3783682669", + "Play Date UTC": "2023-11-24T11:57:49Z", + "Skip Count": "2", + "Skip Date": "2021-06-12T18:07:05Z", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Out of the Woods", + "Persistent ID": "E3C0D0A8462418CA", + "Track Type": "Remote" + }, + { + "Track ID": "4305", + "Name": "Late Night", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11349983", + "Total Time": "327680", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3782976767", + "Play Date UTC": "2023-11-16T07:52:47Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Late Night", + "Persistent ID": "44CD0C45F6F9235F", + "Track Type": "Remote" + }, + { + "Track ID": "4307", + "Name": "Prelude", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Edwin Congreave, Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8821458", + "Total Time": "247707", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3781535135", + "Play Date UTC": "2023-10-30T15:25:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Prelude", + "Persistent ID": "04DDB378510C9DFE", + "Track Type": "Remote" + }, + { + "Track ID": "4309", + "Name": "Moon", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10166724", + "Total Time": "293053", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "11", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3783592709", + "Play Date UTC": "2023-11-23T10:58:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Moon", + "Persistent ID": "7B58137B31957319", + "Track Type": "Remote" + }, + { + "Track ID": "4311", + "Name": "Stepson", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10837399", + "Total Time": "288813", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3774242412", + "Play Date UTC": "2023-08-07T05:40:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Stepson", + "Persistent ID": "E827375240D53B2A", + "Track Type": "Remote" + }, + { + "Track ID": "4313", + "Name": "Inhaler", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "Holy Fire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10521775", + "Total Time": "292547", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2020-02-21T08:27:43Z", + "Date Added": "2020-02-21T08:27:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3781617901", + "Play Date UTC": "2023-10-31T14:25:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holy Fire", + "Sort Artist": "Foals", + "Sort Name": "Inhaler", + "Persistent ID": "96B3CA9176E176F7", + "Track Type": "Remote" + }, + { + "Track ID": "4315", + "Name": "A Knife in the Ocean", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "What Went Down", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "14202496", + "Total Time": "412827", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2020-02-21T09:43:26Z", + "Date Added": "2020-02-21T09:43:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3781464459", + "Play Date UTC": "2023-10-29T19:47:39Z", + "Skip Count": "1", + "Skip Date": "2020-12-05T23:21:23Z", + "Release Date": "2015-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "What Went Down", + "Sort Artist": "Foals", + "Sort Name": "Knife in the Ocean", + "Persistent ID": "5C6A500D3B66341D", + "Track Type": "Remote" + }, + { + "Track ID": "4317", + "Name": "The Runner", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Foals", + "Album": "Everything Not Saved Will Be Lost Part II", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9191397", + "Total Time": "261937", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2020-02-21T09:53:05Z", + "Date Added": "2020-02-21T09:53:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3774239221", + "Play Date UTC": "2023-08-07T04:47:01Z", + "Skip Count": "4", + "Skip Date": "2023-06-26T05:43:28Z", + "Release Date": "2019-09-05T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Everything Not Saved Will Be Lost Part II", + "Sort Artist": "Foals", + "Sort Name": "Runner", + "Persistent ID": "6D2C2187996700A6", + "Track Type": "Remote" + }, + { + "Track ID": "4319", + "Name": "I Hate You So Much", + "Artist": "Alexander 23", + "Album Artist": "Alexander 23", + "Composer": "Alexander 23", + "Album": "I Hate You So Much - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5416843", + "Total Time": "148187", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-02-25T18:17:04Z", + "Date Added": "2020-02-25T18:17:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "72", + "Play Date": "3776173485", + "Play Date UTC": "2023-08-29T14:04:45Z", + "Skip Count": "2", + "Skip Date": "2020-03-08T06:50:11Z", + "Release Date": "2020-02-12T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "I Hate You So Much - Single", + "Sort Artist": "Alexander 23", + "Sort Name": "I Hate You So Much", + "Persistent ID": "109D4BAEFC31318A", + "Track Type": "Remote" + }, + { + "Track ID": "4321", + "Name": "Messy", + "Artist": "Tyler James Bellinger", + "Album Artist": "Tyler James Bellinger", + "Composer": "Tyler James Bellinger, Christina Kapushy & Michael MacAllister", + "Album": "Messy - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6552920", + "Total Time": "178525", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-02-29T05:16:06Z", + "Date Added": "2020-02-29T05:16:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3782885396", + "Play Date UTC": "2023-11-15T06:29:56Z", + "Skip Count": "1", + "Skip Date": "2021-11-07T22:19:35Z", + "Release Date": "2020-02-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Messy - Single", + "Sort Artist": "Tyler James Bellinger", + "Sort Name": "Messy", + "Persistent ID": "72246DA55AF1CCFE", + "Track Type": "Remote" + }, + { + "Track ID": "4323", + "Name": "Bang!", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Ryan Met, Jack Met & Adam Met", + "Album": "Bang! - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6308764", + "Total Time": "170858", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-02-29T10:34:36Z", + "Date Added": "2020-02-29T10:34:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3777371111", + "Play Date UTC": "2023-09-12T10:45:11Z", + "Skip Count": "2", + "Skip Date": "2022-07-15T07:28:10Z", + "Release Date": "2020-02-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bang! - Single", + "Sort Artist": "AJR", + "Sort Name": "Bang!", + "Persistent ID": "05D93069284C91A6", + "Track Type": "Remote" + }, + { + "Track ID": "4325", + "Name": "D\u00e9sol\u00e9 (feat. Fatoumata Diawara)", + "Artist": "Gorillaz", + "Album Artist": "Gorillaz", + "Composer": "Fatoumata Diawara, D. Albarn, James Ford & Remi Kabaka Jr", + "Album": "Song Machine Episode 2 \u2013 EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8575713", + "Total Time": "236570", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2020", + "Date Modified": "2020-02-29T19:27:21Z", + "Date Added": "2020-02-29T19:27:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3771746582", + "Play Date UTC": "2023-07-09T08:23:02Z", + "Skip Count": "1", + "Skip Date": "2020-03-03T08:26:49Z", + "Release Date": "2020-02-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Song Machine Episode 2 \u2013 EP", + "Sort Artist": "Gorillaz", + "Sort Name": "D\u00e9sol\u00e9 (feat. Fatoumata Diawara)", + "Persistent ID": "C41D2D4FCF72E7CF", + "Track Type": "Remote" + }, + { + "Track ID": "4327", + "Name": "Gorgeous (Live \u2013 Upstate Sessions)", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris", + "Album": "VHS 2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8049792", + "Total Time": "224173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2020-03-04T06:08:42Z", + "Date Added": "2020-03-04T06:08:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "85", + "Play Date": "3783663726", + "Play Date UTC": "2023-11-24T06:42:06Z", + "Skip Count": "1", + "Skip Date": "2022-07-11T16:37:36Z", + "Release Date": "2016-06-10T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "VHS 2.0", + "Sort Artist": "X Ambassadors", + "Sort Name": "Gorgeous (Live \u2013 Upstate Sessions)", + "Persistent ID": "C35CCF8FA84906D9", + "Track Type": "Remote" + }, + { + "Track ID": "4329", + "Name": "Happy Home", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Rodney \"Darkchild\" Jerkins, Adam Levin, Casey Harris, Sam Nelson Harris & Jared Thorne", + "Album": "Belong EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7143647", + "Total Time": "203518", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2020", + "Date Modified": "2020-03-07T07:16:40Z", + "Date Added": "2020-03-07T07:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781057313", + "Play Date UTC": "2023-10-25T02:41:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-03-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Belong EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Happy Home", + "Persistent ID": "6C077EE2C67F3B19", + "Track Type": "Remote" + }, + { + "Track ID": "4331", + "Name": "Belong", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Rodney \"Darkchild\" Jerkins, Adam Levin, Casey Harris, Sam Nelson Harris & Jared Thorne", + "Album": "Belong EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7685837", + "Total Time": "218885", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2020", + "Date Modified": "2020-03-07T07:16:40Z", + "Date Added": "2020-03-07T07:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3770490627", + "Play Date UTC": "2023-06-24T19:30:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-03-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Belong EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Belong", + "Persistent ID": "00608C52F5AFB638", + "Track Type": "Remote" + }, + { + "Track ID": "4333", + "Name": "Everything Sounds Like A Love Song", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Adam Levin, Casey Harris, Sam Nelson Harris, Sam Roman & Andrew Wotman", + "Album": "Belong EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9426259", + "Total Time": "266612", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2020", + "Date Modified": "2020-03-07T07:16:40Z", + "Date Added": "2020-03-07T07:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3766854400", + "Play Date UTC": "2023-05-13T17:26:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-02-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Belong EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Everything Sounds Like A Love Song", + "Persistent ID": "AE4D0AE169381B55", + "Track Type": "Remote" + }, + { + "Track ID": "4335", + "Name": "Cycles (feat. X Ambassadors)", + "Artist": "Methal", + "Album Artist": "Methal", + "Composer": "Methal Al Hammadi, Sam Harris, Evan Bogart, Jon Yip, Ray McCullogh, Ray Romulus & Jeremy Reeves", + "Album": "Cycles (feat. X Ambassadors) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7168091", + "Total Time": "193547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2020-03-10T04:39:43Z", + "Date Added": "2020-03-10T04:39:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781317173", + "Play Date UTC": "2023-10-28T02:52:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-07-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cycles (feat. X Ambassadors) - Single", + "Sort Artist": "Methal", + "Sort Name": "Cycles (feat. X Ambassadors)", + "Persistent ID": "374D83314AB63021", + "Track Type": "Remote" + }, + { + "Track ID": "4337", + "Name": "Hypochondriac", + "Artist": "Fenne Lily", + "Album Artist": "Fenne Lily", + "Composer": "Fenne Lily", + "Album": "Hypochondriac - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6901290", + "Total Time": "192853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-03-13T20:30:10Z", + "Date Added": "2020-03-13T20:30:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3766833459", + "Play Date UTC": "2023-05-13T11:37:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-03-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hypochondriac - Single", + "Sort Artist": "Fenne Lily", + "Sort Name": "Hypochondriac", + "Persistent ID": "AE4EE3DCCFF3B61F", + "Track Type": "Remote" + }, + { + "Track ID": "4339", + "Name": "Platz eins", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8258440", + "Total Time": "235413", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3767786975", + "Play Date UTC": "2023-05-24T12:29:35Z", + "Skip Count": "2", + "Skip Date": "2022-10-17T14:10:41Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Platz eins", + "Persistent ID": "D3FCACB7C265C153", + "Track Type": "Remote" + }, + { + "Track ID": "4341", + "Name": "Gummi", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8345609", + "Total Time": "236387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3775316791", + "Play Date UTC": "2023-08-19T16:06:31Z", + "Skip Count": "1", + "Skip Date": "2020-12-30T07:53:16Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Gummi", + "Persistent ID": "12C0968A4BCD86BE", + "Track Type": "Remote" + }, + { + "Track ID": "4343", + "Name": "Schlaf ein", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "10697207", + "Total Time": "309147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3780296027", + "Play Date UTC": "2023-10-16T07:13:47Z", + "Skip Count": "1", + "Skip Date": "2021-11-10T17:38:06Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Schlaf ein", + "Persistent ID": "737B1641B76FB046", + "Track Type": "Remote" + }, + { + "Track ID": "4345", + "Name": "Ach so gern", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "7174715", + "Total Time": "202547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3767284852", + "Play Date UTC": "2023-05-18T17:00:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Ach so gern", + "Persistent ID": "D544C11A0487754A", + "Track Type": "Remote" + }, + { + "Track ID": "4347", + "Name": "Ach so gern (Pain Version)", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8037762", + "Total Time": "229440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781174616", + "Play Date UTC": "2023-10-26T11:16:56Z", + "Skip Count": "2", + "Skip Date": "2022-07-30T07:32:02Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Ach so gern (Pain Version)", + "Persistent ID": "861014B90448C2BF", + "Track Type": "Remote" + }, + { + "Track ID": "4349", + "Name": "Mathematik", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Sebastian T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "7672535", + "Total Time": "214107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "66", + "Play Date": "3760084902", + "Play Date UTC": "2023-02-24T09:01:42Z", + "Skip Count": "3", + "Skip Date": "2022-06-01T13:57:49Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Mathematik", + "Persistent ID": "5F080C6243598AC9", + "Track Type": "Remote" + }, + { + "Track ID": "4351", + "Name": "Wer wei\u00df das schon", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Clemens Wijers", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8257403", + "Total Time": "237733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "58", + "Play Date": "3782806092", + "Play Date UTC": "2023-11-14T08:28:12Z", + "Skip Count": "6", + "Skip Date": "2023-11-25T14:14:21Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Wer wei\u00df das schon", + "Persistent ID": "259224009CCE331E", + "Track Type": "Remote" + }, + { + "Track ID": "4353", + "Name": "Blut", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8797876", + "Total Time": "242773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3772521089", + "Play Date UTC": "2023-07-18T07:31:29Z", + "Skip Count": "3", + "Skip Date": "2021-08-15T18:10:21Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Blut", + "Persistent ID": "AEEA012A23B803C1", + "Track Type": "Remote" + }, + { + "Track ID": "4355", + "Name": "Frau & Mann", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "7534901", + "Total Time": "213987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3771824181", + "Play Date UTC": "2023-07-10T05:56:21Z", + "Skip Count": "2", + "Skip Date": "2022-08-01T15:29:03Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Frau & Mann", + "Persistent ID": "4479A23DDBF24CBF", + "Track Type": "Remote" + }, + { + "Track ID": "4357", + "Name": "Allesfresser", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "7355400", + "Total Time": "209120", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3783664152", + "Play Date UTC": "2023-11-24T06:49:12Z", + "Skip Count": "1", + "Skip Date": "2021-06-13T14:26:48Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Allesfresser", + "Persistent ID": "CFEA73D556A22928", + "Track Type": "Remote" + }, + { + "Track ID": "4359", + "Name": "Knebel", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren & Till Lindemann", + "Album": "F & M (Deluxe)", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8112632", + "Total Time": "230200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3766397402", + "Play Date UTC": "2023-05-08T10:30:02Z", + "Skip Count": "1", + "Skip Date": "2020-12-30T07:56:19Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Knebel", + "Persistent ID": "AE603B11C800B8AD", + "Track Type": "Remote" + }, + { + "Track ID": "4361", + "Name": "Ich wei\u00df es nicht", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "10134761", + "Total Time": "289787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781571670", + "Play Date UTC": "2023-10-31T01:34:30Z", + "Skip Count": "1", + "Skip Date": "2020-12-30T07:52:37Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Ich wei\u00df es nicht", + "Persistent ID": "2CFE469DC6B79FC7", + "Track Type": "Remote" + }, + { + "Track ID": "4363", + "Name": "Steh auf", + "Artist": "Lindemann", + "Album Artist": "Lindemann", + "Composer": "Peter T\u00e4gtgren", + "Album": "F & M (Deluxe)", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "6681697", + "Total Time": "184080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-03-16T19:49:32Z", + "Date Added": "2020-03-16T19:49:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3783695156", + "Play Date UTC": "2023-11-24T15:25:56Z", + "Skip Count": "3", + "Skip Date": "2022-11-24T20:29:26Z", + "Release Date": "2019-11-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F & M (Deluxe)", + "Sort Artist": "Lindemann", + "Sort Name": "Steh auf", + "Persistent ID": "639016FB185CB1F3", + "Track Type": "Remote" + }, + { + "Track ID": "4365", + "Name": "No Heart", + "Artist": "Scum", + "Album Artist": "Scum", + "Composer": "Victor Gutierrez & Scum", + "Album": "Scum Singles (:", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5931165", + "Total Time": "164888", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2020-03-23T07:03:41Z", + "Date Added": "2020-03-23T07:03:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3781618998", + "Play Date UTC": "2023-10-31T14:43:18Z", + "Skip Count": "2", + "Skip Date": "2022-11-11T18:01:32Z", + "Release Date": "2017-10-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scum Singles (:", + "Sort Artist": "Scum", + "Sort Name": "No Heart", + "Persistent ID": "690FAAE45ACD953E", + "Track Type": "Remote" + }, + { + "Track ID": "4367", + "Name": "Too Far Gone", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "You Haunt Me", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7564489", + "Total Time": "206203", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2014", + "Date Modified": "2020-03-26T11:30:53Z", + "Date Added": "2020-03-26T11:30:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3779311594", + "Play Date UTC": "2023-10-04T21:46:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-09-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "You Haunt Me", + "Sort Artist": "Sir Sly", + "Sort Name": "Too Far Gone", + "Persistent ID": "07FB4DFE690FDA3E", + "Track Type": "Remote" + }, + { + "Track ID": "4369", + "Name": "You Haunt Me", + "Artist": "Sir Sly", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "Alternative", + "Kind": "MPEG-4 video file", + "Size": "51241624", + "Total Time": "222847", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2014", + "Date Modified": "2020-03-26T11:34:59Z", + "Date Added": "2020-03-26T11:34:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3752059858", + "Play Date UTC": "2022-11-23T11:50:58Z", + "Skip Count": "2", + "Skip Date": "2022-06-07T11:44:36Z", + "Release Date": "2014-09-09T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Sir Sly", + "Sort Name": "You Haunt Me", + "Persistent ID": "46AC4B19C87339CF", + "Track Type": "Remote" + }, + { + "Track ID": "4371", + "Name": "Dangerous (feat. Joywave)", + "Artist": "Big Data", + "Album Artist": "Big Data", + "Composer": "Alan Wilkis & Daniel Armbruster", + "Album": "2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10085208", + "Total Time": "280747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2013", + "Date Modified": "2020-03-26T11:45:46Z", + "Date Added": "2020-03-26T11:45:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3780773768", + "Play Date UTC": "2023-10-21T19:56:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-08-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "2.0", + "Sort Artist": "Big Data", + "Sort Name": "Dangerous (feat. Joywave)", + "Persistent ID": "3B8B817467801F2D", + "Track Type": "Remote" + }, + { + "Track ID": "4373", + "Name": "It's a Trip", + "Artist": "TiRon & Ayomari", + "Album Artist": "TiRon & Ayomari", + "Composer": "TiRon Jeffries & Omari Allen", + "Album": "WET: The Wonderful Ego Trip", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7299215", + "Total Time": "202115", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "15", + "Year": "2017", + "Date Modified": "2020-03-29T20:40:52Z", + "Date Added": "2020-03-29T20:40:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781061353", + "Play Date UTC": "2023-10-25T03:49:13Z", + "Skip Count": "4", + "Skip Date": "2023-05-11T05:38:22Z", + "Release Date": "2017-09-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WET: The Wonderful Ego Trip", + "Sort Artist": "TiRon & Ayomari", + "Sort Name": "It's a Trip", + "Persistent ID": "FDA66DB9D64E50CF", + "Track Type": "Remote" + }, + { + "Track ID": "4375", + "Name": "Colour in Your Heart", + "Artist": "Roo Panes", + "Album Artist": "Roo Panes", + "Composer": "Andrew Panes", + "Album": "Pacific - EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8241714", + "Total Time": "231692", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2020", + "Date Modified": "2020-03-30T13:47:14Z", + "Date Added": "2020-03-30T13:47:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3772712432", + "Play Date UTC": "2023-07-20T12:40:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-03-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pacific - EP", + "Sort Artist": "Roo Panes", + "Sort Name": "Colour in Your Heart", + "Persistent ID": "63D7D694B8342B5F", + "Track Type": "Remote" + }, + { + "Track ID": "4377", + "Name": "Rest My Chemistry", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Our Love To Admire", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10560629", + "Total Time": "301094", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2007", + "Date Modified": "2020-03-31T15:26:40Z", + "Date Added": "2020-03-31T15:26:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3770186873", + "Play Date UTC": "2023-06-21T07:07:53Z", + "Skip Count": "2", + "Skip Date": "2022-04-15T19:32:50Z", + "Release Date": "2007-07-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Our Love To Admire", + "Sort Artist": "Interpol", + "Sort Name": "Rest My Chemistry", + "Persistent ID": "AD9A63FB3AA46B80", + "Track Type": "Remote" + }, + { + "Track ID": "4379", + "Name": "Headcheck", + "Artist": "The Million", + "Album Artist": "The Million", + "Composer": "Jacob Thomas, Jayden Stewart, Tamon Mashimo, Jesse O'Neill-Hutchin & Jackson Wood", + "Album": "Hydration Station - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8548863", + "Total Time": "223368", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2020-03-31T16:34:12Z", + "Date Added": "2020-03-31T16:34:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3765789326", + "Play Date UTC": "2023-05-01T09:35:26Z", + "Skip Count": "1", + "Skip Date": "2022-09-30T16:33:51Z", + "Release Date": "2017-10-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hydration Station - EP", + "Sort Artist": "Million", + "Sort Name": "Million", + "Persistent ID": "Headcheck", + "Track Type": "BF170A4C1AA35A68" + }, + { + "Track ID": "4381", + "Name": "The Base", + "Artist": "Paul Banks", + "Album Artist": "Paul Banks", + "Composer": "undef", + "Album": "Banks", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8475170", + "Total Time": "234987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2012", + "Date Modified": "2020-03-31T16:36:13Z", + "Date Added": "2020-03-31T16:36:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3781062000", + "Play Date UTC": "2023-10-25T04:00:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Banks", + "Sort Artist": "Paul Banks", + "Sort Name": "Base", + "Persistent ID": "9CA65BD77D7F94D8", + "Track Type": "Remote" + }, + { + "Track ID": "4383", + "Name": "Another Chance", + "Artist": "Paul Banks", + "Album Artist": "Paul Banks", + "Composer": "undef", + "Album": "Banks", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9732967", + "Total Time": "274093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2012", + "Date Modified": "2020-03-31T17:05:48Z", + "Date Added": "2020-03-31T17:05:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "55", + "Play Date": "3754324849", + "Play Date UTC": "2022-12-19T17:00:49Z", + "Skip Count": "1", + "Skip Date": "2022-07-06T09:48:15Z", + "Release Date": "2012-10-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Banks", + "Sort Artist": "Paul Banks", + "Sort Name": "Another Chance", + "Persistent ID": "9A945E4620BBF069", + "Track Type": "Remote" + }, + { + "Track ID": "4385", + "Name": "Party's Over", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8327941", + "Total Time": "219027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3781052894", + "Play Date UTC": "2023-10-25T01:28:14Z", + "Skip Count": -1, + "Skip Date": "2022-07-21T07:17:00Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Party's Over", + "Persistent ID": "654A588B54D74182", + "Track Type": "Remote" + }, + { + "Track ID": "4387", + "Name": "Number 10", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7283520", + "Total Time": "192973", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781202654", + "Play Date UTC": "2023-10-26T19:04:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Number 10", + "Persistent ID": "5A9499D93A7D17CA", + "Track Type": "Remote" + }, + { + "Track ID": "4389", + "Name": "It Probably Matters", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9206539", + "Total Time": "247933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3764667608", + "Play Date UTC": "2023-04-18T10:00:08Z", + "Skip Count": "1", + "Skip Date": "2022-07-15T10:25:28Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "It Probably Matters", + "Persistent ID": "7924CA123E44EA6B", + "Track Type": "Remote" + }, + { + "Track ID": "4391", + "Name": "Interlude 2", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "2853062", + "Total Time": "63160", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3773234640", + "Play Date UTC": "2023-07-26T13:44:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Interlude 2", + "Persistent ID": "6E94AA1CDBBF19F1", + "Track Type": "Remote" + }, + { + "Track ID": "4393", + "Name": "Flight of Fancy", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8731985", + "Total Time": "231813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3762584240", + "Play Date UTC": "2023-03-25T07:17:20Z", + "Skip Count": "2", + "Skip Date": "2023-02-14T19:41:08Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Flight of Fancy", + "Persistent ID": "81889B869A5258D9", + "Track Type": "Remote" + }, + { + "Track ID": "4395", + "Name": "Surveillance", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9392165", + "Total Time": "253373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3759848961", + "Play Date UTC": "2023-02-21T15:29:21Z", + "Skip Count": "4", + "Skip Date": "2023-03-05T12:39:24Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Surveillance", + "Persistent ID": "20BF41ACF18BC37E", + "Track Type": "Remote" + }, + { + "Track ID": "4397", + "Name": "Stay In Touch", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11052300", + "Total Time": "293213", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3762327101", + "Play Date UTC": "2023-03-22T07:51:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Stay In Touch", + "Persistent ID": "F741DE6A9AA1094D", + "Track Type": "Remote" + }, + { + "Track ID": "4399", + "Name": "Nysmaw", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7306984", + "Total Time": "196853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3767091998", + "Play Date UTC": "2023-05-16T11:26:38Z", + "Skip Count": "1", + "Skip Date": "2023-02-24T06:50:50Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Nysmaw", + "Persistent ID": "77B007A34FDA21C6", + "Track Type": "Remote" + }, + { + "Track ID": "4401", + "Name": "If You Really Love Nothing", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10054800", + "Total Time": "265573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3772004181", + "Play Date UTC": "2023-07-12T07:56:21Z", + "Skip Count": "1", + "Skip Date": "2022-08-19T16:06:49Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "If You Really Love Nothing", + "Persistent ID": "E6C868AB36E7A7B5", + "Track Type": "Remote" + }, + { + "Track ID": "4403", + "Name": "Interlude 1", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "2738374", + "Total Time": "61040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3772806447", + "Play Date UTC": "2023-07-21T14:47:27Z", + "Skip Count": "1", + "Skip Date": "2021-08-03T15:56:56Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Interlude 1", + "Persistent ID": "079750D21782874A", + "Track Type": "Remote" + }, + { + "Track ID": "4405", + "Name": "Complications", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9303488", + "Total Time": "234227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3782981120", + "Play Date UTC": "2023-11-16T09:05:20Z", + "Skip Count": "2", + "Skip Date": "2022-04-25T06:47:05Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Complications", + "Persistent ID": "4710C912E731F66C", + "Track Type": "Remote" + }, + { + "Track ID": "4407", + "Name": "The Rover", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8800604", + "Total Time": "217693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780685412", + "Play Date UTC": "2023-10-20T19:23:32Z", + "Skip Count": "3", + "Skip Date": "2022-11-02T05:15:20Z", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Rover", + "Persistent ID": "E238A40AE116B75B", + "Track Type": "Remote" + }, + { + "Track ID": "4409", + "Name": "Mountain Child", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Daniel Kessler, Paul Banks & Samuel Fogarino", + "Album": "Marauder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7045937", + "Total Time": "188053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-04-03T16:57:19Z", + "Date Added": "2020-04-03T16:57:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3752439948", + "Play Date UTC": "2022-11-27T21:25:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Marauder", + "Sort Artist": "Interpol", + "Sort Name": "Mountain Child", + "Persistent ID": "D636FDA9F3D65F80", + "Track Type": "Remote" + }, + { + "Track ID": "4411", + "Name": "Untitled (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8324101", + "Total Time": "236667", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3781519712", + "Play Date UTC": "2023-10-30T11:08:32Z", + "Skip Count": "1", + "Skip Date": "2022-02-28T22:26:31Z", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Untitled (2012 Remaster)", + "Persistent ID": "E55E45B3EF22F777", + "Track Type": "Remote" + }, + { + "Track ID": "4413", + "Name": "Roland (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7815204", + "Total Time": "215520", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "9", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3770296627", + "Play Date UTC": "2023-06-22T13:37:07Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Roland (2012 Remaster)", + "Persistent ID": "83DAB381C50B1036", + "Track Type": "Remote" + }, + { + "Track ID": "4415", + "Name": "Stella Was a Diver and She Was Always Down (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "13455267", + "Total Time": "388067", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "8", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3767515256", + "Play Date UTC": "2023-05-21T09:00:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Stella Was a Diver and She Was Always Down (2012 Remaster)", + "Persistent ID": "1B20A733456818E7", + "Track Type": "Remote" + }, + { + "Track ID": "4417", + "Name": "Obstacle 2 (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8272389", + "Total Time": "227080", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "7", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3783708585", + "Play Date UTC": "2023-11-24T19:09:45Z", + "Skip Count": "2", + "Skip Date": "2023-05-27T10:41:44Z", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Obstacle 2 (2012 Remaster)", + "Persistent ID": "B8DD9D70F1553812", + "Track Type": "Remote" + }, + { + "Track ID": "4419", + "Name": "The New (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "12692977", + "Total Time": "367360", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783358395", + "Play Date UTC": "2023-11-20T17:53:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "New (2012 Remaster)", + "Persistent ID": "2E617CDF93A40EF3", + "Track Type": "Remote" + }, + { + "Track ID": "4421", + "Name": "Obstacle 1 (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8818761", + "Total Time": "251547", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3768387591", + "Play Date UTC": "2023-05-31T11:19:51Z", + "Skip Count": "2", + "Skip Date": "2021-12-03T22:49:46Z", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Obstacle 1 (2012 Remaster)", + "Persistent ID": "7FC14124EC24E9F2", + "Track Type": "Remote" + }, + { + "Track ID": "4423", + "Name": "Nyc (Peel Session - 2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9011815", + "Total Time": "257307", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "17", + "Track Count": "17", + "Year": "2012", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783410055", + "Play Date UTC": "2023-11-21T08:14:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-08-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Nyc (Peel Session - 2012 Remaster)", + "Persistent ID": "5BC1431BF348042F", + "Track Type": "Remote" + }, + { + "Track ID": "4425", + "Name": "Leif Erikson (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8573890", + "Total Time": "240000", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "11", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3770285707", + "Play Date UTC": "2023-06-22T10:35:07Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Leif Erikson (2012 Remaster)", + "Persistent ID": "9E840B8D6F3DE2D9", + "Track Type": "Remote" + }, + { + "Track ID": "4427", + "Name": "Hands Away (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7266562", + "Total Time": "185627", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783450148", + "Play Date UTC": "2023-11-21T19:22:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Hands Away (2012 Remaster)", + "Persistent ID": "C6E1D5BE1D4BDD7B", + "Track Type": "Remote" + }, + { + "Track ID": "4429", + "Name": "Say Hello to the Angels (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9538538", + "Total Time": "268453", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "5", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3783358028", + "Play Date UTC": "2023-11-20T17:47:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Say Hello to the Angels (2012 Remaster)", + "Persistent ID": "7AED8BB919F44380", + "Track Type": "Remote" + }, + { + "Track ID": "4431", + "Name": "Pda (2012 Remaster)", + "Artist": "Interpol", + "Album Artist": "Interpol", + "Composer": "Carlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks", + "Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10541366", + "Total Time": "300053", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "4", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2020-04-03T16:57:24Z", + "Date Added": "2020-04-03T16:57:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3777372100", + "Play Date UTC": "2023-09-12T11:01:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Turn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster)", + "Sort Artist": "Interpol", + "Sort Name": "Pda (2012 Remaster)", + "Persistent ID": "FEAF0D62ED24D9B8", + "Track Type": "Remote" + }, + { + "Track ID": "4433", + "Name": "157", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "157 - EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "23458050", + "Total Time": "692197", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-04-04T19:28:00Z", + "Date Added": "2020-04-04T19:28:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3777016697", + "Play Date UTC": "2023-09-08T08:18:17Z", + "Skip Count": "2", + "Skip Date": "2022-11-02T13:02:16Z", + "Release Date": "2020-04-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "157 - EP", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "157", + "Persistent ID": "AA08C2D9EE397862", + "Track Type": "Remote" + }, + { + "Track ID": "4435", + "Name": "2am", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7451697", + "Total Time": "212514", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2020-04-06T07:52:55Z", + "Date Added": "2020-04-06T07:52:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780498184", + "Play Date UTC": "2023-10-18T15:23:04Z", + "Skip Count": -1, + "Skip Date": "2022-10-25T16:29:35Z", + "Release Date": "2017-06-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "2am", + "Persistent ID": "DC592317FB67EB21", + "Track Type": "Remote" + }, + { + "Track ID": "4437", + "Name": "Sail", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron R. Bruno", + "Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9439339", + "Total Time": "259093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "41", + "Year": "2010", + "Date Modified": "2020-04-17T18:24:35Z", + "Date Added": "2020-04-17T18:24:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3775565918", + "Play Date UTC": "2023-08-22T13:18:38Z", + "Skip Count": "2", + "Skip Date": "2020-05-12T19:30:36Z", + "Release Date": "2011-01-04T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Sort Artist": "AWOLNATION", + "Sort Name": "Sail", + "Persistent ID": "83E37E3D22ABF99B", + "Track Type": "Remote" + }, + { + "Track ID": "4439", + "Name": "I'm a Wreck", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8987738", + "Total Time": "251773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-24T05:11:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3770299189", + "Play Date UTC": "2023-06-22T14:19:49Z", + "Skip Count": "1", + "Skip Date": "2020-05-16T04:38:22Z", + "Release Date": "2020-04-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "I'm a Wreck", + "Persistent ID": "CDE174C6C3D80CD2", + "Track Type": "Remote" + }, + { + "Track ID": "4441", + "Name": "Half Italian", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9359806", + "Total Time": "263440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-24T05:11:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "65", + "Play Date": "3766068447", + "Play Date UTC": "2023-05-04T15:07:27Z", + "Skip Count": -1, + "Skip Date": "2022-10-17T05:44:38Z", + "Release Date": "2020-04-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "Half Italian", + "Persistent ID": "FFD37CDE06907D6D", + "Track Type": "Remote" + }, + { + "Track ID": "4443", + "Name": "Mayday!!! Fiesta Fever (feat. Alex Ebert)", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Alex Ebert & Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8194571", + "Total Time": "222267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-17T19:49:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "75", + "Play Date": "3769665455", + "Play Date UTC": "2023-06-15T06:17:35Z", + "Skip Count": "4", + "Skip Date": "2023-03-06T06:59:36Z", + "Release Date": "2020-01-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "Mayday!!! Fiesta Fever (feat. Alex Ebert)", + "Persistent ID": "FF87AE6E61FD4B33", + "Track Type": "Remote" + }, + { + "Track ID": "4445", + "Name": "Radical", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7866045", + "Total Time": "218307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-24T05:11:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3780906727", + "Play Date UTC": "2023-10-23T08:52:07Z", + "Skip Count": "2", + "Skip Date": "2022-11-01T10:01:30Z", + "Release Date": "2020-04-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "Radical", + "Persistent ID": "E48B2C5FA1DD6E45", + "Track Type": "Remote" + }, + { + "Track ID": "4447", + "Name": "Slam (Angel Miners)", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10084175", + "Total Time": "288080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-17T19:49:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3783357031", + "Play Date UTC": "2023-11-20T17:30:31Z", + "Skip Count": "3", + "Skip Date": "2021-01-24T15:13:39Z", + "Release Date": "2020-03-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "Slam (Angel Miners)", + "Persistent ID": "06AB3D5B568ABF05", + "Track Type": "Remote" + }, + { + "Track ID": "4449", + "Name": "California Halo Blue", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8560940", + "Total Time": "233133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-17T19:49:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "75", + "Play Date": "3783682287", + "Play Date UTC": "2023-11-24T11:51:27Z", + "Skip Count": "1", + "Skip Date": "2020-05-29T20:09:06Z", + "Release Date": "2019-11-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "California Halo Blue", + "Persistent ID": "C33DDEA446343F74", + "Track Type": "Remote" + }, + { + "Track ID": "4451", + "Name": "Pacific Coast Highway in the Movies (feat. Rivers Cuomo)", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno, Rivers Cuomo & Daniel Saslow", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8261691", + "Total Time": "235747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-24T05:11:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3767522730", + "Play Date UTC": "2023-05-21T11:05:30Z", + "Skip Count": "6", + "Skip Date": "2023-10-31T15:44:52Z", + "Release Date": "2020-04-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "Pacific Coast Highway in the Movies (feat. Rivers Cuomo)", + "Persistent ID": "CB626023A6531305", + "Track Type": "Remote" + }, + { + "Track ID": "4453", + "Name": "Battered, Black & Blue (Hole in My Heart)", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6951054", + "Total Time": "195733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-24T05:11:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3783665278", + "Play Date UTC": "2023-11-24T07:07:58Z", + "Skip Count": "4", + "Skip Date": "2023-10-28T02:46:46Z", + "Release Date": "2020-04-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "Battered, Black & Blue (Hole in My Heart)", + "Persistent ID": "B308D90B7D8E6E5C", + "Track Type": "Remote" + }, + { + "Track ID": "4455", + "Name": "The Best", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8236246", + "Total Time": "223320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-17T19:49:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "71", + "Play Date": "3781050709", + "Play Date UTC": "2023-10-25T00:51:49Z", + "Skip Count": "7", + "Skip Date": "2023-02-26T20:04:32Z", + "Release Date": "2019-11-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "Best", + "Persistent ID": "248D875CA49D1DC0", + "Track Type": "Remote" + }, + { + "Track ID": "4457", + "Name": "Lightning Riders", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8316574", + "Total Time": "230587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-04-17T19:49:40Z", + "Date Added": "2020-04-24T05:11:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3777374705", + "Play Date UTC": "2023-09-12T11:45:05Z", + "Skip Count": "1", + "Skip Date": "2020-12-17T09:34:31Z", + "Release Date": "2020-04-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders", + "Sort Artist": "AWOLNATION", + "Sort Name": "Lightning Riders", + "Persistent ID": "FE837815FAD14321", + "Track Type": "Remote" + }, + { + "Track ID": "4459", + "Name": "Gimme Love", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Daniel Krieger, Daniel Tannenbaum, George Miller, Sergiu Adrian Gherman & Tyler Reese Mehlenbacher", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7812380", + "Total Time": "214558", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-04-18T09:15:18Z", + "Date Added": "2020-04-18T09:15:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "94", + "Play Date": "3783362498", + "Play Date UTC": "2023-11-20T19:01:38Z", + "Skip Count": "4", + "Skip Date": "2021-06-04T10:05:42Z", + "Release Date": "2020-04-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Gimme Love", + "Persistent ID": "24DA0D33A1E1A91B", + "Track Type": "Remote" + }, + { + "Track ID": "4461", + "Name": "Femme Fatale", + "Artist": "The Kooks", + "Album Artist": "The Kooks", + "Composer": "Luke Pritchard, Hugh Harris, Max Rafferty & Paul Garred", + "Album": "Unshelved: Pt. I - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7306872", + "Total Time": "204947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2020", + "Date Modified": "2020-04-18T09:42:28Z", + "Date Added": "2020-04-18T09:42:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3776239815", + "Play Date UTC": "2023-08-30T08:30:15Z", + "Skip Count": "2", + "Skip Date": "2023-02-26T10:23:41Z", + "Release Date": "2020-04-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Unshelved: Pt. I - EP", + "Sort Artist": "Kooks", + "Sort Name": "Kooks", + "Persistent ID": "Femme Fatale", + "Track Type": "21C1B7CF3C7DD208" + }, + { + "Track ID": "4463", + "Name": "Tomorrow", + "Artist": "Jack Curley", + "Album Artist": "Jack Curley", + "Composer": "Ed Holloway, Jack Curley & Nick Atkinson", + "Album": "Tomorrow - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7372218", + "Total Time": "206729", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-04-18T09:45:41Z", + "Date Added": "2020-04-18T09:45:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3776147538", + "Play Date UTC": "2023-08-29T06:52:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-03-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tomorrow - Single", + "Sort Artist": "Jack Curley", + "Sort Name": "Tomorrow", + "Persistent ID": "338FAE67A31ABC61", + "Track Type": "Remote" + }, + { + "Track ID": "4465", + "Name": "Table for One", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Here Come the Runts", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "9708673", + "Total Time": "279127", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2020-04-18T11:20:04Z", + "Date Added": "2020-04-18T11:20:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3734120456", + "Play Date UTC": "2022-04-29T20:40:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-02-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Here Come the Runts", + "Sort Artist": "AWOLNATION", + "Sort Name": "Table for One", + "Persistent ID": "C57F19140E844673", + "Track Type": "Remote" + }, + { + "Track ID": "4467", + "Name": "Fingeroll", + "Artist": "Raz Simone", + "Album Artist": "Raz Simone", + "Composer": "Raz Simone", + "Album": "Fingeroll - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "16537388", + "Total Time": "483708", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-04-25T18:48:29Z", + "Date Added": "2020-04-25T18:48:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3782990449", + "Play Date UTC": "2023-11-16T11:40:49Z", + "Skip Count": "1", + "Skip Date": "2020-04-27T10:05:02Z", + "Release Date": "2020-04-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fingeroll - Single", + "Sort Artist": "Raz Simone", + "Sort Name": "Fingeroll", + "Persistent ID": "43CF7EB3CC070417", + "Track Type": "Remote" + }, + { + "Track ID": "4469", + "Name": "((home movie: 1994))", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley & Orit Braha", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "805183", + "Total Time": "7156", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3779307884", + "Play Date UTC": "2023-10-04T20:44:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "((home movie: 1994))", + "Persistent ID": "D9A118C3C17676F4", + "Track Type": "Remote" + }, + { + "Track ID": "4471", + "Name": "Dreamland", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7319177", + "Total Time": "203492", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-05-02T07:02:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3767207755", + "Play Date UTC": "2023-05-17T19:35:55Z", + "Skip Count": "1", + "Skip Date": "2020-07-05T12:10:45Z", + "Release Date": "2020-05-01T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Dreamland", + "Persistent ID": "0780C58C1C8A720C", + "Track Type": "Remote" + }, + { + "Track ID": "4473", + "Name": "Tangerine", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley & Brittany Hazzard", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7288966", + "Total Time": "200584", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781382040", + "Play Date UTC": "2023-10-28T20:54:00Z", + "Skip Count": "1", + "Skip Date": "2022-04-23T20:34:41Z", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Tangerine", + "Persistent ID": "394C9C5B07298EEB", + "Track Type": "Remote" + }, + { + "Track ID": "4475", + "Name": "((home movie: btx))", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "1017793", + "Total Time": "13626", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3782883347", + "Play Date UTC": "2023-11-15T05:55:47Z", + "Skip Count": "2", + "Skip Date": "2023-07-19T05:56:05Z", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "((home movie: btx))", + "Persistent ID": "6A55EDAABDA75803", + "Track Type": "Remote" + }, + { + "Track ID": "4477", + "Name": "Hot Sugar", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley, Ann Bridgeforth, Dave Hamilton & Rony Darrel", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8466221", + "Total Time": "234866", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3783848161", + "Play Date UTC": "2023-11-26T09:56:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Hot Sugar", + "Persistent ID": "E9B20E1C544917FF", + "Track Type": "Remote" + }, + { + "Track ID": "4479", + "Name": "It\u2019s All So Incredibly Loud", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9117705", + "Total Time": "259060", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-07-30T21:07:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3776434489", + "Play Date UTC": "2023-09-01T14:34:49Z", + "Skip Count": "2", + "Skip Date": "2020-08-06T15:46:07Z", + "Release Date": "2020-07-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "It\u2019s All So Incredibly Loud", + "Persistent ID": "72938423FD9D271E", + "Track Type": "Remote" + }, + { + "Track ID": "4481", + "Name": "Waterfalls Coming Out Your Mouth", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5866299", + "Total Time": "161790", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3782988384", + "Play Date UTC": "2023-11-16T11:06:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Waterfalls Coming Out Your Mouth", + "Persistent ID": "A477A2F9C8685EAF", + "Track Type": "Remote" + }, + { + "Track ID": "4483", + "Name": "Helium", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10990406", + "Total Time": "328232", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T22:15:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3776320783", + "Play Date UTC": "2023-08-31T06:59:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Helium", + "Persistent ID": "FA4C1BA3C13C5D53", + "Track Type": "Remote" + }, + { + "Track ID": "4485", + "Name": "Domestic Bliss", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6990232", + "Total Time": "198035", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3765614407", + "Play Date UTC": "2023-04-29T09:00:07Z", + "Skip Count": "1", + "Skip Date": "2021-03-08T09:18:47Z", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Domestic Bliss", + "Persistent ID": "E97D057C90E729F7", + "Track Type": "Remote" + }, + { + "Track ID": "4487", + "Name": "((home movie: rockets))", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "2861528", + "Total Time": "60123", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3776170094", + "Play Date UTC": "2023-08-29T13:08:14Z", + "Skip Count": "3", + "Skip Date": "2023-02-23T13:24:45Z", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "((home movie: rockets))", + "Persistent ID": "B812F99858A41D6A", + "Track Type": "Remote" + }, + { + "Track ID": "4489", + "Name": "Melon and the Coconut", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5436467", + "Total Time": "148706", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3758871112", + "Play Date UTC": "2023-02-10T07:51:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Melon and the Coconut", + "Persistent ID": "DF4850EB13D4B2F3", + "Track Type": "Remote" + }, + { + "Track ID": "4491", + "Name": "Your Love (D\u00e9j\u00e0 Vu)", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8697541", + "Total Time": "234372", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-05-02T07:02:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3781062235", + "Play Date UTC": "2023-10-25T04:03:55Z", + "Skip Count": "4", + "Skip Date": "2021-06-11T05:24:53Z", + "Release Date": "2020-02-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Your Love (D\u00e9j\u00e0 Vu)", + "Persistent ID": "A1F9DE44629C9714", + "Track Type": "Remote" + }, + { + "Track ID": "4493", + "Name": "Space Ghost Coast To Coast", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6864522", + "Total Time": "187384", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783849411", + "Play Date UTC": "2023-11-26T10:16:51Z", + "Skip Count": "1", + "Skip Date": "2022-11-18T15:30:30Z", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Space Ghost Coast To Coast", + "Persistent ID": "EF9A345F5452BBAB", + "Track Type": "Remote" + }, + { + "Track ID": "4495", + "Name": "Heat Waves", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8713758", + "Total Time": "238805", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-06-29T18:20:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781175127", + "Play Date UTC": "2023-10-26T11:25:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-06-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "Heat Waves", + "Persistent ID": "BBC6606308C33C61", + "Track Type": "Remote" + }, + { + "Track ID": "4497", + "Name": "((home movie: shoes on))", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "1572701", + "Total Time": "31447", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-05-02T07:02:21Z", + "Date Added": "2020-08-06T21:05:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783411176", + "Play Date UTC": "2023-11-21T08:32:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals", + "Sort Name": "((home movie: shoes on))", + "Persistent ID": "6E6468C5A111EA3A", + "Track Type": "Remote" + }, + { + "Track ID": "4499", + "Name": "Run", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Daniel Wilson, George Miller & Justin Parker", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7100066", + "Total Time": "195000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-05-03T06:42:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "142", + "Play Date": "3781349088", + "Play Date UTC": "2023-10-28T11:44:48Z", + "Skip Count": "7", + "Skip Date": "2021-09-24T20:16:24Z", + "Release Date": "2020-02-06T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "6985", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Run", + "Persistent ID": "B2A95B7CC3E88ACF", + "Track Type": "Remote" + }, + { + "Track ID": "4501", + "Name": "Daylight", + "Artist": "Joji & Diplo", + "Album Artist": "Joji", + "Composer": "George Miller, Greg Kurstin, Maximilian Jaeger, Sarah Aarons & Thomas Wesley Pentz", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6034679", + "Total Time": "163906", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-08-06T16:11:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "85", + "Play Date": "3781448230", + "Play Date UTC": "2023-10-29T15:17:10Z", + "Skip Count": "1", + "Skip Date": "2021-09-27T08:49:21Z", + "Release Date": "2020-08-06T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "2468", + "Sort Album": "Nectar", + "Sort Artist": "Joji & Diplo", + "Sort Name": "Daylight", + "Persistent ID": "A4EBC9D133D993B9", + "Track Type": "Remote" + }, + { + "Track ID": "4503", + "Name": "Your Man", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Alexander Kotz, George Miller & James Stack", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6004070", + "Total Time": "163759", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "72", + "Play Date": "3783667651", + "Play Date UTC": "2023-11-24T07:47:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Your Man", + "Persistent ID": "EED26A613B27FBF5", + "Track Type": "Remote" + }, + { + "Track ID": "4505", + "Name": "Upgrade", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller, James Alan Ghaleb, Rickard Goransson & Tobias Karlsson", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "3546469", + "Total Time": "89917", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "85", + "Play Date": "3781348671", + "Play Date UTC": "2023-10-28T11:37:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Upgrade", + "Persistent ID": "5475BE130461802D", + "Track Type": "Remote" + }, + { + "Track ID": "4507", + "Name": "Ew", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Antoine Norwood, Craig Balmoris, Daniel Nathan Krieger, Daniel Tannenbaum, George Miller, Lucas Szulansky, Sergiu Adrian Gherman, Stuart Daniel Johnson & Tyler Reese Mehlenbacher", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7468147", + "Total Time": "207710", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "100", + "Play Date": "3783073777", + "Play Date UTC": "2023-11-17T10:49:37Z", + "Skip Count": "3", + "Skip Date": "2022-11-11T18:10:59Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Ew", + "Persistent ID": "C01857D6B8FEF7B7", + "Track Type": "Remote" + }, + { + "Track ID": "4509", + "Name": "MODUS", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Ajay Bhattacharyya & George Miller", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7578960", + "Total Time": "207265", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "93", + "Play Date": "3781348281", + "Play Date UTC": "2023-10-28T11:31:21Z", + "Skip Count": "3", + "Skip Date": "2022-10-06T15:58:48Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "MODUS", + "Persistent ID": "3F3531BD3263B6D5", + "Track Type": "Remote" + }, + { + "Track ID": "4511", + "Name": "Reanimator (feat. Yves Tumor)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller, Jacob Reske & Yves Tumor", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6735821", + "Total Time": "183256", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "91", + "Play Date": "3782977379", + "Play Date UTC": "2023-11-16T08:02:59Z", + "Skip Count": "1", + "Skip Date": "2022-05-09T20:50:57Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Reanimator (feat. Yves Tumor)", + "Persistent ID": "8105A6BFB8129A86", + "Track Type": "Remote" + }, + { + "Track ID": "4513", + "Name": "Tick Tock", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller & Lawrence Jung", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4941873", + "Total Time": "132215", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "122", + "Play Date": "3781348413", + "Play Date UTC": "2023-10-28T11:33:33Z", + "Skip Count": "4", + "Skip Date": "2022-02-06T20:18:01Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Tick Tock", + "Persistent ID": "46479A52AC07E351", + "Track Type": "Remote" + }, + { + "Track ID": "4515", + "Name": "Like You Do", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Chelsea Lena, George Miller, Joshua Bliss Taffel, Kacy Anne Hill, Kurtis Mckenzie & Linden Jay", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8625031", + "Total Time": "240294", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "66", + "Play Date": "3783756009", + "Play Date UTC": "2023-11-25T08:20:09Z", + "Skip Count": "1", + "Skip Date": "2022-07-12T16:13:50Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Like You Do", + "Persistent ID": "EC043002EAE919D3", + "Track Type": "Remote" + }, + { + "Track ID": "4517", + "Name": "Mr. Hollywood", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller, Kenneth Charles Blume III & Lawrence Jung", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7269359", + "Total Time": "202072", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "94", + "Play Date": "3783710417", + "Play Date UTC": "2023-11-24T19:40:17Z", + "Skip Count": "2", + "Skip Date": "2022-08-19T16:10:41Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Mr. Hollywood", + "Persistent ID": "EFE0CB30C4BC0F69", + "Track Type": "Remote" + }, + { + "Track ID": "4519", + "Name": "777", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Antoine Norwood, Daniel Dalexis & George Miller", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6640952", + "Total Time": "181772", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "69", + "Play Date": "3778364694", + "Play Date UTC": "2023-09-23T22:44:54Z", + "Skip Count": "2", + "Skip Date": "2022-11-01T10:37:45Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "777", + "Persistent ID": "95167FC51B491973", + "Track Type": "Remote" + }, + { + "Track ID": "4521", + "Name": "Pretty Boy (feat. Lil Yachty)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller, John Durham, Miles Benjamin Robinson, Miles McCollum & Patrick Wimberly", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5851045", + "Total Time": "156759", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "114", + "Play Date": "3781349742", + "Play Date UTC": "2023-10-28T11:55:42Z", + "Skip Count": "3", + "Skip Date": "2021-02-25T20:18:21Z", + "Release Date": "2020-09-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Pretty Boy (feat. Lil Yachty)", + "Persistent ID": "E2B1E272C36C4CB7", + "Track Type": "Remote" + }, + { + "Track ID": "4523", + "Name": "Normal People (feat. rei brown)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller, Isaac Cords Sleator & Ray Brown", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6125755", + "Total Time": "166883", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "75", + "Play Date": "3781599524", + "Play Date UTC": "2023-10-31T09:18:44Z", + "Skip Count": "2", + "Skip Date": "2022-01-03T19:10:33Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Normal People (feat. rei brown)", + "Persistent ID": "BBED9822539A714E", + "Track Type": "Remote" + }, + { + "Track ID": "4525", + "Name": "Afterthought", + "Artist": "Joji & BENEE", + "Album Artist": "Joji", + "Composer": "Daniel Wilson, George Miller, Isaac Cords Sleator & Stella Rose Bennett", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7096870", + "Total Time": "194871", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "100", + "Play Date": "3781350104", + "Play Date UTC": "2023-10-28T12:01:44Z", + "Skip Count": "1", + "Skip Date": "2022-03-30T18:50:06Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Nectar", + "Sort Artist": "Joji & BENEE", + "Sort Name": "Afterthought", + "Persistent ID": "60D4FA93B43E378A", + "Track Type": "Remote" + }, + { + "Track ID": "4527", + "Name": "High Hopes (feat. Omar Apollo)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Daniel Tannenbaum, Daniel Wilson, George Miller, Omar Velasco & Tyler Reese Mehlenbacher", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6860536", + "Total Time": "182400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "76", + "Play Date": "3781613994", + "Play Date UTC": "2023-10-31T13:19:54Z", + "Skip Count": "4", + "Skip Date": "2022-11-26T21:25:34Z", + "Release Date": "2020-09-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "High Hopes (feat. Omar Apollo)", + "Persistent ID": "B82309D5392EF1E3", + "Track Type": "Remote" + }, + { + "Track ID": "4529", + "Name": "NITROUS", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller, Michael Volpe & Roget Chahayed", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4999232", + "Total Time": "131719", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-09-24T22:23:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "75", + "Play Date": "3783666049", + "Play Date UTC": "2023-11-24T07:20:49Z", + "Skip Count": "2", + "Skip Date": "2023-04-23T06:55:49Z", + "Release Date": "2020-07-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "NITROUS", + "Persistent ID": "0004A5D69E325C7D", + "Track Type": "Remote" + }, + { + "Track ID": "4531", + "Name": "Sanctuary", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "Daniel Wilson, George Miller, Justin Raisen & Luke Niccoli", + "Album": "Nectar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6664039", + "Total Time": "180019", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "18", + "Year": "2019", + "Date Modified": "2020-05-03T06:42:56Z", + "Date Added": "2020-05-03T06:42:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "95", + "Play Date": "3781349268", + "Play Date UTC": "2023-10-28T11:47:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-14T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "3579", + "Sort Album": "Nectar", + "Sort Artist": "Joji", + "Sort Name": "Sanctuary", + "Persistent ID": "EA8F2D58030FF7B4", + "Track Type": "Remote" + }, + { + "Track ID": "4533", + "Name": "All Your Love", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "William Patrick Corgan, Jason Suwito, Hayden Coplen & Landon Jacobs", + "Album": "All Your Love - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6654370", + "Total Time": "187960", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-05-06T20:29:30Z", + "Date Added": "2020-05-06T20:29:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "68", + "Play Date": "3779914259", + "Play Date UTC": "2023-10-11T21:10:59Z", + "Skip Count": "2", + "Skip Date": "2020-09-29T21:22:42Z", + "Release Date": "2020-05-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "All Your Love - Single", + "Sort Artist": "Sir Sly", + "Sort Name": "All Your Love", + "Persistent ID": "90D4C66FB5C18E5C", + "Track Type": "Remote" + }, + { + "Track ID": "4535", + "Name": "Automatic Driver (Tyler, The Creator Remix)", + "Artist": "La Roux & Tyler, The Creator", + "Album Artist": "La Roux & Tyler, The Creator", + "Composer": "Elly Jackson", + "Album": "Automatic Driver (Tyler, The Creator Remix) - Single", + "Genre": "Indie Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7570181", + "Total Time": "210674", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-05-12T19:23:23Z", + "Date Added": "2020-05-12T19:23:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3781207105", + "Play Date UTC": "2023-10-26T20:18:25Z", + "Skip Count": "1", + "Skip Date": "2022-03-26T13:37:16Z", + "Release Date": "2020-04-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Automatic Driver (Tyler, The Creator Remix) - Single", + "Sort Artist": "La Roux & Tyler, The Creator", + "Sort Name": "Automatic Driver (Tyler, The Creator Remix)", + "Persistent ID": "25A0C6F540309F40", + "Track Type": "Remote" + }, + { + "Track ID": "4537", + "Name": "Watermelon", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "Bolu", + "Genre": "New Acoustic", + "Kind": "Apple Music AAC audio file", + "Size": "7133870", + "Total Time": "185385", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "16", + "Year": "2015", + "Date Modified": "2020-05-12T19:31:38Z", + "Date Added": "2020-05-12T19:31:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3778358748", + "Play Date UTC": "2023-09-23T21:05:48Z", + "Skip Count": "5", + "Skip Date": "2022-08-25T10:32:13Z", + "Release Date": "2015-04-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Bolu", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "Watermelon", + "Persistent ID": "5BF4F27B08B682AF", + "Track Type": "Remote" + }, + { + "Track ID": "4539", + "Name": "Because", + "Artist": "Pageant Boys", + "Album Artist": "Pageant Boys", + "Composer": "undef", + "Album": "Darkroom - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "8964189", + "Total Time": "251897", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2018", + "Date Modified": "2020-05-14T12:11:55Z", + "Date Added": "2020-05-14T12:11:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3781082231", + "Play Date UTC": "2023-10-25T09:37:11Z", + "Skip Count": "3", + "Skip Date": "2022-03-09T18:05:13Z", + "Release Date": "2018-04-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Darkroom - EP", + "Sort Artist": "Pageant Boys", + "Sort Name": "Because", + "Persistent ID": "DAF891D7E3E0C891", + "Track Type": "Remote" + }, + { + "Track ID": "4541", + "Name": "Zen", + "Artist": "X Ambassadors, K.Flay & grandson", + "Album Artist": "X Ambassadors, K.Flay & grandson", + "Composer": "Casey Harris, Adam Levin, Kristine Flaherty, Jordan Benjamin & Samuel Harris", + "Album": "Zen - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7594711", + "Total Time": "215883", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-05-15T17:39:42Z", + "Date Added": "2020-05-15T17:39:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "163", + "Play Date": "3780831891", + "Play Date UTC": "2023-10-22T12:04:51Z", + "Skip Count": "7", + "Skip Date": "2021-07-10T18:48:16Z", + "Release Date": "2020-05-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Zen - Single", + "Sort Artist": "X Ambassadors, K.Flay & grandson", + "Sort Name": "Zen", + "Persistent ID": "C41B4448FB30963B", + "Track Type": "Remote" + }, + { + "Track ID": "4543", + "Name": "Ocean Drive", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "8058640", + "Total Time": "227880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2020-05-24T12:16:40Z", + "Date Added": "2020-05-24T12:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3733417746", + "Play Date UTC": "2022-04-21T17:29:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-07-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Ocean Drive", + "Persistent ID": "99F7316421C0B306", + "Track Type": "Remote" + }, + { + "Track ID": "4545", + "Name": "No Advance", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "9682967", + "Total Time": "276467", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2020-05-24T12:16:40Z", + "Date Added": "2020-05-24T12:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3731753424", + "Play Date UTC": "2022-04-02T11:10:24Z", + "Skip Count": "3", + "Skip Date": "2021-05-17T19:00:41Z", + "Release Date": "2016-07-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "No Advance", + "Persistent ID": "8C1DEEE78A89902E", + "Track Type": "Remote" + }, + { + "Track ID": "4547", + "Name": "Real Ni**a", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "6640170", + "Total Time": "185467", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2020-05-24T12:16:40Z", + "Date Added": "2020-05-24T12:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3734022509", + "Play Date UTC": "2022-04-28T17:28:29Z", + "Skip Count": "2", + "Skip Date": "2020-06-25T11:27:44Z", + "Release Date": "2016-07-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Real Ni**a", + "Persistent ID": "00661EC61C8C6107", + "Track Type": "Remote" + }, + { + "Track ID": "4549", + "Name": "Savage Mode", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "8754869", + "Total Time": "249587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2020-05-24T12:16:40Z", + "Date Added": "2020-05-24T12:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "57", + "Play Date": "3733729953", + "Play Date UTC": "2022-04-25T08:12:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-07-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Savage Mode", + "Persistent ID": "C18C3D703E3F7CDB", + "Track Type": "Remote" + }, + { + "Track ID": "4551", + "Name": "No Heart", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "8269350", + "Total Time": "235040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2020-05-24T12:16:40Z", + "Date Added": "2020-05-24T12:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3733752689", + "Play Date UTC": "2022-04-25T14:31:29Z", + "Skip Count": "2", + "Skip Date": "2022-04-25T14:16:48Z", + "Release Date": "2016-07-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "No Heart", + "Persistent ID": "772E777389657216", + "Track Type": "Remote" + }, + { + "Track ID": "4553", + "Name": "Mad High", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "6473334", + "Total Time": "180707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2020-05-24T12:16:40Z", + "Date Added": "2020-05-24T12:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3731752757", + "Play Date UTC": "2022-04-02T10:59:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-07-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Mad High", + "Persistent ID": "66AE4CF6877342A5", + "Track Type": "Remote" + }, + { + "Track ID": "4555", + "Name": "Bad Guy", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Not Documented", + "Album": "Savage Mode", + "Genre": "Rap", + "Kind": "AAC audio file", + "Size": "6088623", + "Total Time": "169493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2020-05-24T12:16:40Z", + "Date Added": "2020-05-24T12:16:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3733751551", + "Play Date UTC": "2022-04-25T14:12:31Z", + "Skip Count": "1", + "Skip Date": "2021-09-12T19:29:18Z", + "Release Date": "2016-07-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Savage Mode", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Bad Guy", + "Persistent ID": "30FBBEAC72F5C6D3", + "Track Type": "Remote" + }, + { + "Track ID": "4557", + "Name": "DOLLAZ ON MY HEAD (feat. Young Thug)", + "Artist": "Gunna", + "Album Artist": "Gunna", + "Composer": "Jeffery Lamar Williams, Michael Len Williams II & Sergio Kitchens", + "Album": "WUNNA", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7133487", + "Total Time": "197760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-05-29T20:04:30Z", + "Date Added": "2020-05-29T20:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "183", + "Play Date": "3780904815", + "Play Date UTC": "2023-10-23T08:20:15Z", + "Skip Count": "4", + "Skip Date": "2022-01-03T08:54:08Z", + "Release Date": "2020-05-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WUNNA", + "Sort Artist": "Gunna", + "Sort Name": "DOLLAZ ON MY HEAD (feat. Young Thug)", + "Persistent ID": "00860560A2F69931", + "Track Type": "Remote" + }, + { + "Track ID": "4559", + "Name": "Lost", + "Artist": "Jeff Russo", + "Album Artist": "Jeff Russo", + "Composer": "Jeff Russo", + "Album": "Longshot (Original Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "3157192", + "Total Time": "74218", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "32", + "Year": "2017", + "Date Modified": "2020-06-02T06:54:32Z", + "Date Added": "2020-06-02T06:54:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3780569934", + "Play Date UTC": "2023-10-19T11:18:54Z", + "Skip Count": "2", + "Skip Date": "2022-10-02T16:53:04Z", + "Release Date": "2017-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Longshot (Original Soundtrack)", + "Sort Artist": "Jeff Russo", + "Sort Name": "Lost", + "Persistent ID": "31E60D373A544D7A", + "Track Type": "Remote" + }, + { + "Track ID": "4561", + "Name": "This is What I Live For", + "Artist": "Blue October", + "Album Artist": "Blue October", + "Composer": "Justin Furstenfeld, Eric D. Holtz & Steve Schiltz", + "Album": "This is What I Live For - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10351983", + "Total Time": "293873", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-06-04T08:44:30Z", + "Date Added": "2020-06-04T08:44:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3781570471", + "Play Date UTC": "2023-10-31T01:14:31Z", + "Skip Count": "3", + "Skip Date": "2022-07-15T17:47:12Z", + "Release Date": "2020-05-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This is What I Live For - Single", + "Sort Artist": "Blue October", + "Sort Name": "This is What I Live For", + "Persistent ID": "41DCF7C01518C343", + "Track Type": "Remote" + }, + { + "Track ID": "4563", + "Name": "Split/Whole Time", + "Artist": "Lil Yachty", + "Album Artist": "Lil Yachty", + "Composer": "Miles McCollum & Earl Isaac Bynum", + "Album": "Lil Boat 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8507457", + "Total Time": "239314", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "19", + "Year": "2020", + "Date Modified": "2020-06-04T08:54:45Z", + "Date Added": "2020-06-04T08:54:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3761644370", + "Play Date UTC": "2023-03-14T10:12:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-05-26T07:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "20", + "Sort Album": "Lil Boat 3", + "Sort Artist": "Lil Yachty", + "Sort Name": "Split/Whole Time", + "Persistent ID": "9B5BD9BB502B9EE0", + "Track Type": "Remote" + }, + { + "Track ID": "4565", + "Name": "Free Porn Cheap Drugs", + "Artist": "G-Eazy", + "Album Artist": "G-Eazy", + "Composer": "Gerald Gillum, Jesse Ackerman & Austin Ward Sherman", + "Album": "Free Porn Cheap Drugs - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7151420", + "Total Time": "200653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-06-04T08:54:49Z", + "Date Added": "2020-06-04T08:54:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3782989964", + "Play Date UTC": "2023-11-16T11:32:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-05-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Free Porn Cheap Drugs - Single", + "Sort Artist": "G-Eazy", + "Sort Name": "Free Porn Cheap Drugs", + "Persistent ID": "85E52BF71EE1BAE3", + "Track Type": "Remote" + }, + { + "Track ID": "4567", + "Name": "Remedy, Surging Sea", + "Artist": "Son Lux", + "Album Artist": "Son Lux", + "Composer": "Ryan Lott", + "Album": "Reincarnates - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10118981", + "Total Time": "271895", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2020-06-04T09:16:52Z", + "Date Added": "2020-06-04T09:16:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781384691", + "Play Date UTC": "2023-10-28T21:38:11Z", + "Skip Count": "1", + "Skip Date": "2020-06-13T10:22:16Z", + "Release Date": "2020-05-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reincarnates - EP", + "Sort Artist": "Son Lux", + "Sort Name": "Remedy, Surging Sea", + "Persistent ID": "F382950608A87D67", + "Track Type": "Remote" + }, + { + "Track ID": "4569", + "Name": "popular girl, typical boy", + "Artist": "Powfu & Sleeping", + "Album Artist": "Powfu", + "Composer": "Isaiah Faber, Joaquim Antonio Francisco & Patience Faber", + "Album": "poems of the past - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8635925", + "Total Time": "246400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2020-06-04T09:39:06Z", + "Date Added": "2020-06-04T09:39:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3780841188", + "Play Date UTC": "2023-10-22T14:39:48Z", + "Skip Count": "3", + "Skip Date": "2020-06-24T21:38:37Z", + "Release Date": "2020-05-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "poems of the past - EP", + "Sort Artist": "Powfu & Sleeping", + "Sort Name": "popular girl, typical boy", + "Persistent ID": "C1DE34A5B81CDDB9", + "Track Type": "Remote" + }, + { + "Track ID": "4571", + "Name": "Down To Hell", + "Artist": "Asking Alexandria", + "Album Artist": "Asking Alexandria", + "Composer": "Benjamin Bruce, Danny Worsnop, James Cassells & Matt Good", + "Album": "Like a House On Fire", + "Genre": "Hard Rock", + "Kind": "AAC audio file", + "Size": "7017703", + "Total Time": "196464", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2020-06-12T09:13:45Z", + "Date Added": "2020-06-12T09:13:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3749805783", + "Play Date UTC": "2022-10-28T09:43:03Z", + "Skip Count": "2", + "Skip Date": "2020-06-25T12:13:34Z", + "Release Date": "2020-04-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Like a House On Fire", + "Sort Artist": "Asking Alexandria", + "Sort Name": "Down To Hell", + "Persistent ID": "80D0E7F91080EDBA", + "Track Type": "Remote" + }, + { + "Track ID": "4573", + "Name": "NIGHTMARES", + "Artist": "brother sundance", + "Album Artist": "brother sundance", + "Composer": "Jace Logan Jennings & Ryan Talerico", + "Album": "I HURT YOU, I MADE THIS - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6821564", + "Total Time": "188862", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2020-06-13T12:16:21Z", + "Date Added": "2020-06-13T12:16:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "83", + "Play Date": "3783354756", + "Play Date UTC": "2023-11-20T16:52:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-05-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I HURT YOU, I MADE THIS - EP", + "Sort Artist": "brother sundance", + "Sort Name": "NIGHTMARES", + "Persistent ID": "CD1EAA96BD86BCC0", + "Track Type": "Remote" + }, + { + "Track ID": "4575", + "Name": "Oh My, Valentina.", + "Artist": "Rich Kreflo", + "Album Artist": "Rich Kreflo", + "Composer": "Rich Kreflo", + "Album": "Oh My, Valentina. - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "10042291", + "Total Time": "288927", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2020-06-14T08:53:17Z", + "Date Added": "2020-06-14T08:53:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3773672475", + "Play Date UTC": "2023-07-31T15:21:15Z", + "Skip Count": "1", + "Skip Date": "2020-06-18T07:44:54Z", + "Release Date": "2019-04-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh My, Valentina. - Single", + "Sort Artist": "Rich Kreflo", + "Sort Name": "Oh My, Valentina.", + "Persistent ID": "F31351E83E4E812F", + "Track Type": "Remote" + }, + { + "Track ID": "4577", + "Name": "Genius (feat. Lil Wayne, Sia, Diplo & Labrinth) [Lil Wayne Remix]", + "Artist": "LSD", + "Album Artist": "LSD", + "Composer": "Timothy Mckenzie, Sia Furler, Thomas Pentz, Jr. & Philip Meckseper", + "Album": "LABRINTH, SIA & DIPLO PRESENT... LSD", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5910587", + "Total Time": "162912", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2020-06-18T08:15:49Z", + "Date Added": "2020-06-18T08:15:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783576297", + "Play Date UTC": "2023-11-23T06:24:57Z", + "Skip Count": "1", + "Skip Date": "2022-07-30T15:08:35Z", + "Release Date": "2019-01-17T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "LABRINTH, SIA & DIPLO PRESENT... LSD", + "Sort Artist": "LSD", + "Sort Name": "Genius (feat. Lil Wayne, Sia, Diplo & Labrinth) [Lil Wayne Remix]", + "Persistent ID": "3C3DAA2A1689DFA0", + "Track Type": "Remote" + }, + { + "Track ID": "4579", + "Name": "Again", + "Artist": "grandson & Zero 9:36", + "Album Artist": "grandson & Zero 9:36", + "Composer": "Jordan Benjamin, Matthew Cullen & Andrew Migliore", + "Album": "Again - Single", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "7373980", + "Total Time": "207676", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-06-23T09:29:58Z", + "Date Added": "2020-06-23T09:29:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3770488598", + "Play Date UTC": "2023-06-24T18:56:38Z", + "Skip Count": "1", + "Skip Date": "2022-12-08T17:47:35Z", + "Release Date": "2020-05-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Again - Single", + "Sort Artist": "grandson & Zero 9:36", + "Sort Name": "Again", + "Persistent ID": "5B0DEE9800C97C2E", + "Track Type": "Remote" + }, + { + "Track ID": "4581", + "Name": "Shame on Me", + "Artist": "Tyler James Bellinger", + "Album Artist": "Tyler James Bellinger", + "Composer": "Tyler James Bellinger, Michael MacAllister & Julie Hardy", + "Album": "Songs for a Younger Me - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8177337", + "Total Time": "228333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2020", + "Date Modified": "2020-06-23T09:43:13Z", + "Date Added": "2020-06-23T09:43:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3759415092", + "Play Date UTC": "2023-02-16T14:58:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-05-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Songs for a Younger Me - EP", + "Sort Artist": "Tyler James Bellinger", + "Sort Name": "Shame on Me", + "Persistent ID": "1B4B9547C10F1788", + "Track Type": "Remote" + }, + { + "Track ID": "4583", + "Name": "Goliath", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid, Ryan Lott & Benjamin Esser", + "Album": "Goliath - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "8133252", + "Total Time": "228490", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-06-23T09:46:57Z", + "Date Added": "2020-06-23T09:46:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "67", + "Play Date": "3781386635", + "Play Date UTC": "2023-10-28T22:10:35Z", + "Skip Count": "5", + "Skip Date": "2022-12-28T07:43:58Z", + "Release Date": "2020-04-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Goliath - Single", + "Sort Artist": "Woodkid", + "Sort Name": "Goliath", + "Persistent ID": "758BD60039CB31FB", + "Track Type": "Remote" + }, + { + "Track ID": "4585", + "Name": "England In The Sun", + "Artist": "The Kooks", + "Album Artist": "The Kooks", + "Composer": "Luke Pritchard", + "Album": "Unshelved: Pt. II - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4679921", + "Total Time": "126240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2020", + "Date Modified": "2020-07-03T20:10:20Z", + "Date Added": "2020-07-03T20:10:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783775699", + "Play Date UTC": "2023-11-25T13:48:19Z", + "Skip Count": "3", + "Skip Date": "2022-09-01T09:29:32Z", + "Release Date": "2020-05-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Unshelved: Pt. II - EP", + "Sort Artist": "Kooks", + "Sort Name": "Kooks", + "Persistent ID": "England In The Sun", + "Track Type": "6A7469F4306DF69B" + }, + { + "Track ID": "4587", + "Name": "My Best Friend (feat. Coach Party)", + "Artist": "Alfie Templeman", + "Album Artist": "Alfie Templeman", + "Composer": "Alfie Templeman, Guy Page & Jess Eastwood", + "Album": "Happiness in Liquid Form - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6253534", + "Total Time": "157374", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2020-07-10T15:43:55Z", + "Date Added": "2020-07-10T15:43:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3769680928", + "Play Date UTC": "2023-06-15T10:35:28Z", + "Skip Count": "3", + "Skip Date": "2023-06-15T15:19:34Z", + "Release Date": "2020-04-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Happiness in Liquid Form - EP", + "Sort Artist": "Alfie Templeman", + "Sort Name": "My Best Friend (feat. Coach Party)", + "Persistent ID": "E2DFFC5FFAAE44BD", + "Track Type": "Remote" + }, + { + "Track ID": "4589", + "Name": "The Worst", + "Artist": "benny mayne", + "Album Artist": "benny mayne", + "Composer": "Benajmin Shubert, Steven Haddad, Adam Korbesmeyer, Jerry Lang II & Thomas Sturges", + "Album": "The Worst - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6984940", + "Total Time": "199989", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-07-10T15:53:45Z", + "Date Added": "2020-07-10T15:53:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "74", + "Play Date": "3776327897", + "Play Date UTC": "2023-08-31T08:58:17Z", + "Skip Count": "2", + "Skip Date": "2022-11-26T15:13:04Z", + "Release Date": "2020-06-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Worst - Single", + "Sort Artist": "benny mayne", + "Sort Name": "Worst", + "Persistent ID": "F2C9F3DE7C112AF9", + "Track Type": "Remote" + }, + { + "Track ID": "4591", + "Name": "Marauders", + "Artist": "Thao & The Get Down Stay Down", + "Album Artist": "Thao & The Get Down Stay Down", + "Composer": "Thao Nguyen & Adam Thompson", + "Album": "Temple", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7387790", + "Total Time": "209433", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2020-08-09T07:36:53Z", + "Date Added": "2020-08-09T07:36:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781051537", + "Play Date UTC": "2023-10-25T01:05:37Z", + "Skip Count": "1", + "Skip Date": "2022-10-15T15:46:31Z", + "Release Date": "2020-05-15T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Temple", + "Sort Artist": "Thao & The Get Down Stay Down", + "Sort Name": "Marauders", + "Persistent ID": "2FA196133F4028DD", + "Track Type": "Remote" + }, + { + "Track ID": "4593", + "Name": "Ciclo Lunar", + "Artist": "Carlos Sadness", + "Album Artist": "Carlos Sadness", + "Composer": "Carlos Sadness", + "Album": "Tropical Jesus", + "Genre": "Pop Latino", + "Kind": "Apple Music AAC audio file", + "Size": "7570252", + "Total Time": "212795", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2020", + "Date Modified": "2020-08-09T14:53:03Z", + "Date Added": "2020-08-09T14:53:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3771945952", + "Play Date UTC": "2023-07-11T15:45:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-04-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tropical Jesus", + "Sort Artist": "Carlos Sadness", + "Sort Name": "Ciclo Lunar", + "Persistent ID": "03B36E2564BCE511", + "Track Type": "Remote" + }, + { + "Track ID": "4595", + "Name": "The Garden", + "Artist": "Flower Face", + "Album Artist": "Flower Face", + "Composer": "Ruby Mckinnon", + "Album": "The Garden - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8487661", + "Total Time": "233424", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-08-09T16:41:55Z", + "Date Added": "2020-08-09T16:41:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3781600122", + "Play Date UTC": "2023-10-31T09:28:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-04-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Garden - Single", + "Sort Artist": "Flower Face", + "Sort Name": "Garden", + "Persistent ID": "83A8B5D6EE8A9A39", + "Track Type": "Remote" + }, + { + "Track ID": "4597", + "Name": "Slowdiving", + "Artist": "Du\u00f1e, Crayon & Lossapardo", + "Album Artist": "Du\u00f1e & Crayon", + "Composer": "Seydou Ndiaye, Vincent Goazempis, Lorenzo Larue, Lossapardo & Crayon", + "Album": "Hundred Fifty Roses", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6978043", + "Total Time": "194157", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2020-08-09T16:51:25Z", + "Date Added": "2020-08-09T16:51:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3779313491", + "Play Date UTC": "2023-10-04T22:18:11Z", + "Skip Count": "3", + "Skip Date": "2021-09-23T20:01:34Z", + "Release Date": "2020-05-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hundred Fifty Roses", + "Sort Artist": "Du\u00f1e, Crayon & Lossapardo", + "Sort Name": "Slowdiving", + "Persistent ID": "2C6E9157B47A4A73", + "Track Type": "Remote" + }, + { + "Track ID": "4599", + "Name": "Wall", + "Artist": "LVRA", + "Album Artist": "LVRA", + "Composer": "undef", + "Album": "LVCID - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6318345", + "Total Time": "157668", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2020", + "Date Modified": "2020-08-09T17:14:00Z", + "Date Added": "2020-08-09T17:14:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3773757568", + "Play Date UTC": "2023-08-01T14:59:28Z", + "Skip Count": "1", + "Skip Date": "2020-08-12T22:15:39Z", + "Release Date": "2020-05-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "LVCID - EP", + "Sort Artist": "LVRA", + "Sort Name": "Wall", + "Persistent ID": "5F0E2BBF5251C97B", + "Track Type": "Remote" + }, + { + "Track ID": "4601", + "Name": "Always Look for the Helpers", + "Artist": "Akira the Don", + "Album Artist": "Akira the Don", + "Composer": "Adam Narkiewicz", + "Album": "Always Look for the Helpers - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6864280", + "Total Time": "191068", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-08-09T17:16:38Z", + "Date Added": "2020-08-09T17:16:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3783412514", + "Play Date UTC": "2023-11-21T08:55:14Z", + "Skip Count": "4", + "Skip Date": "2023-02-15T11:17:16Z", + "Release Date": "2020-04-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Always Look for the Helpers - Single", + "Sort Artist": "Akira the Don", + "Sort Name": "Always Look for the Helpers", + "Persistent ID": "C035539D7BEBB806", + "Track Type": "Remote" + }, + { + "Track ID": "4603", + "Name": "Into the Surf", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Foals", + "Album": "Everything Not Saved Will Be Lost Part II", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9615197", + "Total Time": "271338", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "9", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2020-08-12T16:33:44Z", + "Date Added": "2020-08-12T16:33:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3781385752", + "Play Date UTC": "2023-10-28T21:55:52Z", + "Skip Count": "1", + "Skip Date": "2022-07-21T06:58:57Z", + "Release Date": "2019-10-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Everything Not Saved Will Be Lost Part II", + "Sort Artist": "Foals", + "Sort Name": "Into the Surf", + "Persistent ID": "D162D3AF1D8DD889", + "Track Type": "Remote" + }, + { + "Track ID": "4605", + "Name": "Bad Connection", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Omarr Rambert & Tremeine Winfrey", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4130571", + "Total Time": "104493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T22:22:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781449005", + "Play Date UTC": "2023-10-29T15:30:05Z", + "Skip Count": "3", + "Skip Date": "2022-08-19T16:09:22Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Bad Connection", + "Persistent ID": "4DFF308C5FB57A2A", + "Track Type": "Remote" + }, + { + "Track ID": "4607", + "Name": "Drops of Sun", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Nick Stoubis & James Rim", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5172064", + "Total Time": "140229", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3783694720", + "Play Date UTC": "2023-11-24T15:18:40Z", + "Skip Count": "1", + "Skip Date": "2022-10-24T16:54:22Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Drops of Sun", + "Persistent ID": "99FEA632AA51A453", + "Track Type": "Remote" + }, + { + "Track ID": "4609", + "Name": "Photograph", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Brian Lee & Odessa Adlon", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5268756", + "Total Time": "141303", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3772366483", + "Play Date UTC": "2023-07-16T12:34:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Photograph", + "Persistent ID": "BF642B026C0A742C", + "Track Type": "Remote" + }, + { + "Track ID": "4611", + "Name": "Sunburnt", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell & Omarr Rambert", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6904985", + "Total Time": "188763", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3767693667", + "Play Date UTC": "2023-05-23T10:34:27Z", + "Skip Count": "1", + "Skip Date": "2022-04-28T18:47:41Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Sunburnt", + "Persistent ID": "3A315B36AABCB4D7", + "Track Type": "Remote" + }, + { + "Track ID": "4613", + "Name": "Endless Summer (feat. Raury)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell, Omarr Rambert & Raury Tullis", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7480052", + "Total Time": "209644", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780907144", + "Play Date UTC": "2023-10-23T08:59:04Z", + "Skip Count": -1, + "Skip Date": "2020-08-28T16:04:08Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Endless Summer (feat. Raury)", + "Persistent ID": "FC5F96A6A9FB96AA", + "Track Type": "Remote" + }, + { + "Track ID": "4615", + "Name": "Deep End", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Brian Lee", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8502886", + "Total Time": "239641", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3758386212", + "Play Date UTC": "2023-02-04T17:10:12Z", + "Skip Count": "3", + "Skip Date": "2021-08-19T17:29:19Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Deep End", + "Persistent ID": "251167FE80251FFE", + "Track Type": "Remote" + }, + { + "Track ID": "4617", + "Name": "Rainbow Bap", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell, Nick Stoubis, James Rim, Omarr Rambert & Brian Lee", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9912372", + "Total Time": "280308", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-15T15:56:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780844655", + "Play Date UTC": "2023-10-22T15:37:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-14T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Rainbow Bap", + "Persistent ID": "7BA73C55D9F03ABA", + "Track Type": "Remote" + }, + { + "Track ID": "4619", + "Name": "Falling for You (feat. Justin Bieber)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Justin Bieber, Josiah Bell, Nick Stoubis, Omarr Rambert & Jason Boyd", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8037884", + "Total Time": "222717", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T22:22:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3772522701", + "Play Date UTC": "2023-07-18T07:58:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Falling for You (feat. Justin Bieber)", + "Persistent ID": "37447F05C9E52835", + "Track Type": "Remote" + }, + { + "Track ID": "4621", + "Name": "LUCY!", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell, Nick Stoubis & Omarr Rambert", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4811363", + "Total Time": "127838", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T22:22:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3776169375", + "Play Date UTC": "2023-08-29T12:56:15Z", + "Skip Count": "1", + "Skip Date": "2020-08-28T15:33:32Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "LUCY!", + "Persistent ID": "964D253ED393BBEA", + "Track Type": "Remote" + }, + { + "Track ID": "4623", + "Name": "Muted Sunrise", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell, Nick Stoubis & Omarr Rambert", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5272802", + "Total Time": "142650", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783585964", + "Play Date UTC": "2023-11-23T09:06:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Muted Sunrise", + "Persistent ID": "04089102E8E74EE9", + "Track Type": "Remote" + }, + { + "Track ID": "4625", + "Name": "Cabin Fever", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Matthew Burns", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7019658", + "Total Time": "195215", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-15T15:56:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3782978071", + "Play Date UTC": "2023-11-16T08:14:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-07-23T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Cabin Fever", + "Persistent ID": "BA005BCBCD76D1B5", + "Track Type": "Remote" + }, + { + "Track ID": "4627", + "Name": "Young in Love", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell & Omarr Rambert", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10279506", + "Total Time": "291298", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3760293697", + "Play Date UTC": "2023-02-26T19:01:37Z", + "Skip Count": "1", + "Skip Date": "2022-03-16T07:53:19Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Young in Love", + "Persistent ID": "3052D0E2F99F1BE5", + "Track Type": "Remote" + }, + { + "Track ID": "4629", + "Name": "In the Hills", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Nick Stoubis & Mateo Arias", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5689137", + "Total Time": "152677", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T22:22:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3779191262", + "Play Date UTC": "2023-10-03T12:21:02Z", + "Skip Count": "2", + "Skip Date": "2023-10-22T15:28:26Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "In the Hills", + "Persistent ID": "BA71CE4AEE02DE5C", + "Track Type": "Remote" + }, + { + "Track ID": "4631", + "Name": "Everything", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Ashley Turner, Kevin Colquhoun, Matthew Jehu & Jahaan Sweet", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6213840", + "Total Time": "168901", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T22:22:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3752303121", + "Play Date UTC": "2022-11-26T07:25:21Z", + "Skip Count": "1", + "Skip Date": "2022-07-14T17:15:02Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Everything", + "Persistent ID": "C57FD8815DB2ABBC", + "Track Type": "Remote" + }, + { + "Track ID": "4633", + "Name": "Circa 2015", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell & Omarr Rambert", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4959445", + "Total Time": "131715", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3758189497", + "Play Date UTC": "2023-02-02T10:31:37Z", + "Skip Count": "1", + "Skip Date": "2022-08-13T10:09:32Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Circa 2015", + "Persistent ID": "32AA00F60A4E110A", + "Track Type": "Remote" + }, + { + "Track ID": "4635", + "Name": "The Birth of SYRE", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Nick Stoubis", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4953110", + "Total Time": "133967", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780776440", + "Play Date UTC": "2023-10-21T20:40:40Z", + "Skip Count": "1", + "Skip Date": "2021-04-03T14:31:07Z", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Birth of SYRE", + "Persistent ID": "DA46124DA84A18FA", + "Track Type": "Remote" + }, + { + "Track ID": "4637", + "Name": "Boys and Girls", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell & Omarr Rambert", + "Album": "CTV3: Cool Tape Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8098653", + "Total Time": "222033", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2020-08-15T15:56:17Z", + "Date Added": "2020-08-27T21:10:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3782979882", + "Play Date UTC": "2023-11-16T08:44:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CTV3: Cool Tape Vol. 3", + "Sort Artist": "Jaden", + "Sort Name": "Boys and Girls", + "Persistent ID": "A4C659CD97973001", + "Track Type": "Remote" + }, + { + "Track ID": "4639", + "Name": "Over Now", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Andrew Watt, Tommy Lee & Austin Post", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8837423", + "Total Time": "246987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2020-09-02T13:26:11Z", + "Date Added": "2020-09-02T13:26:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "63", + "Play Date": "3783059698", + "Play Date UTC": "2023-11-17T06:54:58Z", + "Skip Count": "2", + "Skip Date": "2023-01-08T22:32:58Z", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Over Now", + "Persistent ID": "E4D6115A10B068F5", + "Track Type": "Remote" + }, + { + "Track ID": "4641", + "Name": "edge of the world", + "Artist": "sophie meiers", + "Album Artist": "sophie meiers", + "Composer": "sophie meiers & Tom Stafford", + "Album": "you and me again - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7551753", + "Total Time": "219544", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2020-09-06T08:41:27Z", + "Date Added": "2020-09-06T08:41:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3781705629", + "Play Date UTC": "2023-11-01T14:47:09Z", + "Skip Count": "2", + "Skip Date": "2021-09-02T19:17:39Z", + "Release Date": "2020-08-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "you and me again - EP", + "Sort Artist": "sophie meiers", + "Sort Name": "edge of the world", + "Persistent ID": "4F6A77C84B6A5E79", + "Track Type": "Remote" + }, + { + "Track ID": "4643", + "Name": "NOTHING 4 FREE (feat. NAV)", + "Artist": "Gunna", + "Album Artist": "Gunna", + "Composer": "Andrew Franklin, Everett Romano, Navraj Goraya, Rex Kudo & Sergio Kitchens", + "Album": "WUNNA (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6056138", + "Total Time": "165013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "26", + "Year": "2020", + "Date Modified": "2020-09-13T12:21:56Z", + "Date Added": "2020-09-13T12:21:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3782981286", + "Play Date UTC": "2023-11-16T09:08:06Z", + "Skip Count": "2", + "Skip Date": "2022-08-21T12:17:22Z", + "Release Date": "2020-05-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WUNNA (Deluxe)", + "Sort Artist": "Gunna", + "Sort Name": "NOTHING 4 FREE (feat. NAV)", + "Persistent ID": "B79247608AC89327", + "Track Type": "Remote" + }, + { + "Track ID": "4645", + "Name": "Pull Me Under", + "Artist": "Dan D'Lion", + "Album Artist": "Dan D'Lion", + "Composer": "Dan Bartlett & Patrick James Pearson", + "Album": "When One Thing Leads To Another", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6774216", + "Total Time": "190400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2020", + "Date Modified": "2020-09-13T12:39:03Z", + "Date Added": "2020-09-13T12:39:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781685499", + "Play Date UTC": "2023-11-01T09:11:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-07-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "When One Thing Leads To Another", + "Sort Artist": "Dan D'Lion", + "Sort Name": "Pull Me Under", + "Persistent ID": "7C72473C01FD80A7", + "Track Type": "Remote" + }, + { + "Track ID": "4647", + "Name": "They Ain't You", + "Artist": "Tyla Yaweh", + "Album Artist": "Tyla Yaweh", + "Composer": "Tyler Brown, Jessie Lauren & Charles Edward Hugo", + "Album": "Heart Full of Rage", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6110268", + "Total Time": "167996", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2020-09-16T08:16:17Z", + "Date Added": "2020-09-16T08:16:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3770537095", + "Play Date UTC": "2023-06-25T08:24:55Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-02-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Heart Full of Rage", + "Sort Artist": "Tyla Yaweh", + "Sort Name": "They Ain't You", + "Persistent ID": "E0A693233F3EF8B7", + "Track Type": "Remote" + }, + { + "Track ID": "4649", + "Name": "4:44Am", + "Artist": "Tyla Yaweh", + "Album Artist": "Tyla Yaweh", + "Composer": "Tyla Yaweh", + "Album": "4:44Am - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5364250", + "Total Time": "146992", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2020-09-16T09:09:44Z", + "Date Added": "2020-09-16T09:09:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3772718118", + "Play Date UTC": "2023-07-20T14:15:18Z", + "Skip Count": "3", + "Skip Date": "2021-11-01T14:31:18Z", + "Release Date": "2017-06-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "4:44Am - Single", + "Sort Artist": "Tyla Yaweh", + "Sort Name": "4:44Am", + "Persistent ID": "BBC80BD4194E78B3", + "Track Type": "Remote" + }, + { + "Track ID": "4651", + "Name": "I Fall Apart", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, Carlo Montagnese & Billy Walsh", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7996692", + "Total Time": "223350", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2020-09-24T07:58:34Z", + "Date Added": "2020-09-24T07:58:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "99", + "Play Date": "3783006510", + "Play Date UTC": "2023-11-16T16:08:30Z", + "Skip Count": "1", + "Skip Date": "2020-11-26T23:02:50Z", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "I Fall Apart", + "Persistent ID": "FEDC9623E3F1495A", + "Track Type": "Remote" + }, + { + "Track ID": "4653", + "Name": "Spoil My Night (feat. Swae Lee)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Teddy Walton, Louis Bell, Austin Post, Khalif Brown & Adam Feeney", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7035164", + "Total Time": "194553", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2020-09-24T08:02:30Z", + "Date Added": "2020-09-24T08:02:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "77", + "Play Date": "3783059894", + "Play Date UTC": "2023-11-17T06:58:14Z", + "Skip Count": "3", + "Skip Date": "2022-03-24T10:52:50Z", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Spoil My Night (feat. Swae Lee)", + "Persistent ID": "C2AA05BE9942D20A", + "Track Type": "Remote" + }, + { + "Track ID": "4655", + "Name": "High Right Now", + "Artist": "Tyla Yaweh", + "Album Artist": "Tyla Yaweh", + "Composer": "Tyler Brown, Nasri Tony Atweh, Ramiro Padilla, Daniel Padilla, Fernando Garibay & Jason Wilkinson", + "Album": "Heart Full of Rage", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5955849", + "Total Time": "163168", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2020-09-28T09:38:54Z", + "Date Added": "2020-09-28T09:38:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "92", + "Play Date": "3780916229", + "Play Date UTC": "2023-10-23T11:30:29Z", + "Skip Count": "3", + "Skip Date": "2022-12-14T05:01:43Z", + "Release Date": "2019-02-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Heart Full of Rage", + "Sort Artist": "Tyla Yaweh", + "Sort Name": "High Right Now", + "Persistent ID": "A554B51CF5A9EFEF", + "Track Type": "Remote" + }, + { + "Track ID": "4657", + "Name": "Who Shot Johnny?", + "Artist": "Tyla Yaweh", + "Album Artist": "Tyla Yaweh", + "Composer": "Tyler Brown, Charles Misodi Njapa, Ramiro Padilla, Brittany Chykira Barber, Fernando Garibay & Jason Wilkinson", + "Album": "Heart Full of Rage", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5964645", + "Total Time": "165869", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2020-09-28T12:56:20Z", + "Date Added": "2020-09-28T12:56:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3760209415", + "Play Date UTC": "2023-02-25T19:36:55Z", + "Skip Count": -1, + "Skip Date": "2021-09-20T17:42:21Z", + "Release Date": "2019-02-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Heart Full of Rage", + "Sort Artist": "Tyla Yaweh", + "Sort Name": "Who Shot Johnny?", + "Persistent ID": "8A4517F0BBC35B9D", + "Track Type": "Remote" + }, + { + "Track ID": "4659", + "Name": "Go Flex", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, Ryan Vojtesak, Idan Kalai & Rex Kudo", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6556985", + "Total Time": "179603", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2020-09-28T13:54:33Z", + "Date Added": "2020-09-28T13:54:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "126", + "Play Date": "3783008602", + "Play Date UTC": "2023-11-16T16:43:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-04-21T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Go Flex", + "Persistent ID": "63437470185F19D3", + "Track Type": "Remote" + }, + { + "Track ID": "4661", + "Name": "Congratulations (feat. Quavo)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, Louis Bell, Adam Feeney, Quavious Marshall & Leland Wayne", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7953443", + "Total Time": "220285", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2020-09-28T13:54:34Z", + "Date Added": "2020-09-28T13:54:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "90", + "Play Date": "3783322109", + "Play Date UTC": "2023-11-20T07:48:29Z", + "Skip Count": "1", + "Skip Date": "2020-11-26T23:07:20Z", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Congratulations (feat. Quavo)", + "Persistent ID": "280CBE2FF7614A04", + "Track Type": "Remote" + }, + { + "Track ID": "4663", + "Name": "In Your Likeness", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid & Ryan Lott", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "12195710", + "Total Time": "357400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:09Z", + "Date Added": "2020-10-15T21:06:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3781386109", + "Play Date UTC": "2023-10-28T22:01:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "In Your Likeness", + "Persistent ID": "D9C805A6F8571317", + "Track Type": "Remote" + }, + { + "Track ID": "4665", + "Name": "Horizons Into Battlegrounds", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid & Tanguy Detable", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7790950", + "Total Time": "221827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:10Z", + "Date Added": "2020-09-29T21:23:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3762587739", + "Play Date UTC": "2023-03-25T08:15:39Z", + "Skip Count": "2", + "Skip Date": "2022-12-04T10:50:19Z", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "Horizons Into Battlegrounds", + "Persistent ID": "3702760E07F7F643", + "Track Type": "Remote" + }, + { + "Track ID": "4667", + "Name": "So Handsome Hello", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7985291", + "Total Time": "227493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:10Z", + "Date Added": "2020-10-15T21:06:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3761637445", + "Play Date UTC": "2023-03-14T08:17:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "So Handsome Hello", + "Persistent ID": "3F632A0705264F00", + "Track Type": "Remote" + }, + { + "Track ID": "4669", + "Name": "Shift", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7826004", + "Total Time": "230840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:10Z", + "Date Added": "2020-10-15T21:06:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3780685643", + "Play Date UTC": "2023-10-20T19:27:23Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "Shift", + "Persistent ID": "D7607C52B9769800", + "Track Type": "Remote" + }, + { + "Track ID": "4671", + "Name": "Drawn to You", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8786064", + "Total Time": "250293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:10Z", + "Date Added": "2020-10-15T21:06:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3776238516", + "Play Date UTC": "2023-08-30T08:08:36Z", + "Skip Count": "1", + "Skip Date": "2022-06-21T05:37:49Z", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "Drawn to You", + "Persistent ID": "DF0850D2BE0D845B", + "Track Type": "Remote" + }, + { + "Track ID": "4673", + "Name": "Minus Sixty One", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11010861", + "Total Time": "316213", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:10Z", + "Date Added": "2020-10-15T21:06:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3776150280", + "Play Date UTC": "2023-08-29T07:38:00Z", + "Skip Count": "4", + "Skip Date": "2023-06-15T12:46:01Z", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "Minus Sixty One", + "Persistent ID": "910EF1F53EE78E20", + "Track Type": "Remote" + }, + { + "Track ID": "4675", + "Name": "Highway 27", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid & Ryan Lott", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8247324", + "Total Time": "235653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:10Z", + "Date Added": "2020-10-15T21:06:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3783753145", + "Play Date UTC": "2023-11-25T07:32:25Z", + "Skip Count": "3", + "Skip Date": "2022-07-16T13:53:48Z", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "Highway 27", + "Persistent ID": "4F878678ACCDFBF1", + "Track Type": "Remote" + }, + { + "Track ID": "4677", + "Name": "Enemy", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid, Ryan Lott & Benjamin Esser", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8543907", + "Total Time": "244760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:10Z", + "Date Added": "2020-10-15T21:06:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3771944418", + "Play Date UTC": "2023-07-11T15:20:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "Enemy", + "Persistent ID": "376EC5A14A7B6A4D", + "Track Type": "Remote" + }, + { + "Track ID": "4679", + "Name": "Pale Yellow", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8871768", + "Total Time": "250040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-09-29T21:23:10Z", + "Date Added": "2020-09-29T21:23:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3783413194", + "Play Date UTC": "2023-11-21T09:06:34Z", + "Skip Count": "1", + "Skip Date": "2022-03-24T09:59:41Z", + "Release Date": "2020-06-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "Pale Yellow", + "Persistent ID": "4630B2EAE2A8B10A", + "Track Type": "Remote" + }, + { + "Track ID": "4681", + "Name": "say my name", + "Artist": "benny mayne", + "Album Artist": "benny mayne", + "Composer": "Benjamin Shubert", + "Album": "say my name - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6948961", + "Total Time": "193579", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2020-10-01T10:04:35Z", + "Date Added": "2020-10-01T10:04:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3767520935", + "Play Date UTC": "2023-05-21T10:35:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "say my name - Single", + "Sort Artist": "benny mayne", + "Sort Name": "say my name", + "Persistent ID": "CC30AEA87E3CFC67", + "Track Type": "Remote" + }, + { + "Track ID": "4683", + "Name": "Pope Is a Rockstar", + "Artist": "SALES", + "Album Artist": "SALES", + "Composer": "undef", + "Album": "Sales Lp", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6598318", + "Total Time": "187333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "15", + "Year": "2016", + "Date Modified": "2020-10-04T06:26:50Z", + "Date Added": "2020-10-04T06:26:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780846165", + "Play Date UTC": "2023-10-22T16:02:45Z", + "Skip Count": "2", + "Skip Date": "2021-11-09T14:25:46Z", + "Release Date": "2016-04-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sales Lp", + "Sort Artist": "SALES", + "Sort Name": "Pope Is a Rockstar", + "Persistent ID": "A51A33AF975090A7", + "Track Type": "Remote" + }, + { + "Track ID": "4685", + "Name": "3WW", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "RELAXER", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "11166700", + "Total Time": "300107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "8", + "Year": "2017", + "Date Modified": "2020-10-05T17:46:33Z", + "Date Added": "2020-10-05T17:46:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3782979004", + "Play Date UTC": "2023-11-16T08:30:04Z", + "Skip Count": "2", + "Skip Date": "2021-09-24T19:53:31Z", + "Release Date": "2017-03-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RELAXER", + "Sort Artist": "alt-J", + "Sort Name": "3WW", + "Persistent ID": "6F9EA574BA2EF4E4", + "Track Type": "Remote" + }, + { + "Track ID": "4687", + "Name": "Every Other Freckle", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "This Is All Yours", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7771826", + "Total Time": "216004", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2020-10-05T17:52:23Z", + "Date Added": "2020-10-05T17:52:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783411971", + "Play Date UTC": "2023-11-21T08:46:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-08-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "This Is All Yours", + "Sort Artist": "alt-J", + "Sort Name": "Every Other Freckle", + "Persistent ID": "E95DF4D832971C6F", + "Track Type": "Remote" + }, + { + "Track ID": "4689", + "Name": "Hunger of the Pine", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "This Is All Yours", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10621808", + "Total Time": "299711", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2020-10-05T17:54:36Z", + "Date Added": "2020-10-05T17:54:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3736496364", + "Play Date UTC": "2022-05-27T08:39:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Is All Yours", + "Sort Artist": "alt-J", + "Sort Name": "Hunger of the Pine", + "Persistent ID": "CD663F2EEF8AB732", + "Track Type": "Remote" + }, + { + "Track ID": "4691", + "Name": "BUFFALO (feat. Shane Powers)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Cherry Bomb + Instrumentals", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6073125", + "Total Time": "159964", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2020-10-06T08:49:51Z", + "Date Added": "2020-10-06T08:49:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781317674", + "Play Date UTC": "2023-10-28T03:01:14Z", + "Skip Count": "4", + "Skip Date": "2023-10-12T16:42:24Z", + "Release Date": "2015-04-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cherry Bomb + Instrumentals", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "BUFFALO (feat. Shane Powers)", + "Persistent ID": "488E173A6BED61C9", + "Track Type": "Remote" + }, + { + "Track ID": "4693", + "Name": "CHERRY BOMB", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Cherry Bomb + Instrumentals", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9996015", + "Total Time": "269352", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2020-10-06T09:06:08Z", + "Date Added": "2020-10-06T09:06:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3772085869", + "Play Date UTC": "2023-07-13T06:37:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-04-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cherry Bomb + Instrumentals", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "CHERRY BOMB", + "Persistent ID": "BE7429ECD06E4168", + "Track Type": "Remote" + }, + { + "Track ID": "4695", + "Name": "Start a Riot", + "Artist": "DUCKWRTH & Shaboozey", + "Album Artist": "Various Artists", + "Composer": "Breyan Isaac, Jared Lee, Collins Chibueze & Alec Appoloni", + "Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6327964", + "Total Time": "171465", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-10-07T06:52:11Z", + "Date Added": "2020-10-07T06:52:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3778764096", + "Play Date UTC": "2023-09-28T13:41:36Z", + "Skip Count": "2", + "Skip Date": "2020-12-01T19:50:19Z", + "Release Date": "2018-12-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Spider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture)", + "Sort Artist": "DUCKWRTH & Shaboozey", + "Sort Name": "Start a Riot", + "Persistent ID": "5372C14C7365F078", + "Track Type": "Remote" + }, + { + "Track ID": "4697", + "Name": "Where This Flower Blooms (feat. Frank Ocean)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma & Frank Ocean", + "Album": "Flower Boy", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7097140", + "Total Time": "194934", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2020-10-08T08:31:30Z", + "Date Added": "2020-10-08T08:31:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781617144", + "Play Date UTC": "2023-10-31T14:12:24Z", + "Skip Count": "1", + "Skip Date": "2020-12-23T07:00:14Z", + "Release Date": "2017-07-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Flower Boy", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Where This Flower Blooms (feat. Frank Ocean)", + "Persistent ID": "40C3F492C28508DC", + "Track Type": "Remote" + }, + { + "Track ID": "4699", + "Name": "I Ain't Got Time!", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Flower Boy", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7416600", + "Total Time": "206267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2020-10-08T12:47:40Z", + "Date Added": "2020-10-08T12:47:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783493795", + "Play Date UTC": "2023-11-22T07:29:55Z", + "Skip Count": "2", + "Skip Date": "2023-07-19T15:16:26Z", + "Release Date": "2017-07-19T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Flower Boy", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "I Ain't Got Time!", + "Persistent ID": "D0DF8BB7F3533078", + "Track Type": "Remote" + }, + { + "Track ID": "4701", + "Name": "911 / Mr. Lonely (feat. Frank Ocean and Steve Lacy)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Raymond Calhoun, See Sub-songs, Tyler Okonma & Frank Ocean", + "Album": "Flower Boy", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9179655", + "Total Time": "255651", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2020-10-08T12:48:32Z", + "Date Added": "2020-10-08T12:48:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3783595585", + "Play Date UTC": "2023-11-23T11:46:25Z", + "Skip Count": "3", + "Skip Date": "2021-01-22T16:04:18Z", + "Release Date": "2017-07-06T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Flower Boy", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "911 / Mr. Lonely (feat. Frank Ocean and Steve Lacy)", + "Persistent ID": "D34D5307E7D19800", + "Track Type": "Remote" + }, + { + "Track ID": "4703", + "Name": "Foreword (feat. Rex Orange County)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Michael Karoli, Jaki Liebezeit, Irmin Schmidt, Schuering, Damo Suzuki, Tyler Okonma & Alex O'Connor", + "Album": "Flower Boy", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7255639", + "Total Time": "194070", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2020-10-09T09:08:22Z", + "Date Added": "2020-10-09T09:08:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3779239202", + "Play Date UTC": "2023-10-04T01:40:02Z", + "Skip Count": "2", + "Skip Date": "2022-09-17T05:41:33Z", + "Release Date": "2017-07-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Flower Boy", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Foreword (feat. Rex Orange County)", + "Persistent ID": "BE78B64FCF1002CD", + "Track Type": "Remote" + }, + { + "Track ID": "4705", + "Name": "Boredom (feat. Rex Orange County and Anna of the North)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Flower Boy", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11218201", + "Total Time": "320730", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2020-10-09T09:36:31Z", + "Date Added": "2020-10-09T09:36:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3766770155", + "Play Date UTC": "2023-05-12T18:02:35Z", + "Skip Count": "1", + "Skip Date": "2022-09-04T16:06:23Z", + "Release Date": "2017-07-12T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Flower Boy", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Boredom (feat. Rex Orange County and Anna of the North)", + "Persistent ID": "B591D4E74750F4B5", + "Track Type": "Remote" + }, + { + "Track ID": "4707", + "Name": "Holy", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "Dwayne Carter, Daryl Harleaux & John Fitch", + "Album": "Tha Carter V (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8450306", + "Total Time": "235769", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "33", + "Year": "2020", + "Date Modified": "2020-10-31T13:05:01Z", + "Date Added": "2020-10-31T13:05:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3780133535", + "Play Date UTC": "2023-10-14T10:05:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-09-25T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tha Carter V (Deluxe)", + "Sort Artist": "Lil Wayne", + "Sort Name": "Holy", + "Persistent ID": "4F7A6C80BCF89B1C", + "Track Type": "Remote" + }, + { + "Track ID": "4709", + "Name": "Dead Butterflies (feat. Kano and Roxani Arias)", + "Artist": "Gorillaz", + "Album Artist": "Gorillaz", + "Composer": "D. Albarn, D. Gayle, K. Robinson, M. Middlebrooks, M. Williams, R. ARIAS & R. Kabaka Jr.", + "Album": "Song Machine, Season One: Strange Timez (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9619061", + "Total Time": "273627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2020-10-31T13:11:32Z", + "Date Added": "2020-10-31T13:11:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3780485362", + "Play Date UTC": "2023-10-18T11:49:22Z", + "Skip Count": "2", + "Skip Date": "2021-09-23T19:30:00Z", + "Release Date": "2020-10-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Song Machine, Season One: Strange Timez (Deluxe)", + "Sort Artist": "Gorillaz", + "Sort Name": "Dead Butterflies (feat. Kano and Roxani Arias)", + "Persistent ID": "29990E805B871493", + "Track Type": "Remote" + }, + { + "Track ID": "4711", + "Name": "Take Me Apart", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "Chill - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8579615", + "Total Time": "240130", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2019", + "Date Modified": "2020-10-31T14:48:56Z", + "Date Added": "2020-10-31T14:48:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3780393697", + "Play Date UTC": "2023-10-17T10:21:37Z", + "Skip Count": "1", + "Skip Date": "2023-02-14T19:49:29Z", + "Release Date": "2019-11-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Chill - EP", + "Sort Artist": "SYML", + "Sort Name": "Take Me Apart", + "Persistent ID": "776BB941F0D3CB76", + "Track Type": "Remote" + }, + { + "Track ID": "4713", + "Name": "Said N Done", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "She'yaa Bin Abraham-Joseph, Leland Wayne, Terry Alexander, Barry Eastmond, Wayne Braithwaite & Stephanie Mills", + "Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8347510", + "Total Time": "231831", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "15", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2020-11-01T10:30:28Z", + "Date Added": "2020-11-01T10:30:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3781203598", + "Play Date UTC": "2023-10-26T19:19:58Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Said N Done", + "Persistent ID": "19BB7BC5FFBEB880", + "Track Type": "Remote" + }, + { + "Track ID": "4715", + "Name": "Win, Lose or Draw (feat. Quentin Miller)", + "Artist": "Gucci Mane", + "Album Artist": "Gucci Mane", + "Composer": "Quentin Miller, Radric Davis & Samuel Gloade", + "Album": "So Icy Gang, Vol. 1", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "6193970", + "Total Time": "168580", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "19", + "Year": "2020", + "Date Modified": "2020-11-01T10:36:27Z", + "Date Added": "2020-11-01T10:36:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3741467790", + "Play Date UTC": "2022-07-23T21:36:30Z", + "Skip Count": "1", + "Skip Date": "2021-09-20T17:33:36Z", + "Release Date": "2020-10-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Icy Gang, Vol. 1", + "Sort Artist": "Gucci Mane", + "Sort Name": "Win, Lose or Draw (feat. Quentin Miller)", + "Persistent ID": "BAC41C08B2E08655", + "Track Type": "Remote" + }, + { + "Track ID": "4717", + "Name": "I Wish I Was A...", + "Artist": "NOISY", + "Album Artist": "NOISY", + "Composer": "Cody Matthews, Connor Cheetham & Spencer Tobias-Williams", + "Album": "I Wish I Was A... - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6953180", + "Total Time": "195247", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2020", + "Date Modified": "2020-11-01T10:43:53Z", + "Date Added": "2020-11-01T10:43:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3772717505", + "Play Date UTC": "2023-07-20T14:05:05Z", + "Skip Count": "2", + "Skip Date": "2023-05-31T17:02:05Z", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Wish I Was A... - EP", + "Sort Artist": "NOISY", + "Sort Name": "I Wish I Was A...", + "Persistent ID": "0FD5814776E3ED66", + "Track Type": "Remote" + }, + { + "Track ID": "4719", + "Name": "Reactor", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "S16", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11692270", + "Total Time": "339467", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2020-11-01T11:58:21Z", + "Date Added": "2020-11-01T11:58:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3781200687", + "Play Date UTC": "2023-10-26T18:31:27Z", + "Skip Count": "5", + "Skip Date": "2022-10-17T13:55:58Z", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "3437", + "Sort Album": "S16", + "Sort Artist": "Woodkid", + "Sort Name": "Reactor", + "Persistent ID": "AF900803A2C5FF47", + "Track Type": "Remote" + }, + { + "Track ID": "4721", + "Name": "Jb", + "Artist": "nobody.one", + "Album Artist": "nobody.one", + "Composer": "undef", + "Album": "Head Movies", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "10708970", + "Total Time": "306907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2010", + "Date Modified": "2020-11-08T12:12:07Z", + "Date Added": "2020-11-08T12:12:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783358702", + "Play Date UTC": "2023-11-20T17:58:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2010-10-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Head Movies", + "Sort Artist": "nobody.one", + "Sort Name": "Jb", + "Persistent ID": "9F1B04F578C3EE52", + "Track Type": "Remote" + }, + { + "Track ID": "4723", + "Name": "Jamba (feat. Hodgy Beats)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma & Gerard Long", + "Album": "Wolf", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7583123", + "Total Time": "212500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "18", + "Year": "2013", + "Date Modified": "2020-11-09T08:41:59Z", + "Date Added": "2020-11-09T08:41:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3773540736", + "Play Date UTC": "2023-07-30T02:45:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-04-01T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wolf", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Jamba (feat. Hodgy Beats)", + "Persistent ID": "83AB2443B8FCE505", + "Track Type": "Remote" + }, + { + "Track ID": "4725", + "Name": "Airplane", + "Artist": "WYS & Ouska", + "Album Artist": "WYS", + "Composer": "Valentin Chauveau & Valentin Villarubias", + "Album": "Airplane - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5126638", + "Total Time": "138857", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-11-09T22:07:01Z", + "Date Added": "2020-11-09T22:07:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783664497", + "Play Date UTC": "2023-11-24T06:54:57Z", + "Skip Count": "2", + "Skip Date": "2020-12-06T21:28:14Z", + "Release Date": "2020-10-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Airplane - Single", + "Sort Artist": "WYS & Ouska", + "Sort Name": "Airplane", + "Persistent ID": "3F48ACBE9D3FF87E", + "Track Type": "Remote" + }, + { + "Track ID": "4727", + "Name": "Mind Games", + "Artist": "Verzache", + "Album Artist": "Verzache", + "Composer": "Verzache", + "Album": "Thought Pool", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6876296", + "Total Time": "196710", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "8", + "Year": "2018", + "Date Modified": "2020-11-10T13:26:15Z", + "Date Added": "2020-11-10T13:26:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3767077350", + "Play Date UTC": "2023-05-16T07:22:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-10-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Thought Pool", + "Sort Artist": "Verzache", + "Sort Name": "Mind Games", + "Persistent ID": "284BC8AFC800FF80", + "Track Type": "Remote" + }, + { + "Track ID": "4729", + "Name": "Peso", + "Artist": "A$AP Rocky", + "Album Artist": "A$AP Rocky", + "Composer": "James Harris, Rakim Mayers, Terry Lewis & Tyshaun Holloway", + "Album": "Peso - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6114978", + "Total Time": "170307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2011", + "Date Modified": "2020-11-11T18:26:11Z", + "Date Added": "2020-11-11T18:26:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781531634", + "Play Date UTC": "2023-10-30T14:27:14Z", + "Skip Count": "1", + "Skip Date": "2021-09-20T17:22:55Z", + "Release Date": "2011-10-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Peso - Single", + "Sort Artist": "A$AP Rocky", + "Sort Name": "Peso", + "Persistent ID": "CC7ABF88034F6D1C", + "Track Type": "Remote" + }, + { + "Track ID": "4731", + "Name": "Sam (Is Dead) [feat. Domo Genesis & Tyler, The Creator]", + "Artist": "Odd Future", + "Album Artist": "Odd Future", + "Composer": "D. Cole & Tyler Okonma", + "Album": "The OF Tape, Vol. 2", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7244038", + "Total Time": "202067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "18", + "Year": "2012", + "Date Modified": "2020-11-11T18:28:31Z", + "Date Added": "2020-11-11T18:28:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3757273400", + "Play Date UTC": "2023-01-22T20:03:20Z", + "Skip Count": "2", + "Skip Date": "2023-10-26T16:13:18Z", + "Release Date": "2012-03-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "OF Tape, Vol. 2", + "Sort Artist": "Odd Future", + "Sort Name": "Sam (Is Dead) [feat. Domo Genesis & Tyler, The Creator]", + "Persistent ID": "07C539955AB903B3", + "Track Type": "Remote" + }, + { + "Track ID": "4733", + "Name": "GHOST (feat. Christian Rich)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Omarr Rambert, Kehinde Hassan, Taiwo Hassan, Michael Mule, Isaac DeBoni & Justin Lewis Elwin", + "Album": "GHOST (feat. Christian Rich) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4786624", + "Total Time": "129730", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2020-11-11T18:56:01Z", + "Date Added": "2020-11-11T18:56:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3773533837", + "Play Date UTC": "2023-07-30T00:50:37Z", + "Skip Count": "3", + "Skip Date": "2020-12-05T09:46:55Z", + "Release Date": "2018-06-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "GHOST (feat. Christian Rich) - Single", + "Sort Artist": "Jaden", + "Sort Name": "GHOST (feat. Christian Rich)", + "Persistent ID": "8D184DCB246D837E", + "Track Type": "Remote" + }, + { + "Track ID": "4735", + "Name": "The Calling", + "Artist": "Zack Hemsey", + "Album Artist": "Zack Hemsey", + "Composer": "undef", + "Album": "The Way", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7190650", + "Total Time": "202318", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2011", + "Date Modified": "2020-11-13T10:38:13Z", + "Date Added": "2020-11-13T10:38:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783593067", + "Play Date UTC": "2023-11-23T11:04:27Z", + "Skip Count": "1", + "Skip Date": "2022-02-10T14:50:02Z", + "Release Date": "2011-06-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Way", + "Sort Artist": "Zack Hemsey", + "Sort Name": "Calling", + "Persistent ID": "07B8F0612BEB7434", + "Track Type": "Remote" + }, + { + "Track ID": "4737", + "Name": "Fuck it I love you", + "Artist": "Lana Del Rey", + "Album Artist": "Lana Del Rey", + "Composer": "Lana Del Rey & Jack Antonoff", + "Album": "Norman Fucking Rockwell!", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7792202", + "Total Time": "218288", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2019", + "Date Modified": "2020-11-13T11:15:23Z", + "Date Added": "2020-11-13T11:15:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3766235996", + "Play Date UTC": "2023-05-06T13:39:56Z", + "Skip Count": "1", + "Skip Date": "2022-04-16T23:15:54Z", + "Release Date": "2019-08-16T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Norman Fucking Rockwell!", + "Sort Artist": "Lana Del Rey", + "Sort Name": "Fuck it I love you", + "Persistent ID": "126C0005A0EB1647", + "Track Type": "Remote" + }, + { + "Track ID": "4739", + "Name": "Sunset", + "Artist": "The xx", + "Album Artist": "The xx", + "Composer": "Oliver Sim & Romy Madley Croft", + "Album": "Coexist", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7851255", + "Total Time": "218587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2012", + "Date Modified": "2020-11-13T14:09:37Z", + "Date Added": "2020-11-13T14:09:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3782993397", + "Play Date UTC": "2023-11-16T12:29:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-09-05T07:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "60", + "Sort Album": "Coexist", + "Sort Artist": "xx", + "Sort Name": "xx", + "Persistent ID": "Sunset", + "Track Type": "A1490CB2D8DC5CB1" + }, + { + "Track ID": "4741", + "Name": "Litost", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin", + "Album": "Love Songs Drug Songs - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11126942", + "Total Time": "321107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "2013", + "Date Modified": "2020-11-13T14:21:59Z", + "Date Added": "2020-11-13T14:21:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783667342", + "Play Date UTC": "2023-11-24T07:42:22Z", + "Skip Count": "1", + "Skip Date": "2021-09-29T09:27:17Z", + "Release Date": "2012-01-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Love Songs Drug Songs - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Litost", + "Persistent ID": "14A594AD012B88E1", + "Track Type": "Remote" + }, + { + "Track ID": "4743", + "Name": "The Deep, The Dark", + "Artist": "Tamer", + "Album Artist": "Tamer", + "Composer": "Brian Grayson Sanders", + "Album": "The Deep, The Dark - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5026042", + "Total Time": "136000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2020-11-13T15:32:05Z", + "Date Added": "2020-11-13T15:32:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3767611855", + "Play Date UTC": "2023-05-22T11:50:55Z", + "Skip Count": "1", + "Skip Date": "2022-06-24T11:46:37Z", + "Release Date": "2019-09-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Deep, The Dark - Single", + "Sort Artist": "Tamer", + "Sort Name": "Deep, The Dark", + "Persistent ID": "00A9943247FDDDE6", + "Track Type": "Remote" + }, + { + "Track ID": "4745", + "Name": "B\u00e2tard", + "Artist": "Stromae", + "Album Artist": "Stromae", + "Composer": "Stromae", + "Album": "Racine carr\u00e9e", + "Genre": "French Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7518962", + "Total Time": "208878", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2013", + "Date Modified": "2020-11-13T19:04:44Z", + "Date Added": "2020-11-13T19:04:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3782885774", + "Play Date UTC": "2023-11-15T06:36:14Z", + "Skip Count": "4", + "Skip Date": "2022-09-12T05:46:59Z", + "Release Date": "2013-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Racine carr\u00e9e", + "Sort Artist": "Stromae", + "Sort Name": "B\u00e2tard", + "Persistent ID": "A8F5AA63AA6CC60F", + "Track Type": "Remote" + }, + { + "Track ID": "4747", + "Name": "Formidable", + "Artist": "Stromae", + "Album Artist": "Stromae", + "Composer": "Stromae", + "Album": "Formidable - Single", + "Genre": "French Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7716582", + "Total Time": "214678", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2013", + "Date Modified": "2020-11-13T20:13:16Z", + "Date Added": "2020-11-13T20:13:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3768289993", + "Play Date UTC": "2023-05-30T08:13:13Z", + "Skip Count": "3", + "Skip Date": "2023-05-17T16:13:14Z", + "Release Date": "2013-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Formidable - Single", + "Sort Artist": "Stromae", + "Sort Name": "Formidable", + "Persistent ID": "9B0D4EE1175D03B4", + "Track Type": "Remote" + }, + { + "Track ID": "4749", + "Name": "Godzilla (feat. Juice WRLD)", + "Artist": "Eminem", + "Album Artist": "Eminem", + "Composer": "M. Mathers, L. Resto, D. Doman, J. Higgins & A. Villasana", + "Album": "Music To Be Murdered By", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7497305", + "Total Time": "210800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "20", + "Year": "2020", + "Date Modified": "2020-11-13T21:24:41Z", + "Date Added": "2020-11-13T21:24:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3770537922", + "Play Date UTC": "2023-06-25T08:38:42Z", + "Skip Count": "1", + "Skip Date": "2021-04-02T21:53:06Z", + "Release Date": "2020-01-17T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Music To Be Murdered By", + "Sort Artist": "Eminem", + "Sort Name": "Godzilla (feat. Juice WRLD)", + "Persistent ID": "BD5AE8E100A67395", + "Track Type": "Remote" + }, + { + "Track ID": "4751", + "Name": "Life Is Short", + "Artist": "Ski Mask the Slump God", + "Album Artist": "Ski Mask the Slump God", + "Composer": "undef", + "Album": "Life Is Short - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5352962", + "Total Time": "140657", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2020-11-14T20:14:34Z", + "Date Added": "2020-11-14T20:14:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3776241861", + "Play Date UTC": "2023-08-30T09:04:21Z", + "Skip Count": "2", + "Skip Date": "2022-05-25T11:20:32Z", + "Release Date": "2016-11-04T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life Is Short - Single", + "Sort Artist": "Ski Mask the Slump God", + "Sort Name": "Life Is Short", + "Persistent ID": "CDB014DE7B538217", + "Track Type": "Remote" + }, + { + "Track ID": "4753", + "Name": "Wassup Bro!", + "Artist": "Craig Xen", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "XXXTENTACION Presents: Members Only, Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5217912", + "Total Time": "137107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2020-11-15T15:34:54Z", + "Date Added": "2020-11-15T15:34:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3768502721", + "Play Date UTC": "2023-06-01T19:18:41Z", + "Skip Count": "5", + "Skip Date": "2023-02-06T09:11:42Z", + "Release Date": "2017-06-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXXTENTACION Presents: Members Only, Vol. 3", + "Sort Artist": "Craig Xen", + "Sort Name": "Wassup Bro!", + "Persistent ID": "2F23B250C83C5770", + "Track Type": "Remote" + }, + { + "Track ID": "4755", + "Name": "Sunflower", + "Artist": "Rex Orange County", + "Album Artist": "Rex Orange County", + "Composer": "Ben Ash & Alex O'Connor", + "Album": "Sunflower - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8915734", + "Total Time": "252231", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2020-11-19T14:23:07Z", + "Date Added": "2020-11-19T14:23:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3773847595", + "Play Date UTC": "2023-08-02T15:59:55Z", + "Skip Count": "2", + "Skip Date": "2022-10-13T08:10:21Z", + "Release Date": "2017-03-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunflower - Single", + "Sort Artist": "Rex Orange County", + "Sort Name": "Sunflower", + "Persistent ID": "72929614297E81B7", + "Track Type": "Remote" + }, + { + "Track ID": "4757", + "Name": "Snail", + "Artist": "BENEE", + "Album Artist": "BENEE", + "Composer": "Stella Rose Bennett & Josh Fountain", + "Album": "Hey u x", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6527858", + "Total Time": "180357", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2020", + "Date Modified": "2020-11-22T18:20:31Z", + "Date Added": "2020-11-22T18:20:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3783671032", + "Play Date UTC": "2023-11-24T08:43:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hey u x", + "Sort Artist": "BENEE", + "Sort Name": "Snail", + "Persistent ID": "4338C14FA7AD5464", + "Track Type": "Remote" + }, + { + "Track ID": "4759", + "Name": "Zack and Codeine", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Scott Storch, Diego Ave, Louis Bell & Austin Post", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7365135", + "Total Time": "204355", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2020-11-29T11:20:00Z", + "Date Added": "2020-11-29T11:20:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "110", + "Play Date": "3783781971", + "Play Date UTC": "2023-11-25T15:32:51Z", + "Skip Count": "6", + "Skip Date": "2022-04-16T22:47:25Z", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Zack and Codeine", + "Persistent ID": "B3FE25BAF76C747F", + "Track Type": "Remote" + }, + { + "Track ID": "4761", + "Name": "BUTTERFLY EFFECT", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster, Shane Lindstrom & Donald Paton", + "Album": "ASTROWORLD", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7032654", + "Total Time": "190557", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2020-12-01T13:32:43Z", + "Date Added": "2020-12-01T13:32:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "70", + "Play Date": "3783683570", + "Play Date UTC": "2023-11-24T12:12:50Z", + "Skip Count": "3", + "Skip Date": "2022-01-03T18:37:03Z", + "Release Date": "2017-05-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ASTROWORLD", + "Sort Artist": "Travis Scott", + "Sort Name": "BUTTERFLY EFFECT", + "Persistent ID": "5960D3DB6823C57A", + "Track Type": "Remote" + }, + { + "Track ID": "4763", + "Name": "CHopstix", + "Artist": "ScHoolboy Q & Travis Scott", + "Album Artist": "ScHoolboy Q", + "Composer": "Q. Hanley, J. Webster II, K. Duckworth & D. Natche", + "Album": "CrasH Talk", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6574831", + "Total Time": "180449", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2020-12-05T06:56:18Z", + "Date Added": "2020-12-05T06:56:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "55", + "Play Date": "3778772333", + "Play Date UTC": "2023-09-28T15:58:53Z", + "Skip Count": "4", + "Skip Date": "2022-10-09T14:13:02Z", + "Release Date": "2019-04-07T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CrasH Talk", + "Sort Artist": "ScHoolboy Q & Travis Scott", + "Sort Name": "CHopstix", + "Persistent ID": "3FD77274114B2F3F", + "Track Type": "Remote" + }, + { + "Track ID": "4765", + "Name": "goosebumps", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster, Kendrick Duckworth, Ronald LaTour, Tim Gomringer, Kevin Gomringer & Daveon Jackson", + "Album": "Birds in the Trap Sing McKnight", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8606720", + "Total Time": "243837", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2020-12-05T07:24:23Z", + "Date Added": "2020-12-05T07:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3781355571", + "Play Date UTC": "2023-10-28T13:32:51Z", + "Skip Count": "2", + "Skip Date": "2022-10-09T15:18:33Z", + "Release Date": "2016-09-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Birds in the Trap Sing McKnight", + "Sort Artist": "Travis Scott", + "Sort Name": "goosebumps", + "Persistent ID": "8C4476C48D789BC9", + "Track Type": "Remote" + }, + { + "Track ID": "4767", + "Name": "Smile", + "Artist": "Juice WRLD & The Weeknd", + "Album Artist": "Juice WRLD", + "Composer": "Nick Mira, Abel Tesfaye, Cody Rounds, Danny L Snodgrass & Jarad Higgins", + "Album": "Legends Never Die", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7106482", + "Total Time": "196180", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2020-12-05T07:29:21Z", + "Date Added": "2020-12-05T07:29:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3767209061", + "Play Date UTC": "2023-05-17T19:57:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Legends Never Die", + "Sort Artist": "Juice WRLD & The Weeknd", + "Sort Name": "Smile", + "Persistent ID": "69C791727FD09C97", + "Track Type": "Remote" + }, + { + "Track ID": "4769", + "Name": "Borrowed Love (feat. Swae Lee & Wizkid)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Leland Wayne, Khalif Malikibnsham Brown, Ayodeji Balogun, Mary Lou Cross & Johnnie Lee Frierson", + "Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8123996", + "Total Time": "230234", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-12-05T08:30:26Z", + "Date Added": "2020-12-05T08:30:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "160", + "Play Date": "3776256929", + "Play Date UTC": "2023-08-30T13:15:29Z", + "Skip Count": "6", + "Skip Date": "2022-11-10T19:15:20Z", + "Release Date": "2018-11-02T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Sort Artist": "Metro Boomin", + "Sort Name": "Borrowed Love (feat. Swae Lee & Wizkid)", + "Persistent ID": "C86441EF8555AB7D", + "Track Type": "Remote" + }, + { + "Track ID": "4771", + "Name": "Everyday (feat. Rod Stewart, Miguel & Mark Ronson)", + "Artist": "A$AP Rocky", + "Album Artist": "Various Artists", + "Composer": "Mark Ronson, Rakim Mayers & David Keith Bentley", + "Album": "Keep Calm & Chillout", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9078689", + "Total Time": "261027", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2020-12-05T09:44:41Z", + "Date Added": "2020-12-05T09:44:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3778767602", + "Play Date UTC": "2023-09-28T14:40:02Z", + "Skip Count": "2", + "Skip Date": "2022-07-28T10:37:15Z", + "Release Date": "2015-05-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Keep Calm & Chillout", + "Sort Artist": "A$AP Rocky", + "Sort Name": "Everyday (feat. Rod Stewart, Miguel & Mark Ronson)", + "Persistent ID": "FD52722A818B53F7", + "Track Type": "Remote" + }, + { + "Track ID": "4773", + "Name": "L$D", + "Artist": "A$AP Rocky", + "Album Artist": "A$AP Rocky", + "Composer": "N/A", + "Album": "AT.LONG.LAST.A$AP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8606043", + "Total Time": "238314", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2015", + "Date Modified": "2020-12-05T10:20:04Z", + "Date Added": "2020-12-05T10:20:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3781437662", + "Play Date UTC": "2023-10-29T12:21:02Z", + "Skip Count": "2", + "Skip Date": "2021-07-09T16:33:27Z", + "Release Date": "2015-05-21T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "AT.LONG.LAST.A$AP", + "Sort Artist": "A$AP Rocky", + "Sort Name": "L$D", + "Persistent ID": "36AFE2FB4F35961F", + "Track Type": "Remote" + }, + { + "Track ID": "4775", + "Name": "Ric Flair Drip", + "Artist": "Offset & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Kiari Cephus, Leland Wayne & Bijan", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6219925", + "Total Time": "172800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2020-12-05T10:33:06Z", + "Date Added": "2020-12-05T10:33:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3780564596", + "Play Date UTC": "2023-10-19T09:49:56Z", + "Skip Count": "2", + "Skip Date": "2022-08-06T10:32:38Z", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "Offset & Metro Boomin", + "Sort Name": "Ric Flair Drip", + "Persistent ID": "BE6F17207F90AB65", + "Track Type": "Remote" + }, + { + "Track ID": "4777", + "Name": "Ghostface Killers (feat. Travis Scott)", + "Artist": "21 Savage, Offset & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Shayaa Joseph, Kiari Cephus, Leland Wayne & Jacques Webster", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9386314", + "Total Time": "268933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2020-12-05T10:35:51Z", + "Date Added": "2020-12-05T10:35:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "73", + "Play Date": "3767985881", + "Play Date UTC": "2023-05-26T19:44:41Z", + "Skip Count": "8", + "Skip Date": "2022-06-01T14:16:12Z", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "21 Savage, Offset & Metro Boomin", + "Sort Name": "Ghostface Killers (feat. Travis Scott)", + "Persistent ID": "1BCB2961D6CE8379", + "Track Type": "Remote" + }, + { + "Track ID": "4779", + "Name": "Little Deaths", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Little Deaths - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9568983", + "Total Time": "256920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-12-05T23:30:04Z", + "Date Added": "2020-12-05T23:30:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3783679874", + "Play Date UTC": "2023-11-24T11:11:14Z", + "Skip Count": "2", + "Skip Date": "2022-08-18T19:54:12Z", + "Release Date": "2020-12-04T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Little Deaths - Single", + "Sort Artist": "Sir Sly", + "Sort Name": "Little Deaths", + "Persistent ID": "8572C3B271DB3910", + "Track Type": "Remote" + }, + { + "Track ID": "4781", + "Name": "GOTTI", + "Artist": "6ix9ine", + "Album Artist": "6ix9ine", + "Composer": "6ix9ine", + "Album": "DAY69: Graduation Day", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5956532", + "Total Time": "166852", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-06T22:09:08Z", + "Date Added": "2020-12-06T22:09:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "71", + "Play Date": "3773753656", + "Play Date UTC": "2023-08-01T13:54:16Z", + "Skip Count": "7", + "Skip Date": "2022-10-09T15:06:21Z", + "Release Date": "2018-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "DAY69: Graduation Day", + "Sort Artist": "6ix9ine", + "Sort Name": "GOTTI", + "Persistent ID": "BA9925EFDB916C26", + "Track Type": "Remote" + }, + { + "Track ID": "4783", + "Name": "Big City Life", + "Artist": "Mattafix", + "Album Artist": "Mattafix", + "Composer": "undef", + "Album": "Signs of a Struggle", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8444633", + "Total Time": "240893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "14", + "Year": "2005", + "Date Modified": "2020-12-06T22:22:48Z", + "Date Added": "2020-12-06T22:22:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3761065007", + "Play Date UTC": "2023-03-07T17:16:47Z", + "Skip Count": "1", + "Skip Date": "2021-02-28T16:21:12Z", + "Release Date": "2005-10-30T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Signs of a Struggle", + "Sort Artist": "Mattafix", + "Sort Name": "Big City Life", + "Persistent ID": "4400C6D87770520C", + "Track Type": "Remote" + }, + { + "Track ID": "4785", + "Name": "Mj", + "Artist": "Lund", + "Album Artist": "Lund", + "Composer": "Robert Lund", + "Album": "Gold", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6394055", + "Total Time": "180984", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2020-12-06T22:54:11Z", + "Date Added": "2020-12-06T22:54:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3780827203", + "Play Date UTC": "2023-10-22T10:46:43Z", + "Skip Count": "1", + "Skip Date": "2021-09-07T18:01:16Z", + "Release Date": "2016-10-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gold", + "Sort Artist": "Lund", + "Sort Name": "Mj", + "Persistent ID": "C39061A0F8E5D265", + "Track Type": "Remote" + }, + { + "Track ID": "4787", + "Name": "HOLIDAY", + "Artist": "Lil Nas X", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "Pop", + "Kind": "MPEG-4 video file", + "Size": "38173907", + "Total Time": "168083", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2020", + "Date Modified": "2020-12-08T08:17:38Z", + "Date Added": "2020-12-08T08:17:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3758664861", + "Play Date UTC": "2023-02-07T22:34:21Z", + "Skip Count": "3", + "Skip Date": "2023-02-16T05:31:36Z", + "Release Date": "2020-11-13T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Lil Nas X", + "Sort Name": "HOLIDAY", + "Persistent ID": "31185A1C681A8BC1", + "Track Type": "Remote" + }, + { + "Track ID": "4789", + "Name": "Apple Music Presents: Tyler, The Creator", + "Artist": "Tyler, The Creator", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "Hip-Hop/Rap", + "Kind": "MPEG-4 video file", + "Size": "774855577", + "Total Time": "3471167", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2019", + "Date Modified": "2020-12-08T09:58:04Z", + "Date Added": "2020-12-08T09:58:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3760962291", + "Play Date UTC": "2023-03-06T12:44:51Z", + "Skip Count": "3", + "Skip Date": "2021-12-12T23:11:58Z", + "Release Date": "2019-08-13T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "undef", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Apple Music Presents: Tyler, The Creator", + "Persistent ID": "A02F350D35BB17F0", + "Track Type": "Remote" + }, + { + "Track ID": "4791", + "Name": "HAD ENOUGH (feat. Quavo & Offset)", + "Artist": "Don Toliver", + "Album Artist": "JACKBOYS & Travis Scott", + "Composer": "Caleb Zackery Toliver, Quavious Marshall, Kiari Cephus & Ebony Oshunrinde", + "Album": "JACKBOYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5746441", + "Total Time": "157133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2020-12-08T13:09:18Z", + "Date Added": "2020-12-08T13:09:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781867636", + "Play Date UTC": "2023-11-03T11:47:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-12-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JACKBOYS", + "Sort Artist": "Don Toliver", + "Sort Name": "HAD ENOUGH (feat. Quavo & Offset)", + "Persistent ID": "21203194259C7767", + "Track Type": "Remote" + }, + { + "Track ID": "4793", + "Name": "OUT WEST (feat. Young Thug)", + "Artist": "JACKBOYS & Travis Scott", + "Album Artist": "JACKBOYS & Travis Scott", + "Composer": "Jacques Webster, Ty-Ron Douglas, Jason Baker & Jeffrey Williams", + "Album": "JACKBOYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5779110", + "Total Time": "157712", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2020-12-08T13:09:18Z", + "Date Added": "2020-12-08T13:09:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781572155", + "Play Date UTC": "2023-10-31T01:42:35Z", + "Skip Count": "1", + "Skip Date": "2022-08-19T16:05:06Z", + "Release Date": "2019-12-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JACKBOYS", + "Sort Artist": "JACKBOYS & Travis Scott", + "Sort Name": "OUT WEST (feat. Young Thug)", + "Persistent ID": "EA20BAA2DB84D1F8", + "Track Type": "Remote" + }, + { + "Track ID": "4795", + "Name": "GATTI", + "Artist": "JACKBOYS, Pop Smoke & Travis Scott", + "Album Artist": "JACKBOYS & Travis Scott", + "Composer": "Jacques Webster, Bashar Jackson, Andre Loblack, Abdul-aziz Manalla Yusuf & MIKE DEAN", + "Album": "JACKBOYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6622055", + "Total Time": "181145", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2020-12-08T13:09:18Z", + "Date Added": "2020-12-08T13:09:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3781094090", + "Play Date UTC": "2023-10-25T12:54:50Z", + "Skip Count": "3", + "Skip Date": "2023-09-26T09:04:58Z", + "Release Date": "2019-12-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JACKBOYS", + "Sort Artist": "JACKBOYS, Pop Smoke & Travis Scott", + "Sort Name": "GATTI", + "Persistent ID": "4EEE10DB9D098BA5", + "Track Type": "Remote" + }, + { + "Track ID": "4797", + "Name": "JACKBOYS", + "Artist": "JACKBOYS", + "Album Artist": "JACKBOYS & Travis Scott", + "Composer": "Jacques Webster, MIKE DEAN & Ebony Oshunrinde", + "Album": "JACKBOYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "2109051", + "Total Time": "46837", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2020-12-08T13:09:18Z", + "Date Added": "2020-12-08T13:09:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3759923501", + "Play Date UTC": "2023-02-22T12:11:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-12-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JACKBOYS", + "Sort Artist": "JACKBOYS", + "Sort Name": "JACKBOYS", + "Persistent ID": "25CF50CBC09FCC37", + "Track Type": "Remote" + }, + { + "Track ID": "4799", + "Name": "GANG GANG", + "Artist": "JACKBOYS & Sheck Wes", + "Album Artist": "JACKBOYS & Travis Scott", + "Composer": "Jacques Webster, Khadimoul Fall, Caleb Zackery Toliver, Lawrence Taylor, Ebony Oshunrinde & Ugur Tig", + "Album": "JACKBOYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8691277", + "Total Time": "244761", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2020-12-08T13:09:18Z", + "Date Added": "2020-12-08T13:09:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3769695939", + "Play Date UTC": "2023-06-15T14:45:39Z", + "Skip Count": "2", + "Skip Date": "2022-08-11T12:59:25Z", + "Release Date": "2019-12-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "JACKBOYS", + "Sort Artist": "JACKBOYS & Sheck Wes", + "Sort Name": "GANG GANG", + "Persistent ID": "966B2294996376D7", + "Track Type": "Remote" + }, + { + "Track ID": "4801", + "Name": "No Idea", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, Ebony Naomi Oshunrinde, Tim Gomringer & Kevin Gomringer", + "Album": "No Idea - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5613385", + "Total Time": "154424", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2020-12-08T13:27:28Z", + "Date Added": "2020-12-08T13:27:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "61", + "Play Date": "3778772582", + "Play Date UTC": "2023-09-28T16:03:02Z", + "Skip Count": "5", + "Skip Date": "2022-04-23T21:02:56Z", + "Release Date": "2019-05-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Idea - Single", + "Sort Artist": "Don Toliver", + "Sort Name": "No Idea", + "Persistent ID": "14DE44CCD29C91A5", + "Track Type": "Remote" + }, + { + "Track ID": "4803", + "Name": "No Regrets (feat. Don Toliver)", + "Artist": "Eminem", + "Album Artist": "Eminem", + "Composer": "M. Mathers, D. Doman, D. Kostov, J. Thomas & A. Olofsson", + "Album": "Music To Be Murdered By", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7195196", + "Total Time": "200947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "20", + "Year": "2020", + "Date Modified": "2020-12-08T14:05:08Z", + "Date Added": "2020-12-08T14:05:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3783767332", + "Play Date UTC": "2023-11-25T11:28:52Z", + "Skip Count": "2", + "Skip Date": "2023-10-28T07:56:42Z", + "Release Date": "2020-01-17T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Music To Be Murdered By", + "Sort Artist": "Eminem", + "Sort Name": "No Regrets (feat. Don Toliver)", + "Persistent ID": "7FE6212004ABF885", + "Track Type": "Remote" + }, + { + "Track ID": "4805", + "Name": "Mystery Lady", + "Artist": "Masego & Don Toliver", + "Album Artist": "Masego & Don Toliver", + "Composer": "Don Toliver, Sam Gelliatry, Andrew Maxwell Hunter, WondaGurl, Micah Davis & Kojo Asamoah", + "Album": "Mystery Lady - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8304616", + "Total Time": "228453", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-12-08T14:16:20Z", + "Date Added": "2020-12-08T14:16:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3783779449", + "Play Date UTC": "2023-11-25T14:50:49Z", + "Skip Count": "4", + "Skip Date": "2022-10-28T09:47:03Z", + "Release Date": "2020-11-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mystery Lady - Single", + "Sort Artist": "Masego & Don Toliver", + "Sort Name": "Mystery Lady", + "Persistent ID": "A9487481EF434DD8", + "Track Type": "Remote" + }, + { + "Track ID": "4807", + "Name": "Blackout", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Hugo Chan", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "13853189", + "Total Time": "400666", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "12", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2020-12-08T15:38:38Z", + "Date Added": "2020-12-08T15:38:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3762003733", + "Play Date UTC": "2023-03-18T14:02:13Z", + "Skip Count": "2", + "Skip Date": "2023-10-25T01:05:50Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Blackout", + "Persistent ID": "B43AF1502DA20E9B", + "Track Type": "Remote" + }, + { + "Track ID": "4809", + "Name": "Becky", + "Artist": "Amin\u00e9", + "Album Artist": "Amin\u00e9", + "Composer": "Adam Amin\u00e9 Daniel, Charlie Brown, Madison Appleby Stewart & Irvin Mejia", + "Album": "Limbo (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7862302", + "Total Time": "220651", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "21", + "Year": "2020", + "Date Modified": "2020-12-08T16:00:39Z", + "Date Added": "2020-12-08T16:00:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781706705", + "Play Date UTC": "2023-11-01T15:05:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Limbo (Deluxe)", + "Sort Artist": "Amin\u00e9", + "Sort Name": "Becky", + "Persistent ID": "5BD6FE5510C48ABA", + "Track Type": "Remote" + }, + { + "Track ID": "4811", + "Name": "Lollipop (feat. Static Major)", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "D. Carter, S. Garrett, J. Scheffer & D. Harrison", + "Album": "Tha Carter III (Deluxe Revised)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10568728", + "Total Time": "299333", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "12", + "Track Count": "16", + "Year": "2008", + "Date Modified": "2020-12-09T16:14:02Z", + "Date Added": "2020-12-09T16:14:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3767786544", + "Play Date UTC": "2023-05-24T12:22:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2008-03-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tha Carter III (Deluxe Revised)", + "Sort Artist": "Lil Wayne", + "Sort Name": "Lollipop (feat. Static Major)", + "Persistent ID": "5137FEDE1F949FF9", + "Track Type": "Remote" + }, + { + "Track ID": "4813", + "Name": "Sky Walker (feat. Travis Scott)", + "Artist": "Miguel", + "Album Artist": "Miguel", + "Composer": "Miguel, Nathan Perez, Jacques Webster & Roget Chahayed", + "Album": "Sky Walker (feat. Travis Scott) - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9203202", + "Total Time": "260077", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2020-12-10T13:32:44Z", + "Date Added": "2020-12-10T13:32:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3776171527", + "Play Date UTC": "2023-08-29T13:32:07Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sky Walker (feat. Travis Scott) - Single", + "Sort Artist": "Miguel", + "Sort Name": "Sky Walker (feat. Travis Scott)", + "Persistent ID": "3A11ABA0CE31A4BD", + "Track Type": "Remote" + }, + { + "Track ID": "4815", + "Name": "Dreamcatcher (feat. Swae Lee & Travis Scott)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Allen Ritter, Leland Wayne, Khalif Malikibnsham Brown & Jacques Webster", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7653986", + "Total Time": "211920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-12-10T14:12:28Z", + "Date Added": "2020-12-10T14:12:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783694000", + "Play Date UTC": "2023-11-24T15:06:40Z", + "Skip Count": "1", + "Skip Date": "2023-02-14T19:26:11Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "Dreamcatcher (feat. Swae Lee & Travis Scott)", + "Persistent ID": "081BD874098217D1", + "Track Type": "Remote" + }, + { + "Track ID": "4817", + "Name": "Taro", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green", + "Album": "An Awesome Wave", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10616718", + "Total Time": "314987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "14", + "Year": "2012", + "Date Modified": "2020-12-11T18:57:53Z", + "Date Added": "2020-12-11T18:57:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3783451653", + "Play Date UTC": "2023-11-21T19:47:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-05-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Awesome Wave", + "Sort Artist": "alt-J", + "Sort Name": "Taro", + "Persistent ID": "1B2AC7D4833FDB9F", + "Track Type": "Remote" + }, + { + "Track ID": "4819", + "Name": "Stay", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Andrew Watt, Louis Bell & Austin Post", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7462219", + "Total Time": "204431", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2020-12-12T20:54:52Z", + "Date Added": "2020-12-12T20:54:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "75", + "Play Date": "3783011352", + "Play Date UTC": "2023-11-16T17:29:12Z", + "Skip Count": "2", + "Skip Date": "2022-06-28T16:25:56Z", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Stay", + "Persistent ID": "D19F7AB1D45881F0", + "Track Type": "Remote" + }, + { + "Track ID": "4821", + "Name": "all my friends", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph, Austin Post & Louis Bell", + "Album": "i am > i was", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7514854", + "Total Time": "211785", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "15", + "Year": "2018", + "Date Modified": "2020-12-12T21:29:16Z", + "Date Added": "2020-12-12T21:29:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3771052091", + "Play Date UTC": "2023-07-01T07:28:11Z", + "Skip Count": "2", + "Skip Date": "2021-01-22T16:04:34Z", + "Release Date": "2018-12-21T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "60", + "Sort Album": "i am > i was", + "Sort Artist": "21 Savage", + "Sort Name": "all my friends", + "Persistent ID": "7EC54B3CBB1092BB", + "Track Type": "Remote" + }, + { + "Track ID": "4823", + "Name": "Too Young", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, Michael Hernandez, Carlos Suarez & Justin Mosley", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8372365", + "Total Time": "237154", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "18", + "Year": "2015", + "Date Modified": "2020-12-14T06:38:24Z", + "Date Added": "2020-12-14T06:38:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "78", + "Play Date": "3783678366", + "Play Date UTC": "2023-11-24T10:46:06Z", + "Skip Count": "1", + "Skip Date": "2021-07-26T11:28:20Z", + "Release Date": "2015-10-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Too Young", + "Persistent ID": "F6051EFB32216DDA", + "Track Type": "Remote" + }, + { + "Track ID": "4825", + "Name": "Hit This Hard", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, Carlo Montagnese & Billy Walsh", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8955779", + "Total Time": "249026", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2020-12-14T06:56:04Z", + "Date Added": "2020-12-14T06:56:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3783011601", + "Play Date UTC": "2023-11-16T17:33:21Z", + "Skip Count": "3", + "Skip Date": "2022-05-21T20:48:33Z", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Hit This Hard", + "Persistent ID": "1442D12B39A991E7", + "Track Type": "Remote" + }, + { + "Track ID": "4827", + "Name": "Hive (feat. Vince Staples & Casey Veggies)", + "Artist": "Earl Sweatshirt", + "Album Artist": "Earl Sweatshirt", + "Composer": "Vince Staples, Thebe Kgositsile & Casey Jones", + "Album": "Doris", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9696409", + "Total Time": "277240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "15", + "Year": "2013", + "Date Modified": "2020-12-17T09:29:57Z", + "Date Added": "2020-12-17T09:29:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3783682053", + "Play Date UTC": "2023-11-24T11:47:33Z", + "Skip Count": "1", + "Skip Date": "2023-02-01T09:47:38Z", + "Release Date": "2013-07-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Doris", + "Sort Artist": "Earl Sweatshirt", + "Sort Name": "Hive (feat. Vince Staples & Casey Veggies)", + "Persistent ID": "786BA28EDADFB3FA", + "Track Type": "Remote" + }, + { + "Track ID": "4829", + "Name": "Spirits", + "Artist": "The Strumbellas", + "Album Artist": "The Strumbellas", + "Composer": "The Strumbellas & Brian Pickett", + "Album": "Hope", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7727487", + "Total Time": "203653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2020-12-17T09:33:20Z", + "Date Added": "2020-12-17T09:33:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3748450613", + "Play Date UTC": "2022-10-12T17:16:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-01-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Hope", + "Sort Artist": "Strumbellas", + "Sort Name": "Strumbellas", + "Persistent ID": "Strumbellas & Brian Pickett", + "Track Type": "Spirits" + }, + { + "Track ID": "4831", + "Name": "Tequila Shots", + "Artist": "Kid Cudi", + "Album Artist": "Kid Cudi", + "Composer": "Scott Mescudi, Oladipo Omishore, David Biral & Denzel Baptiste", + "Album": "Man On the Moon III: The Chosen", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7149864", + "Total Time": "193293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-12-17T13:15:08Z", + "Date Added": "2020-12-17T13:15:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783781081", + "Play Date UTC": "2023-11-25T15:18:01Z", + "Skip Count": "1", + "Skip Date": "2020-12-18T09:04:09Z", + "Release Date": "2020-12-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Man On the Moon III: The Chosen", + "Sort Artist": "Kid Cudi", + "Sort Name": "Tequila Shots", + "Persistent ID": "5D456D3C41BD332F", + "Track Type": "Remote" + }, + { + "Track ID": "4833", + "Name": "She Knows This", + "Artist": "Kid Cudi", + "Album Artist": "Kid Cudi", + "Composer": "Scott Mescudi, Oladipo Omishore, Julian Gramma, Michael Mule & Isaac De Boni", + "Album": "Man On the Moon III: The Chosen", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7784520", + "Total Time": "216560", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2020", + "Date Modified": "2020-12-17T13:17:02Z", + "Date Added": "2020-12-17T13:17:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3783594194", + "Play Date UTC": "2023-11-23T11:23:14Z", + "Skip Count": "1", + "Skip Date": "2021-06-01T11:14:42Z", + "Release Date": "2020-12-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Man On the Moon III: The Chosen", + "Sort Artist": "Kid Cudi", + "Sort Name": "She Knows This", + "Persistent ID": "A2EF725A74D93A3A", + "Track Type": "Remote" + }, + { + "Track ID": "4835", + "Name": "Mother Fuck", + "Artist": "Jul & SCH", + "Album Artist": "Jul & SCH", + "Composer": "Jul & SCH", + "Album": "Mother Fuck - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7764567", + "Total Time": "216867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-12-17T13:21:59Z", + "Date Added": "2020-12-17T13:21:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3783492440", + "Play Date UTC": "2023-11-22T07:07:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-12-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mother Fuck - Single", + "Sort Artist": "Jul & SCH", + "Sort Name": "Mother Fuck", + "Persistent ID": "CED41621955F4501", + "Track Type": "Remote" + }, + { + "Track ID": "4837", + "Name": "SHAWTY", + "Artist": "Luciano", + "Album Artist": "Luciano", + "Composer": "Ghana Beats & geenaro", + "Album": "SHAWTY - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6580584", + "Total Time": "183733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-12-17T13:27:18Z", + "Date Added": "2020-12-17T13:27:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3760191450", + "Play Date UTC": "2023-02-25T14:37:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-12-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SHAWTY - Single", + "Sort Artist": "Luciano", + "Sort Name": "SHAWTY", + "Persistent ID": "5F4306D1602B9CC3", + "Track Type": "Remote" + }, + { + "Track ID": "4839", + "Name": "4 Thangs (feat. Big Sean & Hit-Boy)", + "Artist": "Freddie Gibbs", + "Album Artist": "Freddie Gibbs", + "Composer": "Big Sean & Freddie Gibbs", + "Album": "4 Thangs (feat. Big Sean & Hit-Boy) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4029191", + "Total Time": "104912", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2020-12-17T13:45:09Z", + "Date Added": "2020-12-17T13:45:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3779900716", + "Play Date UTC": "2023-10-11T17:25:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "4 Thangs (feat. Big Sean & Hit-Boy) - Single", + "Sort Artist": "Freddie Gibbs", + "Sort Name": "4 Thangs (feat. Big Sean & Hit-Boy)", + "Persistent ID": "4B13E8E3E45E96BD", + "Track Type": "Remote" + }, + { + "Track ID": "4841", + "Name": "Red Roses (feat. Landon Cube)", + "Artist": "Lil Skies", + "Album Artist": "Lil Skies", + "Composer": "Amin Elamin, Kimetruis Foose & Landon Von Cube", + "Album": "Life of a Dark Rose", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9738871", + "Total Time": "262544", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2020-12-18T21:31:54Z", + "Date Added": "2020-12-18T21:31:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3773760954", + "Play Date UTC": "2023-08-01T15:55:54Z", + "Skip Count": "1", + "Skip Date": "2022-11-11T18:26:09Z", + "Release Date": "2018-01-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a Dark Rose", + "Sort Artist": "Lil Skies", + "Sort Name": "Red Roses (feat. Landon Cube)", + "Persistent ID": "E9362892B92DBE7E", + "Track Type": "Remote" + }, + { + "Track ID": "4843", + "Name": "NOIZE (feat. Tyler, The Creator)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Omarr Rambert, Austin Owens, Keanu Torres, James Foye III \"Keyz\" & Tyler Okonma", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8935619", + "Total Time": "247758", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "5", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2020-12-19T13:26:26Z", + "Date Added": "2020-12-19T13:26:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3776178799", + "Play Date UTC": "2023-08-29T15:33:19Z", + "Skip Count": "6", + "Skip Date": "2022-11-25T22:19:25Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "NOIZE (feat. Tyler, The Creator)", + "Persistent ID": "28D05163018B61D9", + "Track Type": "Remote" + }, + { + "Track ID": "4845", + "Name": "SLOW DANCING IN THE DARK", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller & Jonathan Patrick Wimberly", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7406381", + "Total Time": "209274", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T09:05:07Z", + "Date Added": "2020-12-20T09:05:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "113", + "Play Date": "3781341515", + "Play Date UTC": "2023-10-28T09:38:35Z", + "Skip Count": "1", + "Skip Date": "2020-12-31T13:46:30Z", + "Release Date": "2018-09-12T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "4559", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "SLOW DANCING IN THE DARK", + "Persistent ID": "AAA7E51B26025FE1", + "Track Type": "Remote" + }, + { + "Track ID": "4847", + "Name": "YEAH RIGHT", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6261358", + "Total Time": "174358", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T09:05:09Z", + "Date Added": "2020-12-20T09:05:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "118", + "Play Date": "3781342227", + "Play Date UTC": "2023-10-28T09:50:27Z", + "Skip Count": "2", + "Skip Date": "2021-09-29T19:56:37Z", + "Release Date": "2018-03-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "YEAH RIGHT", + "Persistent ID": "BA7630C37260D80D", + "Track Type": "Remote" + }, + { + "Track ID": "4849", + "Name": "WHY AM I STILL IN LA (feat. Shlohmo & D33J)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6986355", + "Total Time": "199709", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "94", + "Play Date": "3782982213", + "Play Date UTC": "2023-11-16T09:23:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "WHY AM I STILL IN LA (feat. Shlohmo & D33J)", + "Persistent ID": "93FC9093E3561BFD", + "Track Type": "Remote" + }, + { + "Track ID": "4851", + "Name": "CAN'T GET OVER YOU (feat. Clams Casino)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4101472", + "Total Time": "107077", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "106", + "Play Date": "3781342052", + "Play Date UTC": "2023-10-28T09:47:32Z", + "Skip Count": "1", + "Skip Date": "2021-02-27T01:07:41Z", + "Release Date": "2018-10-02T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "CAN'T GET OVER YOU (feat. Clams Casino)", + "Persistent ID": "BDAAEFAD405A1619", + "Track Type": "Remote" + }, + { + "Track ID": "4853", + "Name": "TEST DRIVE", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6250536", + "Total Time": "179423", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "107", + "Play Date": "3781341694", + "Play Date UTC": "2023-10-28T09:41:34Z", + "Skip Count": "5", + "Skip Date": "2022-10-27T09:16:48Z", + "Release Date": "2018-10-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "TEST DRIVE", + "Persistent ID": "84E3ED0C42252F29", + "Track Type": "Remote" + }, + { + "Track ID": "4855", + "Name": "WANTED U", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8826862", + "Total Time": "251015", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "93", + "Play Date": "3781341945", + "Play Date UTC": "2023-10-28T09:45:45Z", + "Skip Count": "1", + "Skip Date": "2021-05-22T18:11:54Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "WANTED U", + "Persistent ID": "2335AFC7DBF72A6E", + "Track Type": "Remote" + }, + { + "Track ID": "4857", + "Name": "I'LL SEE YOU IN 40", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8678692", + "Total Time": "253781", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "82", + "Play Date": "3782805855", + "Play Date UTC": "2023-11-14T08:24:15Z", + "Skip Count": "3", + "Skip Date": "2021-09-28T16:19:24Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "I'LL SEE YOU IN 40", + "Persistent ID": "146FCFFCAFAAED3B", + "Track Type": "Remote" + }, + { + "Track ID": "4859", + "Name": "XNXX", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller & John Durham", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4726180", + "Total Time": "127318", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "91", + "Play Date": "3781347041", + "Play Date UTC": "2023-10-28T11:10:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "XNXX", + "Persistent ID": "2A6FF4D9F8AAC4F7", + "Track Type": "Remote" + }, + { + "Track ID": "4861", + "Name": "ATTENTION", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4771823", + "Total Time": "128888", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "128", + "Play Date": "3781447676", + "Play Date UTC": "2023-10-29T15:07:56Z", + "Skip Count": "4", + "Skip Date": "2022-03-22T08:19:44Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "ATTENTION", + "Persistent ID": "7DE473DD54CE71E6", + "Track Type": "Remote" + }, + { + "Track ID": "4863", + "Name": "COME THRU", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5544510", + "Total Time": "153169", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "91", + "Play Date": "3781342748", + "Play Date UTC": "2023-10-28T09:59:08Z", + "Skip Count": "1", + "Skip Date": "2022-05-08T15:22:22Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "COME THRU", + "Persistent ID": "451E2E763B6D2932", + "Track Type": "Remote" + }, + { + "Track ID": "4865", + "Name": "NO FUN", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6080565", + "Total Time": "168418", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "88", + "Play Date": "3783776057", + "Play Date UTC": "2023-11-25T13:54:17Z", + "Skip Count": "4", + "Skip Date": "2022-07-18T11:06:44Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "NO FUN", + "Persistent ID": "03200DF7649BD02E", + "Track Type": "Remote" + }, + { + "Track ID": "4867", + "Name": "R.I.P. (feat. Trippie Redd)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller", + "Album": "BALLADS 1", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5731487", + "Total Time": "158726", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2020-12-20T16:25:06Z", + "Date Added": "2020-12-20T16:25:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "62", + "Play Date": "3776153730", + "Play Date UTC": "2023-08-29T08:35:30Z", + "Skip Count": "4", + "Skip Date": "2022-11-23T10:17:05Z", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BALLADS 1", + "Sort Artist": "Joji", + "Sort Name": "R.I.P. (feat. Trippie Redd)", + "Persistent ID": "1E7CEDF9A2361F93", + "Track Type": "Remote" + }, + { + "Track ID": "4869", + "Name": "Mai", + "Artist": "Videoclub", + "Album Artist": "Videoclub", + "Composer": "Matthieu Reynaud & Ad\u00e8le Castillon", + "Album": "Mai - Single", + "Genre": "Pop", + "Kind": "AAC audio file", + "Size": "7701929", + "Total Time": "218707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2020-12-21T16:46:15Z", + "Date Added": "2020-12-21T16:46:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3732556221", + "Play Date UTC": "2022-04-11T18:10:21Z", + "Skip Count": -1, + "Skip Date": "2022-01-03T08:54:02Z", + "Release Date": "2019-11-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Mai - Single", + "Sort Artist": "Videoclub", + "Sort Name": "Mai", + "Persistent ID": "EBE72B11FF3015ED", + "Track Type": "Remote" + }, + { + "Track ID": "4871", + "Name": "Piano Concerto No. 26 in D, K. 537 \"Coronation\": 2. (Larghetto)", + "Artist": "Alfred Brendel, Sir Neville Marriner & Academy of St Martin in the Fields", + "Album Artist": "Academy of St Martin in the Fields, Alfred Brendel & Sir Neville Marriner", + "Composer": "Wolfgang Amadeus Mozart", + "Album": "Mozart: Piano Concertos No. 21 & 26", + "Genre": "Piano Concerto No. 26 in D, K. 537 \"Coronation\"", + "Kind": "Classical", + "Size": "12873514", + "Total Time": "373000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "1990", + "Date Modified": "2021-01-02T13:48:53Z", + "Date Added": "2021-01-02T13:48:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3773534712", + "Play Date UTC": "2023-07-30T01:05:12Z", + "Skip Count": "1", + "Skip Date": "2023-04-18T09:47:45Z", + "Release Date": "1990-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Mozart: Piano Concertos No. 21 & 26", + "Sort Name": "Alfred Brendel, Sir Neville Marriner & Academy of St Martin in the Fields", + "Persistent ID": "Piano Concerto No. 26 in D, K. 537 \"Coronation\": 2. (Larghetto)", + "Track Type": "EF579BCCC4486A81" + }, + { + "Track ID": "4873", + "Name": "Symphony No. 25 in G Minor, K. 183: I. Allegro con brio", + "Artist": "Berlin Philharmonic & Karl B\u00f6hm", + "Album Artist": "Berlin Philharmonic & Karl B\u00f6hm", + "Composer": "Wolfgang Amadeus Mozart", + "Album": "Mozart: Symphonies Nos. 25, 29 & 31, \"Pariser\"", + "Genre": "Symphony No. 25 in G Minor, K.183", + "Kind": "Classical", + "Size": "18944696", + "Total Time": "522427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "1996", + "Date Modified": "2021-01-02T14:05:58Z", + "Date Added": "2021-01-02T14:05:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3781398927", + "Play Date UTC": "2023-10-29T01:35:27Z", + "Skip Count": "2", + "Skip Date": "2023-03-28T06:55:54Z", + "Release Date": "1996-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apple Music AAC audio file", + "Sort Artist": "Mozart: Symphonies Nos. 25, 29 & 31, \"Pariser\"", + "Sort Name": "Berlin Philharmonic & Karl B\u00f6hm", + "Persistent ID": "Symphony No. 25 in G Minor, K. 183: I. Allegro con brio", + "Track Type": "FBCB9A483E07E3AD" + }, + { + "Track ID": "4875", + "Name": "I Laugh at Myself", + "Artist": "Blue October", + "Album Artist": "Blue October", + "Composer": "Justin Furstenfeld", + "Album": "This is What I Live For", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7316038", + "Total Time": "204787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2020", + "Date Modified": "2021-01-05T11:36:48Z", + "Date Added": "2021-01-05T11:36:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3759916624", + "Play Date UTC": "2023-02-22T10:17:04Z", + "Skip Count": "1", + "Skip Date": "2022-05-24T11:18:53Z", + "Release Date": "2020-10-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Blue October", + "Sort Name": "I Laugh at Myself", + "Persistent ID": "C5CE47700B50AE76", + "Track Type": "Remote" + }, + { + "Track ID": "4877", + "Name": "The Way I Used to Love You", + "Artist": "Blue October", + "Album Artist": "Blue October", + "Composer": "Justin Furstenfeld & Eric D. Holtz", + "Album": "This is What I Live For", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8655364", + "Total Time": "244067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2020", + "Date Modified": "2021-01-05T11:39:16Z", + "Date Added": "2021-01-05T11:39:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3779312654", + "Play Date UTC": "2023-10-04T22:04:14Z", + "Skip Count": "2", + "Skip Date": "2022-05-24T11:17:41Z", + "Release Date": "2020-10-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Blue October", + "Sort Name": "Way I Used to Love You", + "Persistent ID": "2DDC198BB26BBD8A", + "Track Type": "Remote" + }, + { + "Track ID": "4879", + "Name": "Love Stupid (feat. Karen Hover)", + "Artist": "Blue October", + "Album Artist": "Blue October", + "Composer": "Justin Furstenfeld & Steve Schiltz", + "Album": "This is What I Live For", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9679530", + "Total Time": "271653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2020", + "Date Modified": "2021-01-05T11:44:23Z", + "Date Added": "2021-01-05T11:44:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3775211792", + "Play Date UTC": "2023-08-18T10:56:32Z", + "Skip Count": "2", + "Skip Date": "2022-05-24T11:17:43Z", + "Release Date": "2020-10-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Blue October", + "Sort Name": "Love Stupid (feat. Karen Hover)", + "Persistent ID": "ED64A0E1147E6669", + "Track Type": "Remote" + }, + { + "Track ID": "4881", + "Name": "Pimpin Ain't Eazy", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Bill K. Kapri, Charlie Handsome & Nick Mira", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6210209", + "Total Time": "177000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3781435217", + "Play Date UTC": "2023-10-29T11:40:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-01T08:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "Pimpin Ain't Eazy", + "Persistent ID": "F202787AF4BB43C2", + "Track Type": "Remote" + }, + { + "Track ID": "4883", + "Name": "Spain (feat. Tory Lanez and Jackboy)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Bill K. Kapri, Daystar Peterson, Hector Chaparro, John McGee, pierre delince & Xeryus Gittens", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9847825", + "Total Time": "285531", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3782900847", + "Play Date UTC": "2023-11-15T10:47:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-11-11T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "Spain (feat. Tory Lanez and Jackboy)", + "Persistent ID": "EE26AD4992CF8403", + "Track Type": "Remote" + }, + { + "Track ID": "4885", + "Name": "The Fire", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Bill K. Kapri, Derek Garcia, Ian Mckee & Russell Pochop", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5978209", + "Total Time": "158797", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3766652906", + "Play Date UTC": "2023-05-11T09:28:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-11-11T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "Fire", + "Persistent ID": "D0CA461F7BFF75FC", + "Track Type": "Remote" + }, + { + "Track ID": "4887", + "Name": "Eeny, Meeny, Miny, Moe", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Aaron Lockhart, Bill K. Kapri & Latroy Garrett", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7752262", + "Total Time": "219596", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781623565", + "Play Date UTC": "2023-10-31T15:59:25Z", + "Skip Count": "3", + "Skip Date": "2023-02-26T10:23:38Z", + "Release Date": "2020-11-11T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "Eeny, Meeny, Miny, Moe", + "Persistent ID": "B2CF718485137A9C", + "Track Type": "Remote" + }, + { + "Track ID": "4889", + "Name": "I Wanna Live", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Benny Workman, Bill K. Kapri, Brittany Chi Coney & Denisia \"Blu June\" Andrews", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4325938", + "Total Time": "112813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3782903200", + "Play Date UTC": "2023-11-15T11:26:40Z", + "Skip Count": "1", + "Skip Date": "2022-08-19T16:11:23Z", + "Release Date": "2020-11-11T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "I Wanna Live", + "Persistent ID": "6E6208110505D4AB", + "Track Type": "Remote" + }, + { + "Track ID": "4891", + "Name": "Remember the Times", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Bill Kapri & Lester Williams", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7329656", + "Total Time": "203892", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3783771451", + "Play Date UTC": "2023-11-25T12:37:31Z", + "Skip Count": "1", + "Skip Date": "2022-08-21T11:46:30Z", + "Release Date": "2020-11-11T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "Remember the Times", + "Persistent ID": "676B90579D575D31", + "Track Type": "Remote" + }, + { + "Track ID": "4893", + "Name": "Feeling Myself Today", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Bennett W Pepple, Bill K. Kapri & Isaac Earl Bynum", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6832356", + "Total Time": "188075", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3780415459", + "Play Date UTC": "2023-10-17T16:24:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-11-11T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "Feeling Myself Today", + "Persistent ID": "3B7F3A817416E8C6", + "Track Type": "Remote" + }, + { + "Track ID": "4895", + "Name": "Make a Hit (feat. Lil Yachty)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Bill K. Kapri, Derek Garcia & Miles Parks McCollum", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7637978", + "Total Time": "211948", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3777369731", + "Play Date UTC": "2023-09-12T10:22:11Z", + "Skip Count": "3", + "Skip Date": "2022-10-21T11:33:29Z", + "Release Date": "2020-11-11T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "20", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "Make a Hit (feat. Lil Yachty)", + "Persistent ID": "B6F06075684F1716", + "Track Type": "Remote" + }, + { + "Track ID": "4897", + "Name": "I Knew It (feat. Gucci Mane & CBE)", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "undef", + "Album": "Bill Israel", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4958482", + "Total Time": "133645", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2020", + "Date Modified": "2021-01-05T12:01:48Z", + "Date Added": "2021-01-05T12:01:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3769682056", + "Play Date UTC": "2023-06-15T10:54:16Z", + "Skip Count": "2", + "Skip Date": "2022-03-28T11:38:55Z", + "Release Date": "2020-11-11T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bill Israel", + "Sort Artist": "Kodak Black", + "Sort Name": "I Knew It (feat. Gucci Mane & CBE)", + "Persistent ID": "BBF4AFA0A295F9CB", + "Track Type": "Remote" + }, + { + "Track ID": "4899", + "Name": "Beautiful Crime", + "Artist": "Tamer", + "Album Artist": "Tamer", + "Composer": "undef", + "Album": "Beautiful Crime - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9213786", + "Total Time": "272000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2021-01-07T11:50:55Z", + "Date Added": "2021-01-07T11:50:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3782476284", + "Play Date UTC": "2023-11-10T12:51:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-04-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Beautiful Crime - Single", + "Sort Artist": "Tamer", + "Sort Name": "Beautiful Crime", + "Persistent ID": "B0306E728AF79990", + "Track Type": "Remote" + }, + { + "Track ID": "4901", + "Name": "Too Many Chances", + "Artist": "Travis", + "Album Artist": "Travis", + "Composer": "undef", + "Album": "Too Many Chances - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7649109", + "Total Time": "217060", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-01-07T23:46:39Z", + "Date Added": "2021-01-07T23:46:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3767987373", + "Play Date UTC": "2023-05-26T20:09:33Z", + "Skip Count": "1", + "Skip Date": "2022-02-02T10:49:33Z", + "Release Date": "2018-07-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Too Many Chances - Single", + "Sort Artist": "Travis", + "Sort Name": "Too Many Chances", + "Persistent ID": "5E61E4FBFC074B56", + "Track Type": "Remote" + }, + { + "Track ID": "4903", + "Name": "10AM / Save the World (feat. Gucci Mane)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Leland Wayne, Radric Davis, Andre Proctor, Joseph Froese & Gladys Williams Givens", + "Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8113372", + "Total Time": "226320", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2021-01-08T20:10:05Z", + "Date Added": "2021-01-08T20:10:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3768409498", + "Play Date UTC": "2023-05-31T17:24:58Z", + "Skip Count": "5", + "Skip Date": "2023-11-02T13:51:58Z", + "Release Date": "2018-11-02T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Sort Artist": "Metro Boomin", + "Sort Name": "10AM / Save the World (feat. Gucci Mane)", + "Persistent ID": "6508C11E5994156A", + "Track Type": "Remote" + }, + { + "Track ID": "4905", + "Name": "DOOWEE", + "Artist": "6ix9ine", + "Album Artist": "6ix9ine", + "Composer": "6ix9ine", + "Album": "DAY69: Graduation Day", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4842410", + "Total Time": "133058", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-01-08T20:33:40Z", + "Date Added": "2021-01-08T20:33:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3779630604", + "Play Date UTC": "2023-10-08T14:23:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "DAY69: Graduation Day", + "Sort Artist": "6ix9ine", + "Sort Name": "DOOWEE", + "Persistent ID": "714D43F6B21E9D0E", + "Track Type": "Remote" + }, + { + "Track ID": "4907", + "Name": "Bizarro", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7933488", + "Total Time": "214361", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3770131037", + "Play Date UTC": "2023-06-20T15:37:17Z", + "Skip Count": "1", + "Skip Date": "2021-02-24T21:27:06Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "Bizarro", + "Persistent ID": "CD8EBF10BB8B3620", + "Track Type": "Remote" + }, + { + "Track ID": "4909", + "Name": "What the Fuck Is Happening", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4003760", + "Total Time": "106341", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781173676", + "Play Date UTC": "2023-10-26T11:01:16Z", + "Skip Count": "1", + "Skip Date": "2023-06-01T11:25:57Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "What the Fuck Is Happening", + "Persistent ID": "E3D63853E6D8445C", + "Track Type": "Remote" + }, + { + "Track ID": "4911", + "Name": "That Just Isn't Empirically Possible", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4642464", + "Total Time": "123902", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3775744850", + "Play Date UTC": "2023-08-24T15:00:50Z", + "Skip Count": "1", + "Skip Date": "2021-09-17T11:46:18Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "That Just Isn't Empirically Possible", + "Persistent ID": "A57378A7C9282D8A", + "Track Type": "Remote" + }, + { + "Track ID": "4913", + "Name": "...And To Those I Love, Thanks For Sticking Around", + "Artist": "$uicideboy$", + "Album Artist": "Various Artists", + "Composer": "$uicideboy$", + "Album": "Gaming Hits 2020", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6126347", + "Total Time": "168490", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "29", + "Track Count": "29", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780191517", + "Play Date UTC": "2023-10-15T02:11:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "80", + "Sort Album": "Gaming Hits 2020", + "Sort Artist": "$uicideboy$", + "Sort Name": "...And To Those I Love, Thanks For Sticking Around", + "Persistent ID": "69F3821B4602362A", + "Track Type": "Remote" + }, + { + "Track ID": "4915", + "Name": "Scope Set", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Scope Set - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "3586169", + "Total Time": "93423", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3772016325", + "Play Date UTC": "2023-07-12T11:18:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-12-20T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Scope Set - Single", + "Sort Artist": "$uicideboy$", + "Sort Name": "Scope Set", + "Persistent ID": "098545A59E52B1C5", + "Track Type": "Remote" + }, + { + "Track ID": "4917", + "Name": "Fuck Your Culture", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Fuck Your Culture - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "3908151", + "Total Time": "102060", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "85", + "Play Date": "3761911443", + "Play Date UTC": "2023-03-17T12:24:03Z", + "Skip Count": "4", + "Skip Date": "2023-07-26T13:25:29Z", + "Release Date": "2019-12-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fuck Your Culture - Single", + "Sort Artist": "$uicideboy$", + "Sort Name": "Fuck Your Culture", + "Persistent ID": "C3B6C178640B34C6", + "Track Type": "Remote" + }, + { + "Track ID": "4919", + "Name": "One Last Look at the Damage", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "3798520", + "Total Time": "97672", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3783669499", + "Play Date UTC": "2023-11-24T08:18:19Z", + "Skip Count": "1", + "Skip Date": "2021-09-28T07:16:58Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "One Last Look at the Damage", + "Persistent ID": "0A3209D8B9E9AA45", + "Track Type": "Remote" + }, + { + "Track ID": "4921", + "Name": "I Wanna Be Romanticized", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5011725", + "Total Time": "133747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3762590369", + "Play Date UTC": "2023-03-25T08:59:29Z", + "Skip Count": "2", + "Skip Date": "2021-09-17T11:43:39Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "I Wanna Be Romanticized", + "Persistent ID": "9102C4BC3EF0E467", + "Track Type": "Remote" + }, + { + "Track ID": "4923", + "Name": "All Dogs Go to Heaven", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5597734", + "Total Time": "153652", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "71", + "Play Date": "3767988154", + "Play Date UTC": "2023-05-26T20:22:34Z", + "Skip Count": "4", + "Skip Date": "2022-10-15T17:04:19Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "All Dogs Go to Heaven", + "Persistent ID": "BF7174BD7231DFAA", + "Track Type": "Remote" + }, + { + "Track ID": "4925", + "Name": "Putrid Pride", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4049442", + "Total Time": "106971", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3781356125", + "Play Date UTC": "2023-10-28T13:42:05Z", + "Skip Count": "2", + "Skip Date": "2022-08-19T16:11:45Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "Putrid Pride", + "Persistent ID": "35EFB294F50D3D08", + "Track Type": "Remote" + }, + { + "Track ID": "4927", + "Name": "Mega Zeph", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "3786183", + "Total Time": "101799", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "57", + "Play Date": "3783454714", + "Play Date UTC": "2023-11-21T20:38:34Z", + "Skip Count": "1", + "Skip Date": "2022-04-16T23:38:49Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "Mega Zeph", + "Persistent ID": "91319BC9F9055559", + "Track Type": "Remote" + }, + { + "Track ID": "4929", + "Name": "[whispers Indistinctly]", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Stop Staring at the Shadows", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5990911", + "Total Time": "164624", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-10T09:29:09Z", + "Date Added": "2021-01-10T09:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3758753239", + "Play Date UTC": "2023-02-08T23:07:19Z", + "Skip Count": -1, + "Skip Date": "2022-07-21T08:39:51Z", + "Release Date": "2020-02-13T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Staring at the Shadows", + "Sort Artist": "$uicideboy$", + "Sort Name": "[whispers Indistinctly]", + "Persistent ID": "A26D3101D4299773", + "Track Type": "Remote" + }, + { + "Track ID": "4931", + "Name": "Car Radio", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Vessel", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9733572", + "Total Time": "267733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2011", + "Date Modified": "2021-01-10T15:06:24Z", + "Date Added": "2021-01-10T15:06:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3760514217", + "Play Date UTC": "2023-03-01T08:16:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-07-08T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Vessel", + "Sort Artist": "twenty one pilots", + "Sort Name": "Car Radio", + "Persistent ID": "14D6547B81F42F2A", + "Track Type": "Remote" + }, + { + "Track ID": "4933", + "Name": "New York", + "Artist": "Andrew Belle", + "Album Artist": "Andrew Belle", + "Composer": "undef", + "Album": "Dive Deep", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8529799", + "Total Time": "240493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2021-01-10T15:56:30Z", + "Date Added": "2021-01-10T15:56:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3762324076", + "Play Date UTC": "2023-03-22T07:01:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dive Deep", + "Sort Artist": "Andrew Belle", + "Sort Name": "New York", + "Persistent ID": "C0C6E263BEF78389", + "Track Type": "Remote" + }, + { + "Track ID": "4935", + "Name": "Mr. Sandman", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "undef", + "Album": "Mr. Sandman - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7188369", + "Total Time": "206493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2017", + "Date Modified": "2021-01-10T19:44:17Z", + "Date Added": "2021-01-10T19:44:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3776166504", + "Play Date UTC": "2023-08-29T12:08:24Z", + "Skip Count": "9", + "Skip Date": "2022-11-11T18:03:16Z", + "Release Date": "2017-05-12T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Mr. Sandman - Single", + "Sort Artist": "SYML", + "Sort Name": "Mr. Sandman", + "Persistent ID": "46F69C5859424ED3", + "Track Type": "Remote" + }, + { + "Track ID": "4937", + "Name": "The Dark", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "The Dark - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10498303", + "Total Time": "298483", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-12T13:15:18Z", + "Date Added": "2021-01-12T13:15:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781536692", + "Play Date UTC": "2023-10-30T15:51:32Z", + "Skip Count": "2", + "Skip Date": "2022-11-25T22:10:51Z", + "Release Date": "2020-07-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dark - Single", + "Sort Artist": "SYML", + "Sort Name": "Dark", + "Persistent ID": "E5AF5F3523DBC4A3", + "Track Type": "Remote" + }, + { + "Track ID": "4939", + "Name": "Mooo!", + "Artist": "Doja Cat", + "Album Artist": "Doja Cat", + "Composer": "Amala Zandile Dlamini, Antwoine Collins, Chad Hugo, Pharrell Williams, Craig Lawson, Bobby Sandimanie, Jonathan Smith & Michael Tyler", + "Album": "Amala (Deluxe Version)", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "10068689", + "Total Time": "285139", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2021-01-14T12:53:06Z", + "Date Added": "2021-01-14T12:53:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3762943155", + "Play Date UTC": "2023-03-29T10:59:15Z", + "Skip Count": "2", + "Skip Date": "2022-06-01T11:24:51Z", + "Release Date": "2018-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Amala (Deluxe Version)", + "Sort Artist": "Doja Cat", + "Sort Name": "Mooo!", + "Persistent ID": "FD515FE0C0811598", + "Track Type": "Remote" + }, + { + "Track ID": "4941", + "Name": "Lettuce Sandwich", + "Artist": "Lil Skies", + "Album Artist": "Lil Skies", + "Composer": "Amin Elamin & Kimetrius Foose", + "Album": "Life of a Dark Rose", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7041234", + "Total Time": "195032", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2021-01-14T20:05:15Z", + "Date Added": "2021-01-14T20:05:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3776333420", + "Play Date UTC": "2023-08-31T10:30:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-01-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a Dark Rose", + "Sort Artist": "Lil Skies", + "Sort Name": "Lettuce Sandwich", + "Persistent ID": "D5A826DBA5E5F878", + "Track Type": "Remote" + }, + { + "Track ID": "4943", + "Name": "Candy", + "Artist": "Doja Cat", + "Album Artist": "Doja Cat", + "Composer": "Amala Zandile Dlamini, David Sprecher, Joshua Karp & Cameron Bartolini", + "Album": "Amala", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6867512", + "Total Time": "190927", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2021-01-14T21:46:15Z", + "Date Added": "2021-01-14T21:46:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3773210829", + "Play Date UTC": "2023-07-26T07:07:09Z", + "Skip Count": "4", + "Skip Date": "2022-03-30T16:12:32Z", + "Release Date": "2018-03-23T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Amala", + "Sort Artist": "Doja Cat", + "Sort Name": "Candy", + "Persistent ID": "54E0FF3EF33C796A", + "Track Type": "Remote" + }, + { + "Track ID": "4945", + "Name": "Better Days", + "Artist": "OneRepublic", + "Album Artist": "OneRepublic", + "Composer": "Ryan Tedder, Brent Kutzle & John Nathaniel", + "Album": "Human (Deluxe)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5314112", + "Total Time": "144546", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2021-01-15T18:35:34Z", + "Date Added": "2021-01-15T18:35:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3783681775", + "Play Date UTC": "2023-11-24T11:42:55Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-09-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Human (Deluxe)", + "Sort Artist": "OneRepublic", + "Sort Name": "Better Days", + "Persistent ID": "C782F6642A40C55B", + "Track Type": "Remote" + }, + { + "Track ID": "4947", + "Name": "GOOBA", + "Artist": "6ix9ine", + "Album Artist": "6ix9ine", + "Composer": "undef", + "Album": "GOOBA - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4952490", + "Total Time": "132303", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-16T10:21:52Z", + "Date Added": "2021-01-16T10:21:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3780758961", + "Play Date UTC": "2023-10-21T15:49:21Z", + "Skip Count": "1", + "Skip Date": "2021-04-04T08:20:02Z", + "Release Date": "2018-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "4044", + "Sort Album": "GOOBA - Single", + "Sort Artist": "6ix9ine", + "Sort Name": "GOOBA", + "Persistent ID": "475EC2D60E8BE61B", + "Track Type": "Remote" + }, + { + "Track ID": "4949", + "Name": "Magazine", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Radical $uicide - EP", + "Genre": "Hip-Hop", + "Kind": "AAC audio file", + "Size": "4864659", + "Total Time": "131370", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2016", + "Date Modified": "2021-01-16T10:40:03Z", + "Date Added": "2021-01-16T10:40:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3747934727", + "Play Date UTC": "2022-10-06T17:58:47Z", + "Skip Count": "3", + "Skip Date": "2022-08-13T09:45:51Z", + "Release Date": "2016-07-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Radical $uicide - EP", + "Sort Artist": "$uicideboy$", + "Sort Name": "Magazine", + "Persistent ID": "F10D98FF9BB53E21", + "Track Type": "Remote" + }, + { + "Track ID": "4951", + "Name": "Ride", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Blurryface", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7736695", + "Total Time": "214505", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2021-01-18T19:00:36Z", + "Date Added": "2021-01-18T19:00:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3763107808", + "Play Date UTC": "2023-03-31T08:43:28Z", + "Skip Count": "4", + "Skip Date": "2022-11-11T15:28:15Z", + "Release Date": "2015-05-12T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blurryface", + "Sort Artist": "twenty one pilots", + "Sort Name": "Ride", + "Persistent ID": "896941829540BD57", + "Track Type": "Remote" + }, + { + "Track ID": "4953", + "Name": "Champion of Death", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Radical $uicide - EP", + "Genre": "Hip-Hop", + "Kind": "AAC audio file", + "Size": "4873836", + "Total Time": "116114", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2016", + "Date Modified": "2021-01-19T20:04:30Z", + "Date Added": "2021-01-19T20:04:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3748457669", + "Play Date UTC": "2022-10-12T19:14:29Z", + "Skip Count": "3", + "Skip Date": "2022-06-01T11:03:14Z", + "Release Date": "2016-07-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Radical $uicide - EP", + "Sort Artist": "$uicideboy$", + "Sort Name": "Champion of Death", + "Persistent ID": "B4E97255ED11764B", + "Track Type": "Remote" + }, + { + "Track ID": "4955", + "Name": "2nd Hand", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "KILL YOURSELF Part XII: The Dark Glacier Saga - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4439034", + "Total Time": "123469", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2017", + "Date Modified": "2021-01-19T20:12:03Z", + "Date Added": "2021-01-19T20:12:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3783076815", + "Play Date UTC": "2023-11-17T11:40:15Z", + "Skip Count": "2", + "Skip Date": "2022-11-25T21:58:36Z", + "Release Date": "2017-05-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "KILL YOURSELF Part XII: The Dark Glacier Saga - Single", + "Sort Artist": "$uicideboy$", + "Sort Name": "2nd Hand", + "Persistent ID": "F3B277DBAE8AF3DA", + "Track Type": "Remote" + }, + { + "Track ID": "4957", + "Name": "2 Hot 4 U (feat. $Uicdeboy$)", + "Artist": "Fat Nick", + "Album Artist": "Fat Nick", + "Composer": "undef", + "Album": "When the Lean Runs Out", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7132219", + "Total Time": "199106", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2021-01-19T21:58:13Z", + "Date Added": "2021-01-19T21:58:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3783492640", + "Play Date UTC": "2023-11-22T07:10:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-05-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "When the Lean Runs Out", + "Sort Artist": "Fat Nick", + "Sort Name": "2 Hot 4 U (feat. $Uicdeboy$)", + "Persistent ID": "639506DB9C1CDC6B", + "Track Type": "Remote" + }, + { + "Track ID": "4959", + "Name": "33rd Blakk Glass", + "Artist": "City Morgue, ZillaKami & SosMula", + "Album Artist": "City Morgue, ZillaKami & SosMula", + "Composer": "Vinicius Sosa, Junius Rogers & Bouabdallah Nehari", + "Album": "CITY MORGUE VOL 1: HELL OR HIGH WATER", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "5514265", + "Total Time": "150214", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2021-01-20T11:17:12Z", + "Date Added": "2021-01-20T11:17:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3779176313", + "Play Date UTC": "2023-10-03T08:11:53Z", + "Skip Count": "8", + "Skip Date": "2022-10-22T09:10:42Z", + "Release Date": "2018-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CITY MORGUE VOL 1: HELL OR HIGH WATER", + "Sort Artist": "City Morgue, ZillaKami & SosMula", + "Sort Name": "33rd Blakk Glass", + "Persistent ID": "AC4A5E598E03F3CC", + "Track Type": "Remote" + }, + { + "Track ID": "4961", + "Name": "5000 Miles", + "Artist": "LUI HILL", + "Album Artist": "LUI HILL", + "Composer": "Philipp Rittmannsperger", + "Album": "Lui Hill (Deluxe Edition)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7864261", + "Total Time": "222000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "16", + "Year": "2017", + "Date Modified": "2021-01-21T14:25:59Z", + "Date Added": "2021-01-21T14:25:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781198136", + "Play Date UTC": "2023-10-26T17:48:56Z", + "Skip Count": "1", + "Skip Date": "2021-03-21T23:52:48Z", + "Release Date": "2017-11-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lui Hill (Deluxe Edition)", + "Sort Artist": "LUI HILL", + "Sort Name": "5000 Miles", + "Persistent ID": "FF798BD6E9DD6F9A", + "Track Type": "Remote" + }, + { + "Track ID": "4963", + "Name": "I'm Not the Only One", + "Artist": "Sam Smith", + "Album Artist": "Sam Smith", + "Composer": "Sam Smith & James Napier", + "Album": "In the Lonely Hour", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8561348", + "Total Time": "239317", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3783668057", + "Play Date UTC": "2023-11-24T07:54:17Z", + "Skip Count": "3", + "Skip Date": "2022-10-24T14:09:25Z", + "Release Date": "2014-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "In the Lonely Hour", + "Sort Artist": "Sam Smith", + "Sort Name": "I'm Not the Only One", + "Persistent ID": "091707D9A26B9C9D", + "Track Type": "Remote" + }, + { + "Track ID": "4965", + "Name": "Everything", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom (Deluxe Video Edition)", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "10498159", + "Total Time": "285507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "17", + "Year": "2011", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781534686", + "Play Date UTC": "2023-10-30T15:18:06Z", + "Skip Count": "5", + "Skip Date": "2022-12-08T12:56:20Z", + "Release Date": "2011-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Every Kingdom (Deluxe Video Edition)", + "Sort Artist": "Ben Howard", + "Sort Name": "Everything", + "Persistent ID": "35D1E7E9D4DFE672", + "Track Type": "Remote" + }, + { + "Track ID": "4967", + "Name": "The Central Hotel of Mine", + "Artist": "Freddy Madson", + "Album Artist": "Freddy Madson", + "Composer": "Frederik Schultz Madsen & Rasmus Elk Olsen", + "Album": "Rocket for Your Skyline - EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "6667772", + "Total Time": "190849", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2015", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783711713", + "Play Date UTC": "2023-11-24T20:01:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rocket for Your Skyline - EP", + "Sort Artist": "Freddy Madson", + "Sort Name": "Central Hotel of Mine", + "Persistent ID": "F26AC3DA0927D7AC", + "Track Type": "Remote" + }, + { + "Track ID": "4969", + "Name": "Don't", + "Artist": "Ed Sheeran", + "Album Artist": "Ed Sheeran", + "Composer": "Benjamin Levin & Ed Sheeran", + "Album": "x (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7851016", + "Total Time": "219840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "16", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3757407359", + "Play Date UTC": "2023-01-24T09:15:59Z", + "Skip Count": "1", + "Skip Date": "2023-01-16T14:47:14Z", + "Release Date": "2014-06-20T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "x (Deluxe Edition)", + "Sort Artist": "Ed Sheeran", + "Sort Name": "Don't", + "Persistent ID": "67D4A0956A8048BB", + "Track Type": "Remote" + }, + { + "Track ID": "4971", + "Name": "I\u2019m So Sorry", + "Artist": "Imagine Dragons", + "Album Artist": "Imagine Dragons", + "Composer": "Imagine Dragons", + "Album": "Smoke + Mirrors (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8292347", + "Total Time": "230347", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "21", + "Year": "2015", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3779310133", + "Play Date UTC": "2023-10-04T21:22:13Z", + "Skip Count": "3", + "Skip Date": "2022-10-31T18:03:19Z", + "Release Date": "2014-09-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Smoke + Mirrors (Deluxe)", + "Sort Artist": "Imagine Dragons", + "Sort Name": "I\u2019m So Sorry", + "Persistent ID": "5B7CEFF8AB8623B5", + "Track Type": "Remote" + }, + { + "Track ID": "4973", + "Name": "Cancer", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Bob Bryar, Frank Iero, Gerard Way, Michael Way & Ramond Toro", + "Album": "Cancer - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8114684", + "Total Time": "236827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3780492730", + "Play Date UTC": "2023-10-18T13:52:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-09-14T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cancer - Single", + "Sort Artist": "twenty one pilots", + "Sort Name": "Cancer", + "Persistent ID": "35A0ADF2F7B7EC30", + "Track Type": "Remote" + }, + { + "Track ID": "4975", + "Name": "Let It Go", + "Artist": "The Neighbourhood", + "Album Artist": "The Neighbourhood", + "Composer": "Emile Haynie, Jesse, Jeremiah Freedman, Zachary Abels, Bryan Sammis & Michael Margott", + "Album": "I Love You.", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7122075", + "Total Time": "197267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3779200516", + "Play Date UTC": "2023-10-03T14:55:16Z", + "Skip Count": "1", + "Skip Date": "2021-03-21T09:44:31Z", + "Release Date": "2013-01-14T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Love You.", + "Sort Artist": "Neighbourhood", + "Sort Name": "Neighbourhood", + "Persistent ID": "Let It Go", + "Track Type": "5E13D26367EFA042" + }, + { + "Track ID": "4977", + "Name": "Sweater Weather", + "Artist": "The Neighbourhood", + "Album Artist": "The Neighbourhood", + "Composer": "Jesse, Zachary Abels & Jeremiah Freedman", + "Album": "I Love You.", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8588251", + "Total Time": "240400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2012", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3783778335", + "Play Date UTC": "2023-11-25T14:32:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-12-03T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Love You.", + "Sort Artist": "Neighbourhood", + "Sort Name": "Neighbourhood", + "Persistent ID": "Sweater Weather", + "Track Type": "8992299521DB2616" + }, + { + "Track ID": "4979", + "Name": "W.D.Y.W.F.M?", + "Artist": "The Neighbourhood", + "Album Artist": "The Neighbourhood", + "Composer": "Jesse, Emile Haynie, Zachary Abels, Jeremiah Freedman, Michael Margott & Bryan Sammis", + "Album": "I Love You.", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9319337", + "Total Time": "259413", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3781205563", + "Play Date UTC": "2023-10-26T19:52:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-04-22T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Love You.", + "Sort Artist": "Neighbourhood", + "Sort Name": "Neighbourhood", + "Persistent ID": "W.D.Y.W.F.M?", + "Track Type": "D8E880CAA130D649" + }, + { + "Track ID": "4981", + "Name": "Talking To the Moon", + "Artist": "Bruno Mars", + "Album Artist": "Bruno Mars", + "Composer": "Albert Winkler, Ari Levine, Bruno Mars, Jeff Bhasker & Philip Lawrence", + "Album": "Doo-Wops & Hooligans", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8213190", + "Total Time": "217867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2010", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783669245", + "Play Date UTC": "2023-11-24T08:14:05Z", + "Skip Count": "1", + "Skip Date": "2023-06-19T15:22:06Z", + "Release Date": "2010-10-04T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Doo-Wops & Hooligans", + "Sort Artist": "Bruno Mars", + "Sort Name": "Talking To the Moon", + "Persistent ID": "FA66547502F35429", + "Track Type": "Remote" + }, + { + "Track ID": "4983", + "Name": "Sedated", + "Artist": "Hozier", + "Album Artist": "Hozier", + "Composer": "Andrew Hozier-Byrne", + "Album": "Hozier", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7430961", + "Total Time": "207669", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783775133", + "Play Date UTC": "2023-11-25T13:38:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-05-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hozier", + "Sort Artist": "Hozier", + "Sort Name": "Sedated", + "Persistent ID": "6C45E2675162D67F", + "Track Type": "Remote" + }, + { + "Track ID": "4985", + "Name": "Trouble", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Guy Berryman, Will Champion, Chris Martin, Jon Buckland & Jonny Buckland", + "Album": "Parachutes", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9642045", + "Total Time": "270731", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2000", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3780294917", + "Play Date UTC": "2023-10-16T06:55:17Z", + "Skip Count": "1", + "Skip Date": "2021-02-28T16:22:35Z", + "Release Date": "2000-07-10T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Parachutes", + "Sort Artist": "Coldplay", + "Sort Name": "Trouble", + "Persistent ID": "14F206A7E892BCF1", + "Track Type": "Remote" + }, + { + "Track ID": "4987", + "Name": "Three Tree Town", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Old Pine - EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7615142", + "Total Time": "216024", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "4", + "Year": "2011", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3781202261", + "Play Date UTC": "2023-10-26T18:57:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Old Pine - EP", + "Sort Artist": "Ben Howard", + "Sort Name": "Three Tree Town", + "Persistent ID": "822A0056DD4C7204", + "Track Type": "Remote" + }, + { + "Track ID": "4989", + "Name": "Riot Van", + "Artist": "Arctic Monkeys", + "Album Artist": "Arctic Monkeys", + "Composer": "Arctic Monkeys", + "Album": "Whatever People Say I Am, That's What I'm Not", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4918767", + "Total Time": "134933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2006", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3779310268", + "Play Date UTC": "2023-10-04T21:24:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2006-01-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Whatever People Say I Am, That's What I'm Not", + "Sort Artist": "Arctic Monkeys", + "Sort Name": "Riot Van", + "Persistent ID": "76DF166C8E28F25A", + "Track Type": "Remote" + }, + { + "Track ID": "4991", + "Name": "The Scientist", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Will Champion, Guy Berryman & Jonny Buckland", + "Album": "A Rush of Blood to the Head", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11491964", + "Total Time": "308930", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781384102", + "Play Date UTC": "2023-10-28T21:28:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-08-26T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rush of Blood to the Head", + "Sort Artist": "Coldplay", + "Sort Name": "Scientist", + "Persistent ID": "B33CE404D31E1C35", + "Track Type": "Remote" + }, + { + "Track ID": "4993", + "Name": "Always In My Head", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Ghost Stories", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8182968", + "Total Time": "216633", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "9", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3770102198", + "Play Date UTC": "2023-06-20T07:36:38Z", + "Skip Count": "1", + "Skip Date": "2021-09-11T21:50:18Z", + "Release Date": "2014-05-19T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ghost Stories", + "Sort Artist": "Coldplay", + "Sort Name": "Always In My Head", + "Persistent ID": "320B312EB85BC874", + "Track Type": "Remote" + }, + { + "Track ID": "4995", + "Name": "To Be Alone", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Burgh Island - EP", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "11748858", + "Total Time": "337802", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2011", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3767793365", + "Play Date UTC": "2023-05-24T14:16:05Z", + "Skip Count": "1", + "Skip Date": "2023-05-31T15:26:03Z", + "Release Date": "2011-10-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Burgh Island - EP", + "Sort Artist": "Ben Howard", + "Sort Name": "To Be Alone", + "Persistent ID": "EBE27333DC52F277", + "Track Type": "Remote" + }, + { + "Track ID": "4997", + "Name": "Mama Said", + "Artist": "Metallica", + "Album Artist": "Metallica", + "Composer": "Lars Ulrich & James Hetfield", + "Album": "Load", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "11868348", + "Total Time": "319707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "14", + "Year": "1996", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3770982204", + "Play Date UTC": "2023-06-30T12:03:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1996-06-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Load", + "Sort Artist": "Metallica", + "Sort Name": "Mama Said", + "Persistent ID": "C804911417FE3DD3", + "Track Type": "Remote" + }, + { + "Track ID": "4999", + "Name": "I Wanna Be Yours", + "Artist": "Arctic Monkeys", + "Album Artist": "Arctic Monkeys", + "Composer": "Arctic Monkeys & John Cooper Clarke", + "Album": "AM", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6752729", + "Total Time": "184019", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2013", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3780134900", + "Play Date UTC": "2023-10-14T10:28:20Z", + "Skip Count": "2", + "Skip Date": "2021-05-05T20:24:32Z", + "Release Date": "2013-09-09T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "AM", + "Sort Artist": "Arctic Monkeys", + "Sort Name": "I Wanna Be Yours", + "Persistent ID": "8C3967FDE80470BE", + "Track Type": "Remote" + }, + { + "Track ID": "5001", + "Name": "Down With Me", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin", + "Album": "Love Songs Drug Songs - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8266868", + "Total Time": "217893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2013", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3779311388", + "Play Date UTC": "2023-10-04T21:43:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Love Songs Drug Songs - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Down With Me", + "Persistent ID": "16BF7D7E2A29D70D", + "Track Type": "Remote" + }, + { + "Track ID": "5003", + "Name": "Heathens", + "Artist": "twenty one pilots", + "Album Artist": "Various Artists", + "Composer": "undef", + "Album": "Suicide Squad: The Album", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7478635", + "Total Time": "195920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3780772932", + "Play Date UTC": "2023-10-21T19:42:12Z", + "Skip Count": "1", + "Skip Date": "2022-05-22T22:00:06Z", + "Release Date": "2016-06-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "100", + "Sort Album": "Suicide Squad: The Album", + "Sort Artist": "twenty one pilots", + "Sort Name": "Heathens", + "Persistent ID": "CC570DC22873B092", + "Track Type": "Remote" + }, + { + "Track ID": "5005", + "Name": "I've Told You Now", + "Artist": "Sam Smith", + "Album Artist": "Sam Smith", + "Composer": "Sam Smith & Eg White", + "Album": "In the Lonely Hour (Drowning Shadows Videos Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7747298", + "Total Time": "210369", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "23", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781616948", + "Play Date UTC": "2023-10-31T14:09:08Z", + "Skip Count": "1", + "Skip Date": "2023-02-12T20:16:07Z", + "Release Date": "2014-05-26T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "In the Lonely Hour (Drowning Shadows Videos Edition)", + "Sort Artist": "Sam Smith", + "Sort Name": "I've Told You Now", + "Persistent ID": "E41B9BC9803EA339", + "Track Type": "Remote" + }, + { + "Track ID": "5007", + "Name": "Wires", + "Artist": "The Neighbourhood", + "Album Artist": "The Neighbourhood", + "Composer": "Jesse, Zachary Abels & Jeremy Freedman", + "Album": "I'm Sorry... - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6939238", + "Total Time": "193080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2012", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3783665618", + "Play Date UTC": "2023-11-24T07:13:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-05-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I'm Sorry... - Single", + "Sort Artist": "Neighbourhood", + "Sort Name": "Neighbourhood", + "Persistent ID": "Wires", + "Track Type": "F6FEFE9EEF6F0721" + }, + { + "Track ID": "5009", + "Name": "Do I Wanna Know?", + "Artist": "Arctic Monkeys", + "Album Artist": "Arctic Monkeys", + "Composer": "Arctic Monkeys", + "Album": "AM", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9826650", + "Total Time": "272394", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2013", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783753417", + "Play Date UTC": "2023-11-25T07:36:57Z", + "Skip Count": "2", + "Skip Date": "2022-08-19T16:07:52Z", + "Release Date": "2013-06-19T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "AM", + "Sort Artist": "Arctic Monkeys", + "Sort Name": "Do I Wanna Know?", + "Persistent ID": "9EE77D103C0796EE", + "Track Type": "Remote" + }, + { + "Track ID": "5011", + "Name": "All Night", + "Artist": "mishlawi", + "Album Artist": "mishlawi", + "Composer": "Tarik Mishlawi & Zach Gayden", + "Album": "All Night - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6267135", + "Total Time": "174555", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781194138", + "Play Date UTC": "2023-10-26T16:42:18Z", + "Skip Count": "1", + "Skip Date": "2021-09-27T21:49:19Z", + "Release Date": "2016-01-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "All Night - Single", + "Sort Artist": "mishlawi", + "Sort Name": "All Night", + "Persistent ID": "6D0D0971FB83A57B", + "Track Type": "Remote" + }, + { + "Track ID": "5013", + "Name": "Nothing Else Matters", + "Artist": "Metallica", + "Album Artist": "Metallica", + "Composer": "James Hetfield & Lars Ulrich", + "Album": "Metallica", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "13313505", + "Total Time": "388733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "1991", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3778760326", + "Play Date UTC": "2023-09-28T12:38:46Z", + "Skip Count": "1", + "Skip Date": "2021-03-21T18:52:20Z", + "Release Date": "1991-08-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Metallica", + "Sort Artist": "Metallica", + "Sort Name": "Nothing Else Matters", + "Persistent ID": "03C40896EF81ED01", + "Track Type": "Remote" + }, + { + "Track ID": "5015", + "Name": "Shining", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh, Casey Harris, Adam Levin & Alex Da Kid", + "Album": "The Reason - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7859419", + "Total Time": "220964", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3780498631", + "Play Date UTC": "2023-10-18T15:30:31Z", + "Skip Count": "3", + "Skip Date": "2022-08-19T16:08:08Z", + "Release Date": "2014-01-24T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Reason - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Shining", + "Persistent ID": "4B88F70B81A39703", + "Track Type": "Remote" + }, + { + "Track ID": "5017", + "Name": "Just Take My Heart", + "Artist": "Mr. Big", + "Album Artist": "Mr. Big", + "Composer": "Alex Call, Andre Pessis & Eric Martin", + "Album": "Big, Bigger, Biggest! The Best of Mr. Big", + "Genre": "Hard Rock", + "Kind": "Apple Music AAC audio file", + "Size": "9218159", + "Total Time": "263427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "1991", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783494346", + "Play Date UTC": "2023-11-22T07:39:06Z", + "Skip Count": "1", + "Skip Date": "2022-04-23T21:00:27Z", + "Release Date": "1991-03-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Big, Bigger, Biggest! The Best of Mr. Big", + "Sort Artist": "Mr. Big", + "Sort Name": "Just Take My Heart", + "Persistent ID": "44968C739E4F4149", + "Track Type": "Remote" + }, + { + "Track ID": "5019", + "Name": "Grenade", + "Artist": "Bruno Mars", + "Album Artist": "Bruno Mars", + "Composer": "Andrew Wyatt, Ari Levine, Brody Brown, Bruno Mars, Claude Kelly & Philip Lawrence", + "Album": "Doo-Wops & Hooligans (Deluxe Version)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7860808", + "Total Time": "222091", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2010", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3779316419", + "Play Date UTC": "2023-10-04T23:06:59Z", + "Skip Count": "3", + "Skip Date": "2022-03-15T17:40:13Z", + "Release Date": "2010-09-28T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Doo-Wops & Hooligans (Deluxe Version)", + "Sort Artist": "Bruno Mars", + "Sort Name": "Grenade", + "Persistent ID": "F0CA3DEE155A1862", + "Track Type": "Remote" + }, + { + "Track ID": "5021", + "Name": "505", + "Artist": "Arctic Monkeys", + "Album Artist": "Arctic Monkeys", + "Composer": "Arctic Monkeys", + "Album": "Favourite Worst Nightmare", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9511222", + "Total Time": "253587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2021-01-22T14:53:07Z", + "Date Added": "2021-01-22T14:53:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780854483", + "Play Date UTC": "2023-10-22T18:21:23Z", + "Skip Count": "1", + "Skip Date": "2022-03-15T18:00:04Z", + "Release Date": "2007-04-20T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Favourite Worst Nightmare", + "Sort Artist": "Arctic Monkeys", + "Sort Name": "505", + "Persistent ID": "836D280A30A2BCFA", + "Track Type": "Remote" + }, + { + "Track ID": "5023", + "Name": "Cocoa Hooves", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "David Bayley", + "Album": "Leaflings - EP", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8807132", + "Total Time": "252907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2012", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3770488178", + "Play Date UTC": "2023-06-24T18:49:38Z", + "Skip Count": "1", + "Skip Date": "2021-09-12T19:42:17Z", + "Release Date": "2012-05-28T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Leaflings - EP", + "Sort Artist": "Glass Animals", + "Sort Name": "Cocoa Hooves", + "Persistent ID": "2625D246624DBE6E", + "Track Type": "Remote" + }, + { + "Track ID": "5025", + "Name": "Collider", + "Artist": "X Ambassadors & Tom Morello", + "Album Artist": "X Ambassadors", + "Composer": "Tom Morello, Sam Harris, Adam Levin, Noah Feldshuh & Casey Harris", + "Album": "VHS 2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7234872", + "Total Time": "198973", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3758185130", + "Play Date UTC": "2023-02-02T09:18:50Z", + "Skip Count": "3", + "Skip Date": "2022-11-29T09:07:23Z", + "Release Date": "2016-06-10T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "VHS 2.0", + "Sort Artist": "X Ambassadors & Tom Morello", + "Sort Name": "Collider", + "Persistent ID": "095DC8C7F4F8A089", + "Track Type": "Remote" + }, + { + "Track ID": "5027", + "Name": "Toes", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "David Bayley", + "Album": "Zaba", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9074049", + "Total Time": "254640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3781186349", + "Play Date UTC": "2023-10-26T14:32:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ZABA", + "Sort Artist": "Glass Animals", + "Sort Name": "Toes", + "Persistent ID": "AB91CDCA65939409", + "Track Type": "Remote" + }, + { + "Track ID": "5029", + "Name": "As You Are", + "Artist": "Rag'n'Bone Man", + "Album Artist": "Rag'n'Bone Man", + "Composer": "Rory Graham, Jamie Scott & Jonny Coffer", + "Album": "Human (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8052372", + "Total Time": "228510", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "19", + "Year": "2017", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3779902974", + "Play Date UTC": "2023-10-11T18:02:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-10T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Human (Deluxe)", + "Sort Artist": "Rag'n'Bone Man", + "Sort Name": "As You Are", + "Persistent ID": "609A26BBDF163D3C", + "Track Type": "Remote" + }, + { + "Track ID": "5031", + "Name": "Look On Down from the Bridge", + "Artist": "Mazzy Star", + "Album Artist": "Mazzy Star", + "Composer": "undef", + "Album": "Among My Swan", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "10313931", + "Total Time": "287893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "1996", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781615617", + "Play Date UTC": "2023-10-31T13:46:57Z", + "Skip Count": "1", + "Skip Date": "2021-09-11T21:31:28Z", + "Release Date": "1996-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Among My Swan", + "Sort Artist": "Mazzy Star", + "Sort Name": "Look On Down from the Bridge", + "Persistent ID": "14CA0B0167C53FDF", + "Track Type": "Remote" + }, + { + "Track ID": "5033", + "Name": "Eye of the Storm", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin", + "Album": "VHS 2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8083128", + "Total Time": "226480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3771828470", + "Play Date UTC": "2023-07-10T07:07:50Z", + "Skip Count": "1", + "Skip Date": "2022-10-02T17:28:45Z", + "Release Date": "2016-06-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "VHS 2.0", + "Sort Artist": "X Ambassadors", + "Sort Name": "Eye of the Storm", + "Persistent ID": "FC30810084FF4647", + "Track Type": "Remote" + }, + { + "Track ID": "5035", + "Name": "Nara", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "This Is All Yours", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10913503", + "Total Time": "296058", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3734976371", + "Play Date UTC": "2022-05-09T18:26:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-09-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "This Is All Yours", + "Sort Artist": "alt-J", + "Sort Name": "Nara", + "Persistent ID": "CCFAD98BE1DC15D8", + "Track Type": "Remote" + }, + { + "Track ID": "5037", + "Name": "Don't Stay", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Ryan Tedder, Casey Harris, Adam Levine & Zach Skelton", + "Album": "Don\u2019t Stay - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6925092", + "Total Time": "189800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781181907", + "Play Date UTC": "2023-10-26T13:18:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-02-02T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Don\u2019t Stay - Single", + "Sort Artist": "X Ambassadors", + "Sort Name": "Don't Stay", + "Persistent ID": "6DB6994067CDF74E", + "Track Type": "Remote" + }, + { + "Track ID": "5039", + "Name": "Get Home", + "Artist": "Bastille", + "Album Artist": "Bastille", + "Composer": "Dan Smith", + "Album": "All This Bad Blood", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6732024", + "Total Time": "191187", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "12", + "Track Count": "12", + "Year": "2011", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3781057961", + "Play Date UTC": "2023-10-25T02:52:41Z", + "Skip Count": "1", + "Skip Date": "2021-09-25T06:23:52Z", + "Release Date": "2011-11-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "All This Bad Blood", + "Sort Artist": "Bastille", + "Sort Name": "Get Home", + "Persistent ID": "0527182A3D27421B", + "Track Type": "Remote" + }, + { + "Track ID": "5041", + "Name": "Wonderful Life", + "Artist": "Smith & Burrows", + "Album Artist": "Smith & Burrows", + "Composer": "Colin Vearncombe", + "Album": "Funny Looking Angels", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9905863", + "Total Time": "262867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2011", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3783409380", + "Play Date UTC": "2023-11-21T08:03:00Z", + "Skip Count": "2", + "Skip Date": "2022-10-27T15:12:44Z", + "Release Date": "2011-11-25T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Funny Looking Angels", + "Sort Artist": "Smith & Burrows", + "Sort Name": "Wonderful Life", + "Persistent ID": "42995F82DD5ACA0C", + "Track Type": "Remote" + }, + { + "Track ID": "5043", + "Name": "Love Lockdown", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Kanye West, Jeff Bhasker, Jenny-Bea Englishman, Malik Yusef Jones & LaNeah", + "Album": "Pools - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5934550", + "Total Time": "161893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3773206687", + "Play Date UTC": "2023-07-26T05:58:07Z", + "Skip Count": -1, + "Skip Date": "2022-10-17T05:42:20Z", + "Release Date": "2014-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pools - EP", + "Sort Artist": "Glass Animals", + "Sort Name": "Love Lockdown", + "Persistent ID": "AE4D1900EF4EB923", + "Track Type": "Remote" + }, + { + "Track ID": "5045", + "Name": "Matilda", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green/Charlie Andrew", + "Album": "An Awesome Wave", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8240114", + "Total Time": "228711", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2012", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3783712240", + "Play Date UTC": "2023-11-24T20:10:40Z", + "Skip Count": "6", + "Skip Date": "2022-03-29T12:32:35Z", + "Release Date": "2012-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Awesome Wave", + "Sort Artist": "alt-J", + "Sort Name": "Matilda", + "Persistent ID": "D1E1142E584FE7FD", + "Track Type": "Remote" + }, + { + "Track ID": "5047", + "Name": "She Will Be Loved", + "Artist": "Maroon 5", + "Album Artist": "Maroon 5", + "Composer": "Adam Levine & James Valentine", + "Album": "Songs About Jane", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "9322028", + "Total Time": "258469", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2002", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783776814", + "Play Date UTC": "2023-11-25T14:06:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Songs About Jane", + "Sort Artist": "Maroon 5", + "Sort Name": "She Will Be Loved", + "Persistent ID": "7A5096D679A427EF", + "Track Type": "Remote" + }, + { + "Track ID": "5049", + "Name": "Deadcrush", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "RELAXER", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8194156", + "Total Time": "232013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "8", + "Year": "2017", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3782990681", + "Play Date UTC": "2023-11-16T11:44:41Z", + "Skip Count": "2", + "Skip Date": "2021-12-10T13:47:57Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RELAXER", + "Sort Artist": "alt-J", + "Sort Name": "Deadcrush", + "Persistent ID": "D2C1F66AFDB31D67", + "Track Type": "Remote" + }, + { + "Track ID": "5051", + "Name": "WDWGILY", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "SYML", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7847350", + "Total Time": "218312", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3781621360", + "Play Date UTC": "2023-10-31T15:22:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-31T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "SYML", + "Sort Artist": "SYML", + "Sort Name": "WDWGILY", + "Persistent ID": "D97E169325C28364", + "Track Type": "Remote" + }, + { + "Track ID": "5053", + "Name": "YuNg BrAtZ", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "Revenge", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3895548", + "Total Time": "101851", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "7", + "Year": "2016", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781397219", + "Play Date UTC": "2023-10-29T01:06:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-07-04T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Revenge", + "Sort Artist": "XXXTENTACION", + "Sort Name": "YuNg BrAtZ", + "Persistent ID": "E00E44632BA97C86", + "Track Type": "Remote" + }, + { + "Track ID": "5055", + "Name": "Exxus", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "David Bayley", + "Album": "Glass Animals - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8960052", + "Total Time": "256042", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2013", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3781093759", + "Play Date UTC": "2023-10-25T12:49:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Glass Animals - EP", + "Sort Artist": "Glass Animals", + "Sort Name": "Exxus", + "Persistent ID": "31D476CAFFC2C245", + "Track Type": "Remote" + }, + { + "Track ID": "5057", + "Name": "This Wild Darkness", + "Artist": "Moby", + "Album Artist": "Moby", + "Composer": "Moby", + "Album": "Everything Was Beautiful, and Nothing Hurt", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "8726175", + "Total Time": "249280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3780295167", + "Play Date UTC": "2023-10-16T06:59:27Z", + "Skip Count": "1", + "Skip Date": "2021-05-11T19:33:32Z", + "Release Date": "2018-03-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Everything Was Beautiful, and Nothing Hurt", + "Sort Artist": "Moby", + "Sort Name": "This Wild Darkness", + "Persistent ID": "29469BEB8922F254", + "Track Type": "Remote" + }, + { + "Track ID": "5059", + "Name": "Unconsolable", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin", + "Album": "Love Songs Drug Songs - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8087595", + "Total Time": "216720", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2013", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3776232606", + "Play Date UTC": "2023-08-30T06:30:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Love Songs Drug Songs - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Unconsolable", + "Persistent ID": "21BD5A1390AEEDF2", + "Track Type": "Remote" + }, + { + "Track ID": "5061", + "Name": "Magic", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "Ghost Stories", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10059722", + "Total Time": "285014", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3765361640", + "Play Date UTC": "2023-04-26T10:47:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-03-03T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ghost Stories", + "Sort Artist": "Coldplay", + "Sort Name": "Magic", + "Persistent ID": "810D913FA93AD3DA", + "Track Type": "Remote" + }, + { + "Track ID": "5063", + "Name": "Leipzig", + "Artist": "Balthazar", + "Album Artist": "Balthazar", + "Composer": "Maarten Devoldere and Jinte Deprez", + "Album": "Leipzig - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6178401", + "Total Time": "160382", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2014", + "Date Modified": "2021-01-22T14:53:09Z", + "Date Added": "2021-01-22T14:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3780499020", + "Play Date UTC": "2023-10-18T15:37:00Z", + "Skip Count": "1", + "Skip Date": "2021-11-02T15:51:13Z", + "Release Date": "2014-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Leipzig - Single", + "Sort Artist": "Balthazar", + "Sort Name": "Leipzig", + "Persistent ID": "D267AF67B14F7E8B", + "Track Type": "Remote" + }, + { + "Track ID": "5065", + "Name": "Dinosaurs in Love (feat. Tom Rosenthal)", + "Artist": "Fenn Rosenthal", + "Album Artist": "Fenn Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "Dinosaurs in Love (feat. Tom Rosenthal) - Single", + "Genre": "Children's Music", + "Kind": "Apple Music AAC audio file", + "Size": "2628647", + "Total Time": "66570", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-22T19:27:25Z", + "Date Added": "2021-01-22T19:27:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3779630848", + "Play Date UTC": "2023-10-08T14:27:28Z", + "Skip Count": "5", + "Skip Date": "2022-10-23T10:52:25Z", + "Release Date": "2020-01-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dinosaurs in Love (feat. Tom Rosenthal) - Single", + "Sort Artist": "Fenn Rosenthal", + "Sort Name": "Dinosaurs in Love (feat. Tom Rosenthal)", + "Persistent ID": "DD0EE02D4545EB88", + "Track Type": "Remote" + }, + { + "Track ID": "5067", + "Name": "Innocent Man", + "Artist": "Rag'n'Bone Man", + "Album Artist": "Rag'n'Bone Man", + "Composer": "Rory Graham, Simon Aldred & Ben Ash", + "Album": "Human (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6619386", + "Total Time": "186657", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "19", + "Year": "2017", + "Date Modified": "2021-01-22T19:28:27Z", + "Date Added": "2021-01-22T19:28:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781208350", + "Play Date UTC": "2023-10-26T20:39:10Z", + "Skip Count": "1", + "Skip Date": "2023-11-25T13:28:37Z", + "Release Date": "2017-02-10T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Human (Deluxe)", + "Sort Artist": "Rag'n'Bone Man", + "Sort Name": "Innocent Man", + "Persistent ID": "D93AED08CA8B0E01", + "Track Type": "Remote" + }, + { + "Track ID": "5069", + "Name": "Live Life", + "Artist": "Matt Easton", + "Album Artist": "Matt Easton", + "Composer": "undef", + "Album": "Live Life - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9459806", + "Total Time": "269636", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2010", + "Date Modified": "2021-01-22T19:34:31Z", + "Date Added": "2021-01-22T19:34:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3779897834", + "Play Date UTC": "2023-10-11T16:37:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2010-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Live Life - Single", + "Sort Artist": "Matt Easton", + "Sort Name": "Live Life", + "Persistent ID": "3550DD9C0307B549", + "Track Type": "Remote" + }, + { + "Track ID": "5071", + "Name": "With My Friends", + "Artist": "Chris Travis", + "Album Artist": "Chris Travis", + "Composer": "Chris Travis", + "Album": "Art of Destruction", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4854863", + "Total Time": "132015", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2015", + "Date Modified": "2021-01-23T09:44:43Z", + "Date Added": "2021-01-23T09:44:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781208616", + "Play Date UTC": "2023-10-26T20:43:36Z", + "Skip Count": "1", + "Skip Date": "2021-09-09T21:53:51Z", + "Release Date": "2015-08-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Art of Destruction", + "Sort Artist": "Chris Travis", + "Sort Name": "With My Friends", + "Persistent ID": "F66914BDD18DF876", + "Track Type": "Remote" + }, + { + "Track ID": "5073", + "Name": "Brooklyn", + "Artist": "Woodkid", + "Album Artist": "Woodkid", + "Composer": "Woodkid", + "Album": "Iron EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7514210", + "Total Time": "210440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2011", + "Date Modified": "2021-01-23T09:47:04Z", + "Date Added": "2021-01-23T09:47:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3770288262", + "Play Date UTC": "2023-06-22T11:17:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-03-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Iron EP", + "Sort Artist": "Woodkid", + "Sort Name": "Brooklyn", + "Persistent ID": "5396C90F5541A4A1", + "Track Type": "Remote" + }, + { + "Track ID": "5075", + "Name": "Lost It To Trying", + "Artist": "Son Lux", + "Album Artist": "Son Lux", + "Composer": "undef", + "Album": "Lanterns", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10727830", + "Total Time": "282587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2013", + "Date Modified": "2021-01-23T09:59:36Z", + "Date Added": "2021-01-23T09:59:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781621644", + "Play Date UTC": "2023-10-31T15:27:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-10-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lanterns", + "Sort Artist": "Son Lux", + "Sort Name": "Lost It To Trying", + "Persistent ID": "6A3ACE7E9D4E8091", + "Track Type": "Remote" + }, + { + "Track ID": "5077", + "Name": "Dirty", + "Artist": "grandson", + "Album Artist": "grandson", + "Composer": "Chester Krupa Carbone, Gabe Simon, Jordan Benjamin & Kevin Hissink", + "Album": "Death Of An Optimist", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7475653", + "Total Time": "208296", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2021-01-23T13:49:51Z", + "Date Added": "2021-01-23T13:49:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3769667454", + "Play Date UTC": "2023-06-15T06:50:54Z", + "Skip Count": "1", + "Skip Date": "2023-10-12T16:38:38Z", + "Release Date": "2020-09-23T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Death Of An Optimist", + "Sort Artist": "grandson", + "Sort Name": "Dirty", + "Persistent ID": "5F7211A69529DB38", + "Track Type": "Remote" + }, + { + "Track ID": "5079", + "Name": "Half Italian (Live from 2020)", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Angel Miners & the Lightning Riders Live from 2020", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9418790", + "Total Time": "263750", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3767676330", + "Play Date UTC": "2023-05-23T05:45:30Z", + "Skip Count": "2", + "Skip Date": "2022-11-24T20:31:46Z", + "Release Date": "2020-11-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angel Miners & the Lightning Riders Live from 2020", + "Sort Artist": "AWOLNATION", + "Sort Name": "Half Italian (Live from 2020)", + "Persistent ID": "8964E442640DD0AA", + "Track Type": "Remote" + }, + { + "Track ID": "5081", + "Name": "Self Care", + "Artist": "Mac Miller", + "Album Artist": "Mac Miller", + "Composer": "Dacoury Natche, Destin Route, Devonte Hynes, E. Dan, Erica Wright, Jahmal Cantero, Malcolm McCormick, Peter Mudge & Tyler Mason", + "Album": "Swimming", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12108495", + "Total Time": "345119", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3781570104", + "Play Date UTC": "2023-10-31T01:08:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-07-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Swimming", + "Sort Artist": "Mac Miller", + "Sort Name": "Self Care", + "Persistent ID": "CE23CFDAEC726B5D", + "Track Type": "Remote" + }, + { + "Track ID": "5083", + "Name": "High Enough", + "Artist": "K.Flay", + "Album Artist": "K.Flay", + "Composer": "Kristine Flaherty & Mike Elizondo", + "Album": "Every Where Is Some Where", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8142365", + "Total Time": "231600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781352094", + "Play Date UTC": "2023-10-28T12:34:54Z", + "Skip Count": "2", + "Skip Date": "2023-06-07T15:13:35Z", + "Release Date": "2017-04-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Every Where Is Some Where", + "Sort Artist": "K.Flay", + "Sort Name": "High Enough", + "Persistent ID": "A48DD12D4CB10BEC", + "Track Type": "Remote" + }, + { + "Track ID": "5085", + "Name": "The Trouble with Us", + "Artist": "Marcus Marr & Chet Faker", + "Album Artist": "Marcus Marr & Chet Faker", + "Composer": "Marcus Annesley & Nick Murphy", + "Album": "Work - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7902265", + "Total Time": "222067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2015", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3767091800", + "Play Date UTC": "2023-05-16T11:23:20Z", + "Skip Count": "1", + "Skip Date": "2021-01-23T14:55:37Z", + "Release Date": "2015-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Work - EP", + "Sort Artist": "Marcus Marr & Chet Faker", + "Sort Name": "Trouble with Us", + "Persistent ID": "E84DD64CC923BA66", + "Track Type": "Remote" + }, + { + "Track ID": "5087", + "Name": "Focus (feat. 21 Savage)", + "Artist": "Bazzi", + "Album Artist": "Bazzi", + "Composer": "21 Savage, Andrew Bazzi, David Guy, Kevin White, Leon Michels, Mike Woods & Thomas Brenneck", + "Album": "Soul Searching", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5630074", + "Total Time": "155134", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781319402", + "Play Date UTC": "2023-10-28T03:30:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Soul Searching", + "Sort Artist": "Bazzi", + "Sort Name": "Focus (feat. 21 Savage)", + "Persistent ID": "3CE675A3A94C2BF9", + "Track Type": "Remote" + }, + { + "Track ID": "5089", + "Name": "FOOL'S GOLD", + "Artist": "Aries", + "Album Artist": "Aries", + "Composer": "Aries, Tim Aspan & Henry Nichols", + "Album": "FOOL'S GOLD - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5488883", + "Total Time": "149843", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3783782121", + "Play Date UTC": "2023-11-25T15:35:21Z", + "Skip Count": "1", + "Skip Date": "2022-06-24T12:42:43Z", + "Release Date": "2020-11-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "FOOL'S GOLD - Single", + "Sort Artist": "Aries", + "Sort Name": "FOOL'S GOLD", + "Persistent ID": "CB6B03011661996C", + "Track Type": "Remote" + }, + { + "Track ID": "5091", + "Name": "In My Head", + "Artist": "Peter Manos", + "Album Artist": "Peter Manos", + "Composer": "Peter Manos", + "Album": "In My Head - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7673658", + "Total Time": "214533", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3783002636", + "Play Date UTC": "2023-11-16T15:03:56Z", + "Skip Count": "1", + "Skip Date": "2021-09-25T19:00:55Z", + "Release Date": "2017-05-24T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In My Head - Single", + "Sort Artist": "Peter Manos", + "Sort Name": "In My Head", + "Persistent ID": "2C725D3CCACD505C", + "Track Type": "Remote" + }, + { + "Track ID": "5093", + "Name": "Sailor Moon", + "Artist": "Airospace", + "Album Artist": "Airospace", + "Composer": "Airospace", + "Album": "Sailor Moon - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8385802", + "Total Time": "240010", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3783077782", + "Play Date UTC": "2023-11-17T11:56:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-11-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sailor Moon - Single", + "Sort Artist": "Airospace", + "Sort Name": "Sailor Moon", + "Persistent ID": "A8C9FD0ED59C4FC3", + "Track Type": "Remote" + }, + { + "Track ID": "5095", + "Name": "Falling", + "Artist": "Trevor Daniel", + "Album Artist": "Trevor Daniel", + "Composer": "Trevor Daniel Neill, Danny Snodgrass Jr., Ryan Vojtesak, Kim Candilora II, Tristan Norton & Martin Kottmeier", + "Album": "Nicotine", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5944499", + "Total Time": "159382", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3782905133", + "Play Date UTC": "2023-11-15T11:58:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nicotine", + "Sort Artist": "Trevor Daniel", + "Sort Name": "Falling", + "Persistent ID": "C94ADD705C8F133B", + "Track Type": "Remote" + }, + { + "Track ID": "5097", + "Name": "Hollow Life", + "Artist": "Coast Modern", + "Album Artist": "Coast Modern", + "Composer": "undef", + "Album": "Coast Modern", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8485142", + "Total Time": "237880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2015", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3768410055", + "Play Date UTC": "2023-05-31T17:34:15Z", + "Skip Count": "2", + "Skip Date": "2022-12-08T15:04:29Z", + "Release Date": "2015-10-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Coast Modern", + "Sort Artist": "Coast Modern", + "Sort Name": "Hollow Life", + "Persistent ID": "A990B1C33407D374", + "Track Type": "Remote" + }, + { + "Track ID": "5099", + "Name": "WISH YOU WELL", + "Artist": "Amir Ob\u00e8", + "Album Artist": "undef", + "Composer": "Madhi Ahmed & A. Obie", + "Album": "None of the Clocks Work", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6835668", + "Total Time": "192612", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "7", + "Year": "2017", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783672355", + "Play Date UTC": "2023-11-24T09:05:55Z", + "Skip Count": "2", + "Skip Date": "2022-06-21T04:58:16Z", + "Release Date": "2017-03-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "None of the Clocks Work", + "Sort Artist": "Amir Ob\u00e8", + "Sort Name": "WISH YOU WELL", + "Persistent ID": "A1702E3FA5EDB48A", + "Track Type": "Remote" + }, + { + "Track ID": "5101", + "Name": "Running Miles", + "Artist": "Hippie Sabotage", + "Album Artist": "Hippie Sabotage", + "Composer": "J. Saurer & K. Saurer", + "Album": "Running Miles - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "8863527", + "Total Time": "255530", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3779240576", + "Play Date UTC": "2023-10-04T02:02:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Running Miles - Single", + "Sort Artist": "Hippie Sabotage", + "Sort Name": "Running Miles", + "Persistent ID": "C92BE06E6561AE9D", + "Track Type": "Remote" + }, + { + "Track ID": "5103", + "Name": "Let U Know", + "Artist": "VIC MENSA & Jesse", + "Album Artist": "VIC MENSA & Jesse", + "Composer": "Victor Mensah, Edward Davis, Jesse, Donald Breedlove & Napoleon Crayton", + "Album": "Let U Know - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5860085", + "Total Time": "159196", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3779317289", + "Play Date UTC": "2023-10-04T23:21:29Z", + "Skip Count": "2", + "Skip Date": "2022-08-16T14:57:18Z", + "Release Date": "2019-08-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Let U Know - Single", + "Sort Artist": "VIC MENSA & Jesse", + "Sort Name": "Let U Know", + "Persistent ID": "590F4E1470AB72A8", + "Track Type": "Remote" + }, + { + "Track ID": "5105", + "Name": "Nippy", + "Artist": "Student 1", + "Album Artist": "Student 1", + "Composer": "Lulseged Afework", + "Album": "Nippy - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6895488", + "Total Time": "189904", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3781193565", + "Play Date UTC": "2023-10-26T16:32:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-04-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nippy - Single", + "Sort Artist": "Student 1", + "Sort Name": "Nippy", + "Persistent ID": "2A929AD185413EE2", + "Track Type": "Remote" + }, + { + "Track ID": "5107", + "Name": "Who Dat Boy (feat. A$AP Rocky)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma & Rakim Mayers", + "Album": "Flower Boy", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7426784", + "Total Time": "205095", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3780905689", + "Play Date UTC": "2023-10-23T08:34:49Z", + "Skip Count": "3", + "Skip Date": "2023-01-08T22:31:58Z", + "Release Date": "2017-07-06T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Flower Boy", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Who Dat Boy (feat. A$AP Rocky)", + "Persistent ID": "0A7C38E3155915D7", + "Track Type": "Remote" + }, + { + "Track ID": "5109", + "Name": "Candy (feat. Trippie Redd)", + "Artist": "Machine Gun Kelly", + "Album Artist": "Machine Gun Kelly", + "Composer": "Anton G\u00f6ransson, Colson Baker, Michael Lamar White IV, Thomas Brown, Issabella Sj\u00f6strand, Charles Anderson & Michael Foster", + "Album": "Hotel Diablo", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5801130", + "Total Time": "156719", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3779863889", + "Play Date UTC": "2023-10-11T07:11:29Z", + "Skip Count": "6", + "Skip Date": "2022-11-25T21:54:14Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hotel Diablo", + "Sort Artist": "Machine Gun Kelly", + "Sort Name": "Candy (feat. Trippie Redd)", + "Persistent ID": "3D7D3551C52EE5C5", + "Track Type": "Remote" + }, + { + "Track ID": "5111", + "Name": "100 Rounds", + "Artist": "FRVRFRIDAY", + "Album Artist": "FRVRFRIDAY", + "Composer": "Tommy Ruhingubugi & Jausont David", + "Album": "100 Rounds - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4881233", + "Total Time": "132739", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-23T14:36:08Z", + "Date Added": "2021-01-23T14:36:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783807076", + "Play Date UTC": "2023-11-25T22:31:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-03-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "100 Rounds - Single", + "Sort Artist": "FRVRFRIDAY", + "Sort Name": "100 Rounds", + "Persistent ID": "479A2F1E41BE527D", + "Track Type": "Remote" + }, + { + "Track ID": "5113", + "Name": "Keep On Keeping On' (feat. Brendon Urie)", + "Artist": "Travie McCoy", + "Album Artist": "Travie McCoy", + "Composer": "Butch Walker, Khari Cain & Travis McCoy", + "Album": "Keep On Keeping On (feat. Brendon Urie) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8747180", + "Total Time": "245514", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2014", + "Date Modified": "2021-01-23T15:55:13Z", + "Date Added": "2021-01-23T15:55:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3778571251", + "Play Date UTC": "2023-09-26T08:07:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-03-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Keep On Keeping On (feat. Brendon Urie) - Single", + "Sort Artist": "Travie McCoy", + "Sort Name": "Keep On Keeping On' (feat. Brendon Urie)", + "Persistent ID": "B3CA7BECC3781C76", + "Track Type": "Remote" + }, + { + "Track ID": "5115", + "Name": "Oidar", + "Artist": "Hether", + "Album Artist": "Hether", + "Composer": "William perliter", + "Album": "Sticky Thumb", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7435482", + "Total Time": "208500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "8", + "Year": "2021", + "Date Modified": "2021-01-25T19:29:30Z", + "Date Added": "2021-01-25T19:29:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3779241890", + "Play Date UTC": "2023-10-04T02:24:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-01-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sticky Thumb", + "Sort Artist": "Hether", + "Sort Name": "Oidar", + "Persistent ID": "79FF0577AD158BA7", + "Track Type": "Remote" + }, + { + "Track ID": "5117", + "Name": "Amber", + "Artist": "Unusual Demont", + "Album Artist": "Unusual Demont", + "Composer": "Unusual Demont", + "Album": "Amber - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7677004", + "Total Time": "211865", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-01-25T21:02:41Z", + "Date Added": "2021-01-25T21:02:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3760189350", + "Play Date UTC": "2023-02-25T14:02:30Z", + "Skip Count": "4", + "Skip Date": "2023-05-17T08:58:17Z", + "Release Date": "2020-08-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Amber - Single", + "Sort Artist": "Unusual Demont", + "Sort Name": "Amber", + "Persistent ID": "6E68FD86482D3CBC", + "Track Type": "Remote" + }, + { + "Track ID": "5119", + "Name": "The Load", + "Artist": "Barbarossa", + "Album Artist": "Barbarossa", + "Composer": "undef", + "Album": "Bloodlines", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8723774", + "Total Time": "244760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2012", + "Date Modified": "2021-01-26T17:04:06Z", + "Date Added": "2021-01-26T17:04:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3780069528", + "Play Date UTC": "2023-10-13T16:18:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-09-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bloodlines", + "Sort Artist": "Barbarossa", + "Sort Name": "Load", + "Persistent ID": "970BC3FCA37A0474", + "Track Type": "Remote" + }, + { + "Track ID": "5121", + "Name": "No Good in Goodbye", + "Artist": "The Script", + "Album Artist": "The Script", + "Composer": "Daniel O'Donoghue, Mark Sheehan & James Barry", + "Album": "No Sound Without Silence", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "10903322", + "Total Time": "307680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2021-01-28T16:34:27Z", + "Date Added": "2021-01-28T16:34:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3781079725", + "Play Date UTC": "2023-10-25T08:55:25Z", + "Skip Count": -1, + "Skip Date": "2022-10-05T20:42:59Z", + "Release Date": "2014-09-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Sound Without Silence", + "Sort Artist": "Script", + "Sort Name": "Script", + "Persistent ID": "No Good in Goodbye", + "Track Type": "09EE8046F215A2A2" + }, + { + "Track ID": "5123", + "Name": "Streets", + "Artist": "Doja Cat", + "Album Artist": "Doja Cat", + "Composer": "Amala Zandile Dlamini, Dominique Logan, Darius Logan, Omari Grandberry, Christopher jefferies, Lydia Asrat, David Sprecher, Demarie Sheki & Theron Otis Feemster", + "Album": "Hot Pink", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8074080", + "Total Time": "226978", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2021-02-01T21:21:36Z", + "Date Added": "2021-02-01T21:21:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3770298160", + "Play Date UTC": "2023-06-22T14:02:40Z", + "Skip Count": "4", + "Skip Date": "2022-10-28T18:28:26Z", + "Release Date": "2019-11-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hot Pink", + "Sort Artist": "Doja Cat", + "Sort Name": "Streets", + "Persistent ID": "5484CC7071EA7552", + "Track Type": "Remote" + }, + { + "Track ID": "5125", + "Name": "Friday, January 1st, 2021", + "Artist": "GurtyBeats", + "Album Artist": "GurtyBeats", + "Composer": "Gurty Beats", + "Album": "Friday, January 1st, 2021 - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4740561", + "Total Time": "129207", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-02-05T19:47:53Z", + "Date Added": "2021-02-05T19:47:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3767045475", + "Play Date UTC": "2023-05-15T22:31:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Friday, January 1st, 2021 - Single", + "Sort Artist": "GurtyBeats", + "Sort Name": "Friday, January 1st, 2021", + "Persistent ID": "48C15EF9CBDFCAC4", + "Track Type": "Remote" + }, + { + "Track ID": "5127", + "Name": "Summertime Sadness", + "Artist": "Lana Del Rey", + "Album Artist": "Lana Del Rey", + "Composer": "Lana Del Rey & Rick Nowels", + "Album": "Born to Die - The Paradise Edition", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9173069", + "Total Time": "265427", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "11", + "Track Count": "15", + "Year": "2012", + "Date Modified": "2021-02-06T22:14:23Z", + "Date Added": "2021-02-06T22:14:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781267091", + "Play Date UTC": "2023-10-27T12:58:11Z", + "Skip Count": "3", + "Skip Date": "2022-11-23T17:48:49Z", + "Release Date": "2011-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Born to Die - The Paradise Edition", + "Sort Artist": "Lana Del Rey", + "Sort Name": "Summertime Sadness", + "Persistent ID": "9CE623DC69938D6B", + "Track Type": "Remote" + }, + { + "Track ID": "5129", + "Name": "Hero", + "Artist": "pivargo & Marie", + "Album Artist": "pivargo & Marie", + "Composer": "Mario E\u00dfwein", + "Album": "Hero - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "7051287", + "Total Time": "199170", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-02-07T14:28:17Z", + "Date Added": "2021-02-07T14:28:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3713892519", + "Play Date UTC": "2021-09-07T17:48:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-05-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hero - Single", + "Sort Artist": "pivargo & Marie", + "Sort Name": "Hero", + "Persistent ID": "C224275B7A80F935", + "Track Type": "Remote" + }, + { + "Track ID": "5131", + "Name": "Dome (feat. Caleb Jacob)", + "Artist": "State of Bliss", + "Album Artist": "State of Bliss", + "Composer": "Adam Gold", + "Album": "Dome (feat. Caleb Jacob) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "5880749", + "Total Time": "163200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-02-07T15:58:47Z", + "Date Added": "2021-02-07T15:58:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3715684772", + "Play Date UTC": "2021-09-28T11:39:32Z", + "Skip Count": "1", + "Skip Date": "2021-02-08T22:14:10Z", + "Release Date": "2020-02-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dome (feat. Caleb Jacob) - Single", + "Sort Artist": "State of Bliss", + "Sort Name": "Dome (feat. Caleb Jacob)", + "Persistent ID": "8F0FC4A6B7BF3C26", + "Track Type": "Remote" + }, + { + "Track ID": "5133", + "Name": "Redbone", + "Artist": "Childish Gambino", + "Album Artist": "Childish Gambino", + "Composer": "Donald Glover & Ludwig G\u00f6ransson", + "Album": "\"Awaken, My Love!\"", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "11817848", + "Total Time": "326933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2021-02-08T18:04:33Z", + "Date Added": "2021-02-08T18:04:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3783360017", + "Play Date UTC": "2023-11-20T18:20:17Z", + "Skip Count": "8", + "Skip Date": "2023-11-05T01:55:58Z", + "Release Date": "2016-11-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "\"Awaken, My Love!\"", + "Sort Artist": "Childish Gambino", + "Sort Name": "Redbone", + "Persistent ID": "B13A8BB47605E366", + "Track Type": "Remote" + }, + { + "Track ID": "5135", + "Name": "Come Get Her", + "Artist": "Rae Sremmurd", + "Album Artist": "Rae Sremmurd", + "Composer": "Mike Williams, A. Hogan, A.Brown & K. Brown", + "Album": "SremmLife", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8578938", + "Total Time": "212947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2021-02-09T06:39:43Z", + "Date Added": "2021-02-09T06:39:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781853395", + "Play Date UTC": "2023-11-03T07:49:55Z", + "Skip Count": "1", + "Skip Date": "2022-10-28T18:28:09Z", + "Release Date": "2015-01-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SremmLife", + "Sort Artist": "Rae Sremmurd", + "Sort Name": "Come Get Her", + "Persistent ID": "D23BE335FD928D63", + "Track Type": "Remote" + }, + { + "Track ID": "5137", + "Name": "Rolls Royce Umbrella (feat. Chris Brown)", + "Artist": "Clever", + "Album Artist": "Clever", + "Composer": "Joshua Huie, JJ Stevens, Londn Blue & Karltin Bankz", + "Album": "Rolls Royce Umbrella (feat. Chris Brown) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8234912", + "Total Time": "233987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-02-14T10:25:55Z", + "Date Added": "2021-02-14T10:25:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3781530209", + "Play Date UTC": "2023-10-30T14:03:29Z", + "Skip Count": "4", + "Skip Date": "2021-06-01T11:13:19Z", + "Release Date": "2021-02-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rolls Royce Umbrella (feat. Chris Brown) - Single", + "Sort Artist": "Clever", + "Sort Name": "Rolls Royce Umbrella (feat. Chris Brown)", + "Persistent ID": "38246F5E4832D3AB", + "Track Type": "Remote" + }, + { + "Track ID": "5139", + "Name": "A Little Opus", + "Artist": "Little Comets", + "Album Artist": "Little Comets", + "Composer": "R. Coles & M. Coles", + "Album": "Life Is Elsewhere", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8491231", + "Total Time": "227360", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2012", + "Date Modified": "2021-02-15T05:10:21Z", + "Date Added": "2021-02-15T05:10:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3780910707", + "Play Date UTC": "2023-10-23T09:58:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-10-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life Is Elsewhere", + "Sort Artist": "Little Comets", + "Sort Name": "Little Opus", + "Persistent ID": "3D246A229809CFE9", + "Track Type": "Remote" + }, + { + "Track ID": "5141", + "Name": "Out For You", + "Artist": "Colyer", + "Album Artist": "Colyer", + "Composer": "Steven Colyer", + "Album": "Out For You - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7129783", + "Total Time": "196854", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2021-02-15T05:14:30Z", + "Date Added": "2021-02-15T05:14:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3776238190", + "Play Date UTC": "2023-08-30T08:03:10Z", + "Skip Count": "1", + "Skip Date": "2022-06-19T08:01:56Z", + "Release Date": "2015-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Out For You - Single", + "Sort Artist": "Colyer", + "Sort Name": "Out For You", + "Persistent ID": "D7B788BB5E164938", + "Track Type": "Remote" + }, + { + "Track ID": "5143", + "Name": "Rosenrot", + "Artist": "Rammstein", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "Heavy Metal", + "Kind": "MPEG-4 video file", + "Size": "56111152", + "Total Time": "247360", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2005", + "Date Modified": "2021-02-15T21:57:12Z", + "Date Added": "2021-02-15T21:57:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3762331887", + "Play Date UTC": "2023-03-22T09:11:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2005-12-16T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Rammstein", + "Sort Name": "Rosenrot", + "Persistent ID": "94DD56FC6C7AFF68", + "Track Type": "Remote" + }, + { + "Track ID": "5145", + "Name": "Mein Herz brennt", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Christoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel", + "Album": "Mutter", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "10391081", + "Total Time": "279893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2001", + "Date Modified": "2021-02-16T05:46:57Z", + "Date Added": "2021-02-16T05:46:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3782382619", + "Play Date UTC": "2023-11-09T10:50:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2001-04-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mutter", + "Sort Artist": "Rammstein", + "Sort Name": "Mein Herz brennt", + "Persistent ID": "4EA158B293932EFE", + "Track Type": "Remote" + }, + { + "Track ID": "5147", + "Name": "Sonne", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Christoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel", + "Album": "Mutter", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9815617", + "Total Time": "272440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2001", + "Date Modified": "2021-02-16T05:53:34Z", + "Date Added": "2021-02-16T05:53:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3780907916", + "Play Date UTC": "2023-10-23T09:11:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2001-02-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mutter", + "Sort Artist": "Rammstein", + "Sort Name": "Sonne", + "Persistent ID": "BD6CA231188CF9D8", + "Track Type": "Remote" + }, + { + "Track ID": "5149", + "Name": "Ich will", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Till Lindemann, Paul Landers, Doktor Christian Lorenz, Christoph Doom Schneider & Oliver Riedel", + "Album": "Mutter", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8199020", + "Total Time": "217107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2001", + "Date Modified": "2021-02-16T12:11:35Z", + "Date Added": "2021-02-16T12:11:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3782382835", + "Play Date UTC": "2023-11-09T10:53:55Z", + "Skip Count": "4", + "Skip Date": "2022-08-18T21:36:34Z", + "Release Date": "2001-04-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mutter", + "Sort Artist": "Rammstein", + "Sort Name": "Ich will", + "Persistent ID": "DCAB505154F0956F", + "Track Type": "Remote" + }, + { + "Track ID": "5151", + "Name": "Mann gegen Mann", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Christoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel", + "Album": "Rosenrot", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8983997", + "Total Time": "230560", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2005", + "Date Modified": "2021-02-16T12:23:07Z", + "Date Added": "2021-02-16T12:23:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3782388547", + "Play Date UTC": "2023-11-09T12:29:07Z", + "Skip Count": "3", + "Skip Date": "2023-02-25T18:40:30Z", + "Release Date": "2005-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rosenrot", + "Sort Artist": "Rammstein", + "Sort Name": "Mann gegen Mann", + "Persistent ID": "0B0660A07F2AE01A", + "Track Type": "Remote" + }, + { + "Track ID": "5153", + "Name": "Magnolia (feat. KirbLaGoop)", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "Gray/Grey", + "Genre": "Hip-Hop", + "Kind": "AAC audio file", + "Size": "5741582", + "Total Time": "158824", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2015", + "Date Modified": "2021-02-25T08:20:45Z", + "Date Added": "2021-02-25T08:20:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3770187668", + "Play Date UTC": "2023-06-21T07:21:08Z", + "Skip Count": "2", + "Skip Date": "2022-08-26T19:43:23Z", + "Release Date": "2015-03-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gray/Grey", + "Sort Artist": "$uicideboy$", + "Sort Name": "Magnolia (feat. KirbLaGoop)", + "Persistent ID": "E7A85A52660E05D7", + "Track Type": "Remote" + }, + { + "Track ID": "5155", + "Name": "Godzilla (feat. Juice WRLD)", + "Artist": "Eminem", + "Album Artist": "Eminem", + "Composer": "M. Mathers, L. Resto, D. Doman, J. Higgins & A. Villasana", + "Album": "Music To Be Murdered By - Side B (Deluxe Edition)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7497305", + "Total Time": "210800", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "7", + "Track Count": "20", + "Year": "2020", + "Date Modified": "2021-02-25T13:10:30Z", + "Date Added": "2021-02-25T13:10:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3772781456", + "Play Date UTC": "2023-07-21T07:50:56Z", + "Skip Count": "5", + "Skip Date": "2022-12-05T21:41:39Z", + "Release Date": "2020-01-17T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Music To Be Murdered By - Side B (Deluxe Edition)", + "Sort Artist": "Eminem", + "Sort Name": "Godzilla (feat. Juice WRLD)", + "Persistent ID": "CAFB2C84D175888A", + "Track Type": "Remote" + }, + { + "Track ID": "5157", + "Name": "ocean eyes", + "Artist": "Billie Eilish", + "Album Artist": "Billie Eilish", + "Composer": "FINNEAS", + "Album": "dont smile at me", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7182760", + "Total Time": "200379", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "9", + "Year": "2016", + "Date Modified": "2021-02-25T23:53:18Z", + "Date Added": "2021-02-25T23:53:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3780841562", + "Play Date UTC": "2023-10-22T14:46:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-05-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "dont smile at me", + "Sort Artist": "Billie Eilish", + "Sort Name": "ocean eyes", + "Persistent ID": "FCAEFD2A668131A8", + "Track Type": "Remote" + }, + { + "Track ID": "5159", + "Name": "High (feat. Elton John)", + "Artist": "Young Thug", + "Album Artist": "Young Thug", + "Composer": "Jeffrey Williams, Rex Kudo & Ryan Vojtesak", + "Album": "On the Rvn - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7053757", + "Total Time": "195160", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2018", + "Date Modified": "2021-02-26T11:03:15Z", + "Date Added": "2021-02-26T11:03:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3783402043", + "Play Date UTC": "2023-11-21T06:00:43Z", + "Skip Count": "1", + "Skip Date": "2021-02-26T22:36:23Z", + "Release Date": "2018-09-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "On the Rvn - EP", + "Sort Artist": "Young Thug", + "Sort Name": "High (feat. Elton John)", + "Persistent ID": "488D6FC84C87D5B1", + "Track Type": "Remote" + }, + { + "Track ID": "5161", + "Name": "Schnappi, das kleine Krokodil (Kids-Version)", + "Artist": "Das singende Krokodil vom Nil", + "Album Artist": "Das singende Krokodil vom Nil", + "Composer": "undef", + "Album": "Die sch\u00f6nsten Kinderlieder", + "Genre": "Children's Music", + "Kind": "Apple Music AAC audio file", + "Size": "4813551", + "Total Time": "128760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "19", + "Year": "2008", + "Date Modified": "2021-03-01T21:41:02Z", + "Date Added": "2021-03-01T21:41:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3782980618", + "Play Date UTC": "2023-11-16T08:56:58Z", + "Skip Count": "13", + "Skip Date": "2023-07-26T07:15:10Z", + "Release Date": "2005-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Die sch\u00f6nsten Kinderlieder", + "Sort Artist": "Das singende Krokodil vom Nil", + "Sort Name": "Schnappi, das kleine Krokodil (Kids-Version)", + "Persistent ID": "B463C8113C9ADE5B", + "Track Type": "Remote" + }, + { + "Track ID": "5163", + "Name": "Surf Club", + "Artist": "SAINt JHN", + "Album Artist": "SAINt JHN", + "Composer": "Carlos St. John & Lee Stashenko", + "Album": "Collection One", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8595628", + "Total Time": "240761", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2021-03-04T15:49:05Z", + "Date Added": "2021-03-04T15:49:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3776431172", + "Play Date UTC": "2023-09-01T13:39:32Z", + "Skip Count": "2", + "Skip Date": "2021-12-06T20:10:53Z", + "Release Date": "2018-03-30T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "100", + "Sort Album": "Collection One", + "Sort Artist": "SAINt JHN", + "Sort Name": "Surf Club", + "Persistent ID": "4AE80D5993E81606", + "Track Type": "Remote" + }, + { + "Track ID": "5165", + "Name": "Needed Me", + "Artist": "Rihanna", + "Album Artist": "Rihanna", + "Composer": "Dijon McFarlane, Robyn Rihanna Fenty, Nick Audino, Lewis Hughes, Khaled Rohaim, Adam Feeney, B. Hazard, T. Warbrick, C. Hinshaw & D. Rachel", + "Album": "ANTI (Deluxe)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6793764", + "Total Time": "191605", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "16", + "Year": "2016", + "Date Modified": "2021-03-04T16:16:58Z", + "Date Added": "2021-03-04T16:16:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3765359340", + "Play Date UTC": "2023-04-26T10:09:00Z", + "Skip Count": "1", + "Skip Date": "2021-04-02T10:10:37Z", + "Release Date": "2016-01-28T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ANTI (Deluxe)", + "Sort Artist": "Rihanna", + "Sort Name": "Needed Me", + "Persistent ID": "E9BCE256E3C172F1", + "Track Type": "Remote" + }, + { + "Track ID": "5167", + "Name": "Roses", + "Artist": "SAINt JHN", + "Album Artist": "SAINt JHN", + "Composer": "Carlos St. John, Lee Stashenko, PHILLIPS CARLOS ST. JOHN & STANSHENKO LEE", + "Album": "Collection One", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6379062", + "Total Time": "173611", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2016", + "Date Modified": "2021-03-04T16:26:10Z", + "Date Added": "2021-03-04T16:26:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3774742131", + "Play Date UTC": "2023-08-13T00:28:51Z", + "Skip Count": "1", + "Skip Date": "2021-03-06T15:08:37Z", + "Release Date": "2016-07-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Collection One", + "Sort Artist": "SAINt JHN", + "Sort Name": "Roses", + "Persistent ID": "BF62B480B975AA40", + "Track Type": "Remote" + }, + { + "Track ID": "5169", + "Name": "FRANCHISE (feat. Young Thug & M.I.A.)", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster, Jeffery Williams, Mathangi Arulpragasam, Teddy Walton, Chase Benjamin, Bernard Leverette, Gerald Tiller, Jamall Willingham & Maurice Gleaton", + "Album": "FRANCHISE (feat. Young Thug & M.I.A.) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7215143", + "Total Time": "202795", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-03-07T17:32:38Z", + "Date Added": "2021-03-07T17:32:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3783340923", + "Play Date UTC": "2023-11-20T13:02:03Z", + "Skip Count": "2", + "Skip Date": "2022-02-01T12:31:30Z", + "Release Date": "2020-09-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "FRANCHISE (feat. Young Thug & M.I.A.) - Single", + "Sort Artist": "Travis Scott", + "Sort Name": "FRANCHISE (feat. Young Thug & M.I.A.)", + "Persistent ID": "5BE63F0187E89B25", + "Track Type": "Remote" + }, + { + "Track ID": "5171", + "Name": "Doubt", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Blurryface", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6892675", + "Total Time": "191486", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2021-03-07T17:36:25Z", + "Date Added": "2021-03-07T17:36:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781449600", + "Play Date UTC": "2023-10-29T15:40:00Z", + "Skip Count": "2", + "Skip Date": "2022-09-30T07:08:04Z", + "Release Date": "2015-05-17T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blurryface", + "Sort Artist": "twenty one pilots", + "Sort Name": "Doubt", + "Persistent ID": "F70996C667E631D8", + "Track Type": "Remote" + }, + { + "Track ID": "5173", + "Name": "GOD BLESS THE RATCHETS", + "Artist": "SAINt JHN", + "Album Artist": "SAINt JHN", + "Composer": "Carlos St. John, hue: & Sham Joseph", + "Album": "Collection One", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7882711", + "Total Time": "224681", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2021-03-08T00:06:53Z", + "Date Added": "2021-03-08T00:06:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781394935", + "Play Date UTC": "2023-10-29T00:28:55Z", + "Skip Count": "2", + "Skip Date": "2022-04-30T07:26:48Z", + "Release Date": "2018-03-30T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Collection One", + "Sort Artist": "SAINt JHN", + "Sort Name": "GOD BLESS THE RATCHETS", + "Persistent ID": "194739C3D1A9E1AC", + "Track Type": "Remote" + }, + { + "Track ID": "5175", + "Name": "When Winter Begins", + "Artist": "grayera", + "Album Artist": "grayera", + "Composer": "Jonathan Schlumper", + "Album": "Wraith - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7146232", + "Total Time": "209455", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2016", + "Date Modified": "2021-03-08T10:06:22Z", + "Date Added": "2021-03-08T10:06:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3779201862", + "Play Date UTC": "2023-10-03T15:17:42Z", + "Skip Count": "5", + "Skip Date": "2022-11-11T18:24:22Z", + "Release Date": "2016-08-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Wraith - EP", + "Sort Artist": "grayera", + "Sort Name": "When Winter Begins", + "Persistent ID": "A05720EED6461D66", + "Track Type": "Remote" + }, + { + "Track ID": "5177", + "Name": "Lovenote", + "Artist": "Bladee", + "Album Artist": "Bladee", + "Composer": "undef", + "Album": "Eversince", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7198808", + "Total Time": "195720", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2021-03-08T10:35:42Z", + "Date Added": "2021-03-08T10:35:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780854678", + "Play Date UTC": "2023-10-22T18:24:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-05-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Eversince", + "Sort Artist": "Bladee", + "Sort Name": "Lovenote", + "Persistent ID": "185155B69FF9B88C", + "Track Type": "Remote" + }, + { + "Track ID": "5179", + "Name": "NeverSaidItWouldBeEasy", + "Artist": "SurrenderDorothy", + "Album Artist": "SurrenderDorothy", + "Composer": "undef", + "Album": "BreathingExercise", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7852189", + "Total Time": "226000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2021-03-08T10:57:29Z", + "Date Added": "2021-03-08T10:57:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3770297932", + "Play Date UTC": "2023-06-22T13:58:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BreathingExercise", + "Sort Artist": "SurrenderDorothy", + "Sort Name": "NeverSaidItWouldBeEasy", + "Persistent ID": "EEAA4019E4F0B59D", + "Track Type": "Remote" + }, + { + "Track ID": "5181", + "Name": "One Day at a Time (feat. BONES)", + "Artist": "Drew The Architect", + "Album Artist": "Drew The Architect", + "Composer": "Drew The Architect", + "Album": "One Day at a Time (feat. BONES) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6515768", + "Total Time": "186667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-03-08T12:17:48Z", + "Date Added": "2021-03-08T12:17:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3781079179", + "Play Date UTC": "2023-10-25T08:46:19Z", + "Skip Count": "2", + "Skip Date": "2021-04-02T21:14:36Z", + "Release Date": "2019-12-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "One Day at a Time (feat. BONES) - Single", + "Sort Artist": "Drew The Architect", + "Sort Name": "One Day at a Time (feat. BONES)", + "Persistent ID": "E206908C545EA1EF", + "Track Type": "Remote" + }, + { + "Track ID": "5183", + "Name": "Damp", + "Artist": "Rozz Dyliams", + "Album Artist": "Rozz Dyliams", + "Composer": "Rozz Dyliams", + "Album": "Dylvia Roska", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8876617", + "Total Time": "253283", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2017", + "Date Modified": "2021-03-08T12:42:58Z", + "Date Added": "2021-03-08T12:42:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3761060179", + "Play Date UTC": "2023-03-07T15:56:19Z", + "Skip Count": "10", + "Skip Date": "2023-03-27T08:53:06Z", + "Release Date": "2017-01-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dylvia Roska", + "Sort Artist": "Rozz Dyliams", + "Sort Name": "Damp", + "Persistent ID": "70DE13C03FF1D071", + "Track Type": "Remote" + }, + { + "Track ID": "5185", + "Name": "WhatCouldPossiblyGoWrong", + "Artist": "SurrenderDorothy", + "Album Artist": "SurrenderDorothy", + "Composer": "undef", + "Album": "NobodyWantsMe - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4293331", + "Total Time": "114440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2001", + "Date Modified": "2021-03-08T18:11:54Z", + "Date Added": "2021-03-08T18:11:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3760858290", + "Play Date UTC": "2023-03-05T07:51:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NobodyWantsMe - EP", + "Sort Artist": "SurrenderDorothy", + "Sort Name": "WhatCouldPossiblyGoWrong", + "Persistent ID": "C942ED0ED278A93F", + "Track Type": "Remote" + }, + { + "Track ID": "5187", + "Name": "Morning Sex", + "Artist": "Ralph Castelli", + "Album Artist": "Ralph Castelli", + "Composer": "Cole Carmody & Iler Stoe", + "Album": "Long Distance - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6202049", + "Total Time": "175313", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2019", + "Date Modified": "2021-03-09T08:30:10Z", + "Date Added": "2021-03-09T08:30:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783450325", + "Play Date UTC": "2023-11-21T19:25:25Z", + "Skip Count": "1", + "Skip Date": "2022-10-10T13:34:36Z", + "Release Date": "2019-06-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Long Distance - EP", + "Sort Artist": "Ralph Castelli", + "Sort Name": "Morning Sex", + "Persistent ID": "8CF9925CF870B2A0", + "Track Type": "Remote" + }, + { + "Track ID": "5189", + "Name": "Stuck", + "Artist": "Imagine Dragons", + "Album Artist": "Imagine Dragons", + "Composer": "Jayson Dezuzio, Alexander Grant, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman", + "Album": "Origins (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6881362", + "Total Time": "190850", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "15", + "Year": "2018", + "Date Modified": "2021-03-09T08:40:04Z", + "Date Added": "2021-03-09T08:40:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3779311170", + "Play Date UTC": "2023-10-04T21:39:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Origins (Deluxe)", + "Sort Artist": "Imagine Dragons", + "Sort Name": "Stuck", + "Persistent ID": "61C4E41AA310B87C", + "Track Type": "Remote" + }, + { + "Track ID": "5191", + "Name": "Come Over (feat. James Fauntleroy)", + "Artist": "Nipsey Hussle", + "Album Artist": "Nipsey Hussle", + "Composer": "undef", + "Album": "Crenshaw", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7808386", + "Total Time": "219733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "21", + "Year": "2013", + "Date Modified": "2021-03-09T12:27:46Z", + "Date Added": "2021-03-09T12:27:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3776346462", + "Play Date UTC": "2023-08-31T14:07:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-10-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Crenshaw", + "Sort Artist": "Nipsey Hussle", + "Sort Name": "Come Over (feat. James Fauntleroy)", + "Persistent ID": "35ADE0A8AA649ABA", + "Track Type": "Remote" + }, + { + "Track ID": "5193", + "Name": "Sign of the Times", + "Artist": "Harry Styles", + "Album Artist": "Harry Styles", + "Composer": "Harry Styles, Jeff Bhasker, Mitch Rowland, Ryan Nasci, Alex Salibian & Tyler Johnson", + "Album": "Harry Styles", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "11794676", + "Total Time": "340707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2021-03-11T13:02:21Z", + "Date Added": "2021-03-11T13:02:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781317514", + "Play Date UTC": "2023-10-28T02:58:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-07T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Harry Styles", + "Sort Artist": "Harry Styles", + "Sort Name": "Sign of the Times", + "Persistent ID": "31C7454475435EF0", + "Track Type": "Remote" + }, + { + "Track ID": "5195", + "Name": "Fallen", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & T. Thompson", + "Album": "SYRE", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9324424", + "Total Time": "262474", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2021-03-16T17:10:00Z", + "Date Added": "2021-03-16T17:10:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3772018778", + "Play Date UTC": "2023-07-12T11:59:38Z", + "Skip Count": "1", + "Skip Date": "2022-06-24T12:42:28Z", + "Release Date": "2016-12-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SYRE", + "Sort Artist": "Jaden", + "Sort Name": "Fallen", + "Persistent ID": "A19EE98DEE3177FC", + "Track Type": "Remote" + }, + { + "Track ID": "5197", + "Name": "Antidote", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster, Ebony Oshunrinde, Bryan Van Mierlo, Thomas Brenneck, David Guy, Leon Michels, Nicholas Movshon & Homer Steinweiss", + "Album": "Rodeo (Expanded Edition)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9259062", + "Total Time": "262705", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2015", + "Date Modified": "2021-03-16T23:21:14Z", + "Date Added": "2021-03-16T23:21:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3761500722", + "Play Date UTC": "2023-03-12T18:18:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-07-29T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rodeo (Expanded Edition)", + "Sort Artist": "Travis Scott", + "Sort Name": "Antidote", + "Persistent ID": "F103A74AA4F6D49A", + "Track Type": "Remote" + }, + { + "Track ID": "5199", + "Name": "West Coast", + "Artist": "The Neighbourhood", + "Album Artist": "The Neighbourhood", + "Composer": "Jesse, Zachary Abels, Jeremy Freedman, Michael Margott & Bryan Sammis", + "Album": "The Love Collection - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8897057", + "Total Time": "253520", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2013", + "Date Modified": "2021-03-17T07:47:12Z", + "Date Added": "2021-03-17T07:47:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783683987", + "Play Date UTC": "2023-11-24T12:19:47Z", + "Skip Count": "2", + "Skip Date": "2022-08-06T07:02:39Z", + "Release Date": "2013-12-10T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Love Collection - Single", + "Sort Artist": "Neighbourhood", + "Sort Name": "Neighbourhood", + "Persistent ID": "West Coast", + "Track Type": "3E69C5DC18B54AAC" + }, + { + "Track ID": "5201", + "Name": "Now I'm up to My Neck with Offers", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "KILL YOURSELF Part XX: The Infinity Saga - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6142376", + "Total Time": "167015", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2017", + "Date Modified": "2021-03-17T14:39:59Z", + "Date Added": "2021-03-17T14:39:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3780309551", + "Play Date UTC": "2023-10-16T10:59:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-09-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "KILL YOURSELF Part XX: The Infinity Saga - Single", + "Sort Artist": "$uicideboy$", + "Sort Name": "Now I'm up to My Neck with Offers", + "Persistent ID": "D294F5E50B943282", + "Track Type": "Remote" + }, + { + "Track ID": "5203", + "Name": "Nightmare", + "Artist": "Halsey", + "Album Artist": "Halsey", + "Composer": "Ashley Frangipane, Benjamin Levin, Magnus August Hoiberg, Nathan Perez, Elena Kiper, Martin Kierszenbaum, Sergio Galoyan & Trevor Horn", + "Album": "Nightmare - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8287264", + "Total Time": "231999", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-03-19T13:16:31Z", + "Date Added": "2021-03-19T13:16:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3782981518", + "Play Date UTC": "2023-11-16T09:11:58Z", + "Skip Count": "1", + "Skip Date": "2021-03-31T17:56:02Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nightmare - Single", + "Sort Artist": "Halsey", + "Sort Name": "Nightmare", + "Persistent ID": "502A39C6F6C954F2", + "Track Type": "Remote" + }, + { + "Track ID": "5205", + "Name": "Starboy (feat. Daft Punk)", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "Abel Tesfaye, Thomas Bangalter, Guy-Manuel de Homem-Christo, Martin McKinney, Henry Walter & Jason Quenneville", + "Album": "Starboy", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8184214", + "Total Time": "230461", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2021-03-19T13:46:46Z", + "Date Added": "2021-03-19T13:46:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3772618528", + "Play Date UTC": "2023-07-19T10:35:28Z", + "Skip Count": "1", + "Skip Date": "2021-03-20T22:38:25Z", + "Release Date": "2016-09-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Starboy", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Starboy (feat. Daft Punk)", + "Track Type": "8E58E9F944E254A0" + }, + { + "Track ID": "5207", + "Name": "The Yawning Grave", + "Artist": "Lord Huron", + "Album Artist": "Lord Huron", + "Composer": "Lord Huron", + "Album": "Strange Trails", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7355840", + "Total Time": "192906", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2021-03-22T20:23:15Z", + "Date Added": "2021-03-22T20:23:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3770217489", + "Play Date UTC": "2023-06-21T15:38:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-04-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Strange Trails", + "Sort Artist": "Lord Huron", + "Sort Name": "Yawning Grave", + "Persistent ID": "EB9AB053B84F3A25", + "Track Type": "Remote" + }, + { + "Track ID": "5209", + "Name": "Oh No Pedro", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "Fenn", + "Genre": "Contemporary Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "5872289", + "Total Time": "162005", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "15", + "Year": "2017", + "Date Modified": "2021-03-22T20:26:56Z", + "Date Added": "2021-03-22T20:26:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783708747", + "Play Date UTC": "2023-11-24T19:12:27Z", + "Skip Count": "3", + "Skip Date": "2021-09-11T21:15:44Z", + "Release Date": "2017-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fenn", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "Oh No Pedro", + "Persistent ID": "5C41A15B4C58D940", + "Track Type": "Remote" + }, + { + "Track ID": "5211", + "Name": "Cigarette Duet", + "Artist": "Princess Chelsea", + "Album Artist": "Princess Chelsea", + "Composer": "RR", + "Album": "Lil' Golden Book", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10530084", + "Total Time": "260013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2011", + "Date Modified": "2021-03-29T04:45:39Z", + "Date Added": "2021-03-29T04:45:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781176181", + "Play Date UTC": "2023-10-26T11:43:01Z", + "Skip Count": "2", + "Skip Date": "2021-03-31T18:58:52Z", + "Release Date": "2011-05-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "2690", + "Sort Album": "Lil' Golden Book", + "Sort Artist": "Princess Chelsea", + "Sort Name": "Cigarette Duet", + "Persistent ID": "F69AB2B603A1836F", + "Track Type": "Remote" + }, + { + "Track ID": "5213", + "Name": "Moby Dick", + "Artist": "Jakey", + "Album Artist": "Jakey", + "Composer": "Jacob Matthew Christensen", + "Album": "Moby Dick - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7005426", + "Total Time": "195491", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2021-03-29T06:00:51Z", + "Date Added": "2021-03-29T06:00:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3781397630", + "Play Date UTC": "2023-10-29T01:13:50Z", + "Skip Count": "8", + "Skip Date": "2022-08-19T15:22:30Z", + "Release Date": "2017-09-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Moby Dick - Single", + "Sort Artist": "Jakey", + "Sort Name": "Moby Dick", + "Persistent ID": "C99DBDCBD8A295CB", + "Track Type": "Remote" + }, + { + "Track ID": "5215", + "Name": "Chill Bill (feat. J. Davi$ & Spooks)", + "Artist": "Rob $tone", + "Album Artist": "Rob $tone", + "Composer": "Jaylen Robinson, Javan Davis, Antonio Carrillo, Bernard Herrmann & Christopher Rowe", + "Album": "Chill Bill (feat. J. Davi$ & Spooks) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6477181", + "Total Time": "177184", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2021-03-30T21:54:18Z", + "Date Added": "2021-03-30T21:54:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "104", + "Play Date": "3774099429", + "Play Date UTC": "2023-08-05T13:57:09Z", + "Skip Count": "1", + "Skip Date": "2021-09-05T20:41:33Z", + "Release Date": "2016-06-17T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Chill Bill (feat. J. Davi$ & Spooks) - Single", + "Sort Artist": "Rob $tone", + "Sort Name": "Chill Bill (feat. J. Davi$ & Spooks)", + "Persistent ID": "EA64B6A19A22E528", + "Track Type": "Remote" + }, + { + "Track ID": "5217", + "Name": "Mine", + "Artist": "Bazzi", + "Album Artist": "Bazzi", + "Composer": "Andrew Bazzi, Kevin White & Mike Woods", + "Album": "COSMIC", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "4934385", + "Total Time": "131064", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "16", + "Year": "2017", + "Date Modified": "2021-03-31T19:00:10Z", + "Date Added": "2021-03-31T19:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783669377", + "Play Date UTC": "2023-11-24T08:16:17Z", + "Skip Count": "1", + "Skip Date": "2021-04-02T15:41:21Z", + "Release Date": "2017-10-12T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "COSMIC", + "Sort Artist": "Bazzi", + "Sort Name": "Mine", + "Persistent ID": "9F732F855E335871", + "Track Type": "Remote" + }, + { + "Track ID": "5219", + "Name": "I'm No Good", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7227704", + "Total Time": "193306", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "41", + "Year": "2021", + "Date Modified": "2021-04-01T10:27:16Z", + "Date Added": "2021-04-01T10:27:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3727468082", + "Play Date UTC": "2022-02-11T20:48:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-03-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Sort Artist": "AWOLNATION", + "Sort Name": "I'm No Good", + "Persistent ID": "621BF6E13692E352", + "Track Type": "Remote" + }, + { + "Track ID": "5221", + "Name": "Thiskidsnotalright", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "5961657", + "Total Time": "161200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "41", + "Year": "2011", + "Date Modified": "2021-04-01T12:12:40Z", + "Date Added": "2021-04-01T12:12:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3733771384", + "Play Date UTC": "2022-04-25T19:43:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-03-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Sort Artist": "AWOLNATION", + "Sort Name": "Thiskidsnotalright", + "Persistent ID": "589FE605A64EC055", + "Track Type": "Remote" + }, + { + "Track ID": "5223", + "Name": "Cannibals", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "5400064", + "Total Time": "148372", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "41", + "Year": "2021", + "Date Modified": "2021-04-01T12:16:16Z", + "Date Added": "2021-04-01T12:16:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3735140810", + "Play Date UTC": "2022-05-11T16:06:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-03-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Sort Artist": "AWOLNATION", + "Sort Name": "Cannibals", + "Persistent ID": "58357345FFE49B7C", + "Track Type": "Remote" + }, + { + "Track ID": "5225", + "Name": "Swinging from the Castles", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno & Cameron Duddy", + "Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6755744", + "Total Time": "184507", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "22", + "Track Count": "41", + "Year": "2011", + "Date Modified": "2021-04-01T12:31:02Z", + "Date Added": "2021-04-01T12:31:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783668242", + "Play Date UTC": "2023-11-24T07:57:22Z", + "Skip Count": "2", + "Skip Date": "2021-04-27T13:15:12Z", + "Release Date": "2011-03-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Sort Artist": "AWOLNATION", + "Sort Name": "Swinging from the Castles", + "Persistent ID": "ADB6DF4C316749DE", + "Track Type": "Remote" + }, + { + "Track ID": "5227", + "Name": "Sail (Live in Columbus)", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "19474745", + "Total Time": "572305", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "26", + "Track Count": "41", + "Year": "2021", + "Date Modified": "2021-04-01T14:12:46Z", + "Date Added": "2021-04-01T14:12:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3733165976", + "Play Date UTC": "2022-04-18T19:32:56Z", + "Skip Count": "2", + "Skip Date": "2021-09-13T17:15:17Z", + "Release Date": "2021-03-15T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Megalithic Symphony (10th Anniversary Deluxe Edition)", + "Sort Artist": "AWOLNATION", + "Sort Name": "Sail (Live in Columbus)", + "Persistent ID": "FBCE39E26A5EA9C9", + "Track Type": "Remote" + }, + { + "Track ID": "5229", + "Name": "The Drive", + "Artist": "Everyone You Know", + "Album Artist": "Everyone You Know", + "Composer": "Harvey Kirkby & Rhys Kirkby-Cox", + "Album": "The Drive - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8139396", + "Total Time": "229217", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-04-02T14:57:49Z", + "Date Added": "2021-04-02T14:57:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3780134226", + "Play Date UTC": "2023-10-14T10:17:06Z", + "Skip Count": "1", + "Skip Date": "2021-04-03T16:06:04Z", + "Release Date": "2019-05-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drive - Single", + "Sort Artist": "Everyone You Know", + "Sort Name": "Drive", + "Persistent ID": "FF372180C9B9CD53", + "Track Type": "Remote" + }, + { + "Track ID": "5231", + "Name": "Adeline", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "RELAXER", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "12435169", + "Total Time": "350493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "8", + "Year": "2017", + "Date Modified": "2021-04-03T19:38:42Z", + "Date Added": "2021-04-03T19:38:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3783669917", + "Play Date UTC": "2023-11-24T08:25:17Z", + "Skip Count": "2", + "Skip Date": "2022-04-06T08:29:55Z", + "Release Date": "2017-05-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RELAXER", + "Sort Artist": "alt-J", + "Sort Name": "Adeline", + "Persistent ID": "DBD9C3EC2716EEAD", + "Track Type": "Remote" + }, + { + "Track ID": "5233", + "Name": "Zuccenberg (feat. $uicideboy$ & Diplo)", + "Artist": "Tommy Cash", + "Album Artist": "Tommy Cash", + "Composer": "Thomas Wesley Pentz, Umru Rothenberg, Tomas Tammemets, Aristos Norman Petrou & Scott Anthony Arceneux Jr.", + "Album": "Zuccenberg (feat. $uicideboy$ & Diplo) - Single", + "Genre": "Alternative Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6539225", + "Total Time": "172000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-04-08T08:27:36Z", + "Date Added": "2021-04-08T08:27:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780760333", + "Play Date UTC": "2023-10-21T16:12:13Z", + "Skip Count": "2", + "Skip Date": "2023-02-16T06:47:13Z", + "Release Date": "2021-04-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Zuccenberg (feat. $uicideboy$ & Diplo) - Single", + "Sort Artist": "Tommy Cash", + "Sort Name": "Zuccenberg (feat. $uicideboy$ & Diplo)", + "Persistent ID": "5F3BB2834E6875A4", + "Track Type": "Remote" + }, + { + "Track ID": "5235", + "Name": "Krewe Du Vieux (Comedy & Tragedy)", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Aristos Petrou & Scott Arceneaux Jr.", + "Album": "I Want to Die in New Orleans", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4188850", + "Total Time": "104472", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2021-04-08T09:36:51Z", + "Date Added": "2021-04-08T09:36:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3777020415", + "Play Date UTC": "2023-09-08T09:20:15Z", + "Skip Count": "3", + "Skip Date": "2023-02-08T19:06:21Z", + "Release Date": "2018-09-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Want to Die in New Orleans", + "Sort Artist": "$uicideboy$", + "Sort Name": "Krewe Du Vieux (Comedy & Tragedy)", + "Persistent ID": "46F34F3DFE77B0A1", + "Track Type": "Remote" + }, + { + "Track ID": "5237", + "Name": "Who Are We?", + "Artist": "jherz", + "Album Artist": "jherz", + "Composer": "J Herz", + "Album": "Who Are We? - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7368398", + "Total Time": "210104", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-04-09T16:31:20Z", + "Date Added": "2021-04-09T16:31:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3703362744", + "Play Date UTC": "2021-05-08T20:52:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-03-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Who Are We? - Single", + "Sort Artist": "jherz", + "Sort Name": "Who Are We?", + "Persistent ID": "DE14F5CC716EC1A7", + "Track Type": "Remote" + }, + { + "Track ID": "5239", + "Name": "The Fall", + "Artist": "Charles", + "Album Artist": "Charles", + "Composer": "Charlotte Foret, Nina Sampermans & Wouter Hardy", + "Album": "Falling While Rising - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6532486", + "Total Time": "180240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2021", + "Date Modified": "2021-04-09T16:53:12Z", + "Date Added": "2021-04-09T16:53:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3782992051", + "Play Date UTC": "2023-11-16T12:07:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-04-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Falling While Rising - EP", + "Sort Artist": "Charles", + "Sort Name": "Fall", + "Persistent ID": "0EBC4D2AC92DCD06", + "Track Type": "Remote" + }, + { + "Track ID": "5241", + "Name": "Joe", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Ryan Met, Jack Met & Adam Met", + "Album": "OK ORCHESTRA", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8074260", + "Total Time": "212427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2021", + "Date Modified": "2021-04-09T16:57:14Z", + "Date Added": "2021-04-09T16:57:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3759763113", + "Play Date UTC": "2023-02-20T15:38:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-03-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "OK ORCHESTRA", + "Sort Artist": "AJR", + "Sort Name": "Joe", + "Persistent ID": "0537C8685DE13FE9", + "Track Type": "Remote" + }, + { + "Track ID": "5243", + "Name": "Not the Same (feat. Lil Skies)", + "Artist": "Lil Gnar", + "Album Artist": "Lil Gnar", + "Composer": "Lil Skies & Caleb Sheppard", + "Album": "Not the Same (feat. Lil Skies) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6980212", + "Total Time": "194858", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-04-09T17:16:54Z", + "Date Added": "2021-04-09T17:16:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3770489543", + "Play Date UTC": "2023-06-24T19:12:23Z", + "Skip Count": "1", + "Skip Date": "2021-09-11T21:11:45Z", + "Release Date": "2021-04-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Not the Same (feat. Lil Skies) - Single", + "Sort Artist": "Lil Gnar", + "Sort Name": "Not the Same (feat. Lil Skies)", + "Persistent ID": "3CF55D583B78BC17", + "Track Type": "Remote" + }, + { + "Track ID": "5245", + "Name": "Writing's On the Wall", + "Artist": "Sam Smith", + "Album Artist": "Sam Smith", + "Composer": "Sam Smith & James Napier", + "Album": "Writing's On the Wall - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9826677", + "Total Time": "278987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2021-04-23T13:43:59Z", + "Date Added": "2021-04-23T13:43:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3772518168", + "Play Date UTC": "2023-07-18T06:42:48Z", + "Skip Count": "1", + "Skip Date": "2023-07-06T06:04:58Z", + "Release Date": "2015-09-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Writing's On the Wall - Single", + "Sort Artist": "Sam Smith", + "Sort Name": "Writing's On the Wall", + "Persistent ID": "C011A75DF3020F63", + "Track Type": "Remote" + }, + { + "Track ID": "5247", + "Name": "Rien que toi et moi (feat. Oscar Anton)", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Oscar Anton, Tom Rosenthal & Alex Brenchley", + "Album": "Rien que toi et moi (feat. Oscar Anton) - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "5845624", + "Total Time": "162137", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-04-23T19:33:14Z", + "Date Added": "2021-04-23T19:33:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3766832528", + "Play Date UTC": "2023-05-13T11:22:08Z", + "Skip Count": "3", + "Skip Date": "2022-07-06T10:02:18Z", + "Release Date": "2021-04-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rien que toi et moi (feat. Oscar Anton) - Single", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "Rien que toi et moi (feat. Oscar Anton)", + "Persistent ID": "B6AE5F7568188622", + "Track Type": "Remote" + }, + { + "Track ID": "5249", + "Name": "Bloodflood, Pt. II", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "This Is All Yours", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "11497669", + "Total Time": "319498", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2021-04-23T19:37:15Z", + "Date Added": "2021-04-23T19:37:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3782983041", + "Play Date UTC": "2023-11-16T09:37:21Z", + "Skip Count": "1", + "Skip Date": "2021-10-06T13:54:42Z", + "Release Date": "2014-09-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Is All Yours", + "Sort Artist": "alt-J", + "Sort Name": "Bloodflood, Pt. II", + "Persistent ID": "F74DAD0F8F6E0A02", + "Track Type": "Remote" + }, + { + "Track ID": "5251", + "Name": "Hugging You (Acoustic)", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "Z-Sides", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8612762", + "Total Time": "233557", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-04-23T20:14:23Z", + "Date Added": "2021-04-23T20:14:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3767039825", + "Play Date UTC": "2023-05-15T20:57:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Z-Sides", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "Hugging You (Acoustic)", + "Persistent ID": "B0384E1228ECD12A", + "Track Type": "Remote" + }, + { + "Track ID": "5253", + "Name": "Uranus", + "Artist": "Sleeping At Last", + "Album Artist": "Sleeping At Last", + "Composer": "undef", + "Album": "Atlas: Space 2 - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8860178", + "Total Time": "259915", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2013", + "Date Modified": "2021-04-23T20:18:22Z", + "Date Added": "2021-04-23T20:18:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3779319196", + "Play Date UTC": "2023-10-04T23:53:16Z", + "Skip Count": "1", + "Skip Date": "2022-08-12T08:31:19Z", + "Release Date": "2013-12-10T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Atlas: Space 2 - EP", + "Sort Artist": "Sleeping At Last", + "Sort Name": "Uranus", + "Persistent ID": "DBAFE5D0FA19AC5C", + "Track Type": "Remote" + }, + { + "Track ID": "5255", + "Name": "Dawn", + "Artist": "The Cinematic Orchestra", + "Album Artist": "The Cinematic Orchestra", + "Composer": "undef", + "Album": "Man With a Movie Camera", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "9352217", + "Total Time": "240893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2003", + "Date Modified": "2021-04-23T20:28:03Z", + "Date Added": "2021-04-23T20:28:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3759997420", + "Play Date UTC": "2023-02-23T08:43:40Z", + "Skip Count": "2", + "Skip Date": "2021-09-29T09:30:04Z", + "Release Date": "2003-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Man With a Movie Camera", + "Sort Artist": "Cinematic Orchestra", + "Sort Name": "Cinematic Orchestra", + "Persistent ID": "Dawn", + "Track Type": "BC11B346CBC0602E" + }, + { + "Track ID": "5257", + "Name": "The Night We Met (feat. Phoebe Bridgers)", + "Artist": "Lord Huron", + "Album Artist": "Selena Gomez, OneRepublic & YUNGBLUD", + "Composer": "Ben Schneider", + "Album": "13 Reasons Why (Season 2)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7420598", + "Total Time": "208173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "20", + "Year": "2018", + "Date Modified": "2021-04-23T21:01:57Z", + "Date Added": "2021-04-23T21:01:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783765980", + "Play Date UTC": "2023-11-25T11:06:20Z", + "Skip Count": "1", + "Skip Date": "2021-05-02T16:19:22Z", + "Release Date": "2018-05-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "13 Reasons Why (Season 2)", + "Sort Artist": "Lord Huron", + "Sort Name": "Night We Met (feat. Phoebe Bridgers)", + "Persistent ID": "3AA93F3F3945DA35", + "Track Type": "Remote" + }, + { + "Track ID": "5259", + "Name": "Where's My Love", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "SYML & Brian Fennell", + "Album": "SYML", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7295119", + "Total Time": "202010", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2021-04-24T11:37:21Z", + "Date Added": "2021-04-24T11:37:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3768286214", + "Play Date UTC": "2023-05-30T07:10:14Z", + "Skip Count": "1", + "Skip Date": "2021-05-15T17:02:04Z", + "Release Date": "2017-02-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SYML", + "Sort Artist": "SYML", + "Sort Name": "Where's My Love", + "Persistent ID": "46E19168037F574D", + "Track Type": "Remote" + }, + { + "Track ID": "5261", + "Name": "Home", + "Artist": "Edith Whiskers", + "Album Artist": "Edith Whiskers", + "Composer": "Jade Castrinos & Alex Ebert", + "Album": "Stop Stealing the Covers!", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "6950799", + "Total Time": "197360", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2021-04-24T11:48:59Z", + "Date Added": "2021-04-24T11:48:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3761052092", + "Play Date UTC": "2023-03-07T13:41:32Z", + "Skip Count": "1", + "Skip Date": "2021-06-01T11:12:40Z", + "Release Date": "2020-10-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1964", + "Sort Album": "Stop Stealing the Covers!", + "Sort Artist": "Edith Whiskers", + "Sort Name": "Home", + "Persistent ID": "CCFB200F8A84CA49", + "Track Type": "Remote" + }, + { + "Track ID": "5263", + "Name": "You Only Need You (Acoustic)", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Tom Rosenthal", + "Album": "Z-Sides", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7927062", + "Total Time": "223067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-04-24T11:51:16Z", + "Date Added": "2021-04-24T11:51:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783763347", + "Play Date UTC": "2023-11-25T10:22:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-10-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Z-Sides", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "You Only Need You (Acoustic)", + "Persistent ID": "5A88CE66637D4C43", + "Track Type": "Remote" + }, + { + "Track ID": "5265", + "Name": "Going To Be Wonderful", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "undef", + "Album": "The Pleasant Trees - EP", + "Genre": "Folk", + "Kind": "Apple Music AAC audio file", + "Size": "6476749", + "Total Time": "177690", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2014", + "Date Modified": "2021-04-24T12:32:13Z", + "Date Added": "2021-04-24T12:32:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3767703836", + "Play Date UTC": "2023-05-23T13:23:56Z", + "Skip Count": "3", + "Skip Date": "2021-06-09T20:11:16Z", + "Release Date": "2014-03-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pleasant Trees - EP", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "Going To Be Wonderful", + "Persistent ID": "6DF73C49F314F573", + "Track Type": "Remote" + }, + { + "Track ID": "5267", + "Name": "Je Te Laisserai Des Mots", + "Artist": "Patrick Watson", + "Album Artist": "Patrick Watson", + "Composer": "Patrick Watson", + "Album": "Je Te Laisserai Des Mots - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5850340", + "Total Time": "160853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2010", + "Date Modified": "2021-04-24T15:03:49Z", + "Date Added": "2021-04-24T15:03:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3773672024", + "Play Date UTC": "2023-07-31T15:13:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2010-09-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Je Te Laisserai Des Mots - Single", + "Sort Artist": "Patrick Watson", + "Sort Name": "Je Te Laisserai Des Mots", + "Persistent ID": "BB7D039DB723B2D8", + "Track Type": "Remote" + }, + { + "Track ID": "5269", + "Name": "Man With the Movie Camera", + "Artist": "The Cinematic Orchestra", + "Album Artist": "The Cinematic Orchestra", + "Composer": "undef", + "Album": "Man With a Movie Camera", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "18690976", + "Total Time": "549933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "17", + "Year": "2002", + "Date Modified": "2021-04-24T15:43:30Z", + "Date Added": "2021-04-24T15:43:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3763580389", + "Play Date UTC": "2023-04-05T19:59:49Z", + "Skip Count": "5", + "Skip Date": "2022-11-23T20:00:36Z", + "Release Date": "2002-05-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Man With a Movie Camera", + "Sort Artist": "Cinematic Orchestra", + "Sort Name": "Cinematic Orchestra", + "Persistent ID": "Man With the Movie Camera", + "Track Type": "046758A0DF2FAFDD" + }, + { + "Track ID": "5271", + "Name": "Without You", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7996526", + "Total Time": "224740", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "15", + "Year": "2015", + "Date Modified": "2021-04-24T16:31:16Z", + "Date Added": "2021-04-24T16:31:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3781192821", + "Play Date UTC": "2023-10-26T16:20:21Z", + "Skip Count": "6", + "Skip Date": "2022-10-28T18:25:23Z", + "Release Date": "2015-09-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "Without You", + "Persistent ID": "8A3FACE9DE99F6F3", + "Track Type": "Remote" + }, + { + "Track ID": "5273", + "Name": "Too Quick", + "Artist": "MadeinTYO", + "Album Artist": "MadeinTYO", + "Composer": "undef", + "Album": "True's World - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6553317", + "Total Time": "183640", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2021-04-25T11:27:34Z", + "Date Added": "2021-04-25T11:27:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781537214", + "Play Date UTC": "2023-10-30T16:00:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "True's World - EP", + "Sort Artist": "MadeinTYO", + "Sort Name": "Too Quick", + "Persistent ID": "7C1038FD17BCEFE6", + "Track Type": "Remote" + }, + { + "Track ID": "5275", + "Name": "Sleep Like Owls", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "We're All Strangers", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7521697", + "Total Time": "212468", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2021-04-26T13:41:14Z", + "Date Added": "2021-04-26T13:41:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3773843679", + "Play Date UTC": "2023-08-02T14:54:39Z", + "Skip Count": "3", + "Skip Date": "2021-11-23T21:03:36Z", + "Release Date": "2018-02-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "We're All Strangers", + "Sort Artist": "Derek Pope", + "Sort Name": "Sleep Like Owls", + "Persistent ID": "144AFCC21E37A4EB", + "Track Type": "Remote" + }, + { + "Track ID": "5277", + "Name": "See You Again (feat. Kali Uchis)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Flower Boy", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6779436", + "Total Time": "180384", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2021-04-27T05:57:49Z", + "Date Added": "2021-04-27T05:57:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3783808260", + "Play Date UTC": "2023-11-25T22:51:00Z", + "Skip Count": "2", + "Skip Date": "2021-06-12T22:31:03Z", + "Release Date": "2017-07-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Flower Boy", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "See You Again (feat. Kali Uchis)", + "Persistent ID": "6FBF1C8EC76588BE", + "Track Type": "Remote" + }, + { + "Track ID": "5279", + "Name": "durag activity", + "Artist": "Baby Keem & Travis Scott", + "Album Artist": "Baby Keem & Travis Scott", + "Composer": "Travis Scott, Hykeem Carter & Brick", + "Album": "durag activity - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8048177", + "Total Time": "225020", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-04-30T08:46:24Z", + "Date Added": "2021-04-30T08:46:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3753035041", + "Play Date UTC": "2022-12-04T18:44:01Z", + "Skip Count": "2", + "Skip Date": "2021-05-02T16:07:39Z", + "Release Date": "2021-04-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "durag activity - Single", + "Sort Artist": "Baby Keem & Travis Scott", + "Sort Name": "durag activity", + "Persistent ID": "F7F7DB6F1569E113", + "Track Type": "Remote" + }, + { + "Track ID": "5281", + "Name": "Machine", + "Artist": "Imagine Dragons", + "Album Artist": "Imagine Dragons", + "Composer": "Alexander Grant, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman", + "Album": "Origins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6691475", + "Total Time": "181886", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3781466602", + "Play Date UTC": "2023-10-29T20:23:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Origins", + "Sort Artist": "Imagine Dragons", + "Sort Name": "Machine", + "Persistent ID": "B8FD8994778A3BED", + "Track Type": "Remote" + }, + { + "Track ID": "5283", + "Name": "Intro/History Song (Live In the Apple Store, NYC)", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "The Good, the Bad & the Queen", + "Album": "Live From Soho EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9875987", + "Total Time": "283493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2007", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3773819787", + "Play Date UTC": "2023-08-02T08:16:27Z", + "Skip Count": "2", + "Skip Date": "2022-11-07T10:21:14Z", + "Release Date": "2007-03-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Live From Soho EP", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Good, the Bad & the Queen", + "Track Type": "Intro/History Song (Live In the Apple Store, NYC)" + }, + { + "Track ID": "5285", + "Name": "Stuck", + "Artist": "Imagine Dragons", + "Album Artist": "Imagine Dragons", + "Composer": "Jayson Dezuzio, Alexander Grant, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman", + "Album": "Origins", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6881191", + "Total Time": "190850", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3778596584", + "Play Date UTC": "2023-09-26T15:09:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Origins", + "Sort Artist": "Imagine Dragons", + "Sort Name": "Stuck", + "Persistent ID": "D547032011F82654", + "Track Type": "Remote" + }, + { + "Track ID": "5287", + "Name": "Supermassive Black Hole", + "Artist": "Muse", + "Album Artist": "Muse", + "Composer": "Matthew Bellamy", + "Album": "Black Holes and Revelations", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8144672", + "Total Time": "208852", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2006", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3783684196", + "Play Date UTC": "2023-11-24T12:23:16Z", + "Skip Count": "4", + "Skip Date": "2022-11-15T20:40:32Z", + "Release Date": "2006-06-19T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Black Holes and Revelations", + "Sort Artist": "Muse", + "Sort Name": "Supermassive Black Hole", + "Persistent ID": "1424390C0F538F91", + "Track Type": "Remote" + }, + { + "Track ID": "5289", + "Name": "Role Models", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7041594", + "Total Time": "192174", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3780480889", + "Play Date UTC": "2023-10-18T10:34:49Z", + "Skip Count": "1", + "Skip Date": "2022-11-25T23:28:44Z", + "Release Date": "2017-06-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "Role Models", + "Persistent ID": "086EFB0F474A8F31", + "Track Type": "Remote" + }, + { + "Track ID": "5291", + "Name": "IWearYourLove,EveryPlaceIGo", + "Artist": "SurrenderDorothy", + "Album Artist": "SurrenderDorothy", + "Composer": "undef", + "Album": "NobodyWantsMe - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3577072", + "Total Time": "94040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2001", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3783710215", + "Play Date UTC": "2023-11-24T19:36:55Z", + "Skip Count": "1", + "Skip Date": "2021-09-02T21:08:25Z", + "Release Date": "2018-06-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NobodyWantsMe - EP", + "Sort Artist": "SurrenderDorothy", + "Sort Name": "IWearYourLove,EveryPlaceIGo", + "Persistent ID": "227478349E712012", + "Track Type": "Remote" + }, + { + "Track ID": "5293", + "Name": "Into the Surf", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Foals", + "Album": "Everything Not Saved Will Be Lost Part II", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9615197", + "Total Time": "271338", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "9", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783755129", + "Play Date UTC": "2023-11-25T08:05:29Z", + "Skip Count": "5", + "Skip Date": "2023-01-22T15:03:14Z", + "Release Date": "2019-10-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Everything Not Saved Will Be Lost Part II", + "Sort Artist": "Foals", + "Sort Name": "Into the Surf", + "Persistent ID": "263BEB01FF005E6A", + "Track Type": "Remote" + }, + { + "Track ID": "5295", + "Name": "Burn the House Down", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Ryan Met, Jack Met & Adam Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7756163", + "Total Time": "212689", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3758874934", + "Play Date UTC": "2023-02-10T08:55:34Z", + "Skip Count": "4", + "Skip Date": "2023-05-23T05:49:39Z", + "Release Date": "2017-06-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "Burn the House Down", + "Persistent ID": "FAEF1E288C973A1F", + "Track Type": "Remote" + }, + { + "Track ID": "5297", + "Name": "Sun - Star (I Can't)", + "Artist": "Fifty Grand", + "Album Artist": "Fifty Grand", + "Composer": "Elliott Onofrio", + "Album": "Tears of Blood - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7897038", + "Total Time": "224318", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2009", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3768298450", + "Play Date UTC": "2023-05-30T10:34:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-08-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tears of Blood - EP", + "Sort Artist": "Fifty Grand", + "Sort Name": "Sun - Star (I Can't)", + "Persistent ID": "56657B2853874BD7", + "Track Type": "Remote" + }, + { + "Track ID": "5299", + "Name": "Bud Like You", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8300445", + "Total Time": "230918", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3766228039", + "Play Date UTC": "2023-05-06T11:27:19Z", + "Skip Count": "4", + "Skip Date": "2023-03-03T05:19:51Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Bud Like You", + "Persistent ID": "AE2063F6D931D247", + "Track Type": "Remote" + }, + { + "Track ID": "5301", + "Name": "Drama", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7265813", + "Total Time": "204424", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3771687330", + "Play Date UTC": "2023-07-08T15:55:30Z", + "Skip Count": "1", + "Skip Date": "2022-07-18T11:06:33Z", + "Release Date": "2017-05-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "Drama", + "Persistent ID": "4722F09C4854667D", + "Track Type": "Remote" + }, + { + "Track ID": "5303", + "Name": "Turning Out", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9304011", + "Total Time": "260961", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3767784088", + "Play Date UTC": "2023-05-24T11:41:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-09-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "Turning Out", + "Persistent ID": "D59D91DE6061CBA6", + "Track Type": "Remote" + }, + { + "Track ID": "5305", + "Name": "Fly", + "Artist": "Ludovico Einaudi", + "Album Artist": "Ludovico Einaudi", + "Composer": "Ludovico Einaudi", + "Album": "Divenire", + "Genre": "Classical", + "Kind": "Apple Music AAC audio file", + "Size": "9700730", + "Total Time": "278933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2006", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "57", + "Play Date": "3767771122", + "Play Date UTC": "2023-05-24T08:05:22Z", + "Skip Count": "1", + "Skip Date": "2021-05-05T21:28:45Z", + "Release Date": "2006-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divenire", + "Sort Artist": "Ludovico Einaudi", + "Sort Name": "Fly", + "Persistent ID": "FF67902FE5DD8CE0", + "Track Type": "Remote" + }, + { + "Track ID": "5307", + "Name": "Come Hang Out", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9593670", + "Total Time": "266256", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": -1, + "Year": "2016", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3769670754", + "Play Date UTC": "2023-06-15T07:45:54Z", + "Skip Count": "1", + "Skip Date": "2021-05-02T14:07:59Z", + "Release Date": "2016-09-16T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Come Hang Out", + "Persistent ID": "D273974AF28FADB7", + "Track Type": "Remote" + }, + { + "Track ID": "5309", + "Name": "I'm Not Famous", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8156946", + "Total Time": "220457", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3748502170", + "Play Date UTC": "2022-10-13T07:36:10Z", + "Skip Count": "3", + "Skip Date": "2022-08-19T15:48:18Z", + "Release Date": "2016-03-25T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "I'm Not Famous", + "Persistent ID": "8EE15DBE1159534D", + "Track Type": "Remote" + }, + { + "Track ID": "5311", + "Name": "Netflix Trip", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8439054", + "Total Time": "237787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3769683010", + "Play Date UTC": "2023-06-15T11:10:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click", + "Sort Artist": "AJR", + "Sort Name": "Netflix Trip", + "Persistent ID": "D9D8D81C5F9D246A", + "Track Type": "Remote" + }, + { + "Track ID": "5313", + "Name": "Overture", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7835306", + "Total Time": "214407", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3779916314", + "Play Date UTC": "2023-10-11T21:45:14Z", + "Skip Count": "2", + "Skip Date": "2023-03-07T09:34:14Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "Overture", + "Persistent ID": "DDA3D850E2D51D16", + "Track Type": "Remote" + }, + { + "Track ID": "5315", + "Name": "Weak (Remix)", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7196550", + "Total Time": "201159", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783678112", + "Play Date UTC": "2023-11-24T10:41:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-03-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "Weak (Remix)", + "Persistent ID": "498101A2B39FCD8E", + "Track Type": "Remote" + }, + { + "Track ID": "5317", + "Name": "infinity (888) [feat. Joey Bada$$]", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "Jahseh Onfroy, Jo Vaughn Virginie & Brandon Mychael Jameel Beazer", + "Album": "? (Deluxe)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6440427", + "Total Time": "176591", + "Disc Number": "1", + "Disc Count": "3", + "Track Number": "8", + "Track Count": -1, + "Year": "2018", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3783592274", + "Play Date UTC": "2023-11-23T10:51:14Z", + "Skip Count": "2", + "Skip Date": "2022-10-28T18:25:33Z", + "Release Date": "2018-03-16T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "? (Deluxe)", + "Sort Artist": "XXXTENTACION", + "Sort Name": "infinity (888) [feat. Joey Bada$$]", + "Persistent ID": "C809A4135C84ACF9", + "Track Type": "Remote" + }, + { + "Track ID": "5319", + "Name": "The Good Part", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8140304", + "Total Time": "227267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783409797", + "Play Date UTC": "2023-11-21T08:09:57Z", + "Skip Count": "2", + "Skip Date": "2022-07-14T10:47:06Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "Good Part", + "Persistent ID": "0C0D3453D203CB2E", + "Track Type": "Remote" + }, + { + "Track ID": "5321", + "Name": "Sober Up (feat. Rivers Cuomo)", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Jack Met & Ryan Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7844402", + "Total Time": "218763", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3760715380", + "Play Date UTC": "2023-03-03T16:09:40Z", + "Skip Count": "3", + "Skip Date": "2023-11-02T08:11:58Z", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "Sober Up (feat. Rivers Cuomo)", + "Persistent ID": "8F983D36A6FC949C", + "Track Type": "Remote" + }, + { + "Track ID": "5323", + "Name": "Worst Nites", + "Artist": "Foster the People", + "Album Artist": "Foster the People", + "Composer": "Tom Schleiter, Garrett Borns, Ryan Tedder & Mark Foster", + "Album": "Worst Nites - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8065483", + "Total Time": "211920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3780492942", + "Play Date UTC": "2023-10-18T13:55:42Z", + "Skip Count": "2", + "Skip Date": "2022-10-04T13:06:41Z", + "Release Date": "2018-11-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Worst Nites - Single", + "Sort Artist": "Foster the People", + "Sort Name": "Worst Nites", + "Persistent ID": "FA1F730779DB5862", + "Track Type": "Remote" + }, + { + "Track ID": "5325", + "Name": "Youth", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Glass Animals & Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8378472", + "Total Time": "230693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780904303", + "Play Date UTC": "2023-10-23T08:11:43Z", + "Skip Count": "1", + "Skip Date": "2021-04-30T23:08:59Z", + "Release Date": "2016-07-27T07:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Youth", + "Persistent ID": "370B3BEA05B290E4", + "Track Type": "Remote" + }, + { + "Track ID": "5327", + "Name": "I'm Not Famous", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8166938", + "Total Time": "220457", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783668841", + "Play Date UTC": "2023-11-24T08:07:21Z", + "Skip Count": "1", + "Skip Date": "2022-11-15T21:00:55Z", + "Release Date": "2016-03-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "9674", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "I'm Not Famous", + "Persistent ID": "8E3311CEADDA01AE", + "Track Type": "Remote" + }, + { + "Track ID": "5329", + "Name": "Unsteady", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris", + "Album": "The Reason - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6950812", + "Total Time": "191518", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2014", + "Date Modified": "2021-04-30T22:42:02Z", + "Date Added": "2021-04-30T22:42:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783770023", + "Play Date UTC": "2023-11-25T12:13:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-01-24T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reason - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Unsteady", + "Persistent ID": "1E7DABCE824A420E", + "Track Type": "Remote" + }, + { + "Track ID": "5331", + "Name": "Choker", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7946092", + "Total Time": "223066", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-04-30T22:51:13Z", + "Date Added": "2021-04-30T22:51:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780837790", + "Play Date UTC": "2023-10-22T13:43:10Z", + "Skip Count": "4", + "Skip Date": "2022-12-21T20:02:36Z", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Choker", + "Persistent ID": "F2A3DE5061F80300", + "Track Type": "Remote" + }, + { + "Track ID": "5333", + "Name": "Kiss Me More (feat. SZA)", + "Artist": "Doja Cat", + "Album Artist": "Doja Cat", + "Composer": "Amala Zandile Dlamini, David Sprecher, Roget Chahayed, Carter Lang, Gerard A. Powell II & Solana Rowe", + "Album": "Kiss Me More (feat. SZA) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7512577", + "Total Time": "208867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-04-30T22:52:45Z", + "Date Added": "2021-04-30T22:52:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3780391262", + "Play Date UTC": "2023-10-17T09:41:02Z", + "Skip Count": "1", + "Skip Date": "2021-05-15T17:31:57Z", + "Release Date": "2021-04-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Kiss Me More (feat. SZA) - Single", + "Sort Artist": "Doja Cat", + "Sort Name": "Kiss Me More (feat. SZA)", + "Persistent ID": "82A2A708266D2179", + "Track Type": "Remote" + }, + { + "Track ID": "5335", + "Name": "Back In the Summer", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Max Frost & Grant Yarber", + "Album": "Back In the Summer - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6582909", + "Total Time": "180040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-04-30T23:16:17Z", + "Date Added": "2021-04-30T23:16:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3773527367", + "Play Date UTC": "2023-07-29T23:02:47Z", + "Skip Count": "4", + "Skip Date": "2021-06-11T11:45:20Z", + "Release Date": "2020-01-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Back In the Summer - Single", + "Sort Artist": "Max Frost", + "Sort Name": "Back In the Summer", + "Persistent ID": "63CC6BEB09C872FA", + "Track Type": "Remote" + }, + { + "Track ID": "5337", + "Name": "Tell Me How (Coca-Cola Commercial)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Tell Me How (Coca-Cola Commercial) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4982488", + "Total Time": "135173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-05-01T18:25:17Z", + "Date Added": "2021-05-01T18:25:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3780844790", + "Play Date UTC": "2023-10-22T15:39:50Z", + "Skip Count": "2", + "Skip Date": "2023-07-19T06:22:20Z", + "Release Date": "2021-03-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tell Me How (Coca-Cola Commercial) - Single", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Tell Me How (Coca-Cola Commercial)", + "Persistent ID": "2DB32E84E41D8BF3", + "Track Type": "Remote" + }, + { + "Track ID": "5339", + "Name": "Infinity", + "Artist": "The xx", + "Album Artist": "The xx", + "Composer": "Oliver Sim & Romy Madley Croft", + "Album": "xx", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10892783", + "Total Time": "313387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2021-05-05T20:57:16Z", + "Date Added": "2021-05-05T20:57:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3766070026", + "Play Date UTC": "2023-05-04T15:33:46Z", + "Skip Count": "2", + "Skip Date": "2021-09-23T19:34:31Z", + "Release Date": "2009-08-14T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "xx", + "Sort Artist": "xx", + "Sort Name": "xx", + "Persistent ID": "Infinity", + "Track Type": "BFA0598AD71BAF52" + }, + { + "Track ID": "5341", + "Name": "HUMBLE.", + "Artist": "Kendrick Lamar", + "Album Artist": "Kendrick Lamar", + "Composer": "Kendrick Lamar, A. Hogan, Michael L. Williams II & K. Duckworth", + "Album": "DAMN.", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6378907", + "Total Time": "177000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2021-05-05T22:06:03Z", + "Date Added": "2021-05-05T22:06:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780914017", + "Play Date UTC": "2023-10-23T10:53:37Z", + "Skip Count": "1", + "Skip Date": "2022-04-16T23:24:25Z", + "Release Date": "2017-03-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "DAMN.", + "Sort Artist": "Kendrick Lamar", + "Sort Name": "HUMBLE.", + "Persistent ID": "14ADE4C80633C22E", + "Track Type": "Remote" + }, + { + "Track ID": "5343", + "Name": "DNA.", + "Artist": "Kendrick Lamar", + "Album Artist": "Kendrick Lamar", + "Composer": "K. Duckworth & M. Williams II", + "Album": "DAMN.", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6737296", + "Total Time": "185947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2021-05-05T22:07:28Z", + "Date Added": "2021-05-05T22:07:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780850457", + "Play Date UTC": "2023-10-22T17:14:17Z", + "Skip Count": "1", + "Skip Date": "2021-05-21T14:04:38Z", + "Release Date": "2017-04-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "DAMN.", + "Sort Artist": "Kendrick Lamar", + "Sort Name": "DNA.", + "Persistent ID": "A4F70772534EB763", + "Track Type": "Remote" + }, + { + "Track ID": "5345", + "Name": "Free Lunch", + "Artist": "Isaiah Rashad", + "Album Artist": "Isaiah Rashad", + "Composer": "undef", + "Album": "The Sun's Tirade", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6864233", + "Total Time": "192029", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2021-05-06T00:24:47Z", + "Date Added": "2021-05-06T00:24:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783681609", + "Play Date UTC": "2023-11-24T11:40:09Z", + "Skip Count": "3", + "Skip Date": "2023-10-09T10:00:05Z", + "Release Date": "2016-08-07T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sun's Tirade", + "Sort Artist": "Isaiah Rashad", + "Sort Name": "Free Lunch", + "Persistent ID": "6025C039A3BE2C2F", + "Track Type": "Remote" + }, + { + "Track ID": "5347", + "Name": "MICHUUL.", + "Artist": "DUCKWRTH", + "Album Artist": "DUCKWRTH", + "Composer": "Jared Lee, Alexander Manzano & Sheldon Young", + "Album": "An XTRA UUGLY Mixtape", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6761931", + "Total Time": "186213", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2021-05-06T08:34:51Z", + "Date Added": "2021-05-06T08:34:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3767607711", + "Play Date UTC": "2023-05-22T10:41:51Z", + "Skip Count": "3", + "Skip Date": "2022-01-13T18:07:35Z", + "Release Date": "2017-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "XTRA UUGLY Mixtape", + "Sort Artist": "DUCKWRTH", + "Sort Name": "MICHUUL.", + "Persistent ID": "77C085777E044FE7", + "Track Type": "Remote" + }, + { + "Track ID": "5349", + "Name": "Immortal", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "21 Savage & Ahmar Bailey", + "Album": "Immortal - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8886649", + "Total Time": "254723", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-05-06T08:49:12Z", + "Date Added": "2021-05-06T08:49:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783277948", + "Play Date UTC": "2023-11-19T19:32:28Z", + "Skip Count": "3", + "Skip Date": "2021-05-09T18:10:12Z", + "Release Date": "2019-10-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Immortal - Single", + "Sort Artist": "21 Savage", + "Sort Name": "Immortal", + "Persistent ID": "C96697AFF8EE81E9", + "Track Type": "Remote" + }, + { + "Track ID": "5351", + "Name": "Plain Jane", + "Artist": "A$AP Ferg", + "Album Artist": "A$AP Ferg", + "Composer": "Darold Brown, Kirlan Labarrie, Paul Beauregard & Jordan Houston", + "Album": "Still Striving", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6272431", + "Total Time": "173602", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2021-05-06T08:49:53Z", + "Date Added": "2021-05-06T08:49:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3781861450", + "Play Date UTC": "2023-11-03T10:04:10Z", + "Skip Count": "5", + "Skip Date": "2022-12-15T08:55:54Z", + "Release Date": "2017-08-04T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Still Striving", + "Sort Artist": "A$AP Ferg", + "Sort Name": "Plain Jane", + "Persistent ID": "784D012887668C50", + "Track Type": "Remote" + }, + { + "Track ID": "5353", + "Name": "George Jeff", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Tramaine Winfrey", + "Album": "SYRE", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5106393", + "Total Time": "137617", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-05-06T08:54:32Z", + "Date Added": "2021-05-06T08:54:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781619136", + "Play Date UTC": "2023-10-31T14:45:36Z", + "Skip Count": "2", + "Skip Date": "2021-05-06T11:48:16Z", + "Release Date": "2017-11-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SYRE", + "Sort Artist": "Jaden", + "Sort Name": "George Jeff", + "Persistent ID": "1185C06B4B95E0AA", + "Track Type": "Remote" + }, + { + "Track ID": "5355", + "Name": "Astronaut In The Ocean", + "Artist": "Masked Wolf", + "Album Artist": "Masked Wolf", + "Composer": "undef", + "Album": "Astronaut In The Ocean - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4988357", + "Total Time": "132780", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-05-06T10:15:05Z", + "Date Added": "2021-05-06T10:15:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781319055", + "Play Date UTC": "2023-10-28T03:24:15Z", + "Skip Count": "5", + "Skip Date": "2022-07-25T13:51:26Z", + "Release Date": "2019-06-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Astronaut In The Ocean - Single", + "Sort Artist": "Masked Wolf", + "Sort Name": "Astronaut In The Ocean", + "Persistent ID": "504BA0996A3558D6", + "Track Type": "Remote" + }, + { + "Track ID": "5357", + "Name": "Mulberry Street", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8247444", + "Total Time": "224398", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-20T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3780132850", + "Play Date UTC": "2023-10-14T09:54:10Z", + "Skip Count": "2", + "Skip Date": "2023-05-21T09:37:46Z", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Mulberry Street", + "Persistent ID": "9D5136BCE517D830", + "Track Type": "Remote" + }, + { + "Track ID": "5359", + "Name": "Never Take It", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7657572", + "Total Time": "212706", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-20T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3767707557", + "Play Date UTC": "2023-05-23T14:25:57Z", + "Skip Count": "1", + "Skip Date": "2021-05-22T16:27:16Z", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Never Take It", + "Persistent ID": "66CE370BE881F097", + "Track Type": "Remote" + }, + { + "Track ID": "5361", + "Name": "Saturday", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6470684", + "Total Time": "172232", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-18T16:01:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3754385023", + "Play Date UTC": "2022-12-20T09:43:43Z", + "Skip Count": "3", + "Skip Date": "2022-08-30T06:47:46Z", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Saturday", + "Persistent ID": "EC730F2F2D07BE22", + "Track Type": "Remote" + }, + { + "Track ID": "5363", + "Name": "The Outside", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7739757", + "Total Time": "216759", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-20T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3768285087", + "Play Date UTC": "2023-05-30T06:51:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Outside", + "Persistent ID": "752CFFAE89057F97", + "Track Type": "Remote" + }, + { + "Track ID": "5365", + "Name": "Shy Away", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6603987", + "Total Time": "175044", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-06T15:05:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783692373", + "Play Date UTC": "2023-11-24T14:39:33Z", + "Skip Count": "1", + "Skip Date": "2021-05-06T19:28:06Z", + "Release Date": "2021-04-07T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Shy Away", + "Persistent ID": "8DEACD3E12DB22BC", + "Track Type": "Remote" + }, + { + "Track ID": "5367", + "Name": "Redecorate", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8642223", + "Total Time": "245843", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-20T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3773545211", + "Play Date UTC": "2023-07-30T04:00:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Redecorate", + "Persistent ID": "871240387515DA21", + "Track Type": "Remote" + }, + { + "Track ID": "5369", + "Name": "No Chances", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8109675", + "Total Time": "226449", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-20T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780828194", + "Play Date UTC": "2023-10-22T11:03:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "No Chances", + "Persistent ID": "AC0B6743E3694F05", + "Track Type": "Remote" + }, + { + "Track ID": "5371", + "Name": "Bounce Man", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6721034", + "Total Time": "185438", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-20T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781157491", + "Play Date UTC": "2023-10-26T06:31:31Z", + "Skip Count": "4", + "Skip Date": "2022-04-27T12:54:27Z", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Bounce Man", + "Persistent ID": "9604F79147E591D7", + "Track Type": "Remote" + }, + { + "Track ID": "5373", + "Name": "Good Day", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7348001", + "Total Time": "204401", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-20T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3776154593", + "Play Date UTC": "2023-08-29T08:49:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Good Day", + "Persistent ID": "A2DD532BF6E12586", + "Track Type": "Remote" + }, + { + "Track ID": "5375", + "Name": "Formidable", + "Artist": "twenty one pilots", + "Album Artist": "twenty one pilots", + "Composer": "Tyler Joseph", + "Album": "Scaled And Icy", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6518705", + "Total Time": "176325", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-06T15:05:02Z", + "Date Added": "2021-05-20T21:09:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3771745914", + "Play Date UTC": "2023-07-09T08:11:54Z", + "Skip Count": "1", + "Skip Date": "2021-09-22T18:07:02Z", + "Release Date": "2021-05-21T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scaled And Icy", + "Sort Artist": "twenty one pilots", + "Sort Name": "Formidable", + "Persistent ID": "8FF2D3C131B05BB8", + "Track Type": "Remote" + }, + { + "Track ID": "5377", + "Name": "N", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Peder Losneg\u00e5rd, Tyler Cole & Mateo Arias", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8170581", + "Total Time": "231034", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "3", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T15:14:05Z", + "Date Added": "2021-05-06T15:14:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3767090581", + "Play Date UTC": "2023-05-16T11:03:01Z", + "Skip Count": "1", + "Skip Date": "2022-06-28T21:12:29Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "N", + "Persistent ID": "7219103A465A02CA", + "Track Type": "Remote" + }, + { + "Track ID": "5379", + "Name": "P", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Peder Losneg\u00e5rd & Willow Smith", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6108417", + "Total Time": "168286", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:14:53Z", + "Date Added": "2021-05-06T20:14:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3769665869", + "Play Date UTC": "2023-06-15T06:24:29Z", + "Skip Count": "3", + "Skip Date": "2023-06-21T15:57:19Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "P", + "Persistent ID": "2524F83BD271B42E", + "Track Type": "Remote" + }, + { + "Track ID": "5381", + "Name": "Somebody Else", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Gabe Basso, Nick Stoubis, Tyler Cole, Mateo Arias & Samuel Ray", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7881354", + "Total Time": "222031", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "3", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3765392104", + "Play Date UTC": "2023-04-26T19:15:04Z", + "Skip Count": "1", + "Skip Date": "2022-07-17T08:47:06Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Somebody Else", + "Persistent ID": "2A1E05777B562A75", + "Track Type": "Remote" + }, + { + "Track ID": "5383", + "Name": "i-drip-or-is", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Omarr Rambert, Hugo Chan, Austin Owens, Keanu Torres & James Foye III \"Keyz\"", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8289294", + "Total Time": "237020", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3776154830", + "Play Date UTC": "2023-08-29T08:53:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "i-drip-or-is", + "Persistent ID": "89A4112ACD7F980D", + "Track Type": "Remote" + }, + { + "Track ID": "5385", + "Name": "Beautiful Disruption", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Omarr Rambert, Kyle Edwards, Damien Leroy & Adam Feeney", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4966008", + "Total Time": "138031", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "3", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3780848342", + "Play Date UTC": "2023-10-22T16:39:02Z", + "Skip Count": "2", + "Skip Date": "2022-07-18T11:06:40Z", + "Release Date": "2019-04-19T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "7849", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Beautiful Disruption", + "Persistent ID": "2A6F842A945C32E8", + "Track Type": "Remote" + }, + { + "Track ID": "5387", + "Name": "Again (feat. SYRE)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Hugo Chan", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9495492", + "Total Time": "269816", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "7", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3777022568", + "Play Date UTC": "2023-09-08T09:56:08Z", + "Skip Count": "2", + "Skip Date": "2021-05-23T18:53:50Z", + "Release Date": "2019-07-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Again (feat. SYRE)", + "Persistent ID": "7268E3A9CC5EED22", + "Track Type": "Remote" + }, + { + "Track ID": "5389", + "Name": "Ghost (feat. A$AP Rocky) [Remix]", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Omarr Rambert, Kehinde Hassan, Taiwo Hassan, Michael Mule, Isaac De Boni, Justin Elwin & Rakim Mayers", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5870603", + "Total Time": "162220", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "3", + "Track Count": "3", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783683732", + "Play Date UTC": "2023-11-24T12:15:32Z", + "Skip Count": "2", + "Skip Date": "2021-06-01T11:11:53Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Ghost (feat. A$AP Rocky) [Remix]", + "Persistent ID": "9B5E9E6E9AB6C4C6", + "Track Type": "Remote" + }, + { + "Track ID": "5391", + "Name": "Fire Dept", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Mike Musselman, Zack Tabori & Hugo Chan", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3785444", + "Total Time": "102342", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "9", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3780930732", + "Play Date UTC": "2023-10-23T15:32:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Fire Dept", + "Persistent ID": "C66EC4E29F6C530E", + "Track Type": "Remote" + }, + { + "Track ID": "5393", + "Name": "Got It", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Brytavious Lakeith Chambers", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3068719", + "Total Time": "76689", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "8", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3776154169", + "Play Date UTC": "2023-08-29T08:42:49Z", + "Skip Count": "1", + "Skip Date": "2022-10-22T09:41:35Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Got It", + "Persistent ID": "52F27DE3D804196D", + "Track Type": "Remote" + }, + { + "Track ID": "5395", + "Name": "Summertime in Paris (feat. Willow)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell, Tyler Cole, Omarr Rambert, Willow Smith, Mateo Arias & Kris Wu", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9493581", + "Total Time": "270960", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "11", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781174886", + "Play Date UTC": "2023-10-26T11:21:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Summertime in Paris (feat. Willow)", + "Persistent ID": "BD49FFF490B28830", + "Track Type": "Remote" + }, + { + "Track ID": "5397", + "Name": "Mission", + "Artist": "Jaden & Trinidad James", + "Album Artist": "Jaden", + "Composer": "Jaden, Tremaine Winfrey, Omarr Rambert, Hugo Chan & Nicholaus Williams", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8830208", + "Total Time": "251341", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3780850709", + "Play Date UTC": "2023-10-22T17:18:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden & Trinidad James", + "Sort Name": "Mission", + "Persistent ID": "4C27238251AFBA9E", + "Track Type": "Remote" + }, + { + "Track ID": "5399", + "Name": "Pain", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Tyler Cole, Barbara Pravy, Hugo Chan & Melanie Pereira", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12854365", + "Total Time": "375310", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "13", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3780500128", + "Play Date UTC": "2023-10-18T15:55:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Pain", + "Persistent ID": "B5D0D09EEEDBA59B", + "Track Type": "Remote" + }, + { + "Track ID": "5401", + "Name": "Chateau (feat. A$AP Rocky)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Tremaine Winfrey, Omarr Rambert, Rakim Mayers & Kuwanna Jasmine Moore", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4845463", + "Total Time": "135889", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "14", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3780839825", + "Play Date UTC": "2023-10-22T14:17:05Z", + "Skip Count": "1", + "Skip Date": "2023-03-28T06:55:49Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Chateau (feat. A$AP Rocky)", + "Persistent ID": "4D33B3401862D37E", + "Track Type": "Remote" + }, + { + "Track ID": "5403", + "Name": "On My Own (feat. Kid Cudi)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Kyle Edwards, Omarr Rambert, Scott Mescudi & Darrien Overton", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8528138", + "Total Time": "244715", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "15", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3767703002", + "Play Date UTC": "2023-05-23T13:10:02Z", + "Skip Count": "1", + "Skip Date": "2021-05-26T21:34:43Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "On My Own (feat. Kid Cudi)", + "Persistent ID": "170FF573ABD71F00", + "Track Type": "Remote" + }, + { + "Track ID": "5405", + "Name": "Riot", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Hugo Chan", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9657016", + "Total Time": "274988", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "16", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3778597100", + "Play Date UTC": "2023-09-26T15:18:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "Riot", + "Persistent ID": "1C79B9744063C42E", + "Track Type": "Remote" + }, + { + "Track ID": "5407", + "Name": "I", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Jasper Harris & Peder Losneg\u00e5rd", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4850646", + "Total Time": "130345", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3776433016", + "Play Date UTC": "2023-09-01T14:10:16Z", + "Skip Count": "3", + "Skip Date": "2022-11-27T11:04:11Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "I", + "Persistent ID": "26627EA0871B4647", + "Track Type": "Remote" + }, + { + "Track ID": "5409", + "Name": "ERYS", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Gabe Basso, Nick Stoubis, Tyler Cole, Mateo Arias & Samuel Ray", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "16142848", + "Total Time": "471771", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "17", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3783778049", + "Play Date UTC": "2023-11-25T14:27:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1963", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden", + "Sort Name": "ERYS", + "Persistent ID": "4B3B289E0616A2F8", + "Track Type": "Remote" + }, + { + "Track ID": "5411", + "Name": "K", + "Artist": "Jaden & Lido", + "Album Artist": "Jaden", + "Composer": "Jaden, Peder Losneg\u00e5rd & Harrison Rhodes", + "Album": "ERYS (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9681490", + "Total Time": "280713", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "4", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2021-05-06T20:19:55Z", + "Date Added": "2021-05-06T20:19:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3777565673", + "Play Date UTC": "2023-09-14T16:47:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS (Deluxe)", + "Sort Artist": "Jaden & Lido", + "Sort Name": "K", + "Persistent ID": "DC92C40F1721A045", + "Track Type": "Remote" + }, + { + "Track ID": "5413", + "Name": "Kiss U Right Now", + "Artist": "DUCKWRTH", + "Album Artist": "DUCKWRTH", + "Composer": "Essancy, Julian Nixon & Jared Lee", + "Album": "SuperGood", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7038561", + "Total Time": "194776", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2021-05-09T14:40:41Z", + "Date Added": "2021-05-09T14:40:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3765001950", + "Play Date UTC": "2023-04-22T06:52:30Z", + "Skip Count": "2", + "Skip Date": "2021-09-29T19:11:30Z", + "Release Date": "2020-08-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SuperGood", + "Sort Artist": "DUCKWRTH", + "Sort Name": "Kiss U Right Now", + "Persistent ID": "2BEB3F1DA3347514", + "Track Type": "Remote" + }, + { + "Track ID": "5415", + "Name": "Honey", + "Artist": "LAY", + "Album Artist": "LAY", + "Composer": "LAY, Dominique Logan, Darius Logan, SWIFF D, White Shadow, Blaq Tuxedo & DJ White Shadow", + "Album": "Honey - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6742954", + "Total Time": "183693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2019", + "Date Modified": "2021-05-09T18:55:36Z", + "Date Added": "2021-05-09T18:55:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3779315408", + "Play Date UTC": "2023-10-04T22:50:08Z", + "Skip Count": "3", + "Skip Date": "2023-10-14T08:26:52Z", + "Release Date": "2019-06-14T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Honey - EP", + "Sort Artist": "LAY", + "Sort Name": "Honey", + "Persistent ID": "4B8D97866C1AA83E", + "Track Type": "Remote" + }, + { + "Track ID": "5417", + "Name": "GTG", + "Artist": "Freddie Dredd", + "Album Artist": "Freddie Dredd", + "Composer": "Freddie Dredd", + "Album": "GTG - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3626934", + "Total Time": "93894", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-05-09T19:05:48Z", + "Date Added": "2021-05-09T19:05:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3780485777", + "Play Date UTC": "2023-10-18T11:56:17Z", + "Skip Count": "2", + "Skip Date": "2023-06-22T08:10:13Z", + "Release Date": "2018-08-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "GTG - Single", + "Sort Artist": "Freddie Dredd", + "Sort Name": "GTG", + "Persistent ID": "73DCC5C3E91AA8CC", + "Track Type": "Remote" + }, + { + "Track ID": "5419", + "Name": "Manolo (feat. Lecrae)", + "Artist": "Trip Lee", + "Album Artist": "Trip Lee", + "Composer": "Lecrae, Gabriel Azucena, William Barefield III & Jamaal Jones", + "Album": "Rise", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "8762239", + "Total Time": "248217", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2021-05-09T19:11:25Z", + "Date Added": "2021-05-09T19:11:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3781200004", + "Play Date UTC": "2023-10-26T18:20:04Z", + "Skip Count": "2", + "Skip Date": "2022-07-24T13:01:46Z", + "Release Date": "2014-10-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rise", + "Sort Artist": "Trip Lee", + "Sort Name": "Manolo (feat. Lecrae)", + "Persistent ID": "AF9E6AFB2A771E1B", + "Track Type": "Remote" + }, + { + "Track ID": "5421", + "Name": "Martini Blue", + "Artist": "DPR LIVE", + "Album Artist": "DPR LIVE", + "Composer": "undef", + "Album": "Her - EP", + "Genre": "K-Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6969465", + "Total Time": "195205", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2017", + "Date Modified": "2021-05-10T01:43:22Z", + "Date Added": "2021-05-10T01:43:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781058910", + "Play Date UTC": "2023-10-25T03:08:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Her - EP", + "Sort Artist": "DPR LIVE", + "Sort Name": "Martini Blue", + "Persistent ID": "4BFFB0A3AC8BF4D3", + "Track Type": "Remote" + }, + { + "Track ID": "5423", + "Name": "torture", + "Artist": "X Ambassadors & Earl St. Clair", + "Album Artist": "X Ambassadors & Earl St. Clair", + "Composer": "Adam Levin, Casey Harris, Earl Johnson & Sam Harris", + "Album": "torture - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5928864", + "Total Time": "161669", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-05-11T13:31:33Z", + "Date Added": "2021-05-11T13:31:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781618623", + "Play Date UTC": "2023-10-31T14:37:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-03-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "torture - Single", + "Sort Artist": "X Ambassadors & Earl St. Clair", + "Sort Name": "torture", + "Persistent ID": "753EF3D95D30C2F5", + "Track Type": "Remote" + }, + { + "Track ID": "5425", + "Name": "Flip", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "David Bayley", + "Album": "ZABA (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8153396", + "Total Time": "222840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "15", + "Year": "2014", + "Date Modified": "2021-05-11T19:53:39Z", + "Date Added": "2021-05-11T19:53:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3767206876", + "Play Date UTC": "2023-05-17T19:21:16Z", + "Skip Count": "1", + "Skip Date": "2021-05-11T20:11:41Z", + "Release Date": "2014-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ZABA (Deluxe)", + "Sort Artist": "Glass Animals", + "Sort Name": "Flip", + "Persistent ID": "6C7730FD1A12C75E", + "Track Type": "Remote" + }, + { + "Track ID": "5427", + "Name": "Glow Long", + "Artist": "Max Frost", + "Album Artist": "Max Frost", + "Composer": "Joshua Moore & Max Frost", + "Album": "Low High Low - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7486119", + "Total Time": "206539", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2013", + "Date Modified": "2021-05-11T20:32:05Z", + "Date Added": "2021-05-11T20:32:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783672161", + "Play Date UTC": "2023-11-24T09:02:41Z", + "Skip Count": "1", + "Skip Date": "2022-10-17T06:26:47Z", + "Release Date": "2013-10-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Low High Low - EP", + "Sort Artist": "Max Frost", + "Sort Name": "Glow Long", + "Persistent ID": "3661D08583C2D825", + "Track Type": "Remote" + }, + { + "Track ID": "5429", + "Name": "Journey", + "Artist": "Marcusb.", + "Album Artist": "Marcusb.", + "Composer": "Marcus Borthwick", + "Album": "Nature - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4539322", + "Total Time": "121500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2021-05-12T17:22:38Z", + "Date Added": "2021-05-12T17:22:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781387203", + "Play Date UTC": "2023-10-28T22:20:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-04-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nature - EP", + "Sort Artist": "Marcusb.", + "Sort Name": "Journey", + "Persistent ID": "7F500A46AAECA29B", + "Track Type": "Remote" + }, + { + "Track ID": "5431", + "Name": "Who", + "Artist": "BadKohai", + "Album Artist": "BadKohai", + "Composer": "BadKohai", + "Album": "Who - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6193058", + "Total Time": "176089", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-05-12T20:18:21Z", + "Date Added": "2021-05-12T20:18:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3773752440", + "Play Date UTC": "2023-08-01T13:34:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1259", + "Sort Album": "Who - Single", + "Sort Artist": "BadKohai", + "Sort Name": "Who", + "Persistent ID": "D64AF3430FBC94CF", + "Track Type": "Remote" + }, + { + "Track ID": "5433", + "Name": "After Coffee", + "Artist": "Joywave", + "Album Artist": "Joywave", + "Composer": "Joywave & Daniel Armbruster", + "Album": "After Coffee - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7088506", + "Total Time": "196240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-05-13T14:20:20Z", + "Date Added": "2021-05-13T14:20:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3741530693", + "Play Date UTC": "2022-07-24T15:04:53Z", + "Skip Count": "1", + "Skip Date": "2022-09-20T11:30:43Z", + "Release Date": "2021-03-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "After Coffee - Single", + "Sort Artist": "Joywave", + "Sort Name": "After Coffee", + "Persistent ID": "C4465A987A8E03DA", + "Track Type": "Remote" + }, + { + "Track ID": "5435", + "Name": "Ykwim?", + "Artist": "Yot Club", + "Album Artist": "Yot Club", + "Composer": "Ryan Kaiser", + "Album": "Bipolar - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7599633", + "Total Time": "212750", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2021-05-14T09:33:07Z", + "Date Added": "2021-05-14T09:33:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3780128048", + "Play Date UTC": "2023-10-14T08:34:08Z", + "Skip Count": "2", + "Skip Date": "2023-02-05T12:35:51Z", + "Release Date": "2019-05-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bipolar - EP", + "Sort Artist": "Yot Club", + "Sort Name": "Ykwim?", + "Persistent ID": "997938D934F36508", + "Track Type": "Remote" + }, + { + "Track ID": "5437", + "Name": "Pink + White", + "Artist": "Frank Ocean", + "Album Artist": "Frank Ocean", + "Composer": "undef", + "Album": "Blonde", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7076848", + "Total Time": "184516", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2021-05-14T09:34:40Z", + "Date Added": "2021-05-14T09:34:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783711898", + "Play Date UTC": "2023-11-24T20:04:58Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-20T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "2966", + "Sort Album": "Blonde", + "Sort Artist": "Frank Ocean", + "Sort Name": "Pink + White", + "Persistent ID": "2DA7EE0807F52C38", + "Track Type": "Remote" + }, + { + "Track ID": "5439", + "Name": "God Damn (feat. Kin$oul)", + "Artist": "Bass Santana", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "XXXTENTACION Presents: Members Only, Vol. 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5127085", + "Total Time": "139361", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2021-05-14T16:16:33Z", + "Date Added": "2021-05-14T16:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783691951", + "Play Date UTC": "2023-11-24T14:32:31Z", + "Skip Count": "2", + "Skip Date": "2023-10-09T10:08:50Z", + "Release Date": "2017-06-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXXTENTACION Presents: Members Only, Vol. 3", + "Sort Artist": "Bass Santana", + "Sort Name": "God Damn (feat. Kin$oul)", + "Persistent ID": "473991BF06BE5490", + "Track Type": "Remote" + }, + { + "Track ID": "5441", + "Name": "This Could Be Us", + "Artist": "Rae Sremmurd", + "Album Artist": "Rae Sremmurd", + "Composer": "M. Williams, A.Brown, K. Brown & M. Middlebrooks", + "Album": "SremmLife", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7550465", + "Total Time": "206307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2021-05-14T16:47:49Z", + "Date Added": "2021-05-14T16:47:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780833079", + "Play Date UTC": "2023-10-22T12:24:39Z", + "Skip Count": "3", + "Skip Date": "2022-08-19T16:09:25Z", + "Release Date": "2015-01-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "4829", + "Sort Album": "SremmLife", + "Sort Artist": "Rae Sremmurd", + "Sort Name": "This Could Be Us", + "Persistent ID": "B2C8BD5C74C09C0C", + "Track Type": "Remote" + }, + { + "Track ID": "5443", + "Name": "Everglow", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland, Mikkel S. Eriksen, Tor Erik Hermansen & Will Champion", + "Album": "A Head Full of Dreams", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10001078", + "Total Time": "282693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2021-05-14T16:55:03Z", + "Date Added": "2021-05-14T16:55:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3782978703", + "Play Date UTC": "2023-11-16T08:25:03Z", + "Skip Count": "1", + "Skip Date": "2023-06-20T07:24:48Z", + "Release Date": "2015-12-04T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Head Full of Dreams", + "Sort Artist": "Coldplay", + "Sort Name": "Everglow", + "Persistent ID": "8043792F2C92218A", + "Track Type": "Remote" + }, + { + "Track ID": "5445", + "Name": "RONDO (feat. Tory Lanez & Young Thug)", + "Artist": "6ix9ine", + "Album Artist": "6ix9ine", + "Composer": "6ix9ine", + "Album": "DAY69: Graduation Day", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5079887", + "Total Time": "138474", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-05-14T17:09:37Z", + "Date Added": "2021-05-14T17:09:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3759846403", + "Play Date UTC": "2023-02-21T14:46:43Z", + "Skip Count": "1", + "Skip Date": "2022-08-19T16:08:30Z", + "Release Date": "2018-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "DAY69: Graduation Day", + "Sort Artist": "6ix9ine", + "Sort Name": "RONDO (feat. Tory Lanez & Young Thug)", + "Persistent ID": "50A901B956C44802", + "Track Type": "Remote" + }, + { + "Track ID": "5447", + "Name": "Illuminati", + "Artist": "Lil Pump & Anuel AA", + "Album Artist": "Lil Pump & Anuel AA", + "Composer": "Emmanuel Gazmey Santiago & Gazzy Garcia", + "Album": "Illuminati - Single", + "Genre": "Latin", + "Kind": "Apple Music AAC audio file", + "Size": "7928122", + "Total Time": "224330", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-05-14T17:28:18Z", + "Date Added": "2021-05-14T17:28:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3770542327", + "Play Date UTC": "2023-06-25T09:52:07Z", + "Skip Count": "2", + "Skip Date": "2022-03-04T08:04:03Z", + "Release Date": "2020-04-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Illuminati - Single", + "Sort Artist": "Lil Pump & Anuel AA", + "Sort Name": "Illuminati", + "Persistent ID": "8B75649D3FC33266", + "Track Type": "Remote" + }, + { + "Track ID": "5449", + "Name": "Lights Up", + "Artist": "Harry Styles", + "Album Artist": "Harry Styles", + "Composer": "Harry Styles, Tyler Johnson & Thomas Hull", + "Album": "Fine Line", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6296340", + "Total Time": "172216", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2021-05-14T17:34:08Z", + "Date Added": "2021-05-14T17:34:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3767180768", + "Play Date UTC": "2023-05-17T12:06:08Z", + "Skip Count": "2", + "Skip Date": "2022-10-28T18:24:29Z", + "Release Date": "2019-10-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fine Line", + "Sort Artist": "Harry Styles", + "Sort Name": "Lights Up", + "Persistent ID": "7E41BA702DD7ABB1", + "Track Type": "Remote" + }, + { + "Track ID": "5451", + "Name": "God's Plan", + "Artist": "Drake", + "Album Artist": "Drake", + "Composer": "Matthew Samuels, Aubrey Graham, N. Shebib, Ron Latour, Daveon Jackson & Brock Korsan", + "Album": "Scorpion", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7074717", + "Total Time": "198973", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "5", + "Track Count": "12", + "Year": "2018", + "Date Modified": "2021-05-14T20:36:25Z", + "Date Added": "2021-05-14T20:36:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781381627", + "Play Date UTC": "2023-10-28T20:47:07Z", + "Skip Count": "2", + "Skip Date": "2023-04-28T14:01:11Z", + "Release Date": "2018-01-19T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scorpion", + "Sort Artist": "Drake", + "Sort Name": "God's Plan", + "Persistent ID": "2189366D89544DF2", + "Track Type": "Remote" + }, + { + "Track ID": "5453", + "Name": "Mr. Right Now (feat. Drake)", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "She'yaa Bin Abraham-Joseph, David Ruoff, Leland Wayne, Elias Klughammer, Aubrey Graham, Jocelyn Donald & Tate Kobang", + "Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7327642", + "Total Time": "193839", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "4", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2021-05-14T20:39:39Z", + "Date Added": "2021-05-14T20:39:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3783264165", + "Play Date UTC": "2023-11-19T15:42:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Mr. Right Now (feat. Drake)", + "Persistent ID": "7AF0E0EC6839CE5B", + "Track Type": "Remote" + }, + { + "Track ID": "5455", + "Name": "Oxygen", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "NoRedeemingQualities", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5145048", + "Total Time": "142056", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2021-05-20T10:19:13Z", + "Date Added": "2021-05-20T10:19:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3772805655", + "Play Date UTC": "2023-07-21T14:34:15Z", + "Skip Count": "1", + "Skip Date": "2022-08-09T21:02:40Z", + "Release Date": "2017-06-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NoRedeemingQualities", + "Sort Artist": "BONES", + "Sort Name": "Oxygen", + "Persistent ID": "8F59456A2DD99A33", + "Track Type": "Remote" + }, + { + "Track ID": "5457", + "Name": "LooseScrew", + "Artist": "BONES & Eddy Baker", + "Album Artist": "BONES & Eddy Baker", + "Composer": "undef", + "Album": "SparrowsCreek", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6126024", + "Total Time": "174375", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2021-05-20T10:22:11Z", + "Date Added": "2021-05-20T10:22:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3780839254", + "Play Date UTC": "2023-10-22T14:07:34Z", + "Skip Count": "2", + "Skip Date": "2021-09-13T17:12:54Z", + "Release Date": "2019-02-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SparrowsCreek", + "Sort Artist": "BONES & Eddy Baker", + "Sort Name": "LooseScrew", + "Persistent ID": "18E65B513036BAF9", + "Track Type": "Remote" + }, + { + "Track ID": "5459", + "Name": "TroubledYouth", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "TeenWitch", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "2472889", + "Total Time": "52062", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2014", + "Date Modified": "2021-05-20T10:26:50Z", + "Date Added": "2021-05-20T10:26:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3769670488", + "Play Date UTC": "2023-06-15T07:41:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-02-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TeenWitch", + "Sort Artist": "BONES", + "Sort Name": "TroubledYouth", + "Persistent ID": "08AC2AAF4B1CF54D", + "Track Type": "Remote" + }, + { + "Track ID": "5461", + "Name": "RightClickSaveIt", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "TheManInTheRadiator", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4455546", + "Total Time": "116064", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "28", + "Year": "2018", + "Date Modified": "2021-05-20T10:34:39Z", + "Date Added": "2021-05-20T10:34:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "61", + "Play Date": "3775802274", + "Play Date UTC": "2023-08-25T06:57:54Z", + "Skip Count": "2", + "Skip Date": "2022-05-21T18:07:36Z", + "Release Date": "2018-11-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TheManInTheRadiator", + "Sort Artist": "BONES", + "Sort Name": "RightClickSaveIt", + "Persistent ID": "DF33D8620A7CF611", + "Track Type": "Remote" + }, + { + "Track ID": "5463", + "Name": "Dirt", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "Scumbag", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5125978", + "Total Time": "140251", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "19", + "Year": "2013", + "Date Modified": "2021-05-20T14:32:36Z", + "Date Added": "2021-05-20T14:32:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3780827021", + "Play Date UTC": "2023-10-22T10:43:41Z", + "Skip Count": "3", + "Skip Date": "2021-05-23T14:18:12Z", + "Release Date": "2013-08-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Scumbag", + "Sort Artist": "BONES", + "Sort Name": "Dirt", + "Persistent ID": "8ACE13DB6B9A6059", + "Track Type": "Remote" + }, + { + "Track ID": "5465", + "Name": "Vertigo", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "Offline", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5055418", + "Total Time": "137691", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2020", + "Date Modified": "2021-05-20T18:27:17Z", + "Date Added": "2021-05-20T18:27:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "72", + "Play Date": "3780847775", + "Play Date UTC": "2023-10-22T16:29:35Z", + "Skip Count": "3", + "Skip Date": "2021-07-04T15:14:25Z", + "Release Date": "2020-02-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Offline", + "Sort Artist": "BONES", + "Sort Name": "Vertigo", + "Persistent ID": "4A0B32532C2A563A", + "Track Type": "Remote" + }, + { + "Track ID": "5467", + "Name": "Will He", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "George Miller & Lawrence Jung", + "Album": "In Tongues - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7210181", + "Total Time": "202103", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2021-05-21T09:58:27Z", + "Date Added": "2021-05-21T09:58:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "102", + "Play Date": "3781347498", + "Play Date UTC": "2023-10-28T11:18:18Z", + "Skip Count": "4", + "Skip Date": "2022-10-26T11:17:44Z", + "Release Date": "2017-10-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "2166", + "Sort Album": "In Tongues - EP", + "Sort Artist": "Joji", + "Sort Name": "Will He", + "Persistent ID": "638A14F1D8DF3483", + "Track Type": "Remote" + }, + { + "Track ID": "5469", + "Name": "Even If I Tried", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6977340", + "Total Time": "196686", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3776350344", + "Play Date UTC": "2023-08-31T15:12:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Even If I Tried", + "Persistent ID": "CA7CCF6CCA113B5D", + "Track Type": "Remote" + }, + { + "Track ID": "5471", + "Name": "Yesterday", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7895166", + "Total Time": "221949", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781616443", + "Play Date UTC": "2023-10-31T14:00:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Yesterday", + "Persistent ID": "5ECF91D22357124C", + "Track Type": "Remote" + }, + { + "Track ID": "5473", + "Name": "Ran Out Of Miracles", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4320201", + "Total Time": "115460", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3772721859", + "Play Date UTC": "2023-07-20T15:17:39Z", + "Skip Count": "2", + "Skip Date": "2021-06-05T17:04:36Z", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Ran Out Of Miracles", + "Persistent ID": "1520A3B1CF746DE6", + "Track Type": "Remote" + }, + { + "Track ID": "5475", + "Name": "Home", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6839211", + "Total Time": "190130", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3783708070", + "Play Date UTC": "2023-11-24T19:01:10Z", + "Skip Count": "1", + "Skip Date": "2022-10-28T17:14:52Z", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Home", + "Persistent ID": "57D46CA75CB2E629", + "Track Type": "Remote" + }, + { + "Track ID": "5477", + "Name": "Blindfold", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7555901", + "Total Time": "217554", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3783763565", + "Play Date UTC": "2023-11-25T10:26:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "2171", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Blindfold", + "Persistent ID": "8900D04AB7C6AE2E", + "Track Type": "Remote" + }, + { + "Track ID": "5479", + "Name": "Zoo", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7391197", + "Total Time": "209559", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3762330354", + "Play Date UTC": "2023-03-22T08:45:54Z", + "Skip Count": "2", + "Skip Date": "2021-09-09T21:25:51Z", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Zoo", + "Persistent ID": "B22808CC28581B89", + "Track Type": "Remote" + }, + { + "Track ID": "5481", + "Name": "Been A Really Weird Day So Far", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7532069", + "Total Time": "212132", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3781202043", + "Play Date UTC": "2023-10-26T18:54:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Been A Really Weird Day So Far", + "Persistent ID": "6872D4FDAAEFF63D", + "Track Type": "Remote" + }, + { + "Track ID": "5483", + "Name": "Going Under", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5833591", + "Total Time": "161177", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3781449932", + "Play Date UTC": "2023-10-29T15:45:32Z", + "Skip Count": "1", + "Skip Date": "2022-02-23T21:21:37Z", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Going Under", + "Persistent ID": "35538B4BC2AAE996", + "Track Type": "Remote" + }, + { + "Track ID": "5485", + "Name": "Water World", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6731225", + "Total Time": "190723", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "65", + "Play Date": "3775745659", + "Play Date UTC": "2023-08-24T15:14:19Z", + "Skip Count": "2", + "Skip Date": "2021-11-09T14:22:34Z", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Water World", + "Persistent ID": "03E05CDAE015A4B7", + "Track Type": "Remote" + }, + { + "Track ID": "5487", + "Name": "Euphoric", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6907907", + "Total Time": "192722", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3783074541", + "Play Date UTC": "2023-11-17T11:02:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Euphoric", + "Persistent ID": "5D21818DA0B3EBA0", + "Track Type": "Remote" + }, + { + "Track ID": "5489", + "Name": "Garden Fumes", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "undef", + "Album": "Miracle Mile", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5348069", + "Total Time": "147262", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2021-05-22T07:52:39Z", + "Date Added": "2021-05-22T07:52:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781093908", + "Play Date UTC": "2023-10-25T12:51:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Miracle Mile", + "Sort Artist": "Derek Pope", + "Sort Name": "Garden Fumes", + "Persistent ID": "175133C83E21F1E9", + "Track Type": "Remote" + }, + { + "Track ID": "5491", + "Name": "Pendulum", + "Artist": "Harry Hudson", + "Album Artist": "Harry Hudson", + "Composer": "Harrison Rhodes, Jess Jackson, Nick Eaholtz & David Rosser", + "Album": "Pendulum - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5060160", + "Total Time": "137455", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-05-25T11:31:43Z", + "Date Added": "2021-05-25T11:31:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3780129013", + "Play Date UTC": "2023-10-14T08:50:13Z", + "Skip Count": "1", + "Skip Date": "2021-05-26T18:12:12Z", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pendulum - Single", + "Sort Artist": "Harry Hudson", + "Sort Name": "Pendulum", + "Persistent ID": "33F31D3058AA3F7A", + "Track Type": "Remote" + }, + { + "Track ID": "5493", + "Name": "True Love", + "Artist": "Balthazar", + "Album Artist": "Balthazar", + "Composer": "undef", + "Album": "Thin Walls", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11514701", + "Total Time": "325383", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2021-05-25T11:47:51Z", + "Date Added": "2021-05-25T11:47:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3780848101", + "Play Date UTC": "2023-10-22T16:35:01Z", + "Skip Count": "5", + "Skip Date": "2022-10-01T09:49:43Z", + "Release Date": "2015-03-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Thin Walls", + "Sort Artist": "Balthazar", + "Sort Name": "True Love", + "Persistent ID": "AC73523E4D21A807", + "Track Type": "Remote" + }, + { + "Track ID": "5495", + "Name": "Golden Antlers", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "David Bayley", + "Album": "Leaflings - EP", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "10384309", + "Total Time": "294920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2012", + "Date Modified": "2021-05-25T17:38:26Z", + "Date Added": "2021-05-25T17:38:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3769184273", + "Play Date UTC": "2023-06-09T16:37:53Z", + "Skip Count": "1", + "Skip Date": "2021-05-26T21:40:09Z", + "Release Date": "2012-05-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Leaflings - EP", + "Sort Artist": "Glass Animals", + "Sort Name": "Golden Antlers", + "Persistent ID": "79C690CF28FD5CE4", + "Track Type": "Remote" + }, + { + "Track ID": "5497", + "Name": "Secrets", + "Artist": "Tribe Society", + "Album Artist": "Tribe Society", + "Composer": "undef", + "Album": "We Sell Drugs", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8791613", + "Total Time": "249364", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2021-05-25T18:07:24Z", + "Date Added": "2021-05-25T18:07:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781446816", + "Play Date UTC": "2023-10-29T14:53:36Z", + "Skip Count": "2", + "Skip Date": "2021-05-29T14:19:24Z", + "Release Date": "2017-02-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "3509", + "Sort Album": "We Sell Drugs", + "Sort Artist": "Tribe Society", + "Sort Name": "Secrets", + "Persistent ID": "CD591009B88B14B1", + "Track Type": "Remote" + }, + { + "Track ID": "5499", + "Name": "Finesse the Beat", + "Artist": "Blueface", + "Album Artist": "Blueface", + "Composer": "undef", + "Album": "Famous Cryp (Reloaded)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5473267", + "Total Time": "151710", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "20", + "Year": "2020", + "Date Modified": "2021-05-28T16:41:27Z", + "Date Added": "2021-05-28T16:41:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3773541602", + "Play Date UTC": "2023-07-30T03:00:02Z", + "Skip Count": "6", + "Skip Date": "2021-09-05T20:33:25Z", + "Release Date": "2020-06-26T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1947", + "Sort Album": "Famous Cryp (Reloaded)", + "Sort Artist": "Blueface", + "Sort Name": "Finesse the Beat", + "Persistent ID": "FB4210F68F2075E0", + "Track Type": "Remote" + }, + { + "Track ID": "5501", + "Name": "Hair Down (feat. Kendrick Lamar)", + "Artist": "SiR", + "Album Artist": "SiR", + "Composer": "Sir Darryl Farris, Kendrick Duckworth, Mike Hector, Jeff Kleinman & Michael Uzowuru", + "Album": "Hair Down (feat. Kendrick Lamar) - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7794752", + "Total Time": "216933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-05-28T16:45:22Z", + "Date Added": "2021-05-28T16:45:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3779914763", + "Play Date UTC": "2023-10-11T21:19:23Z", + "Skip Count": "2", + "Skip Date": "2022-10-09T16:15:16Z", + "Release Date": "2019-08-30T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1528", + "Sort Album": "Hair Down (feat. Kendrick Lamar) - Single", + "Sort Artist": "SiR", + "Sort Name": "Hair Down (feat. Kendrick Lamar)", + "Persistent ID": "3F70F2BC6F6227C2", + "Track Type": "Remote" + }, + { + "Track ID": "5503", + "Name": "X", + "Artist": "ScHoolboy Q, 2 Chainz, Saudi", + "Album Artist": "Kendrick Lamar, SZA", + "Composer": "Kendrick Duckworth, M. Spears, R. Ibanga, Q. Hanley, T. Epps & A. Mbisha", + "Album": "Black Panther The Album Music From And Inspired By", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9520538", + "Total Time": "267428", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2021-05-30T13:53:15Z", + "Date Added": "2021-05-30T13:53:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3755293388", + "Play Date UTC": "2022-12-30T22:03:08Z", + "Skip Count": "4", + "Skip Date": "2022-01-18T09:45:38Z", + "Release Date": "2018-02-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Black Panther The Album Music From And Inspired By", + "Sort Artist": "ScHoolboy Q, 2 Chainz, Saudi", + "Sort Name": "X", + "Persistent ID": "3C652CD75DCC4939", + "Track Type": "Remote" + }, + { + "Track ID": "5505", + "Name": "My Heart Goes Bum Bum Bum", + "Artist": "Flatsound", + "Album Artist": "Flatsound", + "Composer": "Mitch Welling", + "Album": "I Clung to You Hoping We'd Both Drown", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6207434", + "Total Time": "171262", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "16", + "Year": "2011", + "Date Modified": "2021-05-31T10:21:31Z", + "Date Added": "2021-05-31T10:21:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3783781427", + "Play Date UTC": "2023-11-25T15:23:47Z", + "Skip Count": "2", + "Skip Date": "2021-12-07T19:48:24Z", + "Release Date": "2011-03-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Clung to You Hoping We'd Both Drown", + "Sort Artist": "Flatsound", + "Sort Name": "My Heart Goes Bum Bum Bum", + "Persistent ID": "8BD115DE478CB5AC", + "Track Type": "Remote" + }, + { + "Track ID": "5507", + "Name": "Avalon", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Aristos Petrou & Scott Arceneaux Jr.", + "Album": "Avalon - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5204689", + "Total Time": "140859", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2021", + "Date Modified": "2021-05-31T22:54:16Z", + "Date Added": "2021-05-31T22:54:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3780988590", + "Play Date UTC": "2023-10-24T07:36:30Z", + "Skip Count": "6", + "Skip Date": "2021-09-17T11:53:50Z", + "Release Date": "2021-05-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Avalon - Single", + "Sort Artist": "$uicideboy$", + "Sort Name": "Avalon", + "Persistent ID": "D7E775B9B2CF0C93", + "Track Type": "Remote" + }, + { + "Track ID": "5509", + "Name": "Pillow Talking (feat. B.Rain)", + "Artist": "Lil Dicky", + "Album Artist": "Lil Dicky", + "Composer": "David Burd & Ryan Vojtesak", + "Album": "Professional Rapper", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "21786358", + "Total Time": "645876", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "20", + "Year": "2015", + "Date Modified": "2021-06-03T12:43:36Z", + "Date Added": "2021-06-03T12:43:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3770103368", + "Play Date UTC": "2023-06-20T07:56:08Z", + "Skip Count": "1", + "Skip Date": "2023-02-16T10:02:45Z", + "Release Date": "2015-07-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Professional Rapper", + "Sort Artist": "Lil Dicky", + "Sort Name": "Pillow Talking (feat. B.Rain)", + "Persistent ID": "CEF49FD268A6F049", + "Track Type": "Remote" + }, + { + "Track ID": "5511", + "Name": "Life Could Be a Dream", + "Artist": "The Crew Cuts", + "Album Artist": "Various Artists", + "Composer": "undef", + "Album": "Balade \u00e0 Saint-Germain, vol 6. Rue Saint Benoit : Nouvelle vague", + "Genre": "French Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6240272", + "Total Time": "166102", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "14", + "Track Count": "20", + "Year": "2010", + "Date Modified": "2021-06-05T15:38:04Z", + "Date Added": "2021-06-05T15:38:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3772083529", + "Play Date UTC": "2023-07-13T05:58:49Z", + "Skip Count": "1", + "Skip Date": "2022-12-08T09:27:58Z", + "Release Date": "2010-09-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Balade \u00e0 Saint-Germain, vol 6. Rue Saint Benoit : Nouvelle vague", + "Sort Artist": "Crew Cuts", + "Sort Name": "Life Could Be a Dream", + "Persistent ID": "A1C4DC3D8CDEFCC3", + "Track Type": "Remote" + }, + { + "Track ID": "5513", + "Name": "Fini La Com\u00e9die", + "Artist": "Dalida", + "Album Artist": "Dalida", + "Composer": "Angelo La Bionda, Carmelo La Bionda & Karel Ricanek", + "Album": "Chante Le 7\u00e8me Art (Parlez-Moi D'Amour)", + "Genre": "French Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7307055", + "Total Time": "204947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "24", + "Year": "1997", + "Date Modified": "2021-06-05T15:47:53Z", + "Date Added": "2021-06-05T15:47:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781162654", + "Play Date UTC": "2023-10-26T07:57:34Z", + "Skip Count": "1", + "Skip Date": "2021-09-26T22:43:29Z", + "Release Date": "1981-06-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chante Le 7\u00e8me Art (Parlez-Moi D'Amour)", + "Sort Artist": "Dalida", + "Sort Name": "Fini La Com\u00e9die", + "Persistent ID": "650C250454B5C0FE", + "Track Type": "Remote" + }, + { + "Track ID": "5515", + "Name": "On My Own", + "Artist": "Darci", + "Album Artist": "Darci", + "Composer": "undef", + "Album": "On My Own - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6172363", + "Total Time": "171692", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-06-09T08:25:55Z", + "Date Added": "2021-06-09T08:25:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3772782087", + "Play Date UTC": "2023-07-21T08:01:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-05-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "On My Own - Single", + "Sort Artist": "Darci", + "Sort Name": "On My Own", + "Persistent ID": "A48E093AB47BB3D8", + "Track Type": "Remote" + }, + { + "Track ID": "5517", + "Name": "my vinyl", + "Artist": "Jeune Joseph", + "Album Artist": "Jeune Joseph", + "Composer": "undef", + "Album": "my vinyl - Single", + "Genre": "Ambient", + "Kind": "Apple Music AAC audio file", + "Size": "4127578", + "Total Time": "108000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-06-09T08:32:57Z", + "Date Added": "2021-06-09T08:32:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3783588088", + "Play Date UTC": "2023-11-23T09:41:28Z", + "Skip Count": "2", + "Skip Date": "2021-06-30T18:00:37Z", + "Release Date": "2021-05-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "my vinyl - Single", + "Sort Artist": "Jeune Joseph", + "Sort Name": "my vinyl", + "Persistent ID": "9FF42373BA5EE3F5", + "Track Type": "Remote" + }, + { + "Track ID": "5519", + "Name": "El Invento", + "Artist": "Jos\u00e9 Gonz\u00e1lez", + "Album Artist": "Jos\u00e9 Gonz\u00e1lez", + "Composer": "Jos\u00e9 Gonz\u00e1lez", + "Album": "Local Valley", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "5887717", + "Total Time": "153413", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2021", + "Date Modified": "2021-06-09T08:34:37Z", + "Date Added": "2021-06-09T08:34:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781201672", + "Play Date UTC": "2023-10-26T18:47:52Z", + "Skip Count": "1", + "Skip Date": "2021-11-30T09:57:36Z", + "Release Date": "2021-02-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Local Valley", + "Sort Artist": "Jos\u00e9 Gonz\u00e1lez", + "Sort Name": "El Invento", + "Persistent ID": "6B59FD18CBBF45B3", + "Track Type": "Remote" + }, + { + "Track ID": "5521", + "Name": "Make It Last", + "Artist": "Therr Maitz", + "Album Artist": "Therr Maitz", + "Composer": "Anton Belyaev & Victoria Zhook", + "Album": "Make It Last - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7156013", + "Total Time": "209184", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2014", + "Date Modified": "2021-06-09T18:54:09Z", + "Date Added": "2021-06-09T18:54:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783687449", + "Play Date UTC": "2023-11-24T13:17:29Z", + "Skip Count": "3", + "Skip Date": "2021-06-15T16:23:49Z", + "Release Date": "2014-02-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Make It Last - Single", + "Sort Artist": "Therr Maitz", + "Sort Name": "Make It Last", + "Persistent ID": "81192AB3A9109016", + "Track Type": "Remote" + }, + { + "Track ID": "5523", + "Name": "Antisocial", + "Artist": "Ed Sheeran & Travis Scott", + "Album Artist": "Ed Sheeran", + "Composer": "Ed Sheeran, Fred Gibson, Jacques Webster & Joseph Saddler", + "Album": "No.6 Collaborations Project", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5845684", + "Total Time": "161747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2021-06-12T19:31:47Z", + "Date Added": "2021-06-12T19:31:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "61", + "Play Date": "3769673424", + "Play Date UTC": "2023-06-15T08:30:24Z", + "Skip Count": "15", + "Skip Date": "2021-08-01T18:26:08Z", + "Release Date": "2019-07-12T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No.6 Collaborations Project", + "Sort Artist": "Ed Sheeran & Travis Scott", + "Sort Name": "Antisocial", + "Persistent ID": "6DBD0A05D615460C", + "Track Type": "Remote" + }, + { + "Track ID": "5525", + "Name": "MIDDLE CHILD", + "Artist": "PnB Rock & XXXTENTACION", + "Album Artist": "PnB Rock", + "Composer": "Datkidchris, Jahseh Onfroy & PnB Rock", + "Album": "TrapStar Turnt PopStar", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5598176", + "Total Time": "151574", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "9", + "Year": "2019", + "Date Modified": "2021-06-14T12:50:16Z", + "Date Added": "2021-06-14T12:50:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3768290183", + "Play Date UTC": "2023-05-30T08:16:23Z", + "Skip Count": "1", + "Skip Date": "2021-09-26T22:33:28Z", + "Release Date": "2019-05-03T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TrapStar Turnt PopStar", + "Sort Artist": "PnB Rock & XXXTENTACION", + "Sort Name": "MIDDLE CHILD", + "Persistent ID": "DDE851DA986639D5", + "Track Type": "Remote" + }, + { + "Track ID": "5527", + "Name": "wanting is never enough", + "Artist": "SYML & Nathan Kawanishi", + "Album Artist": "SYML & Nathan Kawanishi", + "Composer": "Brian Fennell & Paul Meany", + "Album": "wanting is never enough - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8164326", + "Total Time": "214286", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-06-15T15:05:54Z", + "Date Added": "2021-06-15T15:05:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3767280366", + "Play Date UTC": "2023-05-18T15:46:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "wanting is never enough - Single", + "Sort Artist": "SYML & Nathan Kawanishi", + "Sort Name": "wanting is never enough", + "Persistent ID": "FA31916AD8764CD9", + "Track Type": "Remote" + }, + { + "Track ID": "5529", + "Name": "F*ck Love", + "Artist": "Lund", + "Album Artist": "Lund", + "Composer": "Robert Lund", + "Album": "F*ck Love - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7036516", + "Total Time": "197368", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-06-15T15:10:25Z", + "Date Added": "2021-06-15T15:10:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "58", + "Play Date": "3781619894", + "Play Date UTC": "2023-10-31T14:58:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "F*ck Love - Single", + "Sort Artist": "Lund", + "Sort Name": "F*ck Love", + "Persistent ID": "137E0523449C304A", + "Track Type": "Remote" + }, + { + "Track ID": "5531", + "Name": "King", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "undef", + "Album": "Revenge", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4203974", + "Total Time": "112800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "7", + "Year": "2016", + "Date Modified": "2021-06-15T19:07:20Z", + "Date Added": "2021-06-15T19:07:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781397117", + "Play Date UTC": "2023-10-29T01:05:17Z", + "Skip Count": "2", + "Skip Date": "2021-06-26T23:47:16Z", + "Release Date": "2016-04-25T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Revenge", + "Sort Artist": "XXXTENTACION", + "Sort Name": "King", + "Persistent ID": "5A33E4149B0D0C99", + "Track Type": "Remote" + }, + { + "Track ID": "5533", + "Name": "Hope", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "John Cunningham & Jahseh Onfroy", + "Album": "?", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "4255477", + "Total Time": "110886", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2021-06-15T19:13:49Z", + "Date Added": "2021-06-15T19:13:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3780912414", + "Play Date UTC": "2023-10-23T10:26:54Z", + "Skip Count": "4", + "Skip Date": "2022-11-11T18:24:09Z", + "Release Date": "2018-03-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "?", + "Sort Artist": "XXXTENTACION", + "Sort Name": "Hope", + "Persistent ID": "72E2E0451CD48C62", + "Track Type": "Remote" + }, + { + "Track ID": "5535", + "Name": "help herself", + "Artist": "bbno$ & Diamond Pistols", + "Album Artist": "bbno$", + "Composer": "Alex Gumuchian, Christian Dold & Nicco \"Neek\" Catalano", + "Album": "my oh my - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6849528", + "Total Time": "188571", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2021", + "Date Modified": "2021-06-23T22:59:04Z", + "Date Added": "2021-06-23T22:59:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780005436", + "Play Date UTC": "2023-10-12T22:30:36Z", + "Skip Count": "1", + "Skip Date": "2022-05-16T21:54:23Z", + "Release Date": "2021-01-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "2462", + "Sort Album": "my oh my - EP", + "Sort Artist": "bbno$ & Diamond Pistols", + "Sort Name": "help herself", + "Persistent ID": "04EF56CE91B4186F", + "Track Type": "Remote" + }, + { + "Track ID": "5537", + "Name": "Lalala", + "Artist": "Y2K & bbno$", + "Album Artist": "Y2K & bbno$", + "Composer": "Ari Starace & Alex Gumuchian", + "Album": "Lalala - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5848231", + "Total Time": "160627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-06-23T23:01:21Z", + "Date Added": "2021-06-23T23:01:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3781384419", + "Play Date UTC": "2023-10-28T21:33:39Z", + "Skip Count": "4", + "Skip Date": "2022-11-08T08:43:42Z", + "Release Date": "2019-06-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lalala - Single", + "Sort Artist": "Y2K & bbno$", + "Sort Name": "Lalala", + "Persistent ID": "24454A0FEE9A9696", + "Track Type": "Remote" + }, + { + "Track ID": "5539", + "Name": "Wolf", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Wolf", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4366070", + "Total Time": "110616", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "18", + "Year": "2013", + "Date Modified": "2021-06-24T18:45:26Z", + "Date Added": "2021-06-24T18:45:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3766397171", + "Play Date UTC": "2023-05-08T10:26:11Z", + "Skip Count": "1", + "Skip Date": "2021-06-29T14:05:09Z", + "Release Date": "2013-04-01T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Wolf", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Wolf", + "Persistent ID": "E627570FFD5E0D37", + "Track Type": "Remote" + }, + { + "Track ID": "5541", + "Name": "MASSA", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7951302", + "Total Time": "223719", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T21:58:37Z", + "Date Added": "2021-06-24T21:58:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3774950637", + "Play Date UTC": "2023-08-15T10:23:57Z", + "Skip Count": "1", + "Skip Date": "2022-10-17T14:14:09Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "MASSA", + "Persistent ID": "0025F4BC13D357D4", + "Track Type": "Remote" + }, + { + "Track ID": "5543", + "Name": "RUNITUP", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8162989", + "Total Time": "229565", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:05:12Z", + "Date Added": "2021-06-24T22:05:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783707879", + "Play Date UTC": "2023-11-24T18:57:59Z", + "Skip Count": "2", + "Skip Date": "2022-10-06T10:03:16Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "RUNITUP", + "Persistent ID": "194E6FFD8DD6B8C7", + "Track Type": "Remote" + }, + { + "Track ID": "5545", + "Name": "SAFARI", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6367335", + "Total Time": "177743", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3783576812", + "Play Date UTC": "2023-11-23T06:33:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "SAFARI", + "Persistent ID": "58667ECFB41A84A8", + "Track Type": "Remote" + }, + { + "Track ID": "5547", + "Name": "MANIFESTO", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6352153", + "Total Time": "175123", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3782803695", + "Play Date UTC": "2023-11-14T07:48:15Z", + "Skip Count": -1, + "Skip Date": "2021-07-21T13:36:55Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "MANIFESTO", + "Persistent ID": "889D6B36E1887E84", + "Track Type": "Remote" + }, + { + "Track ID": "5549", + "Name": "SWEET / I THOUGHT YOU WANTED TO DANCE", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "20418793", + "Total Time": "588139", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3778574692", + "Play Date UTC": "2023-09-26T09:04:52Z", + "Skip Count": "4", + "Skip Date": "2023-08-29T15:22:33Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "SWEET / I THOUGHT YOU WANTED TO DANCE", + "Persistent ID": "3314A9175DB387A2", + "Track Type": "Remote" + }, + { + "Track ID": "5551", + "Name": "MOMMA TALK", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Spoken Word", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "2978541", + "Total Time": "70927", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781063641", + "Play Date UTC": "2023-10-25T04:27:21Z", + "Skip Count": "1", + "Skip Date": "2023-01-11T20:35:57Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "3208", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "MOMMA TALK", + "Persistent ID": "509B9C382FFD70B5", + "Track Type": "Remote" + }, + { + "Track ID": "5553", + "Name": "SIR BAUDELAIRE", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3461853", + "Total Time": "88625", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3783807165", + "Play Date UTC": "2023-11-25T22:32:45Z", + "Skip Count": "3", + "Skip Date": "2023-10-14T09:39:27Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "3102", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "SIR BAUDELAIRE", + "Persistent ID": "08667CBFAAF3FCA3", + "Track Type": "Remote" + }, + { + "Track ID": "5555", + "Name": "LEMONHEAD", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4895154", + "Total Time": "130980", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3770541489", + "Play Date UTC": "2023-06-25T09:38:09Z", + "Skip Count": "7", + "Skip Date": "2023-02-22T19:07:23Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "LEMONHEAD", + "Persistent ID": "AFEE40C1E609BCD4", + "Track Type": "Remote" + }, + { + "Track ID": "5557", + "Name": "CORSO", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5389145", + "Total Time": "146482", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3777022714", + "Play Date UTC": "2023-09-08T09:58:34Z", + "Skip Count": "1", + "Skip Date": "2023-07-20T10:48:11Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "5413", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "CORSO", + "Persistent ID": "58021FCB4225FA62", + "Track Type": "Remote" + }, + { + "Track ID": "5559", + "Name": "LUMBERJACK", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma, Larry Willis, Anthony Berkeley, Robert Diggs, Arnold Hamilton & Paul Huston", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5120530", + "Total Time": "138312", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3760188301", + "Play Date UTC": "2023-02-25T13:45:01Z", + "Skip Count": "2", + "Skip Date": "2023-04-23T06:55:44Z", + "Release Date": "2021-06-16T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "4109", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "LUMBERJACK", + "Persistent ID": "8A9B72B05C08441B", + "Track Type": "Remote" + }, + { + "Track ID": "5561", + "Name": "WUSYANAME", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4550861", + "Total Time": "121573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3782976438", + "Play Date UTC": "2023-11-16T07:47:18Z", + "Skip Count": "1", + "Skip Date": "2021-06-26T23:47:49Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "WUSYANAME", + "Persistent ID": "804499FA5BC104C4", + "Track Type": "Remote" + }, + { + "Track ID": "5563", + "Name": "WILSHIRE", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "18485092", + "Total Time": "515865", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3762004249", + "Play Date UTC": "2023-03-18T14:10:49Z", + "Skip Count": "5", + "Skip Date": "2023-03-24T20:38:20Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "2692", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "WILSHIRE", + "Persistent ID": "EFB6B6A23B2759A2", + "Track Type": "Remote" + }, + { + "Track ID": "5565", + "Name": "HOT WIND BLOWS", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5666301", + "Total Time": "155293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3779949278", + "Play Date UTC": "2023-10-12T06:54:38Z", + "Skip Count": "3", + "Skip Date": "2023-11-21T06:07:52Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "5009", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "HOT WIND BLOWS", + "Persistent ID": "BE2BDF897223B3B9", + "Track Type": "Remote" + }, + { + "Track ID": "5567", + "Name": "JUGGERNAUT", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5418380", + "Total Time": "146419", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "49", + "Play Date": "3781620398", + "Play Date UTC": "2023-10-31T15:06:38Z", + "Skip Count": "3", + "Skip Date": "2023-05-14T12:18:15Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "JUGGERNAUT", + "Persistent ID": "6E3B01146E3F0381", + "Track Type": "Remote" + }, + { + "Track ID": "5569", + "Name": "RISE!", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7266871", + "Total Time": "203588", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3762333315", + "Play Date UTC": "2023-03-22T09:35:15Z", + "Skip Count": "5", + "Skip Date": "2023-05-14T13:06:21Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "RISE!", + "Persistent ID": "F256EB2B4059D5B6", + "Track Type": "Remote" + }, + { + "Track ID": "5571", + "Name": "BLESSED", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "CALL ME IF YOU GET LOST", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "2425481", + "Total Time": "57667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-06-24T22:06:35Z", + "Date Added": "2021-06-24T22:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3781766671", + "Play Date UTC": "2023-11-02T07:44:31Z", + "Skip Count": "8", + "Skip Date": "2022-10-05T05:48:26Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "3047", + "Sort Album": "CALL ME IF YOU GET LOST", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "BLESSED", + "Persistent ID": "2D34AA4DA4F687B8", + "Track Type": "Remote" + }, + { + "Track ID": "5573", + "Name": "InLovingMemory", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3908638", + "Total Time": "102452", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:02:42Z", + "Date Added": "2021-06-24T23:02:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "63", + "Play Date": "3781866689", + "Play Date UTC": "2023-11-03T11:31:29Z", + "Skip Count": "2", + "Skip Date": "2022-12-27T09:11:22Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "InLovingMemory", + "Persistent ID": "E78067A3F7C63AA2", + "Track Type": "Remote" + }, + { + "Track ID": "5575", + "Name": "BYE", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Peder Losneg\u00e5rd & Jaden Smith", + "Album": "BYE - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10442811", + "Total Time": "296048", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-06-24T23:04:33Z", + "Date Added": "2021-06-24T23:04:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "51", + "Play Date": "3760953500", + "Play Date UTC": "2023-03-06T10:18:20Z", + "Skip Count": "5", + "Skip Date": "2023-05-30T14:54:04Z", + "Release Date": "2021-06-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BYE - Single", + "Sort Artist": "Jaden", + "Sort Name": "BYE", + "Persistent ID": "5727047ED9CDB6B2", + "Track Type": "Remote" + }, + { + "Track ID": "5577", + "Name": "P250", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5574531", + "Total Time": "155193", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "72", + "Play Date": "3773527186", + "Play Date UTC": "2023-07-29T22:59:46Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "P250", + "Persistent ID": "30EFC61BD16969B1", + "Track Type": "Remote" + }, + { + "Track ID": "5579", + "Name": "DemolitionFreestylePt3", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4692288", + "Total Time": "128209", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "64", + "Play Date": "3770356442", + "Play Date UTC": "2023-06-23T06:14:02Z", + "Skip Count": "1", + "Skip Date": "2022-03-01T18:04:46Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1817", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "DemolitionFreestylePt3", + "Persistent ID": "A5243E81111AF141", + "Track Type": "Remote" + }, + { + "Track ID": "5581", + "Name": "RainCloudsFollowMe", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5619720", + "Total Time": "153182", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "81", + "Play Date": "3781061765", + "Play Date UTC": "2023-10-25T03:56:05Z", + "Skip Count": "2", + "Skip Date": "2022-04-16T22:48:06Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1259", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "RainCloudsFollowMe", + "Persistent ID": "AEB7934EC19CFB70", + "Track Type": "Remote" + }, + { + "Track ID": "5583", + "Name": "TwasTheDarkestNight", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3319317", + "Total Time": "85499", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "50", + "Play Date": "3780830694", + "Play Date UTC": "2023-10-22T11:44:54Z", + "Skip Count": "4", + "Skip Date": "2022-11-18T15:30:37Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "2187", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "TwasTheDarkestNight", + "Persistent ID": "CF6AF15E4FFFB044", + "Track Type": "Remote" + }, + { + "Track ID": "5585", + "Name": "SoulFood", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4177908", + "Total Time": "111909", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3783712011", + "Play Date UTC": "2023-11-24T20:06:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1259", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "SoulFood", + "Persistent ID": "EF5FBEAF8BA2CFFE", + "Track Type": "Remote" + }, + { + "Track ID": "5587", + "Name": "GoHardHuh", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3024508", + "Total Time": "76722", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "78", + "Play Date": "3772785182", + "Play Date UTC": "2023-07-21T08:53:02Z", + "Skip Count": "2", + "Skip Date": "2021-09-26T16:51:22Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1437", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "GoHardHuh", + "Persistent ID": "7C2F2255933FAB40", + "Track Type": "Remote" + }, + { + "Track ID": "5589", + "Name": "WhiteBoyRick", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3991816", + "Total Time": "105691", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "67", + "Play Date": "3775209084", + "Play Date UTC": "2023-08-18T10:11:24Z", + "Skip Count": "2", + "Skip Date": "2022-04-06T08:57:48Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1259", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "WhiteBoyRick", + "Persistent ID": "46420D83F64A15E6", + "Track Type": "Remote" + }, + { + "Track ID": "5591", + "Name": "AnyLastWords?", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4865130", + "Total Time": "133303", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "78", + "Play Date": "3781394050", + "Play Date UTC": "2023-10-29T00:14:10Z", + "Skip Count": "7", + "Skip Date": "2022-05-23T09:12:19Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1329", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "AnyLastWords?", + "Persistent ID": "1D9115635774FE73", + "Track Type": "Remote" + }, + { + "Track ID": "5593", + "Name": "SawedOff", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3751164", + "Total Time": "100258", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "57", + "Play Date": "3782903301", + "Play Date UTC": "2023-11-15T11:28:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1259", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "SawedOff", + "Persistent ID": "2C9D8F08AA801177", + "Track Type": "Remote" + }, + { + "Track ID": "5595", + "Name": "ChatLog", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4315986", + "Total Time": "116323", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "68", + "Play Date": "3781354794", + "Play Date UTC": "2023-10-28T13:19:54Z", + "Skip Count": "3", + "Skip Date": "2022-07-19T16:33:49Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1259", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "ChatLog", + "Persistent ID": "C664C4A1FACA461E", + "Track Type": "Remote" + }, + { + "Track ID": "5597", + "Name": "Zippo", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3159354", + "Total Time": "82077", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3775741896", + "Play Date UTC": "2023-08-24T14:11:36Z", + "Skip Count": "1", + "Skip Date": "2022-11-21T15:29:58Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1853", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "Zippo", + "Persistent ID": "15C27CF2B4163ED2", + "Track Type": "Remote" + }, + { + "Track ID": "5599", + "Name": "EverybodysFavoriteScumbag", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3963824", + "Total Time": "101251", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "67", + "Play Date": "3777564378", + "Play Date UTC": "2023-09-14T16:26:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1555", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "EverybodysFavoriteScumbag", + "Persistent ID": "79A3012EF0EAF5A1", + "Track Type": "Remote" + }, + { + "Track ID": "5601", + "Name": "Hitchhiker", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3556387", + "Total Time": "92813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "61", + "Play Date": "3780129949", + "Play Date UTC": "2023-10-14T09:05:49Z", + "Skip Count": "2", + "Skip Date": "2023-02-03T12:47:42Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1259", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "Hitchhiker", + "Persistent ID": "6CAB5BD23DED7B69", + "Track Type": "Remote" + }, + { + "Track ID": "5603", + "Name": "Focus", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6880873", + "Total Time": "193306", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3766660689", + "Play Date UTC": "2023-05-11T11:38:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1280", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "Focus", + "Persistent ID": "0C26CCDBC91AF87E", + "Track Type": "Remote" + }, + { + "Track ID": "5605", + "Name": "IThinkIWillBeOk", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "2979295", + "Total Time": "75180", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "60", + "Play Date": "3781435039", + "Play Date UTC": "2023-10-29T11:37:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1259", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "IThinkIWillBeOk", + "Persistent ID": "5392D932149D1F38", + "Track Type": "Remote" + }, + { + "Track ID": "5607", + "Name": "BrandNewExpectations", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "InLovingMemory", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3176378", + "Total Time": "82678", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "17", + "Year": "2021", + "Date Modified": "2021-06-24T23:06:47Z", + "Date Added": "2021-06-24T23:06:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "68", + "Play Date": "3781437423", + "Play Date UTC": "2023-10-29T12:17:03Z", + "Skip Count": "1", + "Skip Date": "2022-07-24T13:01:58Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1635", + "Sort Album": "InLovingMemory", + "Sort Artist": "BONES", + "Sort Name": "BrandNewExpectations", + "Persistent ID": "A7ADAEA5FF9938E9", + "Track Type": "Remote" + }, + { + "Track ID": "5609", + "Name": "$Outh $Ide $Uicide (feat. Pouya)", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Scott Arceneaux Jr. & Aristos Petrou", + "Album": "High Tide in the Snake's Nest", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6070943", + "Total Time": "169169", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2021-06-29T12:35:17Z", + "Date Added": "2021-06-29T12:35:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "54", + "Play Date": "3783354567", + "Play Date UTC": "2023-11-20T16:49:27Z", + "Skip Count": "1", + "Skip Date": "2021-12-20T19:54:57Z", + "Release Date": "2015-06-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "High Tide in the Snake's Nest", + "Sort Artist": "$uicideboy$", + "Sort Name": "$Outh $Ide $Uicide (feat. Pouya)", + "Persistent ID": "8386A4A3C2953A1C", + "Track Type": "Remote" + }, + { + "Track ID": "5611", + "Name": "BEST INTEREST", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma, Barbara Trotter & Kenneth Chavis", + "Album": "BEST INTEREST - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4706088", + "Total Time": "127921", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-06-30T23:07:21Z", + "Date Added": "2021-06-30T23:07:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3781196181", + "Play Date UTC": "2023-10-26T17:16:21Z", + "Skip Count": "1", + "Skip Date": "2021-08-24T10:04:49Z", + "Release Date": "2020-01-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "BEST INTEREST - Single", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "BEST INTEREST", + "Persistent ID": "3BAEE4DE1B73C84D", + "Track Type": "Remote" + }, + { + "Track ID": "5613", + "Name": "Everyday (feat. Rod Stewart x Miguel x Mark Ronson)", + "Artist": "A$AP Rocky", + "Album Artist": "A$AP Rocky", + "Composer": "Mark Ronson, Rakim Mayers, Miguel & David Keith Bentley", + "Album": "AT.LONG.LAST.A$AP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8984115", + "Total Time": "260991", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "18", + "Year": "2015", + "Date Modified": "2021-07-08T19:10:27Z", + "Date Added": "2021-07-08T19:10:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3761057407", + "Play Date UTC": "2023-03-07T15:10:07Z", + "Skip Count": "4", + "Skip Date": "2021-09-15T19:04:45Z", + "Release Date": "2015-05-08T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "AT.LONG.LAST.A$AP", + "Sort Artist": "A$AP Rocky", + "Sort Name": "Everyday (feat. Rod Stewart x Miguel x Mark Ronson)", + "Persistent ID": "BD7627FADC0D0140", + "Track Type": "Remote" + }, + { + "Track ID": "5615", + "Name": "Motley Crew", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post, David Doman, Louis Bell, Ezemdi Chinaecherem Chikwendu, Daniel Kostov & Danny Levin", + "Album": "Motley Crew - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6646900", + "Total Time": "184213", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-07-13T03:02:11Z", + "Date Added": "2021-07-13T03:02:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "64", + "Play Date": "3783013316", + "Play Date UTC": "2023-11-16T18:01:56Z", + "Skip Count": "8", + "Skip Date": "2023-06-25T18:25:09Z", + "Release Date": "2021-07-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Motley Crew - Single", + "Sort Artist": "Post Malone", + "Sort Name": "Motley Crew", + "Persistent ID": "76F6ACB888208BF8", + "Track Type": "Remote" + }, + { + "Track ID": "5617", + "Name": "Kick It", + "Artist": "Verzache", + "Album Artist": "Verzache", + "Composer": "Verzache", + "Album": "Thought Pool", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6049192", + "Total Time": "170542", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "8", + "Year": "2018", + "Date Modified": "2021-07-14T12:25:07Z", + "Date Added": "2021-07-14T12:25:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3766651217", + "Play Date UTC": "2023-05-11T09:00:17Z", + "Skip Count": "1", + "Skip Date": "2021-09-20T13:52:48Z", + "Release Date": "2018-10-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Thought Pool", + "Sort Artist": "Verzache", + "Sort Name": "Kick It", + "Persistent ID": "94905565F4DC149B", + "Track Type": "Remote" + }, + { + "Track ID": "5619", + "Name": "T.D (feat. A$AP Rocky & Tyler, The Creator)", + "Artist": "Lil Yachty & Tierra Whack", + "Album Artist": "Lil Yachty", + "Composer": "Tierra Whack, Miles McCollum, Samuel Gloade, Rakim Mayers, Tyler Okonma, Pharrell Williams, Seiji Kameyama, Verbal, RYO-Z & ILMARI", + "Album": "Lil Boat 3", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8298648", + "Total Time": "232839", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "19", + "Year": "2020", + "Date Modified": "2021-07-18T16:47:30Z", + "Date Added": "2021-07-18T16:47:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3760899362", + "Play Date UTC": "2023-03-05T19:16:02Z", + "Skip Count": "4", + "Skip Date": "2022-11-24T11:13:13Z", + "Release Date": "2020-05-29T12:00:00Z", + "Album Rating": "20", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lil Boat 3", + "Sort Artist": "Lil Yachty & Tierra Whack", + "Sort Name": "T.D (feat. A$AP Rocky & Tyler, The Creator)", + "Persistent ID": "B21AD1F61ED722FB", + "Track Type": "Remote" + }, + { + "Track ID": "5621", + "Name": "Gone (feat. Kimbra)", + "Artist": "Son Lux & Kimbra", + "Album Artist": "Son Lux & Kimbra", + "Composer": "undef", + "Album": "Gone (feat. Kimbra) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4911651", + "Total Time": "136296", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-07-19T21:56:16Z", + "Date Added": "2021-07-19T21:56:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3760113425", + "Play Date UTC": "2023-02-24T16:57:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-07-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gone (feat. Kimbra) - Single", + "Sort Artist": "Son Lux & Kimbra", + "Sort Name": "Gone (feat. Kimbra)", + "Persistent ID": "5EB1B4C95BCEEF46", + "Track Type": "Remote" + }, + { + "Track ID": "5623", + "Name": "Nenita", + "Artist": "Manuel Medrano", + "Album Artist": "Manuel Medrano", + "Composer": "Manuel Medrano", + "Album": "Nenita - Single", + "Genre": "Pop Latino", + "Kind": "Apple Music AAC audio file", + "Size": "7316942", + "Total Time": "203973", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-07-21T09:47:55Z", + "Date Added": "2021-07-21T09:47:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3780826608", + "Play Date UTC": "2023-10-22T10:36:48Z", + "Skip Count": "2", + "Skip Date": "2022-08-10T18:48:00Z", + "Release Date": "2021-06-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nenita - Single", + "Sort Artist": "Manuel Medrano", + "Sort Name": "Nenita", + "Persistent ID": "0671DD80BA49000C", + "Track Type": "Remote" + }, + { + "Track ID": "5625", + "Name": "Digest", + "Artist": "Valentino Khan, wifisfuneral & Almighty Jay", + "Album Artist": "Valentino Khan, wifisfuneral & Almighty Jay", + "Composer": "Valentino Khan, Isaih Rivera & Jay Bradley", + "Album": "Digest - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5688603", + "Total Time": "152535", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-07-30T23:38:21Z", + "Date Added": "2021-07-30T23:38:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3782814198", + "Play Date UTC": "2023-11-14T10:43:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Digest - Single", + "Sort Artist": "Valentino Khan, wifisfuneral & Almighty Jay", + "Sort Name": "Digest", + "Persistent ID": "3F885B02E28DE3F9", + "Track Type": "Remote" + }, + { + "Track ID": "5627", + "Name": "Exits", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Edwin Congreave, Jack Bevan, James Smith & Yannis Philippakis", + "Album": "Everything Not Saved Will Be Lost Part I", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "12294710", + "Total Time": "357419", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2021-08-01T14:24:27Z", + "Date Added": "2021-08-01T14:24:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3781352452", + "Play Date UTC": "2023-10-28T12:40:52Z", + "Skip Count": -1, + "Skip Date": "2022-11-21T15:18:38Z", + "Release Date": "2019-01-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Everything Not Saved Will Be Lost Part I", + "Sort Artist": "Foals", + "Sort Name": "Exits", + "Persistent ID": "0348E7467C7C393E", + "Track Type": "Remote" + }, + { + "Track ID": "5629", + "Name": "PDLIF", + "Artist": "Bon Iver", + "Album Artist": "Bon Iver", + "Composer": "Justin Vernon", + "Album": "PDLIF - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6661321", + "Total Time": "177286", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-08-02T21:37:16Z", + "Date Added": "2021-08-02T21:37:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3782988562", + "Play Date UTC": "2023-11-16T11:09:22Z", + "Skip Count": "1", + "Skip Date": "2021-09-04T12:27:00Z", + "Release Date": "2020-04-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "PDLIF - Single", + "Sort Artist": "Bon Iver", + "Sort Name": "PDLIF", + "Persistent ID": "4B23D1107CE281E4", + "Track Type": "Remote" + }, + { + "Track ID": "5631", + "Name": "The Runner", + "Artist": "Foals", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "Alternative", + "Kind": "MPEG-4 video file", + "Size": "61051353", + "Total Time": "273407", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2019", + "Date Modified": "2021-08-03T20:53:37Z", + "Date Added": "2021-08-03T20:53:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3756739251", + "Play Date UTC": "2023-01-16T15:40:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-23T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Foals", + "Sort Name": "Runner", + "Persistent ID": "B7DFB6F4FBC0A66E", + "Track Type": "Remote" + }, + { + "Track ID": "5633", + "Name": "Neptune", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Foals", + "Album": "Everything Not Saved Will Be Lost Part II", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "21020386", + "Total Time": "618428", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2021-08-04T19:23:25Z", + "Date Added": "2021-08-04T19:23:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3781051328", + "Play Date UTC": "2023-10-25T01:02:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-10-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Everything Not Saved Will Be Lost Part II", + "Sort Artist": "Foals", + "Sort Name": "Neptune", + "Persistent ID": "0C4153903D1CAF1F", + "Track Type": "Remote" + }, + { + "Track ID": "5635", + "Name": "Beggin (original Version)", + "Artist": "Madcon", + "Album Artist": "Madcon", + "Composer": "undef", + "Album": "So Dark the Con of Man", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7691858", + "Total Time": "216147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2007", + "Date Modified": "2021-08-10T23:48:08Z", + "Date Added": "2021-08-10T23:48:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3771689582", + "Play Date UTC": "2023-07-08T16:33:02Z", + "Skip Count": "2", + "Skip Date": "2021-09-16T20:25:33Z", + "Release Date": "2007-10-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Dark the Con of Man", + "Sort Artist": "Madcon", + "Sort Name": "Beggin (original Version)", + "Persistent ID": "482B3AE5BAFB048A", + "Track Type": "Remote" + }, + { + "Track ID": "5637", + "Name": "INDUSTRY BABY", + "Artist": "Lil Nas X & Jack Harlow", + "Album Artist": "Lil Nas X & Jack Harlow", + "Composer": "Jack Harlow, Montero Hill, Kanye West, Denzel Baptiste, Nick Lee & David Biral", + "Album": "INDUSTRY BABY - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7706225", + "Total Time": "212000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-08-10T23:52:28Z", + "Date Added": "2021-08-10T23:52:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3773537603", + "Play Date UTC": "2023-07-30T01:53:23Z", + "Skip Count": "1", + "Skip Date": "2021-10-06T12:55:25Z", + "Release Date": "2021-07-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "INDUSTRY BABY - Single", + "Sort Artist": "Lil Nas X & Jack Harlow", + "Sort Name": "INDUSTRY BABY", + "Persistent ID": "B5EE41D764CC2578", + "Track Type": "Remote" + }, + { + "Track ID": "5639", + "Name": "MONTERO (Call Me By Your Name)", + "Artist": "Lil Nas X", + "Album Artist": "Lil Nas X", + "Composer": "Montero Hill, Denzel Baptiste, David Biral, Omer Fedi & Roy Lenzo", + "Album": "MONTERO (Call Me By Your Name) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5143974", + "Total Time": "137876", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2021", + "Date Modified": "2021-08-10T23:54:05Z", + "Date Added": "2021-08-10T23:54:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783665757", + "Play Date UTC": "2023-11-24T07:15:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-03-26T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "MONTERO (Call Me By Your Name) - Single", + "Sort Artist": "Lil Nas X", + "Sort Name": "MONTERO (Call Me By Your Name)", + "Persistent ID": "00377886883820B5", + "Track Type": "Remote" + }, + { + "Track ID": "5641", + "Name": "Panini", + "Artist": "Lil Nas X", + "Album Artist": "Lil Nas X", + "Composer": "Montero Lamar Hill, Denzel Baptiste, David Biral, Oladipo Omishore & Kurt Cobain", + "Album": "7 - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4373862", + "Total Time": "114893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "8", + "Year": "2019", + "Date Modified": "2021-08-10T23:55:15Z", + "Date Added": "2021-08-10T23:55:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3773235463", + "Play Date UTC": "2023-07-26T13:57:43Z", + "Skip Count": "1", + "Skip Date": "2021-12-20T19:08:30Z", + "Release Date": "2019-06-20T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "3137", + "Sort Album": "7 - EP", + "Sort Artist": "Lil Nas X", + "Sort Name": "Panini", + "Persistent ID": "1A0A33A9DE6A696A", + "Track Type": "Remote" + }, + { + "Track ID": "5643", + "Name": "Rain (from The Suicide Squad)", + "Artist": "grandson & Jessie Reyez", + "Album Artist": "grandson & Jessie Reyez", + "Composer": "Jordan Benjamin, Kevin Hissink, Chester Krupa Carbone & Jessie Reyez", + "Album": "Rain (from The Suicide Squad) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8365265", + "Total Time": "236041", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-08-11T00:05:33Z", + "Date Added": "2021-08-11T00:05:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3779240164", + "Play Date UTC": "2023-10-04T01:56:04Z", + "Skip Count": "3", + "Skip Date": "2021-12-02T09:40:16Z", + "Release Date": "2021-06-22T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "Rain (from The Suicide Squad) - Single", + "Sort Artist": "grandson & Jessie Reyez", + "Sort Name": "Rain (from The Suicide Squad)", + "Persistent ID": "FEAAA10AF55F1828", + "Track Type": "Remote" + }, + { + "Track ID": "5645", + "Name": "Patient", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post & Louis Bell", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7607161", + "Total Time": "194338", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2021-08-11T08:20:18Z", + "Date Added": "2021-08-11T08:20:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "94", + "Play Date": "3783012213", + "Play Date UTC": "2023-11-16T17:43:33Z", + "Skip Count": "2", + "Skip Date": "2021-08-25T16:29:02Z", + "Release Date": "2016-11-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Patient", + "Persistent ID": "2303449221A522D5", + "Track Type": "Remote" + }, + { + "Track ID": "5647", + "Name": "Adrenaline", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Casey Harris, Andrew Wells & Adam Levin", + "Album": "The Beautiful Liar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6105253", + "Total Time": "165992", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-08-14T20:29:47Z", + "Date Added": "2021-08-14T20:29:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "62", + "Play Date": "3783684785", + "Play Date UTC": "2023-11-24T12:33:05Z", + "Skip Count": "2", + "Skip Date": "2023-11-26T10:28:44Z", + "Release Date": "2021-08-13T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Beautiful Liar", + "Sort Artist": "X Ambassadors", + "Sort Name": "Adrenaline", + "Persistent ID": "D43978716C5BDB8F", + "Track Type": "Remote" + }, + { + "Track ID": "5649", + "Name": "My Own Monster", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Adam Levin, Casey Harris, Sam Harris, Andrew Wells, Jamie Lidell & Alan Wilkis", + "Album": "The Beautiful Liar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7027917", + "Total Time": "185585", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-08-14T20:30:37Z", + "Date Added": "2021-08-14T20:30:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3767284521", + "Play Date UTC": "2023-05-18T16:55:21Z", + "Skip Count": "1", + "Skip Date": "2022-08-10T18:38:45Z", + "Release Date": "2021-06-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Beautiful Liar", + "Sort Artist": "X Ambassadors", + "Sort Name": "My Own Monster", + "Persistent ID": "1594804ABAA94E16", + "Track Type": "Remote" + }, + { + "Track ID": "5651", + "Name": "Okay", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Adam Levin, Andrew Jackson, Andrew Wells, Casey Harris, Sam Harris & Tommy English", + "Album": "The Beautiful Liar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10046469", + "Total Time": "285165", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-08-14T20:32:44Z", + "Date Added": "2021-08-14T20:32:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783850117", + "Play Date UTC": "2023-11-26T10:28:37Z", + "Skip Count": "4", + "Skip Date": "2021-10-25T13:53:05Z", + "Release Date": "2021-07-30T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Beautiful Liar", + "Sort Artist": "X Ambassadors", + "Sort Name": "Okay", + "Persistent ID": "743B7FF0638393DF", + "Track Type": "Remote" + }, + { + "Track ID": "5653", + "Name": "darkness will come (feat. M\u00d2Z\u00c2MB\u00ceQ\u00daE)", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "Ancient Call - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8752283", + "Total Time": "239500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2021", + "Date Modified": "2021-08-14T20:55:46Z", + "Date Added": "2021-08-14T20:55:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3768976654", + "Play Date UTC": "2023-06-07T06:57:34Z", + "Skip Count": "3", + "Skip Date": "2023-02-26T10:25:38Z", + "Release Date": "2021-07-26T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Ancient Call - EP", + "Sort Artist": "SYML", + "Sort Name": "darkness will come (feat. M\u00d2Z\u00c2MB\u00ceQ\u00daE)", + "Persistent ID": "8483FB4AE9BA3F2C", + "Track Type": "Remote" + }, + { + "Track ID": "5655", + "Name": "you can't hide anymore (feat. Hugo Sweet)", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell & Paul Meany", + "Album": "Ancient Call - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7584744", + "Total Time": "215813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "2021", + "Date Modified": "2021-08-14T20:56:18Z", + "Date Added": "2021-08-14T20:56:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3776151738", + "Play Date UTC": "2023-08-29T08:02:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-07-23T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Ancient Call - EP", + "Sort Artist": "SYML", + "Sort Name": "you can't hide anymore (feat. Hugo Sweet)", + "Persistent ID": "FE2AE00536709A14", + "Track Type": "Remote" + }, + { + "Track ID": "5657", + "Name": "wanting is never enough", + "Artist": "SYML & Nathan Kawanishi", + "Album Artist": "SYML", + "Composer": "Brian Fennell & Paul Meany", + "Album": "Ancient Call - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8164326", + "Total Time": "214286", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2021", + "Date Modified": "2021-08-14T20:56:18Z", + "Date Added": "2021-08-14T20:56:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3753127314", + "Play Date UTC": "2022-12-05T20:21:54Z", + "Skip Count": "3", + "Skip Date": "2022-02-25T18:21:32Z", + "Release Date": "2021-05-28T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Ancient Call - EP", + "Sort Artist": "SYML & Nathan Kawanishi", + "Sort Name": "wanting is never enough", + "Persistent ID": "46669ECBD2816914", + "Track Type": "Remote" + }, + { + "Track ID": "5659", + "Name": "just come home (feat. The Field Tapes & Ezzy)", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "Ancient Call - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8080952", + "Total Time": "199330", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2021", + "Date Modified": "2021-08-14T20:56:18Z", + "Date Added": "2021-08-14T20:56:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3769697436", + "Play Date UTC": "2023-06-15T15:10:36Z", + "Skip Count": "1", + "Skip Date": "2022-03-02T08:25:24Z", + "Release Date": "2021-07-28T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Ancient Call - EP", + "Sort Artist": "SYML", + "Sort Name": "just come home (feat. The Field Tapes & Ezzy)", + "Persistent ID": "D335F2374645911C", + "Track Type": "Remote" + }, + { + "Track ID": "5661", + "Name": "who put blood in my drink?", + "Artist": "SYML & sagun", + "Album Artist": "SYML", + "Composer": "Brian Fennell & Paul Meany", + "Album": "Ancient Call - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9300255", + "Total Time": "270011", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2021", + "Date Modified": "2021-08-14T20:56:18Z", + "Date Added": "2021-08-14T20:56:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3772517127", + "Play Date UTC": "2023-07-18T06:25:27Z", + "Skip Count": "2", + "Skip Date": "2023-02-23T20:09:31Z", + "Release Date": "2021-06-25T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Ancient Call - EP", + "Sort Artist": "SYML & sagun", + "Sort Name": "who put blood in my drink?", + "Persistent ID": "E808CD63F1DBD184", + "Track Type": "Remote" + }, + { + "Track ID": "5663", + "Name": "ancient call (feat. Slumberville)", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell & Sebastian Fronda", + "Album": "Ancient Call - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5730224", + "Total Time": "157607", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2021", + "Date Modified": "2021-08-14T20:56:18Z", + "Date Added": "2021-08-14T20:56:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "46", + "Play Date": "3783775857", + "Play Date UTC": "2023-11-25T13:50:57Z", + "Skip Count": "2", + "Skip Date": "2022-11-11T18:24:18Z", + "Release Date": "2021-07-30T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Ancient Call - EP", + "Sort Artist": "SYML", + "Sort Name": "ancient call (feat. Slumberville)", + "Persistent ID": "E54A76C779B85741", + "Track Type": "Remote" + }, + { + "Track ID": "5665", + "Name": "I Met Sarah In the Bathroom {Slow//Reverb}", + "Artist": "slow//reverb & Ryan Celsius Sounds", + "Album Artist": "Ryan Celsius Sounds & slow//reverb", + "Composer": "Slow Reverb", + "Album": "I Met Sarah In the Bathroom {Slow//Reverb} - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4988416", + "Total Time": "137858", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-08-29T16:56:30Z", + "Date Added": "2021-08-29T16:56:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3776429309", + "Play Date UTC": "2023-09-01T13:08:29Z", + "Skip Count": "7", + "Skip Date": "2022-09-20T11:02:21Z", + "Release Date": "2020-10-05T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "I Met Sarah In the Bathroom {Slow//Reverb} - Single", + "Sort Artist": "slow//reverb & Ryan Celsius Sounds", + "Sort Name": "I Met Sarah In the Bathroom {Slow//Reverb}", + "Persistent ID": "A9F2417F920CDE5F", + "Track Type": "Remote" + }, + { + "Track ID": "5667", + "Name": "I Need a Dollar", + "Artist": "Aloe Blacc", + "Album Artist": "Aloe Blacc", + "Composer": "undef", + "Album": "Good Things", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8601381", + "Total Time": "244287", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2010", + "Date Modified": "2021-08-29T17:39:48Z", + "Date Added": "2021-08-29T17:39:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3782988221", + "Play Date UTC": "2023-11-16T11:03:41Z", + "Skip Count": "3", + "Skip Date": "2022-03-29T05:38:38Z", + "Release Date": "2010-03-16T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good Things", + "Sort Artist": "Aloe Blacc", + "Sort Name": "I Need a Dollar", + "Persistent ID": "43813D166559D145", + "Track Type": "Remote" + }, + { + "Track ID": "5669", + "Name": "You Know What?", + "Artist": "Madeline Juno", + "Album Artist": "Madeline Juno", + "Composer": "Madeline Juno, Axel Ehnstr\u00f6m & Kim W", + "Album": "Salvation (Deluxe Version)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6327078", + "Total Time": "177217", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2021-09-13T20:08:46Z", + "Date Added": "2021-09-13T20:08:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3777369087", + "Play Date UTC": "2023-09-12T10:11:27Z", + "Skip Count": "3", + "Skip Date": "2022-03-02T08:24:25Z", + "Release Date": "2016-02-26T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Salvation (Deluxe Version)", + "Sort Artist": "Madeline Juno", + "Sort Name": "You Know What?", + "Persistent ID": "67FA22DE2CF41EF6", + "Track Type": "Remote" + }, + { + "Track ID": "5671", + "Name": "BIG PERSONA (feat. Tyler, The Creator)", + "Artist": "Maxo Kream", + "Album Artist": "Maxo Kream", + "Composer": "Emekwanem Ogugua Biosah & Tyler Okonma", + "Album": "Big Persona (feat. Tyler, The Creator) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5319976", + "Total Time": "145244", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-09-16T17:23:15Z", + "Date Added": "2021-09-16T17:23:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3780776585", + "Play Date UTC": "2023-10-21T20:43:05Z", + "Skip Count": "2", + "Skip Date": "2022-10-01T09:49:51Z", + "Release Date": "2021-09-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Big Persona (feat. Tyler, The Creator) - Single", + "Sort Artist": "Maxo Kream", + "Sort Name": "BIG PERSONA (feat. Tyler, The Creator)", + "Persistent ID": "B7215E2E59DCE7FC", + "Track Type": "Remote" + }, + { + "Track ID": "5673", + "Name": "TALES OF DOMINICA", + "Artist": "Lil Nas X", + "Album Artist": "Lil Nas X", + "Composer": "Montero Hill, Denzel Baptiste, David Biral, Omer Fedi & Roy Lenzo", + "Album": "MONTERO", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5444879", + "Total Time": "146006", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "15", + "Year": "2021", + "Date Modified": "2021-09-16T21:19:13Z", + "Date Added": "2021-09-16T21:19:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3783780011", + "Play Date UTC": "2023-11-25T15:00:11Z", + "Skip Count": "1", + "Skip Date": "2022-03-02T08:25:35Z", + "Release Date": "2021-09-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "MONTERO", + "Sort Artist": "Lil Nas X", + "Sort Name": "TALES OF DOMINICA", + "Persistent ID": "180FE36EFE7FFBE5", + "Track Type": "Remote" + }, + { + "Track ID": "5675", + "Name": "Buku (feat. KirbLaGoop)", + "Artist": "Chetta", + "Album Artist": "Chetta", + "Composer": "Joshua Marchetta", + "Album": "Side Effects III", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "6194510", + "Total Time": "170473", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2019", + "Date Modified": "2021-09-17T12:06:53Z", + "Date Added": "2021-09-17T12:06:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3734453758", + "Play Date UTC": "2022-05-03T17:15:58Z", + "Skip Count": "2", + "Skip Date": "2021-12-21T18:26:29Z", + "Release Date": "2019-01-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Side Effects III", + "Sort Artist": "Chetta", + "Sort Name": "Buku (feat. KirbLaGoop)", + "Persistent ID": "7F94A93C8B8E2765", + "Track Type": "Remote" + }, + { + "Track ID": "5677", + "Name": "Home", + "Artist": "Machine Gun Kelly, X Ambassadors & Bebe Rexha", + "Album Artist": "Various Artists", + "Composer": "David Andrew Pramik, David Charles Snyder, David Phelps, Jacob Leslie Hawkes, Richard Colson Baker, Robert Gillies & Sam Harris", + "Album": "Bright: The Album", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7379454", + "Total Time": "202805", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2021-09-21T14:47:07Z", + "Date Added": "2021-09-21T14:47:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3780191347", + "Play Date UTC": "2023-10-15T02:09:07Z", + "Skip Count": -1, + "Skip Date": "2021-09-27T09:03:25Z", + "Release Date": "2017-11-16T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Bright: The Album", + "Sort Artist": "Machine Gun Kelly, X Ambassadors & Bebe Rexha", + "Sort Name": "Home", + "Persistent ID": "51A0CC858027D7E5", + "Track Type": "Remote" + }, + { + "Track ID": "5679", + "Name": "Foolsong", + "Artist": "Still Woozy", + "Album Artist": "Still Woozy", + "Composer": "Sven Eric Gamsky", + "Album": "Lately - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6307347", + "Total Time": "173167", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2019", + "Date Modified": "2021-09-21T14:53:34Z", + "Date Added": "2021-09-21T14:53:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3776143952", + "Play Date UTC": "2023-08-29T05:52:32Z", + "Skip Count": "7", + "Skip Date": "2023-02-15T08:33:58Z", + "Release Date": "2019-05-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lately - EP", + "Sort Artist": "Still Woozy", + "Sort Name": "Foolsong", + "Persistent ID": "67AF05CFE068D6CB", + "Track Type": "Remote" + }, + { + "Track ID": "5681", + "Name": "Wonderwall (Remastered)", + "Artist": "Oasis", + "Album Artist": "Oasis", + "Composer": "Noel Gallagher", + "Album": "(What's the Story) Morning Glory? [Deluxe Edition] [Remastered]", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10258789", + "Total Time": "258733", + "Disc Number": "1", + "Disc Count": "3", + "Track Number": "3", + "Track Count": "12", + "Year": "1995", + "Date Modified": "2021-09-23T17:08:27Z", + "Date Added": "2021-09-23T17:08:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3773155696", + "Play Date UTC": "2023-07-25T15:48:16Z", + "Skip Count": "2", + "Skip Date": "2021-10-25T13:47:09Z", + "Release Date": "1995-10-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "7823", + "Sort Album": "(What's the Story) Morning Glory? [Deluxe Edition] [Remastered]", + "Sort Artist": "Oasis", + "Sort Name": "Wonderwall (Remastered)", + "Persistent ID": "6D4655A5DCAC86F6", + "Track Type": "Remote" + }, + { + "Track ID": "5683", + "Name": "Stay With Me", + "Artist": "Sam Smith", + "Album Artist": "Sam Smith", + "Composer": "Sam Smith, James Napier & William Phillips", + "Album": "In the Lonely Hour", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6329859", + "Total Time": "172724", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2014", + "Date Modified": "2021-09-24T19:46:33Z", + "Date Added": "2021-09-24T19:46:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3781615006", + "Play Date UTC": "2023-10-31T13:36:46Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-01-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In the Lonely Hour", + "Sort Artist": "Sam Smith", + "Sort Name": "Stay With Me", + "Persistent ID": "88D996A528BA411E", + "Track Type": "Remote" + }, + { + "Track ID": "5685", + "Name": "Beautiful Liar", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Adam Levin, Casey Harris, Sam Harris, Andrew Wells & Ricky Reed", + "Album": "The Beautiful Liar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9358360", + "Total Time": "249710", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-09-25T07:33:46Z", + "Date Added": "2021-09-25T07:33:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3783850376", + "Play Date UTC": "2023-11-26T10:32:56Z", + "Skip Count": "1", + "Skip Date": "2021-09-27T08:56:03Z", + "Release Date": "2021-09-24T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Beautiful Liar", + "Sort Artist": "X Ambassadors", + "Sort Name": "Beautiful Liar", + "Persistent ID": "24988D136E96CDEE", + "Track Type": "Remote" + }, + { + "Track ID": "5687", + "Name": "Tommy Lee (feat. Post Malone)", + "Artist": "Tyla Yaweh", + "Album Artist": "Tyla Yaweh", + "Composer": "Tyler Jamal Brown & Austin Post", + "Album": "Tommy Lee (feat. Post Malone) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7874506", + "Total Time": "224638", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-09-26T11:53:31Z", + "Date Added": "2021-09-26T11:53:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "71", + "Play Date": "3771053058", + "Play Date UTC": "2023-07-01T07:44:18Z", + "Skip Count": "5", + "Skip Date": "2023-03-22T10:28:02Z", + "Release Date": "2020-06-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tommy Lee (feat. Post Malone) - Single", + "Sort Artist": "Tyla Yaweh", + "Sort Name": "Tommy Lee (feat. Post Malone)", + "Persistent ID": "1696032778634B8E", + "Track Type": "Remote" + }, + { + "Track ID": "5689", + "Name": "Walk a Mile", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "13491376", + "Total Time": "389933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2022-02-10T21:06:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3772624429", + "Play Date UTC": "2023-07-19T12:13:49Z", + "Skip Count": "2", + "Skip Date": "2023-04-23T16:37:31Z", + "Release Date": "2022-02-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Walk a Mile", + "Persistent ID": "BAFF314F8E2EC018", + "Track Type": "Remote" + }, + { + "Track ID": "5691", + "Name": "Philadelphia", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7743417", + "Total Time": "218093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2022-02-10T21:06:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3774863907", + "Play Date UTC": "2023-08-14T10:18:27Z", + "Skip Count": "1", + "Skip Date": "2022-04-16T22:43:45Z", + "Release Date": "2022-02-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Philadelphia", + "Persistent ID": "B0FD4C4910DB283D", + "Track Type": "Remote" + }, + { + "Track ID": "5693", + "Name": "Losing My Mind", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9922633", + "Total Time": "282000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2022-02-10T21:06:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3767709819", + "Play Date UTC": "2023-05-23T15:03:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-02-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Losing My Mind", + "Persistent ID": "006A01DF85C76174", + "Track Type": "Remote" + }, + { + "Track ID": "5695", + "Name": "Delta", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "2568609", + "Total Time": "60040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2022-02-10T21:06:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3780564209", + "Play Date UTC": "2023-10-19T09:43:29Z", + "Skip Count": "1", + "Skip Date": "2022-03-24T11:46:15Z", + "Release Date": "2022-02-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Delta", + "Persistent ID": "B92359540064145F", + "Track Type": "Remote" + }, + { + "Track ID": "5697", + "Name": "U&ME", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7579637", + "Total Time": "198840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2021", + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2021-09-28T12:48:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3772805363", + "Play Date UTC": "2023-07-21T14:29:23Z", + "Skip Count": "4", + "Skip Date": "2022-12-15T11:14:33Z", + "Release Date": "2021-09-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "U&ME", + "Persistent ID": "23D10D2DA81CDFB5", + "Track Type": "Remote" + }, + { + "Track ID": "5699", + "Name": "The Actor", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8460279", + "Total Time": "240893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2022-02-07T15:51:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3781769838", + "Play Date UTC": "2023-11-02T08:37:18Z", + "Skip Count": "1", + "Skip Date": "2022-07-24T14:41:15Z", + "Release Date": "2022-02-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Actor", + "Persistent ID": "3B2EAAA15945EFBF", + "Track Type": "Remote" + }, + { + "Track ID": "5701", + "Name": "Happier When You're Gone", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8629038", + "Total Time": "240480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2022-02-10T21:06:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3783596913", + "Play Date UTC": "2023-11-23T12:08:33Z", + "Skip Count": "2", + "Skip Date": "2022-06-12T14:42:57Z", + "Release Date": "2022-02-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Happier When You're Gone", + "Persistent ID": "6D8EAA76C2A25CDA", + "Track Type": "Remote" + }, + { + "Track ID": "5703", + "Name": "Powders", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10162258", + "Total Time": "281587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2022-02-10T21:06:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3779701492", + "Play Date UTC": "2023-10-09T10:04:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-02-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Powders", + "Persistent ID": "5D4451D460926281", + "Track Type": "Remote" + }, + { + "Track ID": "5705", + "Name": "Chicago", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8345428", + "Total Time": "235387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2022-02-10T21:06:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3780296451", + "Play Date UTC": "2023-10-16T07:20:51Z", + "Skip Count": "3", + "Skip Date": "2022-06-02T11:04:05Z", + "Release Date": "2022-02-11T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Chicago", + "Persistent ID": "CE1E463B1B902714", + "Track Type": "Remote" + }, + { + "Track ID": "5707", + "Name": "Get Better", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Sonny Green", + "Album": "The Dream", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "12155873", + "Total Time": "351293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": -1, + "Date Modified": "2021-09-28T12:48:18Z", + "Date Added": "2021-11-03T17:55:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781058552", + "Play Date UTC": "2023-10-25T03:02:32Z", + "Skip Count": "5", + "Skip Date": "2022-05-08T15:38:36Z", + "Release Date": "2021-11-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dream", + "Sort Artist": "alt-J", + "Sort Name": "Get Better", + "Persistent ID": "D790E1E7D2CF2315", + "Track Type": "Remote" + }, + { + "Track ID": "5709", + "Name": "Link Up Time", + "Artist": "DUCKWRTH & Jordan Ward", + "Album Artist": "DUCKWRTH", + "Composer": "Tavon Thompson, Mike Hector & Hello Yello", + "Album": "SG8*", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6000294", + "Total Time": "165517", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "8", + "Year": "2021", + "Date Modified": "2021-10-03T16:02:31Z", + "Date Added": "2021-10-03T16:02:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "48", + "Play Date": "3776337418", + "Play Date UTC": "2023-08-31T11:36:58Z", + "Skip Count": "1", + "Skip Date": "2022-04-23T18:38:06Z", + "Release Date": "2021-09-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "SG8*", + "Sort Artist": "DUCKWRTH & Jordan Ward", + "Sort Name": "Link Up Time", + "Persistent ID": "992C434DCED37451", + "Track Type": "Remote" + }, + { + "Track ID": "5711", + "Name": "Clueless", + "Artist": "DUCKWRTH & DESTIN CONRAD", + "Album Artist": "DUCKWRTH", + "Composer": "Julian Nixon & Sean Cook", + "Album": "SG8*", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6646304", + "Total Time": "186667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "8", + "Year": "2021", + "Date Modified": "2021-10-03T16:07:54Z", + "Date Added": "2021-10-03T16:07:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3783712643", + "Play Date UTC": "2023-11-24T20:17:23Z", + "Skip Count": "1", + "Skip Date": "2022-07-06T09:51:32Z", + "Release Date": "2021-09-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "SG8*", + "Sort Artist": "DUCKWRTH & DESTIN CONRAD", + "Sort Name": "Clueless", + "Persistent ID": "D16BDA147B7435BD", + "Track Type": "Remote" + }, + { + "Track ID": "5713", + "Name": "4K", + "Artist": "DUCKWRTH & Phabo", + "Album Artist": "DUCKWRTH", + "Composer": "Tavon Thompson", + "Album": "SG8*", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6737788", + "Total Time": "187619", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "8", + "Year": "2021", + "Date Modified": "2021-10-03T16:09:43Z", + "Date Added": "2021-10-03T16:09:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3759844512", + "Play Date UTC": "2023-02-21T14:15:12Z", + "Skip Count": "3", + "Skip Date": "2021-12-21T18:25:30Z", + "Release Date": "2021-09-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "SG8*", + "Sort Artist": "DUCKWRTH & Phabo", + "Sort Name": "4K", + "Persistent ID": "165526DC43AE69A9", + "Track Type": "Remote" + }, + { + "Track ID": "5715", + "Name": "Bumble Bee", + "Artist": "Netherfriends", + "Album Artist": "Netherfriends", + "Composer": "Shawn Rosenblatt", + "Album": "Songs for Bees", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "3785369", + "Total Time": "97391", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2021", + "Date Modified": "2021-10-06T12:14:11Z", + "Date Added": "2021-10-06T12:14:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3777371209", + "Play Date UTC": "2023-09-12T10:46:49Z", + "Skip Count": "3", + "Skip Date": "2022-08-10T18:40:59Z", + "Release Date": "2021-10-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Songs for Bees", + "Sort Artist": "Netherfriends", + "Sort Name": "Bumble Bee", + "Persistent ID": "16B4EA7A88E9BC37", + "Track Type": "Remote" + }, + { + "Track ID": "5717", + "Name": "Lovely Day (Bonus Track)", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "This Is All Yours", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8682819", + "Total Time": "241546", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3734450311", + "Play Date UTC": "2022-05-03T16:18:31Z", + "Skip Count": "1", + "Skip Date": "2021-10-06T19:52:49Z", + "Release Date": "2014-09-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Is All Yours", + "Sort Artist": "alt-J", + "Sort Name": "Lovely Day (Bonus Track)", + "Persistent ID": "91D30323622519BF", + "Track Type": "Remote" + }, + { + "Track ID": "5719", + "Name": "Cobra", + "Artist": "Azizi Gibson", + "Album Artist": "Azizi Gibson", + "Composer": "undef", + "Album": "I'm Good On People", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6321584", + "Total Time": "176286", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "7", + "Year": "2017", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3766233006", + "Play Date UTC": "2023-05-06T12:50:06Z", + "Skip Count": "1", + "Skip Date": "2022-09-20T11:35:45Z", + "Release Date": "2017-11-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I'm Good On People", + "Sort Artist": "Azizi Gibson", + "Sort Name": "Cobra", + "Persistent ID": "61D8A0E436A53A5F", + "Track Type": "Remote" + }, + { + "Track ID": "5721", + "Name": "Potato Salad", + "Artist": "Tyler, The Creator & A$AP Rocky", + "Album Artist": "Tyler, The Creator & A$AP Rocky", + "Composer": "Tyler Okonma, Rakim Mayers, Craig Brockman, Melissa Elliot, Lee Hatim & Monica Brown", + "Album": "Potato Salad - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6561800", + "Total Time": "182493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3772014597", + "Play Date UTC": "2023-07-12T10:49:57Z", + "Skip Count": "1", + "Skip Date": "2022-11-25T22:56:35Z", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "3437", + "Sort Album": "Potato Salad - Single", + "Sort Artist": "Tyler, The Creator & A$AP Rocky", + "Sort Name": "Potato Salad", + "Persistent ID": "6D937BF876D21978", + "Track Type": "Remote" + }, + { + "Track ID": "5723", + "Name": "affection", + "Artist": "BETWEEN FRIENDS", + "Album Artist": "BETWEEN FRIENDS", + "Composer": "Brandon Hudson, Melanie Fontana, Michel \"Lindgren\" Schulz & Savannah Hudson", + "Album": "we just need some time together - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8557106", + "Total Time": "235226", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2018", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3777015406", + "Play Date UTC": "2023-09-08T07:56:46Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "we just need some time together - EP", + "Sort Artist": "BETWEEN FRIENDS", + "Sort Name": "affection", + "Persistent ID": "759C41B3FCFC4514", + "Track Type": "Remote" + }, + { + "Track ID": "5725", + "Name": "Alien Blues", + "Artist": "Vundabar", + "Album Artist": "Vundabar", + "Composer": "undef", + "Album": "Gawk", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "5723835", + "Total Time": "155933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783596020", + "Play Date UTC": "2023-11-23T11:53:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-07-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gawk", + "Sort Artist": "Vundabar", + "Sort Name": "Alien Blues", + "Persistent ID": "91F1A0AA373FCE23", + "Track Type": "Remote" + }, + { + "Track ID": "5727", + "Name": "House of the Rising Sun", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "RELAXER", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "11515652", + "Total Time": "320667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "8", + "Year": "2017", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3734450069", + "Play Date UTC": "2022-05-03T16:14:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RELAXER", + "Sort Artist": "alt-J", + "Sort Name": "House of the Rising Sun", + "Persistent ID": "5B9A227F01FA7780", + "Track Type": "Remote" + }, + { + "Track ID": "5729", + "Name": "Who Ever", + "Artist": "Zigitros", + "Album Artist": "Zigitros", + "Composer": "Alban Schelbert & Christian Neuenschwander", + "Album": "Yours Truly - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10591377", + "Total Time": "295950", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2013", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780493340", + "Play Date UTC": "2023-10-18T14:02:20Z", + "Skip Count": "3", + "Skip Date": "2023-02-14T19:44:08Z", + "Release Date": "2013-03-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Yours Truly - Single", + "Sort Artist": "Zigitros", + "Sort Name": "Who Ever", + "Persistent ID": "FD1EB1EFD5CAAFC2", + "Track Type": "Remote" + }, + { + "Track ID": "5731", + "Name": "Glow (feat. Sauve) [Remix]", + "Artist": "Being As An Ocean", + "Album Artist": "Being As An Ocean", + "Composer": "Tyler Ross & Desauve Sidle", + "Album": "Glow (feat. Sauve) [Remix] - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6446687", + "Total Time": "180001", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783770470", + "Play Date UTC": "2023-11-25T12:21:10Z", + "Skip Count": "2", + "Skip Date": "2022-10-18T12:01:18Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Glow (feat. Sauve) [Remix] - Single", + "Sort Artist": "Being As An Ocean", + "Sort Name": "Glow (feat. Sauve) [Remix]", + "Persistent ID": "754892AC1D01B79C", + "Track Type": "Remote" + }, + { + "Track ID": "5733", + "Name": "Telephone Calls (feat. A$AP Rocky, Tyler, the Creator, Playboi Carti & Yung Gleesh)", + "Artist": "A$AP Mob", + "Album Artist": "A$AP Mob", + "Composer": "N/A", + "Album": "Cozy Tapes, Vol. 1: Friends", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8142830", + "Total Time": "230907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3758394934", + "Play Date UTC": "2023-02-04T19:35:34Z", + "Skip Count": "6", + "Skip Date": "2022-11-25T23:04:50Z", + "Release Date": "2016-10-28T12:00:00Z", + "Album Rating": "40", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "40", + "Sort Album": "Cozy Tapes, Vol. 1: Friends", + "Sort Artist": "A$AP Mob", + "Sort Name": "Telephone Calls (feat. A$AP Rocky, Tyler, the Creator, Playboi Carti & Yung Gleesh)", + "Persistent ID": "91B46CEA680ED8EC", + "Track Type": "Remote" + }, + { + "Track ID": "5735", + "Name": "Bloodflood (SARM Acoustic Version)", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Joe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green", + "Album": "An Awesome Wave (Deluxe Version)", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7604530", + "Total Time": "213682", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "38", + "Track Count": "41", + "Year": "2012", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3737740629", + "Play Date UTC": "2022-06-10T18:17:09Z", + "Skip Count": "1", + "Skip Date": "2021-10-06T14:08:37Z", + "Release Date": "2012-05-25T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Awesome Wave (Deluxe Version)", + "Sort Artist": "alt-J", + "Sort Name": "Bloodflood (SARM Acoustic Version)", + "Persistent ID": "CE4F0D04E6A3244F", + "Track Type": "Remote" + }, + { + "Track ID": "5737", + "Name": "Easier", + "Artist": "Mansionair", + "Album Artist": "Mansionair", + "Composer": "Alex Nicholls, Lachlan Bostock & William Froggat", + "Album": "Easier - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9514120", + "Total Time": "272681", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3783680626", + "Play Date UTC": "2023-11-24T11:23:46Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-10-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Easier - Single", + "Sort Artist": "Mansionair", + "Sort Name": "Easier", + "Persistent ID": "4B24DC921E90D2C1", + "Track Type": "Remote" + }, + { + "Track ID": "5739", + "Name": "Milk & Coffee", + "Artist": "NoMBe", + "Album Artist": "NoMBe", + "Composer": "Noah McBeth", + "Album": "They Might've Even Loved Me", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8806947", + "Total Time": "235653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3759932369", + "Play Date UTC": "2023-02-22T14:39:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "They Might've Even Loved Me", + "Sort Artist": "NoMBe", + "Sort Name": "Milk & Coffee", + "Persistent ID": "29992064DF909AFA", + "Track Type": "Remote" + }, + { + "Track ID": "5741", + "Name": "Choice Kingdom", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "undef", + "Album": "This Is All Yours", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "9178061", + "Total Time": "257498", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3737331004", + "Play Date UTC": "2022-06-06T00:30:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-09-16T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Is All Yours", + "Sort Artist": "alt-J", + "Sort Name": "Choice Kingdom", + "Persistent ID": "D3C76D954BF3669D", + "Track Type": "Remote" + }, + { + "Track ID": "5743", + "Name": "Mirrors on the Ceiling", + "Artist": "mike.", + "Album Artist": "mike.", + "Composer": "undef", + "Album": "4THEHOMIES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7534004", + "Total Time": "214805", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "23", + "Year": "2018", + "Date Modified": "2021-10-06T14:02:27Z", + "Date Added": "2021-10-06T14:02:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3754393683", + "Play Date UTC": "2022-12-20T12:08:03Z", + "Skip Count": "1", + "Skip Date": "2022-07-12T12:56:37Z", + "Release Date": "2018-10-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "4THEHOMIES", + "Sort Artist": "mike.", + "Sort Name": "Mirrors on the Ceiling", + "Persistent ID": "03B2803CBC9B0982", + "Track Type": "Remote" + }, + { + "Track ID": "5745", + "Name": "High Enough", + "Artist": "K.Flay", + "Album Artist": "K.Flay", + "Composer": "Kristine Flaherty & Mike Elizondo", + "Album": "Every Where Is Some Where (Deluxe Version)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8142365", + "Total Time": "231600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-10-06T14:06:36Z", + "Date Added": "2021-10-06T14:06:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3761633560", + "Play Date UTC": "2023-03-14T07:12:40Z", + "Skip Count": "3", + "Skip Date": "2022-11-25T22:56:06Z", + "Release Date": "2017-04-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Every Where Is Some Where (Deluxe Version)", + "Sort Artist": "K.Flay", + "Sort Name": "High Enough", + "Persistent ID": "4AD30FD72A20BA36", + "Track Type": "Remote" + }, + { + "Track ID": "5747", + "Name": "Faygo Dreams", + "Artist": "6 Dogs", + "Album Artist": "6 Dogs", + "Composer": "undef", + "Album": "6 Dogs", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6180043", + "Total Time": "171907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2021-10-06T14:06:48Z", + "Date Added": "2021-10-06T14:06:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3780685815", + "Play Date UTC": "2023-10-20T19:30:15Z", + "Skip Count": "1", + "Skip Date": "2022-11-25T22:56:02Z", + "Release Date": "2017-07-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "6 Dogs", + "Sort Artist": "6 Dogs", + "Sort Name": "Faygo Dreams", + "Persistent ID": "CC51EAB81CA8A022", + "Track Type": "Remote" + }, + { + "Track ID": "5749", + "Name": "Unwind", + "Artist": "Healy", + "Album Artist": "Healy", + "Composer": "Ethan Healy, Grant Yarber & Desmond Sanders", + "Album": "Subluxe", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8256692", + "Total Time": "234998", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2021-10-06T14:06:49Z", + "Date Added": "2021-10-06T14:06:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3780834070", + "Play Date UTC": "2023-10-22T12:41:10Z", + "Skip Count": "4", + "Skip Date": "2022-12-12T11:32:14Z", + "Release Date": "2017-06-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Subluxe", + "Sort Artist": "Healy", + "Sort Name": "Unwind", + "Persistent ID": "F7E4968D5659A46C", + "Track Type": "Remote" + }, + { + "Track ID": "5751", + "Name": "Patient", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Austin Post & Louis Bell", + "Album": "Stoney", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7607261", + "Total Time": "194338", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2021-10-06T14:06:49Z", + "Date Added": "2021-10-06T14:06:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783713147", + "Play Date UTC": "2023-11-24T20:25:47Z", + "Skip Count": "2", + "Skip Date": "2023-10-12T22:39:21Z", + "Release Date": "2016-11-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney", + "Sort Artist": "Post Malone", + "Sort Name": "Patient", + "Persistent ID": "B194EAECDE5F197A", + "Track Type": "Remote" + }, + { + "Track ID": "5753", + "Name": "3:15", + "Artist": "Bazzi", + "Album Artist": "Bazzi", + "Composer": "Andrew Bazzi, Kevin White & Mike Woods", + "Album": "COSMIC", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6109759", + "Total Time": "167019", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2021-10-06T14:06:52Z", + "Date Added": "2021-10-06T14:06:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3779309402", + "Play Date UTC": "2023-10-04T21:10:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-12T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "COSMIC", + "Sort Artist": "Bazzi", + "Sort Name": "3:15", + "Persistent ID": "7542758C2D278273", + "Track Type": "Remote" + }, + { + "Track ID": "5755", + "Name": "CONVERSATIONS", + "Artist": "Aries", + "Album Artist": "Aries", + "Composer": "Aries, Steven Cabanting, Tim Aspan & Henry Nichols", + "Album": "CONVERSATIONS - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5922874", + "Total Time": "164175", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-10-06T14:06:52Z", + "Date Added": "2021-10-06T14:06:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3756918372", + "Play Date UTC": "2023-01-18T17:26:12Z", + "Skip Count": "2", + "Skip Date": "2022-11-25T22:48:01Z", + "Release Date": "2020-12-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "CONVERSATIONS - Single", + "Sort Artist": "Aries", + "Sort Name": "CONVERSATIONS", + "Persistent ID": "3D80C6F48A0E4171", + "Track Type": "Remote" + }, + { + "Track ID": "5757", + "Name": "Let It Slide", + "Artist": "Johnny Goth", + "Album Artist": "Johnny Goth", + "Composer": "Johnny Goth", + "Album": "Demons", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9769476", + "Total Time": "264375", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2021-10-06T14:06:53Z", + "Date Added": "2021-10-06T14:06:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3776147850", + "Play Date UTC": "2023-08-29T06:57:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-09-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Demons", + "Sort Artist": "Johnny Goth", + "Sort Name": "Let It Slide", + "Persistent ID": "6AE11DF9817C0825", + "Track Type": "Remote" + }, + { + "Track ID": "5759", + "Name": "Dancing In The Moonlight (feat. NEIMY)", + "Artist": "Jub\u00ebl", + "Album Artist": "Jub\u00ebl", + "Composer": "Sherman Kelly", + "Album": "Dancing In The Moonlight (feat. NEIMY) - Single", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "6366636", + "Total Time": "164010", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-10-06T14:06:54Z", + "Date Added": "2021-10-06T14:06:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3773233694", + "Play Date UTC": "2023-07-26T13:28:14Z", + "Skip Count": "3", + "Skip Date": "2023-11-23T09:00:24Z", + "Release Date": "2018-06-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dancing In The Moonlight (feat. NEIMY) - Single", + "Sort Artist": "Jub\u00ebl", + "Sort Name": "Dancing In The Moonlight (feat. NEIMY)", + "Persistent ID": "60744ED0DBFB1E99", + "Track Type": "Remote" + }, + { + "Track ID": "5761", + "Name": "Beautiful", + "Artist": "Bazzi", + "Album Artist": "Bazzi", + "Composer": "Andrew Bazzi, Kevin White & Mike Woods", + "Album": "COSMIC", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6441938", + "Total Time": "178242", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2021-10-06T14:06:56Z", + "Date Added": "2021-10-06T14:06:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783357209", + "Play Date UTC": "2023-11-20T17:33:29Z", + "Skip Count": "3", + "Skip Date": "2023-10-29T00:43:12Z", + "Release Date": "2017-07-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "COSMIC", + "Sort Artist": "Bazzi", + "Sort Name": "Beautiful", + "Persistent ID": "FAB0817C28B4DBE5", + "Track Type": "Remote" + }, + { + "Track ID": "5763", + "Name": "Fast", + "Artist": "Juice WRLD", + "Album Artist": "Juice WRLD", + "Composer": "Louis Bell, Jarad Higgins, Andrew Wotman, Adam Feeney & Carl Rosen", + "Album": "Death Race for Love", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7576269", + "Total Time": "208518", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "22", + "Year": "2019", + "Date Modified": "2021-10-06T14:06:57Z", + "Date Added": "2021-10-06T14:06:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3779203712", + "Play Date UTC": "2023-10-03T15:48:32Z", + "Skip Count": "1", + "Skip Date": "2022-02-28T11:38:35Z", + "Release Date": "2019-03-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Death Race for Love", + "Sort Artist": "Juice WRLD", + "Sort Name": "Fast", + "Persistent ID": "00DDC9B92FF4FFD2", + "Track Type": "Remote" + }, + { + "Track ID": "5765", + "Name": "Modern Jesus", + "Artist": "Portugal. The Man", + "Album Artist": "Portugal. The Man", + "Composer": "Brian Burton & Portugal. The Man", + "Album": "Evil Friends", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7189032", + "Total Time": "194027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2013", + "Date Modified": "2021-10-06T14:07:02Z", + "Date Added": "2021-10-06T14:07:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3781383512", + "Play Date UTC": "2023-10-28T21:18:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-06-04T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Evil Friends", + "Sort Artist": "Portugal. The Man", + "Sort Name": "Modern Jesus", + "Persistent ID": "44A68345F26A6452", + "Track Type": "Remote" + }, + { + "Track ID": "5767", + "Name": "Your Love (D\u00e9j\u00e0 Vu)", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Your Love (D\u00e9j\u00e0 Vu) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8606688", + "Total Time": "234372", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-10-06T14:07:03Z", + "Date Added": "2021-10-06T14:07:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3781075474", + "Play Date UTC": "2023-10-25T07:44:34Z", + "Skip Count": "1", + "Skip Date": "2022-11-25T22:36:08Z", + "Release Date": "2020-02-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Your Love (D\u00e9j\u00e0 Vu) - Single", + "Sort Artist": "Glass Animals", + "Sort Name": "Your Love (D\u00e9j\u00e0 Vu)", + "Persistent ID": "289F51941A4002BA", + "Track Type": "Remote" + }, + { + "Track ID": "5769", + "Name": "Daylight", + "Artist": "Joji & Diplo", + "Album Artist": "Joji & Diplo", + "Composer": "Sarah Aarons, Greg Kurstin, Maximilian Jaeger, Thomas Wesley Pentz & George Miller", + "Album": "Daylight - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5982320", + "Total Time": "163906", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-10-06T14:07:06Z", + "Date Added": "2021-10-06T14:07:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3773821212", + "Play Date UTC": "2023-08-02T08:40:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Daylight - Single", + "Sort Artist": "Joji & Diplo", + "Sort Name": "Daylight", + "Persistent ID": "DD9984F100385F01", + "Track Type": "Remote" + }, + { + "Track ID": "5771", + "Name": "Tokyo Drifting", + "Artist": "Glass Animals & Denzel Curry", + "Album Artist": "Various Artists", + "Composer": "Denzel Curry, Dave Bayley & Caiphus Semenya", + "Album": "Indica: Vol. 3", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8012955", + "Total Time": "216822", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2021-10-06T14:07:07Z", + "Date Added": "2021-10-06T14:07:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3781156866", + "Play Date UTC": "2023-10-26T06:21:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-13T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Indica: Vol. 3", + "Sort Artist": "Glass Animals & Denzel Curry", + "Sort Name": "Tokyo Drifting", + "Persistent ID": "90AA2E9326929F71", + "Track Type": "Remote" + }, + { + "Track ID": "5773", + "Name": "Chemistry", + "Artist": "Left Boy", + "Album Artist": "Left Boy", + "Composer": "undef", + "Album": "Ferdinand", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8216880", + "Total Time": "233326", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2021-10-06T14:07:08Z", + "Date Added": "2021-10-06T14:07:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3782904973", + "Play Date UTC": "2023-11-15T11:56:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1864", + "Sort Album": "Ferdinand", + "Sort Artist": "Left Boy", + "Sort Name": "Chemistry", + "Persistent ID": "6E0AB9FE1FC16309", + "Track Type": "Remote" + }, + { + "Track ID": "5775", + "Name": "Overdrive", + "Artist": "Hippie Sabotage", + "Album Artist": "Hippie Sabotage", + "Composer": "Kevin Saurer & Jeffrey Saurer", + "Album": "Overdrive - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "9741019", + "Total Time": "280027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-10-06T14:07:10Z", + "Date Added": "2021-10-06T14:07:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3780006447", + "Play Date UTC": "2023-10-12T22:47:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Overdrive - Single", + "Sort Artist": "Hippie Sabotage", + "Sort Name": "Overdrive", + "Persistent ID": "EA5580D6B8F73B66", + "Track Type": "Remote" + }, + { + "Track ID": "5777", + "Name": "Terms and Conditions", + "Artist": "Chet Faker", + "Album Artist": "Chet Faker", + "Composer": "undef", + "Album": "Thinking in Textures", + "Genre": "Contemporary R&B", + "Kind": "Apple Music AAC audio file", + "Size": "7937551", + "Total Time": "222493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "7", + "Year": "2012", + "Date Modified": "2021-10-06T14:07:11Z", + "Date Added": "2021-10-06T14:07:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3775803805", + "Play Date UTC": "2023-08-25T07:23:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-01-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Thinking in Textures", + "Sort Artist": "Chet Faker", + "Sort Name": "Terms and Conditions", + "Persistent ID": "503A0098080AA41B", + "Track Type": "Remote" + }, + { + "Track ID": "5779", + "Name": "The House of the Rising Sun", + "Artist": "The Animals", + "Album Artist": "The Animals", + "Composer": "Alan Price & Traditional", + "Album": "The Singles Plus", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "9773069", + "Total Time": "270827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "20", + "Year": "1963", + "Date Modified": "2021-10-06T14:07:12Z", + "Date Added": "2021-10-06T14:07:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3776149449", + "Play Date UTC": "2023-08-29T07:24:09Z", + "Skip Count": "3", + "Skip Date": "2023-06-30T12:47:31Z", + "Release Date": "1963-12-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Singles Plus", + "Sort Artist": "Animals", + "Sort Name": "Animals", + "Persistent ID": "House of the Rising Sun", + "Track Type": "7AD628E039E1D678" + }, + { + "Track ID": "5781", + "Name": "Tokyo Drifting", + "Artist": "Glass Animals & Denzel Curry", + "Album Artist": "Glass Animals", + "Composer": "Denzel Curry, Dave Bayley & Caiphus Semenya", + "Album": "Dreamland", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8150196", + "Total Time": "216822", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2021-10-06T14:07:14Z", + "Date Added": "2021-10-06T14:07:14Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781521625", + "Play Date UTC": "2023-10-30T11:40:25Z", + "Skip Count": "1", + "Skip Date": "2021-12-04T07:28:02Z", + "Release Date": "2019-11-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland", + "Sort Artist": "Glass Animals & Denzel Curry", + "Sort Name": "Tokyo Drifting", + "Persistent ID": "D481E022D12EA1DE", + "Track Type": "Remote" + }, + { + "Track ID": "5783", + "Name": "Dlz", + "Artist": "TV on the Radio", + "Album Artist": "TV on the Radio", + "Composer": "Kyp Malone, Gerard A. Smith, David Sitek & Tunde Adebimpe", + "Album": "Dear Science", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8731400", + "Total Time": "228707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2008", + "Date Modified": "2021-10-06T14:07:19Z", + "Date Added": "2021-10-06T14:07:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783714742", + "Play Date UTC": "2023-11-24T20:52:22Z", + "Skip Count": "1", + "Skip Date": "2022-07-30T15:07:24Z", + "Release Date": "2008-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dear Science", + "Sort Artist": "TV on the Radio", + "Sort Name": "Dlz", + "Persistent ID": "A56D6D32417E1BDC", + "Track Type": "Remote" + }, + { + "Track ID": "5785", + "Name": "Blame It On Me", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell & Austin Post", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9333475", + "Total Time": "261805", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2021-10-06T14:07:19Z", + "Date Added": "2021-10-06T14:07:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3783003616", + "Play Date UTC": "2023-11-16T15:20:16Z", + "Skip Count": "2", + "Skip Date": "2022-11-21T20:51:54Z", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Blame It On Me", + "Persistent ID": "BCF8A571F3F93999", + "Track Type": "Remote" + }, + { + "Track ID": "5787", + "Name": "It's That Talk Again", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "James Mercer & Brian Burton", + "Album": "It's That Talk Again - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8473426", + "Total Time": "241333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2021-10-06T14:07:24Z", + "Date Added": "2021-10-06T14:07:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3767522251", + "Play Date UTC": "2023-05-21T10:57:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-09-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "It's That Talk Again - Single", + "Sort Artist": "Broken Bells", + "Sort Name": "It's That Talk Again", + "Persistent ID": "E6A2EED091B4260A", + "Track Type": "Remote" + }, + { + "Track ID": "5789", + "Name": "Treated Like the Weather", + "Artist": "Slum Sociable", + "Album Artist": "Slum Sociable", + "Composer": "undef", + "Album": "Slum Sociable", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8844887", + "Total Time": "250796", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2021-10-06T14:07:26Z", + "Date Added": "2021-10-06T14:07:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3752404232", + "Play Date UTC": "2022-11-27T11:30:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-11-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Slum Sociable", + "Sort Artist": "Slum Sociable", + "Sort Name": "Treated Like the Weather", + "Persistent ID": "A8D70835A4DE6156", + "Track Type": "Remote" + }, + { + "Track ID": "5791", + "Name": "Kingdom of Doom", + "Artist": "The Good, the Bad & the Queen", + "Album Artist": "The Good, the Bad & the Queen", + "Composer": "Damon Albarn & Paul Simonon", + "Album": "Kingdom of Doom - EP", + "Genre": "Adult Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6159411", + "Total Time": "164013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2006", + "Date Modified": "2021-10-06T14:07:26Z", + "Date Added": "2021-10-06T14:07:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3758563719", + "Play Date UTC": "2023-02-06T18:28:39Z", + "Skip Count": "1", + "Skip Date": "2021-12-04T07:27:58Z", + "Release Date": "2006-11-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Kingdom of Doom - EP", + "Sort Artist": "Good, the Bad & the Queen", + "Sort Name": "Good, the Bad & the Queen", + "Persistent ID": "Kingdom of Doom", + "Track Type": "BC56AE0076934ED5" + }, + { + "Track ID": "5793", + "Name": "Otherside", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell & Austin Post", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8201473", + "Total Time": "228221", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2021-10-06T14:07:28Z", + "Date Added": "2021-10-06T14:07:28Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3783060333", + "Play Date UTC": "2023-11-17T07:05:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Otherside", + "Persistent ID": "FFA165E7526EDB14", + "Track Type": "Remote" + }, + { + "Track ID": "5795", + "Name": "At the Door", + "Artist": "The Strokes", + "Album Artist": "The Strokes", + "Composer": "The Strokes & Paul Vassallo", + "Album": "The New Abnormal", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10950697", + "Total Time": "310373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "9", + "Year": "2020", + "Date Modified": "2021-10-06T14:07:31Z", + "Date Added": "2021-10-06T14:07:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3773759266", + "Play Date UTC": "2023-08-01T15:27:46Z", + "Skip Count": "1", + "Skip Date": "2022-08-02T16:54:37Z", + "Release Date": "2020-02-11T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "New Abnormal", + "Sort Artist": "Strokes", + "Sort Name": "Strokes", + "Persistent ID": "Strokes & Paul Vassallo", + "Track Type": "At the Door" + }, + { + "Track ID": "5797", + "Name": "Heroin Song", + "Artist": "Jadu Heart", + "Album Artist": "Jadu Heart", + "Composer": "Alexander Headford, Diva-Sachy Jeffrey & Sam Knowles", + "Album": "Melt Away", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10978263", + "Total Time": "310000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2021-10-06T14:07:32Z", + "Date Added": "2021-10-06T14:07:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783779108", + "Play Date UTC": "2023-11-25T14:45:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-08-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Melt Away", + "Sort Artist": "Jadu Heart", + "Sort Name": "Heroin Song", + "Persistent ID": "543B714D700201EC", + "Track Type": "Remote" + }, + { + "Track ID": "5799", + "Name": "WDWGILY", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "Chill - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7847350", + "Total Time": "218312", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2018", + "Date Modified": "2021-10-06T14:07:32Z", + "Date Added": "2021-10-06T14:07:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3766950342", + "Play Date UTC": "2023-05-14T20:05:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Chill - EP", + "Sort Artist": "SYML", + "Sort Name": "WDWGILY", + "Persistent ID": "F974889887743D9D", + "Track Type": "Remote" + }, + { + "Track ID": "5801", + "Name": "Trouble", + "Artist": "Cage the Elephant", + "Album Artist": "Cage the Elephant", + "Composer": "Cage the Elephant", + "Album": "Tell Me I'm Pretty", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8051594", + "Total Time": "225981", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2021-10-06T14:07:33Z", + "Date Added": "2021-10-06T14:07:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3773754693", + "Play Date UTC": "2023-08-01T14:11:33Z", + "Skip Count": "1", + "Skip Date": "2021-10-07T20:16:58Z", + "Release Date": "2015-12-18T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tell Me I'm Pretty", + "Sort Artist": "Cage the Elephant", + "Sort Name": "Trouble", + "Persistent ID": "A92D8038BAF623F8", + "Track Type": "Remote" + }, + { + "Track ID": "5803", + "Name": "Phone Numbers", + "Artist": "Dominic Fike & Kenny Beats", + "Album Artist": "Dominic Fike & Kenny Beats", + "Composer": "Dominic Fike, Jared Scharff & Kenny Beats", + "Album": "Phone Numbers - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5567649", + "Total Time": "146827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2021-10-06T14:07:36Z", + "Date Added": "2021-10-06T14:07:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3776240576", + "Play Date UTC": "2023-08-30T08:42:56Z", + "Skip Count": "2", + "Skip Date": "2022-11-17T06:34:15Z", + "Release Date": "2019-07-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Phone Numbers - Single", + "Sort Artist": "Dominic Fike & Kenny Beats", + "Sort Name": "Phone Numbers", + "Persistent ID": "D55CD06FD356EA76", + "Track Type": "Remote" + }, + { + "Track ID": "5805", + "Name": "Know My Rights (feat. Lil Baby)", + "Artist": "6LACK", + "Album Artist": "6LACK", + "Composer": "Ricardo Valdez Valentine Jr., Dominique Jones, Adeyinka Bankole, James Cyr, Trevor Slade & Joseph Reeves", + "Album": "6pc Hot EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6893902", + "Total Time": "194396", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2021-10-06T14:07:37Z", + "Date Added": "2021-10-06T14:07:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3778766275", + "Play Date UTC": "2023-09-28T14:17:55Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-06-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "6pc Hot EP", + "Sort Artist": "6LACK", + "Sort Name": "Know My Rights (feat. Lil Baby)", + "Persistent ID": "E4C9D6EE50E82790", + "Track Type": "Remote" + }, + { + "Track ID": "5807", + "Name": "Goals (feat. Preme)", + "Artist": "Tyla Yaweh", + "Album Artist": "Tyla Yaweh", + "Composer": "Tyla Yaweh", + "Album": "Goals (feat. Preme) - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "7283062", + "Total Time": "204057", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-10-06T14:07:37Z", + "Date Added": "2021-10-06T14:07:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783691812", + "Play Date UTC": "2023-11-24T14:30:12Z", + "Skip Count": "1", + "Skip Date": "2023-06-20T15:30:43Z", + "Release Date": "2018-08-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Goals (feat. Preme) - Single", + "Sort Artist": "Tyla Yaweh", + "Sort Name": "Goals (feat. Preme)", + "Persistent ID": "EEA963FEDB77F26D", + "Track Type": "Remote" + }, + { + "Track ID": "5809", + "Name": "Fantasy", + "Artist": "Bazzi", + "Album Artist": "Various Artists", + "Composer": "undef", + "Album": "Laid Back Hip Hop", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5459666", + "Total Time": "148230", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "24", + "Track Count": "26", + "Year": "2018", + "Date Modified": "2021-10-06T14:07:38Z", + "Date Added": "2021-10-06T14:07:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780492366", + "Play Date UTC": "2023-10-18T13:46:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-12T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Laid Back Hip Hop", + "Sort Artist": "Bazzi", + "Sort Name": "Fantasy", + "Persistent ID": "DFBD92C6C310AC59", + "Track Type": "Remote" + }, + { + "Track ID": "5811", + "Name": "Loud(y)", + "Artist": "Lewis Del Mar", + "Album Artist": "Lewis Del Mar", + "Composer": "Daniel Miller & Max Harwood", + "Album": "Lewis Del Mar", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9063126", + "Total Time": "249573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2021-10-06T14:07:38Z", + "Date Added": "2021-10-06T14:07:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3771930509", + "Play Date UTC": "2023-07-11T11:28:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lewis Del Mar", + "Sort Artist": "Lewis Del Mar", + "Sort Name": "Loud(y)", + "Persistent ID": "E3A6AB8FEE35D44B", + "Track Type": "Remote" + }, + { + "Track ID": "5813", + "Name": "The Remains of Rock & Roll", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "James Mercer & Brian Burton", + "Album": "After the Disco", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10239715", + "Total Time": "294517", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2021-10-06T14:07:40Z", + "Date Added": "2021-10-06T14:07:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3783355965", + "Play Date UTC": "2023-11-20T17:12:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "After the Disco", + "Sort Artist": "Broken Bells", + "Sort Name": "Remains of Rock & Roll", + "Persistent ID": "5410A5CDB74BA173", + "Track Type": "Remote" + }, + { + "Track ID": "5815", + "Name": "Wave(s)", + "Artist": "Lewis Del Mar", + "Album Artist": "Lewis Del Mar", + "Composer": "Daniel Miller & Max Harwood", + "Album": "EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8378679", + "Total Time": "238400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2016", + "Date Modified": "2021-10-06T14:07:41Z", + "Date Added": "2021-10-06T14:07:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3783684435", + "Play Date UTC": "2023-11-24T12:27:15Z", + "Skip Count": "1", + "Skip Date": "2022-11-07T05:06:16Z", + "Release Date": "2016-01-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "EP", + "Sort Artist": "Lewis Del Mar", + "Sort Name": "Wave(s)", + "Persistent ID": "202A20DF7E771FB4", + "Track Type": "Remote" + }, + { + "Track ID": "5817", + "Name": "When You Die", + "Artist": "MGMT", + "Album Artist": "MGMT", + "Composer": "Andrew VanWyngarden & Ben Goldwasser", + "Album": "Little Dark Age", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9955631", + "Total Time": "263880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2017", + "Date Modified": "2021-10-06T14:07:43Z", + "Date Added": "2021-10-06T14:07:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3779198149", + "Play Date UTC": "2023-10-03T14:15:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-12T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Little Dark Age", + "Sort Artist": "MGMT", + "Sort Name": "When You Die", + "Persistent ID": "5DADB0C4300C7634", + "Track Type": "Remote" + }, + { + "Track ID": "5819", + "Name": "Sober", + "Artist": "Childish Gambino", + "Album Artist": "Childish Gambino", + "Composer": "Donald Glover & Ludwig G\u00f6ransson", + "Album": "Kauai", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "9065506", + "Total Time": "252027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2014", + "Date Modified": "2021-10-06T14:07:44Z", + "Date Added": "2021-10-06T14:07:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3749045260", + "Play Date UTC": "2022-10-19T14:27:40Z", + "Skip Count": "1", + "Skip Date": "2022-04-23T18:13:38Z", + "Release Date": "2014-09-14T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "3089", + "Sort Album": "Kauai", + "Sort Artist": "Childish Gambino", + "Sort Name": "Sober", + "Persistent ID": "3A8C53EE4EE227C5", + "Track Type": "Remote" + }, + { + "Track ID": "5821", + "Name": "I Saw You Close Your Eyes", + "Artist": "Local Natives", + "Album Artist": "Local Natives", + "Composer": "Kelcey Ayer, Matthew Frazier, Nik Ewing, Ryan Hahn & Taylor Rice", + "Album": "I Saw You Close Your Eyes - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8058798", + "Total Time": "216840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2021-10-06T14:07:45Z", + "Date Added": "2021-10-06T14:07:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3779199080", + "Play Date UTC": "2023-10-03T14:31:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Saw You Close Your Eyes - Single", + "Sort Artist": "Local Natives", + "Sort Name": "I Saw You Close Your Eyes", + "Persistent ID": "2FAEAFE6D2CED094", + "Track Type": "Remote" + }, + { + "Track ID": "5823", + "Name": "Thinking About You", + "Artist": "Big Scary", + "Album Artist": "Big Scary", + "Composer": "Tom Iansek & Joanna Syme", + "Album": "The Big Scary Four Seasons", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8142598", + "Total Time": "233587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2010", + "Date Modified": "2021-10-06T14:07:45Z", + "Date Added": "2021-10-06T14:07:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3780500781", + "Play Date UTC": "2023-10-18T16:06:21Z", + "Skip Count": "4", + "Skip Date": "2022-07-06T13:38:50Z", + "Release Date": "2010-12-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Big Scary Four Seasons", + "Sort Artist": "Big Scary", + "Sort Name": "Thinking About You", + "Persistent ID": "4B66DA53E57FC3DE", + "Track Type": "Remote" + }, + { + "Track ID": "5825", + "Name": "Hey", + "Artist": "Pixies", + "Album Artist": "Various Artists", + "Composer": "Black Francis", + "Album": "Zack and Miri Make a Porno (Music from the Motion Picture)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7634038", + "Total Time": "210440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "23", + "Year": "1988", + "Date Modified": "2021-10-06T14:07:48Z", + "Date Added": "2021-10-06T14:07:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3771829036", + "Play Date UTC": "2023-07-10T07:17:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1988-03-21T12:00:00Z", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "80", + "Sort Album": "Zack and Miri Make a Porno (Music from the Motion Picture)", + "Sort Artist": "Pixies", + "Sort Name": "Hey", + "Persistent ID": "FD826AEF756F1493", + "Track Type": "Remote" + }, + { + "Track ID": "5827", + "Name": "Monica Lewinsky (feat. A Boogie Wit da Hoodie)", + "Artist": "SAINt JHN", + "Album Artist": "SAINt JHN", + "Composer": "Artist Julius Dubose, Carlos St. John & Lee Stashenko", + "Album": "Ghetto Lenny's Love Songs", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7240368", + "Total Time": "200475", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2021-10-06T14:07:49Z", + "Date Added": "2021-10-06T14:07:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3772520845", + "Play Date UTC": "2023-07-18T07:27:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-08-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ghetto Lenny's Love Songs", + "Sort Artist": "SAINt JHN", + "Sort Name": "Monica Lewinsky (feat. A Boogie Wit da Hoodie)", + "Persistent ID": "527FAAF01EF03BDB", + "Track Type": "Remote" + }, + { + "Track ID": "5829", + "Name": "Lotus Eater", + "Artist": "Foster the People", + "Album Artist": "Foster the People", + "Composer": "Mark Foster & Isom Innis", + "Album": "Sacred Hearts Club", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6729599", + "Total Time": "182442", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2017", + "Date Modified": "2021-10-06T14:07:49Z", + "Date Added": "2021-10-06T14:07:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3763576998", + "Play Date UTC": "2023-04-05T19:03:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-07-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sacred Hearts Club", + "Sort Artist": "Foster the People", + "Sort Name": "Lotus Eater", + "Persistent ID": "98CC32D9F1B5ECA1", + "Track Type": "Remote" + }, + { + "Track ID": "5831", + "Name": "Something to Believe In", + "Artist": "Young the Giant", + "Album Artist": "Young the Giant", + "Composer": "Alex Salibian, Eric Cannata, Francois Comtois, Jacob Tilley, Payam Doostzadeh & Sameer Gadhia", + "Album": "Home of the Strange", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8064326", + "Total Time": "228479", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2021-10-06T14:07:51Z", + "Date Added": "2021-10-06T14:07:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3772622788", + "Play Date UTC": "2023-07-19T11:46:28Z", + "Skip Count": "2", + "Skip Date": "2021-10-08T17:22:48Z", + "Release Date": "2016-07-07T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Home of the Strange", + "Sort Artist": "Young the Giant", + "Sort Name": "Something to Believe In", + "Persistent ID": "8E2CF390109EC310", + "Track Type": "Remote" + }, + { + "Track ID": "5833", + "Name": "Keep Your Distance", + "Artist": "Ameer Vann", + "Album Artist": "Ameer Vann", + "Composer": "Ameer Vann, Brandon Kenneth Bell, Daniel Tannenbaum, Sergiu Adrian Gherman, Tyler Reese Melenbacher, Craig Balmoris, Daniel Nathan Krieger, Bri Steves & Marius Feder", + "Album": "Keep Your Distance - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4402193", + "Total Time": "118628", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-10-06T14:07:53Z", + "Date Added": "2021-10-06T14:07:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3782903902", + "Play Date UTC": "2023-11-15T11:38:22Z", + "Skip Count": "1", + "Skip Date": "2022-05-27T22:30:05Z", + "Release Date": "2020-10-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Keep Your Distance - Single", + "Sort Artist": "Ameer Vann", + "Sort Name": "Keep Your Distance", + "Persistent ID": "024C2A6AF0DF80B7", + "Track Type": "Remote" + }, + { + "Track ID": "5835", + "Name": "The Ceiling", + "Artist": "Lewis Del Mar", + "Album Artist": "Lewis Del Mar", + "Composer": "Max Harwood, Daniel Miller, Andrew Maury, Daniel Ullmann & johan lenox", + "Album": "AUGUST", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6244063", + "Total Time": "174240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2021-10-06T14:07:55Z", + "Date Added": "2021-10-06T14:07:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3776320120", + "Play Date UTC": "2023-08-31T06:48:40Z", + "Skip Count": "2", + "Skip Date": "2022-08-06T07:33:43Z", + "Release Date": "2020-05-20T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "AUGUST", + "Sort Artist": "Lewis Del Mar", + "Sort Name": "Ceiling", + "Persistent ID": "292294009EC1505B", + "Track Type": "Remote" + }, + { + "Track ID": "5837", + "Name": "Ninety", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Peder Losneg\u00e5rd", + "Album": "SYRE", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "16178807", + "Total Time": "468168", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "17", + "Year": "2017", + "Date Modified": "2021-10-06T14:07:59Z", + "Date Added": "2021-10-06T14:07:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3770988382", + "Play Date UTC": "2023-06-30T13:46:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-11-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SYRE", + "Sort Artist": "Jaden", + "Sort Name": "Ninety", + "Persistent ID": "F8E4946A1C2FB5D9", + "Track Type": "Remote" + }, + { + "Track ID": "5839", + "Name": "Cabin Fever", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "J. Smith & M. Burns", + "Album": "Cabin Fever - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7016224", + "Total Time": "195535", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2021-10-06T14:08:03Z", + "Date Added": "2021-10-06T14:08:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3783585821", + "Play Date UTC": "2023-11-23T09:03:41Z", + "Skip Count": "1", + "Skip Date": "2022-02-23T20:34:21Z", + "Release Date": "2020-07-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cabin Fever - Single", + "Sort Artist": "Jaden", + "Sort Name": "Cabin Fever", + "Persistent ID": "612CB2EA35A2802B", + "Track Type": "Remote" + }, + { + "Track ID": "5841", + "Name": "Better Now", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell, Austin Post, Billy Walsh & Adam Feeney", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8305790", + "Total Time": "231261", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2021-10-06T14:08:03Z", + "Date Added": "2021-10-06T14:08:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3783004935", + "Play Date UTC": "2023-11-16T15:42:15Z", + "Skip Count": "2", + "Skip Date": "2022-11-02T14:39:30Z", + "Release Date": "2018-04-27T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Better Now", + "Persistent ID": "7ABB14F52022D82D", + "Track Type": "Remote" + }, + { + "Track ID": "5843", + "Name": "Shelter", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "Jay Mumford, James Mercer & Brian Burton", + "Album": "Shelter - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8522991", + "Total Time": "239010", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-10-06T14:08:04Z", + "Date Added": "2021-10-06T14:08:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3779984809", + "Play Date UTC": "2023-10-12T16:46:49Z", + "Skip Count": "3", + "Skip Date": "2022-10-06T16:19:36Z", + "Release Date": "2018-12-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Shelter - Single", + "Sort Artist": "Broken Bells", + "Sort Name": "Shelter", + "Persistent ID": "832B4E6B743E9CEB", + "Track Type": "Remote" + }, + { + "Track ID": "5845", + "Name": "Seven", + "Artist": "Rainbow Kitten Surprise", + "Album Artist": "Rainbow Kitten Surprise", + "Composer": "undef", + "Album": "Seven + Mary", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8157200", + "Total Time": "225413", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2013", + "Date Modified": "2021-10-06T14:08:05Z", + "Date Added": "2021-10-06T14:08:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3772522927", + "Play Date UTC": "2023-07-18T08:02:07Z", + "Skip Count": "3", + "Skip Date": "2022-11-08T08:43:48Z", + "Release Date": "2013-11-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seven + Mary", + "Sort Artist": "Rainbow Kitten Surprise", + "Sort Name": "Seven", + "Persistent ID": "69AA109C8D08D937", + "Track Type": "Remote" + }, + { + "Track ID": "5847", + "Name": "Destroy Me", + "Artist": "grandson", + "Album Artist": "grandson", + "Composer": "Chester Krupa Carbone, Jordan Benjamin & Kevin Hissink", + "Album": "a modern tragedy, vol. 3 - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7992619", + "Total Time": "223150", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2019", + "Date Modified": "2021-10-06T14:08:05Z", + "Date Added": "2021-10-06T14:08:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783402267", + "Play Date UTC": "2023-11-21T06:04:27Z", + "Skip Count": "5", + "Skip Date": "2023-05-30T11:41:45Z", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "modern tragedy, vol. 3 - EP", + "Sort Artist": "grandson", + "Sort Name": "Destroy Me", + "Persistent ID": "CD3F46574850CC56", + "Track Type": "Remote" + }, + { + "Track ID": "5849", + "Name": "Fever", + "Artist": "Balthazar", + "Album Artist": "Balthazar", + "Composer": "Jinte Deprez & Maarten Devoldere", + "Album": "Fever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "13559412", + "Total Time": "365080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2021-10-07T21:46:59Z", + "Date Added": "2021-10-07T21:46:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3782991548", + "Play Date UTC": "2023-11-16T11:59:08Z", + "Skip Count": "2", + "Skip Date": "2022-02-27T14:53:05Z", + "Release Date": "2019-01-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fever", + "Sort Artist": "Balthazar", + "Sort Name": "Fever", + "Persistent ID": "850BE2E6D9595B52", + "Track Type": "Remote" + }, + { + "Track ID": "5851", + "Name": "SICKO MODE", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster", + "Album": "ASTROWORLD", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10908819", + "Total Time": "312820", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2018", + "Date Modified": "2021-10-07T22:00:45Z", + "Date Added": "2021-10-07T22:00:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3781781745", + "Play Date UTC": "2023-11-02T11:55:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ASTROWORLD", + "Sort Artist": "Travis Scott", + "Sort Name": "SICKO MODE", + "Persistent ID": "519A84575D1294BC", + "Track Type": "Remote" + }, + { + "Track ID": "5853", + "Name": "I Am the Antichrist to You", + "Artist": "Kishi Bashi", + "Album Artist": "Kishi Bashi", + "Composer": "undef", + "Album": "151A", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8868281", + "Total Time": "236246", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2012", + "Date Modified": "2021-10-07T22:25:54Z", + "Date Added": "2021-10-07T22:25:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3770539260", + "Play Date UTC": "2023-06-25T09:01:00Z", + "Skip Count": "1", + "Skip Date": "2022-07-23T17:16:14Z", + "Release Date": "2012-04-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "151A", + "Sort Artist": "Kishi Bashi", + "Sort Name": "I Am the Antichrist to You", + "Persistent ID": "8A6CB22F80EF6524", + "Track Type": "Remote" + }, + { + "Track ID": "5855", + "Name": "What You Need", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, Chauncey Hollis, Jr., Dusting James Corbett & Dylan Wiggins", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7815582", + "Total Time": "217609", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783754077", + "Play Date UTC": "2023-11-25T07:47:57Z", + "Skip Count": "1", + "Skip Date": "2022-11-17T06:49:13Z", + "Release Date": "2021-05-04T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "What You Need", + "Persistent ID": "49FE38188A6963DE", + "Track Type": "Remote" + }, + { + "Track ID": "5857", + "Name": "Flocky Flocky (feat. Travis Scott)", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, Ciaran Mullan, Dylan Cleary-Krell, Jacques Berman Webster II & Ronald LaTour", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6743484", + "Total Time": "183514", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3770044239", + "Play Date UTC": "2023-06-19T15:30:39Z", + "Skip Count": "1", + "Skip Date": "2021-10-31T19:36:28Z", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "Flocky Flocky (feat. Travis Scott)", + "Persistent ID": "5E01BAF38D32508B", + "Track Type": "Remote" + }, + { + "Track ID": "5859", + "Name": "5X", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, Douglas Ford, Mino Drerup & Ronald LaTour", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5009879", + "Total Time": "132398", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3772265825", + "Play Date UTC": "2023-07-15T08:37:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "5X", + "Persistent ID": "DBDA51248857026D", + "Track Type": "Remote" + }, + { + "Track ID": "5861", + "Name": "2AM", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver & Jahaan Sweet", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6092493", + "Total Time": "165749", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3779313970", + "Play Date UTC": "2023-10-04T22:26:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "2AM", + "Persistent ID": "5DACCA142F0A2FB4", + "Track Type": "Remote" + }, + { + "Track ID": "5863", + "Name": "OUTERSPACE (feat. Baby Keem)", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, Dylan Cleary-Krell, Hykeem Carter, Jahaan Sweet, James Austin Cyr, Linda Kopera & MIKE DEAN", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8249311", + "Total Time": "226095", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3782976317", + "Play Date UTC": "2023-11-16T07:45:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "OUTERSPACE (feat. Baby Keem)", + "Persistent ID": "C7689BAC422FBACF", + "Track Type": "Remote" + }, + { + "Track ID": "5865", + "Name": "Company, Pt. 2", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, David Ruoff, dennis j\u00fcngel, Elias Klughammer, Josh Gottmanns & Leland Tyler Wayne", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7612521", + "Total Time": "211406", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3766658089", + "Play Date UTC": "2023-05-11T10:54:49Z", + "Skip Count": "2", + "Skip Date": "2021-10-13T13:00:03Z", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "Company, Pt. 2", + "Persistent ID": "B91F330D29DDDA32", + "Track Type": "Remote" + }, + { + "Track ID": "5867", + "Name": "Get Throwed", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, Dijon McFarlane & Omar Perrin", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5986940", + "Total Time": "155132", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3782813885", + "Play Date UTC": "2023-11-14T10:38:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "Get Throwed", + "Persistent ID": "90F3211F6E7EDBE3", + "Track Type": "Remote" + }, + { + "Track ID": "5869", + "Name": "You (feat. Travis Scott)", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Allen Ritter, Caleb Toliver, Jacques Berman Webster II & MIKE DEAN", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7934228", + "Total Time": "213637", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3773752654", + "Play Date UTC": "2023-08-01T13:37:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "You (feat. Travis Scott)", + "Persistent ID": "69162F955603AAE9", + "Track Type": "Remote" + }, + { + "Track ID": "5871", + "Name": "BOGUS", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, Marcus Fitzgerald Rucker, Pascal Leroy & Ronald LaTour", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7173433", + "Total Time": "199710", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "97", + "Play Date": "3783593504", + "Play Date UTC": "2023-11-23T11:11:44Z", + "Skip Count": "4", + "Skip Date": "2022-02-09T23:19:18Z", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "BOGUS", + "Persistent ID": "4F32DBCB3F40B956", + "Track Type": "Remote" + }, + { + "Track ID": "5873", + "Name": "XSCAPE", + "Artist": "Don Toliver", + "Album Artist": "Don Toliver", + "Composer": "Caleb Toliver, Chase Benjamin, Douglas Ford, MIKE DEAN, Mirela, patrick rosario, Shivam Barot & Simon Krichely", + "Album": "Life of a DON", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6153845", + "Total Time": "156248", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2021-10-10T17:11:49Z", + "Date Added": "2021-10-10T17:11:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3783358859", + "Play Date UTC": "2023-11-20T18:00:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-10-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a DON", + "Sort Artist": "Don Toliver", + "Sort Name": "XSCAPE", + "Persistent ID": "11D2618CC92C6962", + "Track Type": "Remote" + }, + { + "Track ID": "5875", + "Name": "I Don't Wanna Talk (I Just Wanna Dance)", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "Dreamland (+ Bonus Levels 2.0)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7127663", + "Total Time": "195191", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "17", + "Year": "2020", + "Date Modified": "2021-10-11T14:24:51Z", + "Date Added": "2021-10-11T14:24:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783713992", + "Play Date UTC": "2023-11-24T20:39:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-09-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dreamland (+ Bonus Levels 2.0)", + "Sort Artist": "Glass Animals", + "Sort Name": "I Don't Wanna Talk (I Just Wanna Dance)", + "Persistent ID": "18EC23A2DF253954", + "Track Type": "Remote" + }, + { + "Track ID": "5877", + "Name": "Lose Control", + "Artist": "Glass Animals & Joey Bada$$", + "Album Artist": "Glass Animals & Joey Bada$$", + "Composer": "Joey Bada$$ & David Bayley", + "Album": "Lose Control - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7634638", + "Total Time": "210406", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2021-10-11T14:52:24Z", + "Date Added": "2021-10-11T14:52:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3769680140", + "Play Date UTC": "2023-06-15T10:22:20Z", + "Skip Count": "2", + "Skip Date": "2022-07-29T09:17:39Z", + "Release Date": "2015-10-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lose Control - Single", + "Sort Artist": "Glass Animals & Joey Bada$$", + "Sort Name": "Lose Control", + "Persistent ID": "3AFC297F5DC2DCD2", + "Track Type": "Remote" + }, + { + "Track ID": "5879", + "Name": "It\u2019s All So Incredibly Loud", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "ADULTHOOD - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9124256", + "Total Time": "259060", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2020", + "Date Modified": "2021-10-11T14:53:44Z", + "Date Added": "2021-10-11T14:53:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3770987847", + "Play Date UTC": "2023-06-30T13:37:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-07-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ADULTHOOD - EP", + "Sort Artist": "Glass Animals", + "Sort Name": "It\u2019s All So Incredibly Loud", + "Persistent ID": "60FAD70FA0AC7EAD", + "Track Type": "Remote" + }, + { + "Track ID": "5881", + "Name": "Waterfalls Coming Out Your Mouth", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "ADOLESCENCE - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5870072", + "Total Time": "161790", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2020", + "Date Modified": "2021-10-11T14:54:08Z", + "Date Added": "2021-10-11T14:54:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3780485525", + "Play Date UTC": "2023-10-18T11:52:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-08-07T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ADOLESCENCE - EP", + "Sort Artist": "Glass Animals", + "Sort Name": "Waterfalls Coming Out Your Mouth", + "Persistent ID": "DC82B94FEE075341", + "Track Type": "Remote" + }, + { + "Track ID": "5883", + "Name": "Gooey", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "David Bayley", + "Album": "Zaba", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10238772", + "Total Time": "289307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2021-10-11T14:56:50Z", + "Date Added": "2021-10-11T14:56:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3770216400", + "Play Date UTC": "2023-06-21T15:20:00Z", + "Skip Count": "3", + "Skip Date": "2021-12-07T18:21:27Z", + "Release Date": "2014-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ZABA", + "Sort Artist": "Glass Animals", + "Sort Name": "Gooey", + "Persistent ID": "4B7766D55DF07772", + "Track Type": "Remote" + }, + { + "Track ID": "5885", + "Name": "In Fantasia", + "Artist": "Kishi Bashi", + "Album Artist": "Kishi Bashi", + "Composer": "undef", + "Album": "Lighght (Deluxe Version)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "15832598", + "Total Time": "429453", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "14", + "Year": "2014", + "Date Modified": "2021-10-12T05:10:22Z", + "Date Added": "2021-10-12T05:10:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781187345", + "Play Date UTC": "2023-10-26T14:49:05Z", + "Skip Count": "2", + "Skip Date": "2022-05-03T05:24:13Z", + "Release Date": "2014-04-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lighght (Deluxe Version)", + "Sort Artist": "Kishi Bashi", + "Sort Name": "In Fantasia", + "Persistent ID": "52304AF58DB0B0F9", + "Track Type": "Remote" + }, + { + "Track ID": "5887", + "Name": "Can\u2019t Let Go, Juno", + "Artist": "Kishi Bashi", + "Album Artist": "Kishi Bashi", + "Composer": "undef", + "Album": "Sonderlust", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10098237", + "Total Time": "262680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2016", + "Date Modified": "2021-10-12T05:32:05Z", + "Date Added": "2021-10-12T05:32:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3759928356", + "Play Date UTC": "2023-02-22T13:32:36Z", + "Skip Count": "1", + "Skip Date": "2022-04-16T23:17:01Z", + "Release Date": "2016-09-06T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sonderlust", + "Sort Artist": "Kishi Bashi", + "Sort Name": "Can\u2019t Let Go, Juno", + "Persistent ID": "ED6471B1C6FF6726", + "Track Type": "Remote" + }, + { + "Track ID": "5889", + "Name": "Halfway to Nowhere", + "Artist": "Chelou", + "Album Artist": "Chelou", + "Composer": "undef", + "Album": "Halfway to Nowhere - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6490367", + "Total Time": "188405", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "2021-10-13T16:23:33Z", + "Date Added": "2021-10-13T16:23:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3759845717", + "Play Date UTC": "2023-02-21T14:35:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Halfway to Nowhere - Single", + "Sort Artist": "Chelou", + "Sort Name": "Halfway to Nowhere", + "Persistent ID": "69F0D1AB637C16A1", + "Track Type": "Remote" + }, + { + "Track ID": "5891", + "Name": "Song 11", + "Artist": "Games", + "Album Artist": "Games", + "Composer": "Jon Coyle", + "Album": "Sugar Mountain", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "12487489", + "Total Time": "358080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "7", + "Year": "2007", + "Date Modified": "2021-10-16T08:53:20Z", + "Date Added": "2021-10-16T08:53:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3765126267", + "Play Date UTC": "2023-04-23T17:24:27Z", + "Skip Count": "3", + "Skip Date": "2023-02-14T19:49:11Z", + "Release Date": "2007-04-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sugar Mountain", + "Sort Artist": "Games", + "Sort Name": "Song 11", + "Persistent ID": "A7C99A45A3D679FE", + "Track Type": "Remote" + }, + { + "Track ID": "5893", + "Name": "Toss a Coin to Your Witcher", + "Artist": "Sonya Belousova, Giona Ostinelli & Joey Batey", + "Album Artist": "Sonya Belousova & Giona Ostinelli", + "Composer": "Giona Ostinelli & Sonya Belousova", + "Album": "The Witcher (Music from the Netflix Original Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7026023", + "Total Time": "190307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "55", + "Year": "2020", + "Date Modified": "2021-10-17T10:52:40Z", + "Date Added": "2021-10-17T10:52:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3780129205", + "Play Date UTC": "2023-10-14T08:53:25Z", + "Skip Count": "6", + "Skip Date": "2022-12-14T20:02:01Z", + "Release Date": "2020-01-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "3316", + "Sort Album": "Witcher (Music from the Netflix Original Series)", + "Sort Artist": "Sonya Belousova, Giona Ostinelli & Joey Batey", + "Sort Name": "Toss a Coin to Your Witcher", + "Persistent ID": "1559A2FC4100D2C6", + "Track Type": "Remote" + }, + { + "Track ID": "5895", + "Name": "Rosegold", + "Artist": "kerri", + "Album Artist": "kerri", + "Composer": "Kerri Popowich", + "Album": "Happy Accidents", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9104231", + "Total Time": "254415", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2021-11-01T14:10:55Z", + "Date Added": "2021-11-01T14:10:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3772782995", + "Play Date UTC": "2023-07-21T08:16:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-01-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Happy Accidents", + "Sort Artist": "kerri", + "Sort Name": "Rosegold", + "Persistent ID": "E72123C039123452", + "Track Type": "Remote" + }, + { + "Track ID": "5897", + "Name": "Where Do I Go? (feat. Tulpa & Evva)", + "Artist": "VAGUE003", + "Album Artist": "VAGUE003", + "Composer": "VAGUE003", + "Album": "Where Do I Go? (feat. Tulpa & Evva) - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7198275", + "Total Time": "207586", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2021-11-01T19:10:44Z", + "Date Added": "2021-11-01T19:10:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3744178339", + "Play Date UTC": "2022-08-24T06:32:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Where Do I Go? (feat. Tulpa & Evva) - Single", + "Sort Artist": "VAGUE003", + "Sort Name": "Where Do I Go? (feat. Tulpa & Evva)", + "Persistent ID": "2C6B51FDD17F244B", + "Track Type": "Remote" + }, + { + "Track ID": "5899", + "Name": "it's ok, you're ok", + "Artist": "bonjr", + "Album Artist": "bonjr", + "Composer": "undef", + "Album": "it's ok, you're ok - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7612292", + "Total Time": "215510", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2021-11-01T19:34:54Z", + "Date Added": "2021-11-01T19:34:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3780833673", + "Play Date UTC": "2023-10-22T12:34:33Z", + "Skip Count": "1", + "Skip Date": "2022-05-08T15:38:55Z", + "Release Date": "2018-03-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "it's ok, you're ok - Single", + "Sort Artist": "bonjr", + "Sort Name": "it's ok, you're ok", + "Persistent ID": "E69C8A1DFFD7BC92", + "Track Type": "Remote" + }, + { + "Track ID": "5901", + "Name": "Chaplan Candy", + "Artist": "rei brown", + "Album Artist": "rei brown", + "Composer": "rei brown", + "Album": "Lovers II - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9286303", + "Total Time": "261500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2018", + "Date Modified": "2021-11-01T19:57:33Z", + "Date Added": "2021-11-01T19:57:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3770104820", + "Play Date UTC": "2023-06-20T08:20:20Z", + "Skip Count": "2", + "Skip Date": "2022-03-10T11:29:51Z", + "Release Date": "2018-03-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lovers II - EP", + "Sort Artist": "rei brown", + "Sort Name": "Chaplan Candy", + "Persistent ID": "25EB3D1DE3B58921", + "Track Type": "Remote" + }, + { + "Track ID": "5903", + "Name": "StarkCounty", + "Artist": "BONES & Cat Soup", + "Album Artist": "BONES & Cat Soup", + "Composer": "undef", + "Album": "ForbiddenImage", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5245768", + "Total Time": "143935", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "13", + "Year": "2021", + "Date Modified": "2021-11-20T17:06:33Z", + "Date Added": "2021-11-20T17:06:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781448030", + "Play Date UTC": "2023-10-29T15:13:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-10-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ForbiddenImage", + "Sort Artist": "BONES & Cat Soup", + "Sort Name": "StarkCounty", + "Persistent ID": "7E7DC7CA4F03BF56", + "Track Type": "Remote" + }, + { + "Track ID": "5905", + "Name": "Bang", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Hayden Coplen & Jason Suwito", + "Album": "Bang - Single", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "5169811", + "Total Time": "131440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2021-11-20T17:23:06Z", + "Date Added": "2021-11-20T17:23:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3775208828", + "Play Date UTC": "2023-08-18T10:07:08Z", + "Skip Count": "1", + "Skip Date": "2021-12-05T08:10:41Z", + "Release Date": "2021-11-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bang - Single", + "Sort Artist": "Sir Sly", + "Sort Name": "Bang", + "Persistent ID": "9E97D75995F7FBE7", + "Track Type": "Remote" + }, + { + "Track ID": "5907", + "Name": "Something Beautiful (feat. Masked Wolf)", + "Artist": "Tom Walker", + "Album Artist": "Tom Walker", + "Composer": "Tom Walker, Steve Mac & Harry Michael", + "Album": "Something Beautiful (Stripped) - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "6692596", + "Total Time": "186952", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2021", + "Date Modified": "2021-11-21T09:29:01Z", + "Date Added": "2021-11-21T09:29:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3780379989", + "Play Date UTC": "2023-10-17T06:33:09Z", + "Skip Count": "2", + "Skip Date": "2022-01-12T17:11:08Z", + "Release Date": "2021-10-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "5003", + "Sort Album": "Something Beautiful (Stripped) - Single", + "Sort Artist": "Tom Walker", + "Sort Name": "Something Beautiful (feat. Masked Wolf)", + "Persistent ID": "4BA05CA48FD884C1", + "Track Type": "Remote" + }, + { + "Track ID": "5909", + "Name": "I WANNA SEE SOME ASS (feat. JetsonMade)", + "Artist": "Jack Harlow", + "Album Artist": "Jack Harlow", + "Composer": "Jack Harlow, Kevin Gomringer, Tahj Morgan & Tim Gomringer", + "Album": "Sweet Action", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4720220", + "Total Time": "125302", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "7", + "Year": "2020", + "Date Modified": "2021-12-30T20:49:12Z", + "Date Added": "2021-12-30T20:49:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3770187509", + "Play Date UTC": "2023-06-21T07:18:29Z", + "Skip Count": "5", + "Skip Date": "2022-07-06T10:10:50Z", + "Release Date": "2020-03-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sweet Action", + "Sort Artist": "Jack Harlow", + "Sort Name": "I WANNA SEE SOME ASS (feat. JetsonMade)", + "Persistent ID": "803A9EC8AD9FC73E", + "Track Type": "Remote" + }, + { + "Track ID": "5911", + "Name": "Demons", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "undef", + "Album": "In Tongues - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6363604", + "Total Time": "176804", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2022-01-03T06:06:46Z", + "Date Added": "2022-01-03T06:06:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "61", + "Play Date": "3781347672", + "Play Date UTC": "2023-10-28T11:21:12Z", + "Skip Count": "3", + "Skip Date": "2022-10-30T18:07:16Z", + "Release Date": "2017-11-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "In Tongues - EP", + "Sort Artist": "Joji", + "Sort Name": "Demons", + "Persistent ID": "773D4B7CCDE736A9", + "Track Type": "Remote" + }, + { + "Track ID": "5913", + "Name": "Sad Saturdays", + "Artist": "JOBA", + "Album Artist": "JOBA", + "Composer": "Romil", + "Album": "Sad Saturdays - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9037366", + "Total Time": "267040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "2022-01-09T14:22:27Z", + "Date Added": "2022-01-09T14:22:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3781194406", + "Play Date UTC": "2023-10-26T16:46:46Z", + "Skip Count": "1", + "Skip Date": "2022-03-15T19:04:13Z", + "Release Date": "2015-07-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sad Saturdays - Single", + "Sort Artist": "JOBA", + "Sort Name": "Sad Saturdays", + "Persistent ID": "66D436DD770F9C68", + "Track Type": "Remote" + }, + { + "Track ID": "5915", + "Name": "Sink into the Floor", + "Artist": "Feng Suave", + "Album Artist": "Feng Suave", + "Composer": "Daniel de Jong, Daniel Leonard Elvis Schoemaker & Feng Suave", + "Album": "Feng Suave - EP", + "Genre": "Indie Pop", + "Kind": "Apple Music AAC audio file", + "Size": "10208429", + "Total Time": "281054", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2017", + "Date Modified": "2022-01-09T14:26:29Z", + "Date Added": "2022-01-09T14:26:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3780906507", + "Play Date UTC": "2023-10-23T08:48:27Z", + "Skip Count": "2", + "Skip Date": "2022-03-15T19:04:22Z", + "Release Date": "2017-07-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Feng Suave - EP", + "Sort Artist": "Feng Suave", + "Sort Name": "Sink into the Floor", + "Persistent ID": "17B17B85596B4FB0", + "Track Type": "Remote" + }, + { + "Track ID": "5917", + "Name": "Where We Go", + "Artist": "Jelani Aryeh", + "Album Artist": "Jelani Aryeh", + "Composer": "undef", + "Album": "Suburban Destinesia", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9692202", + "Total Time": "279088", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "7", + "Year": "2017", + "Date Modified": "2022-01-09T19:20:07Z", + "Date Added": "2022-01-09T19:20:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3781204635", + "Play Date UTC": "2023-10-26T19:37:15Z", + "Skip Count": "3", + "Skip Date": "2022-02-09T11:19:48Z", + "Release Date": "2017-09-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Suburban Destinesia", + "Sort Artist": "Jelani Aryeh", + "Sort Name": "Where We Go", + "Persistent ID": "BC4CB73E2A398424", + "Track Type": "Remote" + }, + { + "Track ID": "5919", + "Name": "Phantom Regret by Jim", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "The Weeknd, Jim Carrey, Daniel Lopatin, Max Martin, Oscar Holter & Matt Cohn", + "Album": "Dawn FM", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6446713", + "Total Time": "179580", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "16", + "Year": "2022", + "Date Modified": "2022-01-18T15:14:37Z", + "Date Added": "2022-01-18T15:14:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "62", + "Play Date": "3781060303", + "Play Date UTC": "2023-10-25T03:31:43Z", + "Skip Count": "8", + "Skip Date": "2022-12-29T18:00:17Z", + "Release Date": "2022-01-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Dawn FM", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Weeknd, Jim Carrey, Daniel Lopatin, Max Martin, Oscar Holter & Matt Cohn", + "Track Type": "Phantom Regret by Jim" + }, + { + "Track ID": "5921", + "Name": "Sacrifice", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "The Weeknd, Axel Hedfors, Carl Nordstr\u00f6m, Kevin Duane McCord, Max Martin, Oscar Holter, Sebastian Ingrosso & Steve Angello", + "Album": "Dawn FM", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7074229", + "Total Time": "188918", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2022", + "Date Modified": "2022-01-18T22:56:19Z", + "Date Added": "2022-01-18T22:56:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3766395822", + "Play Date UTC": "2023-05-08T10:03:42Z", + "Skip Count": "7", + "Skip Date": "2022-12-15T08:55:36Z", + "Release Date": "2022-01-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dawn FM", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Weeknd, Axel Hedfors, Carl Nordstr\u00f6m, Kevin Duane McCord, Max Martin, Oscar Holter, Sebastian Ingrosso & Steve Angello", + "Track Type": "Sacrifice" + }, + { + "Track ID": "5923", + "Name": "idk that bitch (feat. G Herbo)", + "Artist": "Gunna", + "Album Artist": "Gunna", + "Composer": "Alex Lustig, Chandler Durham, Herbert Randall Wright II & Sergio Kitchens", + "Album": "DRIP SEASON 4EVER", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7592339", + "Total Time": "210587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "20", + "Year": "2022", + "Date Modified": "2022-01-20T16:56:58Z", + "Date Added": "2022-01-20T16:56:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "61", + "Play Date": "3782803255", + "Play Date UTC": "2023-11-14T07:40:55Z", + "Skip Count": "4", + "Skip Date": "2022-04-23T21:04:56Z", + "Release Date": "2022-01-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "DRIP SEASON 4EVER", + "Sort Artist": "Gunna", + "Sort Name": "idk that bitch (feat. G Herbo)", + "Persistent ID": "299A77015D7EA602", + "Track Type": "Remote" + }, + { + "Track ID": "5925", + "Name": "lost souls (feat. Brent Faiyaz)", + "Artist": "Baby Keem", + "Album Artist": "Baby Keem", + "Composer": "Hykeem Carter, Jahaan Akil Sweet, Ruchaun Akers, Michee Lebrun & Christopher Brent Wood", + "Album": "The Melodic Blue", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9544544", + "Total Time": "269728", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "3", + "Year": "2021", + "Date Modified": "2022-01-24T20:42:31Z", + "Date Added": "2022-01-24T20:42:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3772519249", + "Play Date UTC": "2023-07-18T07:00:49Z", + "Skip Count": "2", + "Skip Date": "2022-06-19T07:32:04Z", + "Release Date": "2021-09-10T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "The Melodic Blue", + "Sort Artist": "Baby Keem", + "Sort Name": "lost souls (feat. Brent Faiyaz)", + "Persistent ID": "5DDBCE6ED9B30619", + "Track Type": "Remote" + }, + { + "Track ID": "5927", + "Name": "Where's My Love", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "Hurt for Me - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8778178", + "Total Time": "248333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2016", + "Date Modified": "2022-01-29T14:38:37Z", + "Date Added": "2022-01-29T14:38:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3766407608", + "Play Date UTC": "2023-05-08T13:20:08Z", + "Skip Count": "4", + "Skip Date": "2022-09-04T20:46:16Z", + "Release Date": "2016-01-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hurt for Me - EP", + "Sort Artist": "SYML", + "Sort Name": "Where's My Love", + "Persistent ID": "D811C8257DAA5E13", + "Track Type": "Remote" + }, + { + "Track ID": "5929", + "Name": "It's Called: Freefall", + "Artist": "Rainbow Kitten Surprise", + "Album Artist": "Rainbow Kitten Surprise", + "Composer": "Ela Melo", + "Album": "How To: Friend, Love, Freefall", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5586284", + "Total Time": "152327", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2022-02-22T15:06:35Z", + "Date Added": "2022-02-22T15:06:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3780845976", + "Play Date UTC": "2023-10-22T15:59:36Z", + "Skip Count": "4", + "Skip Date": "2022-10-01T09:49:48Z", + "Release Date": "2018-04-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "How To: Friend, Love, Freefall", + "Sort Artist": "Rainbow Kitten Surprise", + "Sort Name": "It's Called: Freefall", + "Persistent ID": "10D330C0223E9AD2", + "Track Type": "Remote" + }, + { + "Track ID": "5931", + "Name": "Wasted", + "Artist": "Rainbow Kitten Surprise", + "Album Artist": "Rainbow Kitten Surprise", + "Composer": "Ela Melo", + "Album": "RKS", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "7079198", + "Total Time": "197773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2015", + "Date Modified": "2022-02-22T15:50:38Z", + "Date Added": "2022-02-22T15:50:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "52", + "Play Date": "3781387728", + "Play Date UTC": "2023-10-28T22:28:48Z", + "Skip Count": "3", + "Skip Date": "2023-06-01T11:25:49Z", + "Release Date": "2015-04-25T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "RKS", + "Sort Artist": "Rainbow Kitten Surprise", + "Sort Name": "Wasted", + "Persistent ID": "C3D8C7E503ED7C1C", + "Track Type": "Remote" + }, + { + "Track ID": "5933", + "Name": "You're the One", + "Artist": "S+C+A+R+R", + "Album Artist": "Dan Levy", + "Composer": "undef", + "Album": "I Lost My Body (Original Motion Picture Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5994992", + "Total Time": "167987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "20", + "Year": "2019", + "Date Modified": "2022-03-06T11:29:39Z", + "Date Added": "2022-03-06T11:29:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3766756796", + "Play Date UTC": "2023-05-12T14:19:56Z", + "Skip Count": "2", + "Skip Date": "2022-05-10T08:59:12Z", + "Release Date": "2019-10-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Lost My Body (Original Motion Picture Soundtrack)", + "Sort Artist": "S+C+A+R+R", + "Sort Name": "You're the One", + "Persistent ID": "8BA1340475622A61", + "Track Type": "Remote" + }, + { + "Track ID": "5935", + "Name": "Spine Curves", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Spine Curves - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5860233", + "Total Time": "160480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2022-03-11T19:40:02Z", + "Date Added": "2022-03-11T19:40:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "146", + "Play Date": "3772635929", + "Play Date UTC": "2023-07-19T15:25:29Z", + "Skip Count": "3", + "Skip Date": "2022-06-03T15:46:44Z", + "Release Date": "2022-03-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Spine Curves - Single", + "Sort Artist": "Sir Sly", + "Sort Name": "Spine Curves", + "Persistent ID": "CC7A2D0FBA87E020", + "Track Type": "Remote" + }, + { + "Track ID": "5937", + "Name": "FUCKING YOUNG / PERFECT (feat. Charlie Wilson, Chaz Bundick, Sydney Bennett & Kali Uchis)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Kali Uchis, See Sub-songs & Tyler Okonma", + "Album": "Cherry Bomb + Instrumentals", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "15130365", + "Total Time": "401573", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2022-04-10T08:39:07Z", + "Date Added": "2022-04-10T08:39:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3780390820", + "Play Date UTC": "2023-10-17T09:33:40Z", + "Skip Count": "1", + "Skip Date": "2022-06-03T16:16:41Z", + "Release Date": "2015-04-09T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cherry Bomb + Instrumentals", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "FUCKING YOUNG / PERFECT (feat. Charlie Wilson, Chaz Bundick, Sydney Bennett & Kali Uchis)", + "Persistent ID": "D26DB97FCA90FF88", + "Track Type": "Remote" + }, + { + "Track ID": "5939", + "Name": "Bastard", + "Artist": "Tyler, The Creator", + "Album Artist": "Odd Future", + "Composer": "Tyler Okonma", + "Album": "12 Odd Future Songs", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12786214", + "Total Time": "369387", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2009", + "Date Modified": "2022-04-16T15:51:47Z", + "Date Added": "2022-04-16T15:51:47Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3767285222", + "Play Date UTC": "2023-05-18T17:07:02Z", + "Skip Count": "2", + "Skip Date": "2022-12-05T21:53:04Z", + "Release Date": "2009-12-25T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "12 Odd Future Songs", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "Bastard", + "Persistent ID": "8C6198C7F902F505", + "Track Type": "Remote" + }, + { + "Track ID": "5941", + "Name": "feel something", + "Artist": "Bea Miller", + "Album Artist": "Various Artists", + "Composer": "Bea Miller, Justin Tranter, Kennedi Lykken & Mike Sabath", + "Album": "\u0418\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0445\u0438\u0442\u044b", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6668814", + "Total Time": "180161", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "27", + "Year": "2019", + "Date Modified": "2022-04-16T17:13:39Z", + "Date Added": "2022-04-16T17:13:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3776319946", + "Play Date UTC": "2023-08-31T06:45:46Z", + "Skip Count": "2", + "Skip Date": "2022-12-15T11:14:29Z", + "Release Date": "2019-06-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "\u0418\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0445\u0438\u0442\u044b", + "Sort Artist": "Bea Miller", + "Sort Name": "feel something", + "Persistent ID": "7618B9F67F2A6CA9", + "Track Type": "Remote" + }, + { + "Track ID": "5943", + "Name": "Legends", + "Artist": "Juice WRLD", + "Album Artist": "Juice WRLD", + "Composer": "David Charles Marshall Biral, Denzel Michael-Akil Baptiste, Jarad Higgins & Russell Chell", + "Album": "Legends - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6903009", + "Total Time": "191840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2022-04-23T20:37:46Z", + "Date Added": "2022-04-23T20:37:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3779315006", + "Play Date UTC": "2023-10-04T22:43:26Z", + "Skip Count": "1", + "Skip Date": "2022-04-23T22:10:26Z", + "Release Date": "2018-06-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Legends - Single", + "Sort Artist": "Juice WRLD", + "Sort Name": "Legends", + "Persistent ID": "4BE206F5EC8C03BA", + "Track Type": "Remote" + }, + { + "Track ID": "5945", + "Name": "The Mandalorian", + "Artist": "Ludwig G\u00f6ransson", + "Album Artist": "Ludwig G\u00f6ransson", + "Composer": "Ludwig G\u00f6ransson", + "Album": "The Mandalorian: Chapter 1 (Original Score)", + "Genre": "Soundtrack", + "Kind": "AAC audio file", + "Size": "6956212", + "Total Time": "198862", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "9", + "Year": "2019", + "Date Modified": "2022-04-30T18:12:24Z", + "Date Added": "2022-04-30T18:12:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3748444515", + "Play Date UTC": "2022-10-12T15:35:15Z", + "Skip Count": "3", + "Skip Date": "2022-05-28T12:32:01Z", + "Release Date": "2019-11-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Mandalorian: Chapter 1 (Original Score)", + "Sort Artist": "Ludwig G\u00f6ransson", + "Sort Name": "Mandalorian", + "Persistent ID": "215BDA73056EDDAE", + "Track Type": "Remote" + }, + { + "Track ID": "5947", + "Name": "Closedloop", + "Artist": "Elliot Moss", + "Album Artist": "Elliot Moss", + "Composer": "Elliot Moss", + "Album": "Boomerang", + "Genre": "Indie Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9910383", + "Total Time": "281014", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2017", + "Date Modified": "2022-05-01T15:42:53Z", + "Date Added": "2022-05-01T15:42:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3774949178", + "Play Date UTC": "2023-08-15T09:59:38Z", + "Skip Count": "1", + "Skip Date": "2022-06-03T16:16:54Z", + "Release Date": "2017-02-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Boomerang", + "Sort Artist": "Elliot Moss", + "Sort Name": "Closedloop", + "Persistent ID": "E258C41964D26EAD", + "Track Type": "Remote" + }, + { + "Track ID": "5949", + "Name": "south africa", + "Artist": "Baby Keem", + "Album Artist": "Baby Keem", + "Composer": "Hykeem Carter & Danny Tannenbaum", + "Album": "The Melodic Blue", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6378762", + "Total Time": "174502", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2022-05-08T13:34:19Z", + "Date Added": "2022-05-08T13:34:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3766033897", + "Play Date UTC": "2023-05-04T05:31:37Z", + "Skip Count": "4", + "Skip Date": "2023-03-13T15:13:58Z", + "Release Date": "2021-09-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Melodic Blue", + "Sort Artist": "Baby Keem", + "Sort Name": "south africa", + "Persistent ID": "BEB8D9580A1FBFC1", + "Track Type": "Remote" + }, + { + "Track ID": "5951", + "Name": "Super Gremlin", + "Artist": "Kodak Black", + "Album Artist": "Sniper Gang", + "Composer": "Bill K. Kapri, Jacob Canady & Maik Alexander Timmermann", + "Album": "Sniper Gang Presents Syko Bob & Snapkatt: Nightmare Babies", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7191054", + "Total Time": "200548", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2021", + "Date Modified": "2022-05-16T22:00:09Z", + "Date Added": "2022-05-16T22:00:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3781083759", + "Play Date UTC": "2023-10-25T10:02:39Z", + "Skip Count": "2", + "Skip Date": "2022-05-21T13:29:52Z", + "Release Date": "2021-10-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sniper Gang Presents Syko Bob & Snapkatt: Nightmare Babies", + "Sort Artist": "Kodak Black", + "Sort Name": "Super Gremlin", + "Persistent ID": "9D99373AEE5ADD0A", + "Track Type": "Remote" + }, + { + "Track ID": "5953", + "Name": "pushin P (feat. Young Thug)", + "Artist": "Gunna & Future", + "Album Artist": "Gunna", + "Composer": "Jeffery Lamar Williams, Juke Wong, Nayvadius Wilburn, Sergio Kitchens & Wesley Glass", + "Album": "DRIP SEASON 4EVER", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5132292", + "Total Time": "136267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "20", + "Year": "2022", + "Date Modified": "2022-05-16T22:00:56Z", + "Date Added": "2022-05-16T22:00:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3783321621", + "Play Date UTC": "2023-11-20T07:40:21Z", + "Skip Count": "3", + "Skip Date": "2022-10-09T15:37:14Z", + "Release Date": "2022-01-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "DRIP SEASON 4EVER", + "Sort Artist": "Gunna & Future", + "Sort Name": "pushin P (feat. Young Thug)", + "Persistent ID": "858D4843C8C4C02E", + "Track Type": "Remote" + }, + { + "Track ID": "5955", + "Name": "N95 (Mixed)", + "Artist": "Kendrick Lamar", + "Album Artist": "Charli XCX", + "Composer": "undef", + "Album": "Today\u2019s Hits: June 2022 (DJ Mix)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6990409", + "Total Time": "192150", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "19", + "Year": "2022", + "Date Modified": "2022-05-17T05:24:34Z", + "Date Added": "2022-05-17T05:24:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3781386301", + "Play Date UTC": "2023-10-28T22:05:01Z", + "Skip Count": "2", + "Skip Date": "2022-07-31T23:12:19Z", + "Release Date": "2022-05-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Today\u2019s Hits: June 2022 (DJ Mix)", + "Sort Artist": "Kendrick Lamar", + "Sort Name": "N95 (Mixed)", + "Persistent ID": "6F660BD8AF2C7C9D", + "Track Type": "Remote" + }, + { + "Track ID": "5957", + "Name": "Tonight", + "Artist": "Sean Sison", + "Album Artist": "Sean Sison", + "Composer": "undef", + "Album": "Bloom", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "8239873", + "Total Time": "232773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2017", + "Date Modified": "2022-05-20T07:57:25Z", + "Date Added": "2022-05-20T07:57:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781162448", + "Play Date UTC": "2023-10-26T07:54:08Z", + "Skip Count": -1, + "Skip Date": "2022-06-03T16:17:04Z", + "Release Date": "2017-10-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bloom", + "Sort Artist": "Sean Sison", + "Sort Name": "Tonight", + "Persistent ID": "BD14075BACA3DDFD", + "Track Type": "Remote" + }, + { + "Track ID": "5959", + "Name": "Memories (feat. Kristian L\u00fcttge)", + "Artist": "meximelancholy", + "Album Artist": "meximelancholy", + "Composer": "Kristian Luttge & Leon Alvarez", + "Album": "Aimless Wonders, Vol. 1", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7353726", + "Total Time": "205000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-06-15T14:07:15Z", + "Date Added": "2022-06-15T14:07:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3783767731", + "Play Date UTC": "2023-11-25T11:35:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-05-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Aimless Wonders, Vol. 1", + "Sort Artist": "meximelancholy", + "Sort Name": "Memories (feat. Kristian L\u00fcttge)", + "Persistent ID": "9CAB90B46C84183D", + "Track Type": "Remote" + }, + { + "Track ID": "5961", + "Name": "Heartless", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "Abel Tesfaye, The Weeknd, Metro Boomin, Carlo \"Illangelo\" Montagnese & Andre Eric Proctor", + "Album": "After Hours", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7133186", + "Total Time": "198267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2022-06-18T16:59:33Z", + "Date Added": "2022-06-18T16:59:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781207794", + "Play Date UTC": "2023-10-26T20:29:54Z", + "Skip Count": "1", + "Skip Date": "2022-06-19T07:37:20Z", + "Release Date": "2019-11-27T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "After Hours", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Heartless", + "Track Type": "FDC31018B72DF6B0" + }, + { + "Track ID": "5963", + "Name": "Rage vs. Luv", + "Artist": "Tre Savage", + "Album Artist": "Tre Savage", + "Composer": "Tre Savage", + "Album": "Rage vs. Luv - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "4714552", + "Total Time": "124615", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2022-06-18T17:00:12Z", + "Date Added": "2022-06-18T17:00:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3782886615", + "Play Date UTC": "2023-11-15T06:50:15Z", + "Skip Count": "4", + "Skip Date": "2022-07-02T22:09:40Z", + "Release Date": "2021-05-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rage vs. Luv - Single", + "Sort Artist": "Tre Savage", + "Sort Name": "Rage vs. Luv", + "Persistent ID": "BD8D8E1EE02CC1DA", + "Track Type": "Remote" + }, + { + "Track ID": "5965", + "Name": "Shy Little Frog (Extended)", + "Artist": "SHIRL", + "Album Artist": "SHIRL", + "Composer": "Shirley Losmithgul", + "Album": "Shy Little Frog (Extended) [Extended] - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5232795", + "Total Time": "148349", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2022-07-08T20:22:36Z", + "Date Added": "2022-07-08T20:22:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3780773916", + "Play Date UTC": "2023-10-21T19:58:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-06-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Shy Little Frog (Extended) [Extended] - Single", + "Sort Artist": "SHIRL", + "Sort Name": "Shy Little Frog (Extended)", + "Persistent ID": "E16743ABE98FDEB5", + "Track Type": "Remote" + }, + { + "Track ID": "5967", + "Name": "Shy Little Frog (slowed + reverb)", + "Artist": "Sushisingz", + "Album Artist": "Sushisingz", + "Composer": "Maryam Sadra Rafie", + "Album": "Shy Little Frog (Slowed + Reverb) - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7970794", + "Total Time": "219528", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2022-07-08T20:24:42Z", + "Date Added": "2022-07-08T20:24:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "57", + "Play Date": "3775316018", + "Play Date UTC": "2023-08-19T15:53:38Z", + "Skip Count": "2", + "Skip Date": "2022-11-11T18:22:08Z", + "Release Date": "2021-08-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Shy Little Frog (Slowed + Reverb) - Single", + "Sort Artist": "Sushisingz", + "Sort Name": "Shy Little Frog (slowed + reverb)", + "Persistent ID": "B439A8D873ED1A27", + "Track Type": "Remote" + }, + { + "Track ID": "5969", + "Name": "this is what falling in love feels like", + "Artist": "JVKE", + "Album Artist": "JVKE", + "Composer": "Jake Lawson & Zac Lawson", + "Album": "this is what falling in love feels like - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "4861447", + "Total Time": "120308", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2022-07-08T20:35:19Z", + "Date Added": "2022-07-08T20:35:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3776170423", + "Play Date UTC": "2023-08-29T13:13:43Z", + "Skip Count": "2", + "Skip Date": "2022-07-12T19:03:32Z", + "Release Date": "2021-09-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "this is what falling in love feels like - Single", + "Sort Artist": "JVKE", + "Sort Name": "this is what falling in love feels like", + "Persistent ID": "8754C506ACB4B049", + "Track Type": "Remote" + }, + { + "Track ID": "5971", + "Name": "ERYS", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Louis Gabe Basso, Mateo Arias, Nick Stoubis, Tyler Cole & Samuel Ray", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "16142848", + "Total Time": "471771", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3783492222", + "Play Date UTC": "2023-11-22T07:03:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "ERYS", + "Persistent ID": "D1D40FE75BE825BB", + "Track Type": "Remote" + }, + { + "Track ID": "5973", + "Name": "Blackout", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Hugo Chan", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "13853189", + "Total Time": "400666", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3783665081", + "Play Date UTC": "2023-11-24T07:04:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "Blackout", + "Persistent ID": "1218A5AA83003921", + "Track Type": "Remote" + }, + { + "Track ID": "5975", + "Name": "P", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Willow Smith & Peder Losneg\u00e5rd", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6108417", + "Total Time": "168286", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3775745969", + "Play Date UTC": "2023-08-24T15:19:29Z", + "Skip Count": "2", + "Skip Date": "2022-08-26T15:52:27Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "P", + "Persistent ID": "A0306C4EBC658A7A", + "Track Type": "Remote" + }, + { + "Track ID": "5977", + "Name": "Chateau (feat. A$AP Rocky)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Tremaine Winfrey, Omarr Rambert, Rakim Mayers & Kuwanna Jasmine Moore", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4845463", + "Total Time": "135889", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3777367357", + "Play Date UTC": "2023-09-12T09:42:37Z", + "Skip Count": "2", + "Skip Date": "2022-10-02T15:27:19Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "Chateau (feat. A$AP Rocky)", + "Persistent ID": "8B9B126E1BBD57E1", + "Track Type": "Remote" + }, + { + "Track ID": "5979", + "Name": "Pain", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Hugo Chan, Tyler Cole, Melanie Pereira & Barbara Pravy", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12854365", + "Total Time": "375310", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3767797790", + "Play Date UTC": "2023-05-24T15:29:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "Pain", + "Persistent ID": "CD5935FB77E660E5", + "Track Type": "Remote" + }, + { + "Track ID": "5981", + "Name": "On My Own (feat. Kid Cudi)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Kyle Edwards, Omarr Rambert, Scott Mescudi & Darrien Overton", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8528138", + "Total Time": "244715", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3780772597", + "Play Date UTC": "2023-10-21T19:36:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "On My Own (feat. Kid Cudi)", + "Persistent ID": "76EC3AB763939D9D", + "Track Type": "Remote" + }, + { + "Track ID": "5983", + "Name": "I", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Peder Losneg\u00e5rd & Jasper Harris", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4850646", + "Total Time": "130345", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3772018515", + "Play Date UTC": "2023-07-12T11:55:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "I", + "Persistent ID": "14A93A55FE0ED042", + "Track Type": "Remote" + }, + { + "Track ID": "5985", + "Name": "K", + "Artist": "Jaden & Lido", + "Album Artist": "Jaden", + "Composer": "Jaden, Harrison Rhodes & Peder Losneg\u00e5rd", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9681490", + "Total Time": "280713", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3779863731", + "Play Date UTC": "2023-10-11T07:08:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden & Lido", + "Sort Name": "K", + "Persistent ID": "148840D5DF1BDD68", + "Track Type": "Remote" + }, + { + "Track ID": "5987", + "Name": "NOIZE (feat. Tyler, The Creator)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Austin Owens, Keanu Torres, James Foye III \"Keyz\", Omarr Rambert & Tyler Okonma", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8935619", + "Total Time": "247758", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3781384938", + "Play Date UTC": "2023-10-28T21:42:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "NOIZE (feat. Tyler, The Creator)", + "Persistent ID": "659FB4554BA78D54", + "Track Type": "Remote" + }, + { + "Track ID": "5989", + "Name": "Again (feat. SYRE)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Hugo Chan", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9495492", + "Total Time": "269816", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3781463854", + "Play Date UTC": "2023-10-29T19:37:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "Again (feat. SYRE)", + "Persistent ID": "17C7FEC1CB9D160F", + "Track Type": "Remote" + }, + { + "Track ID": "5991", + "Name": "i-drip-or-is", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Hugo Chan, Austin Owens, Keanu Torres, James Foye III \"Keyz\" & Omarr Rambert", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8289294", + "Total Time": "237020", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3779556357", + "Play Date UTC": "2023-10-07T17:45:57Z", + "Skip Count": "1", + "Skip Date": "2022-08-13T06:26:34Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "i-drip-or-is", + "Persistent ID": "64AF7464D050B7A6", + "Track Type": "Remote" + }, + { + "Track ID": "5993", + "Name": "Got It", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden & Brytavious Lakeith Chambers", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3068719", + "Total Time": "76689", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3781063226", + "Play Date UTC": "2023-10-25T04:20:26Z", + "Skip Count": "1", + "Skip Date": "2023-10-29T01:13:56Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "Got It", + "Persistent ID": "68C1204C4AD9EF81", + "Track Type": "Remote" + }, + { + "Track ID": "5995", + "Name": "Mission", + "Artist": "Jaden & Trinidad James", + "Album Artist": "Jaden", + "Composer": "Jaden, Tremaine Winfrey, Omarr Rambert, Hugo Chan & Nicholaus Williams", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8830208", + "Total Time": "251341", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3758711493", + "Play Date UTC": "2023-02-08T11:31:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden & Trinidad James", + "Sort Name": "Mission", + "Persistent ID": "F58870AB3E447ADF", + "Track Type": "Remote" + }, + { + "Track ID": "5997", + "Name": "Fire Dept", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Michael Musselman, Zach Tabori & Hugo Chan", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3785444", + "Total Time": "102342", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783411280", + "Play Date UTC": "2023-11-21T08:34:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "Fire Dept", + "Persistent ID": "34A7B6B315992B54", + "Track Type": "Remote" + }, + { + "Track ID": "5999", + "Name": "Summertime in Paris (feat. Willow)", + "Artist": "Jaden", + "Album Artist": "Jaden", + "Composer": "Jaden, Josiah Bell, Omarr Rambert, Willow Smith, Mateo Arias, Tyler Cole & Kris Wu", + "Album": "ERYS", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9493581", + "Total Time": "270960", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2022-07-21T09:16:33Z", + "Date Added": "2022-07-21T09:16:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3770097753", + "Play Date UTC": "2023-06-20T06:22:33Z", + "Skip Count": "1", + "Skip Date": "2023-02-26T20:04:43Z", + "Release Date": "2019-07-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ERYS", + "Sort Artist": "Jaden", + "Sort Name": "Summertime in Paris (feat. Willow)", + "Persistent ID": "CBAA283DF42FDEE7", + "Track Type": "Remote" + }, + { + "Track ID": "6001", + "Name": "Kill Us All (feat. Denzel Curry)", + "Artist": "The Neighbourhood", + "Album Artist": "The Neighbourhood", + "Composer": "Jesse\u00ae, Lars Stalfors, Zachary Abels, Jeremiah Freedman, Brandon Fried & Michael Margott", + "Album": "Hard To Imagine The Neighbourhood Ever Changing", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5955872", + "Total Time": "161947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "21", + "Year": "2018", + "Date Modified": "2022-07-23T19:12:40Z", + "Date Added": "2022-07-23T19:12:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3783693395", + "Play Date UTC": "2023-11-24T14:56:35Z", + "Skip Count": "2", + "Skip Date": "2023-04-06T13:50:04Z", + "Release Date": "2018-09-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hard To Imagine The Neighbourhood Ever Changing", + "Sort Artist": "Neighbourhood", + "Sort Name": "Neighbourhood", + "Persistent ID": "Kill Us All (feat. Denzel Curry)", + "Track Type": "0CA90971A462061C" + }, + { + "Track ID": "6003", + "Name": "Piledriver Waltz", + "Artist": "Alex Turner", + "Album Artist": "Alex Turner", + "Composer": "Alex Turner", + "Album": "Submarine - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7319774", + "Total Time": "204880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2011", + "Date Modified": "2022-07-30T15:13:04Z", + "Date Added": "2022-07-30T15:13:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783664358", + "Play Date UTC": "2023-11-24T06:52:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Submarine - EP", + "Sort Artist": "Alex Turner", + "Sort Name": "Piledriver Waltz", + "Persistent ID": "76A8035110C7368E", + "Track Type": "Remote" + }, + { + "Track ID": "6005", + "Name": "Stuck On the Puzzle", + "Artist": "Alex Turner", + "Album Artist": "Alex Turner", + "Composer": "Alex Turner", + "Album": "Submarine - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7658694", + "Total Time": "211053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "6", + "Year": "2011", + "Date Modified": "2022-07-30T15:15:10Z", + "Date Added": "2022-07-30T15:15:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3780833458", + "Play Date UTC": "2023-10-22T12:30:58Z", + "Skip Count": "1", + "Skip Date": "2022-10-06T15:30:45Z", + "Release Date": "2011-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Submarine - EP", + "Sort Artist": "Alex Turner", + "Sort Name": "Stuck On the Puzzle", + "Persistent ID": "3C76E40E8101C77B", + "Track Type": "Remote" + }, + { + "Track ID": "6007", + "Name": "It's Hard to Get Around the Wind", + "Artist": "Alex Turner", + "Album Artist": "Alex Turner", + "Composer": "Alex Turner", + "Album": "Submarine - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8665825", + "Total Time": "247013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2011", + "Date Modified": "2022-07-30T15:15:10Z", + "Date Added": "2022-07-30T15:15:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3772089318", + "Play Date UTC": "2023-07-13T07:35:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Submarine - EP", + "Sort Artist": "Alex Turner", + "Sort Name": "It's Hard to Get Around the Wind", + "Persistent ID": "4BECFE7D4CADD981", + "Track Type": "Remote" + }, + { + "Track ID": "6009", + "Name": "Glass In the Park", + "Artist": "Alex Turner", + "Album Artist": "Alex Turner", + "Composer": "Alex Turner", + "Album": "Submarine - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8442765", + "Total Time": "239653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2011", + "Date Modified": "2022-07-30T15:15:10Z", + "Date Added": "2022-07-30T15:15:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781197914", + "Play Date UTC": "2023-10-26T17:45:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Submarine - EP", + "Sort Artist": "Alex Turner", + "Sort Name": "Glass In the Park", + "Persistent ID": "FEBDAC2E42E954AC", + "Track Type": "Remote" + }, + { + "Track ID": "6011", + "Name": "Hiding Tonight", + "Artist": "Alex Turner", + "Album Artist": "Alex Turner", + "Composer": "Alex Turner", + "Album": "Submarine - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7478245", + "Total Time": "186720", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2011", + "Date Modified": "2022-07-30T15:15:10Z", + "Date Added": "2022-07-30T15:15:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3780903774", + "Play Date UTC": "2023-10-23T08:02:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Submarine - EP", + "Sort Artist": "Alex Turner", + "Sort Name": "Hiding Tonight", + "Persistent ID": "38FE0A9E6E64F8BB", + "Track Type": "Remote" + }, + { + "Track ID": "6013", + "Name": "Stuck On the Puzzle (Intro)", + "Artist": "Alex Turner", + "Album Artist": "Alex Turner", + "Composer": "Alex Turner", + "Album": "Submarine - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "2292858", + "Total Time": "53760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2011", + "Date Modified": "2022-07-30T15:15:10Z", + "Date Added": "2022-07-30T15:15:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3760794690", + "Play Date UTC": "2023-03-04T14:11:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-02-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Submarine - EP", + "Sort Artist": "Alex Turner", + "Sort Name": "Stuck On the Puzzle (Intro)", + "Persistent ID": "7B2635D3A408A0EE", + "Track Type": "Remote" + }, + { + "Track ID": "6015", + "Name": "Tranquility Base Hotel & Casino", + "Artist": "Arctic Monkeys", + "Album Artist": "Arctic Monkeys", + "Composer": "Alex Turner", + "Album": "Tranquility Base Hotel & Casino", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7542117", + "Total Time": "211968", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2018", + "Date Modified": "2022-07-30T15:19:59Z", + "Date Added": "2022-07-30T15:19:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781206894", + "Play Date UTC": "2023-10-26T20:14:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-05-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tranquility Base Hotel & Casino", + "Sort Artist": "Arctic Monkeys", + "Sort Name": "Tranquility Base Hotel & Casino", + "Persistent ID": "371E05C9C7FD5A78", + "Track Type": "Remote" + }, + { + "Track ID": "6017", + "Name": "Steppin on N****s", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Sh\u00e9yaa Bin Abraham-Joseph, Leland Wayne, Joe Cooley, Rodney Oliver & Jeffrey Page", + "Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5425789", + "Total Time": "140833", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "11", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2022-08-10T10:19:25Z", + "Date Added": "2022-08-10T10:19:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3768835765", + "Play Date UTC": "2023-06-05T15:49:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Steppin on Niggas", + "Persistent ID": "A6DF86D5CD8C72C9", + "Track Type": "Remote" + }, + { + "Track ID": "6019", + "Name": "A.D.H.D", + "Artist": "Kendrick Lamar", + "Album Artist": "Kendrick Lamar", + "Composer": "undef", + "Album": "Section.80", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7783131", + "Total Time": "215509", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "15", + "Year": "2011", + "Date Modified": "2022-08-10T18:13:36Z", + "Date Added": "2022-08-10T18:13:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3777368909", + "Play Date UTC": "2023-09-12T10:08:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-07-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Section.80", + "Sort Artist": "Kendrick Lamar", + "Sort Name": "A.D.H.D", + "Persistent ID": "9BF61678E9BCA39D", + "Track Type": "Remote" + }, + { + "Track ID": "6021", + "Name": "Flagpole Sitta (feat. Elohim)", + "Artist": "AWOLNATION & Elohim", + "Album Artist": "AWOLNATION", + "Composer": "Huffman Aaron McKenna, Lin Jeff Junyen, Nelson Sean Christopher & Sult Evan C", + "Album": "My Echo, My Shadow, My Covers & Me", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8995249", + "Total Time": "249212", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2022", + "Date Modified": "2022-08-19T17:26:49Z", + "Date Added": "2022-08-19T17:26:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3781209674", + "Play Date UTC": "2023-10-26T21:01:14Z", + "Skip Count": -1, + "Skip Date": "2022-09-26T10:07:24Z", + "Release Date": "2022-05-06T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "My Echo, My Shadow, My Covers & Me", + "Sort Artist": "AWOLNATION & Elohim", + "Sort Name": "Flagpole Sitta (feat. Elohim)", + "Persistent ID": "4A84037DF77BFAC9", + "Track Type": "Remote" + }, + { + "Track ID": "6023", + "Name": "CabinInTheWoods", + "Artist": "BONES & grayera", + "Album Artist": "BONES & grayera", + "Composer": "undef", + "Album": "WITHERED", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5284494", + "Total Time": "144065", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "17", + "Year": "2022", + "Date Modified": "2022-08-19T18:27:58Z", + "Date Added": "2022-08-19T18:27:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3765360944", + "Play Date UTC": "2023-04-26T10:35:44Z", + "Skip Count": "1", + "Skip Date": "2022-08-26T19:43:13Z", + "Release Date": "2022-04-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WITHERED", + "Sort Artist": "BONES & grayera", + "Sort Name": "CabinInTheWoods", + "Persistent ID": "68DD87B4F3EA2B54", + "Track Type": "Remote" + }, + { + "Track ID": "6025", + "Name": "I Swear", + "Artist": "Tidus", + "Album Artist": "Tidus", + "Composer": "Randy Bondurant, Kesha Shantrell, Candace Coles & Ronald O'Hannon", + "Album": "Once You Believe in Yourself", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7164835", + "Total Time": "197486", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "8", + "Year": "2022", + "Date Modified": "2022-08-19T19:19:36Z", + "Date Added": "2022-08-19T19:19:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "45", + "Play Date": "3781334543", + "Play Date UTC": "2023-10-28T07:42:23Z", + "Skip Count": "1", + "Skip Date": "2022-09-08T10:36:54Z", + "Release Date": "2022-05-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Once You Believe in Yourself", + "Sort Artist": "Tidus", + "Sort Name": "I Swear", + "Persistent ID": "68DC902755098014", + "Track Type": "Remote" + }, + { + "Track ID": "6027", + "Name": "Take Me To Church", + "Artist": "Hozier", + "Album Artist": "Hozier", + "Composer": "Hozier", + "Album": "Hozier", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8652571", + "Total Time": "241688", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2013", + "Date Modified": "2022-08-30T18:58:00Z", + "Date Added": "2022-08-30T18:58:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3767710671", + "Play Date UTC": "2023-05-23T15:17:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hozier", + "Sort Artist": "Hozier", + "Sort Name": "Take Me To Church", + "Persistent ID": "E6ABCFEC6F9067E3", + "Track Type": "Remote" + }, + { + "Track ID": "6029", + "Name": "Eyes On Fire", + "Artist": "Blue Foundation", + "Album Artist": "Blue Foundation", + "Composer": "Kirstine Stubbe Teglbj\u00e6rg & TOBIAS WILNER", + "Album": "Life of a Ghost", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "10615300", + "Total Time": "302827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2007", + "Date Modified": "2022-08-30T19:39:17Z", + "Date Added": "2022-08-30T19:39:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783451003", + "Play Date UTC": "2023-11-21T19:36:43Z", + "Skip Count": "1", + "Skip Date": "2022-11-17T14:18:23Z", + "Release Date": "2007-09-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life of a Ghost", + "Sort Artist": "Blue Foundation", + "Sort Name": "Eyes On Fire", + "Persistent ID": "A4E0F4C759056A68", + "Track Type": "Remote" + }, + { + "Track ID": "6031", + "Name": "golden hour", + "Artist": "JVKE", + "Album Artist": "JVKE", + "Composer": "Jake Lawson & Zac Lawson", + "Album": "this is what ____ feels like (Vol. 1-4)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7828699", + "Total Time": "209260", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2022", + "Date Modified": "2022-09-04T15:56:49Z", + "Date Added": "2022-09-04T15:56:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783672566", + "Play Date UTC": "2023-11-24T09:09:26Z", + "Skip Count": "3", + "Skip Date": "2022-12-12T07:50:10Z", + "Release Date": "2022-07-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "this is what ____ feels like (Vol. 1-4)", + "Sort Artist": "JVKE", + "Sort Name": "golden hour", + "Persistent ID": "FEA164BECEEE99E0", + "Track Type": "Remote" + }, + { + "Track ID": "6033", + "Name": "bad vibes forever (feat. PnB Rock & Trippie Redd)", + "Artist": "XXXTENTACION", + "Album Artist": "XXXTENTACION", + "Composer": "Jahseh Onfroy, John Cunningham, Rakim Allen, Michael L White & Robert Soukiasyan", + "Album": "Bad Vibes Forever", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5494618", + "Total Time": "150475", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "25", + "Year": "2019", + "Date Modified": "2022-09-05T12:10:36Z", + "Date Added": "2022-09-05T12:10:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3782988712", + "Play Date UTC": "2023-11-16T11:11:52Z", + "Skip Count": "1", + "Skip Date": "2022-09-25T10:10:11Z", + "Release Date": "2019-11-22T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bad Vibes Forever", + "Sort Artist": "XXXTENTACION", + "Sort Name": "bad vibes forever (feat. PnB Rock & Trippie Redd)", + "Persistent ID": "EF46379F61F6D9AB", + "Track Type": "Remote" + }, + { + "Track ID": "6035", + "Name": "Art Deco", + "Artist": "Lana Del Rey", + "Album Artist": "Lana Del Rey", + "Composer": "Lana Del Rey & Rick Nowels", + "Album": "Honeymoon", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10233689", + "Total Time": "295067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2015", + "Date Modified": "2022-09-06T12:59:33Z", + "Date Added": "2022-09-06T12:59:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3774960633", + "Play Date UTC": "2023-08-15T13:10:33Z", + "Skip Count": "1", + "Skip Date": "2022-10-02T13:48:04Z", + "Release Date": "2015-09-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Honeymoon", + "Sort Artist": "Lana Del Rey", + "Sort Name": "Art Deco", + "Persistent ID": "B3A8F51D50687A23", + "Track Type": "Remote" + }, + { + "Track ID": "6037", + "Name": "In This Dark Time", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone", + "Album": "Say Yes, Say No", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7779194", + "Total Time": "207707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2022-09-06T13:45:39Z", + "Date Added": "2022-09-06T13:45:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3776169246", + "Play Date UTC": "2023-08-29T12:54:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-04-24T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Say Yes, Say No", + "Sort Artist": "Aime Simone", + "Sort Name": "In This Dark Time", + "Persistent ID": "E1CD28DA143762F3", + "Track Type": "Remote" + }, + { + "Track ID": "6039", + "Name": "Welcome Home", + "Artist": "Radical Face", + "Album Artist": "Radical Face", + "Composer": "undef", + "Album": "Touch the Sky (Welcome Home) - EP", + "Genre": "Traditional Folk", + "Kind": "Apple Music AAC audio file", + "Size": "11053291", + "Total Time": "287393", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2007", + "Date Modified": "2022-09-09T12:20:56Z", + "Date Added": "2022-09-09T12:20:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781165357", + "Play Date UTC": "2023-10-26T08:42:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-03-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Touch the Sky (Welcome Home) - EP", + "Sort Artist": "Radical Face", + "Sort Name": "Welcome Home", + "Persistent ID": "941F9A5FEA732E6E", + "Track Type": "Remote" + }, + { + "Track ID": "6041", + "Name": "The Lost Song", + "Artist": "The Cat Empire", + "Album Artist": "The Cat Empire", + "Composer": "The Cat Empire", + "Album": "The Cat Empire", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "7001609", + "Total Time": "195800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2003", + "Date Modified": "2022-09-13T15:17:05Z", + "Date Added": "2022-09-13T15:17:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3781192596", + "Play Date UTC": "2023-10-26T16:16:36Z", + "Skip Count": "1", + "Skip Date": "2022-10-28T14:41:57Z", + "Release Date": "2003-10-24T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Cat Empire", + "Sort Artist": "Cat Empire", + "Sort Name": "Cat Empire", + "Persistent ID": "Cat Empire", + "Track Type": "Lost Song" + }, + { + "Track ID": "6043", + "Name": "No Limits", + "Artist": "DaniLeigh", + "Album Artist": "DaniLeigh", + "Composer": "Danielle Curiel & Jos\u00e9 M. Velazquez", + "Album": "No Limits - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3889946", + "Total Time": "100319", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2022-09-15T20:03:06Z", + "Date Added": "2022-09-15T20:03:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3770216864", + "Play Date UTC": "2023-06-21T15:27:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Limits - Single", + "Sort Artist": "DaniLeigh", + "Sort Name": "No Limits", + "Persistent ID": "4B0C382C1E98E597", + "Track Type": "Remote" + }, + { + "Track ID": "6045", + "Name": "Lil Bebe", + "Artist": "DaniLeigh", + "Album Artist": "DaniLeigh", + "Composer": "Danielle Curiel, Ishmael Montague, Jaz Woodard, Jocelyn Donald, Tavoris Javon Hollins Jr. & Ronald M. Ferebee Jr", + "Album": "The Plan", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6350727", + "Total Time": "174086", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2022-09-15T20:03:59Z", + "Date Added": "2022-09-15T20:03:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3772520257", + "Play Date UTC": "2023-07-18T07:17:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-07-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Plan", + "Sort Artist": "DaniLeigh", + "Sort Name": "Lil Bebe", + "Persistent ID": "FD22DE9EC2339305", + "Track Type": "Remote" + }, + { + "Track ID": "6047", + "Name": "Tell Them (feat. Moses Sumney & Metro Boomin)", + "Artist": "James Blake", + "Album Artist": "James Blake", + "Composer": "James Blake, Moses Sumney, Metro Boomin, Allen Ritter, Dom Maker & Anthony Maker", + "Album": "Assume Form", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7420448", + "Total Time": "208400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2022-09-20T20:26:04Z", + "Date Added": "2022-09-20T20:26:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3770487466", + "Play Date UTC": "2023-06-24T18:37:46Z", + "Skip Count": "1", + "Skip Date": "2022-09-25T10:08:42Z", + "Release Date": "2019-01-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Assume Form", + "Sort Artist": "James Blake", + "Sort Name": "Tell Them (feat. Moses Sumney & Metro Boomin)", + "Persistent ID": "5443EE511179CDB1", + "Track Type": "Remote" + }, + { + "Track ID": "6049", + "Name": "Trap (feat. Lil Baby)", + "Artist": "SAINt JHN", + "Album Artist": "SAINt JHN", + "Composer": "Carlos St. John, Dominique' Jones & Lee Stashenko", + "Album": "Ghetto Lenny's Love Songs", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6644345", + "Total Time": "184699", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "14", + "Year": "2019", + "Date Modified": "2022-09-22T20:32:32Z", + "Date Added": "2022-09-22T20:32:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781394234", + "Play Date UTC": "2023-10-29T00:17:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-02-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ghetto Lenny's Love Songs", + "Sort Artist": "SAINt JHN", + "Sort Name": "Trap (feat. Lil Baby)", + "Persistent ID": "5BA3C0FA64B04789", + "Track Type": "Remote" + }, + { + "Track ID": "6051", + "Name": "NOT WHAT YOU WANTED", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone", + "Album": "NOT WHAT YOU WANTED - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7597347", + "Total Time": "214000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2022-09-26T10:25:53Z", + "Date Added": "2022-09-26T10:25:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3776163817", + "Play Date UTC": "2023-08-29T11:23:37Z", + "Skip Count": -1, + "Skip Date": "2022-10-22T21:41:46Z", + "Release Date": "2022-06-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT WHAT YOU WANTED - Single", + "Sort Artist": "Aime Simone", + "Sort Name": "NOT WHAT YOU WANTED", + "Persistent ID": "EC530DE87A1E40F7", + "Track Type": "Remote" + }, + { + "Track ID": "6053", + "Name": "Strange Inside", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone", + "Album": "Say Yes, Say No", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8125358", + "Total Time": "209280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2022-09-26T12:34:49Z", + "Date Added": "2022-09-26T12:34:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3773534047", + "Play Date UTC": "2023-07-30T00:54:07Z", + "Skip Count": "1", + "Skip Date": "2022-10-11T10:33:06Z", + "Release Date": "2020-07-03T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Say Yes, Say No", + "Sort Artist": "Aime Simone", + "Sort Name": "Strange Inside", + "Persistent ID": "6B39CF9B69A4F85C", + "Track Type": "Remote" + }, + { + "Track ID": "6055", + "Name": "Don't Be Sad", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone", + "Album": "Say Yes, Say No", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8154515", + "Total Time": "223107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2022-09-26T12:37:38Z", + "Date Added": "2022-09-26T12:37:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3772518624", + "Play Date UTC": "2023-07-18T06:50:24Z", + "Skip Count": "4", + "Skip Date": "2023-05-11T21:41:55Z", + "Release Date": "2020-07-31T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Say Yes, Say No", + "Sort Artist": "Aime Simone", + "Sort Name": "Don't Be Sad", + "Persistent ID": "41E7C6C676D9B299", + "Track Type": "Remote" + }, + { + "Track ID": "6057", + "Name": "Hold Me Alive", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone", + "Album": "Say Yes, Say No", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9284441", + "Total Time": "240787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2022-09-26T13:14:19Z", + "Date Added": "2022-09-26T13:14:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3766394599", + "Play Date UTC": "2023-05-08T09:43:19Z", + "Skip Count": "1", + "Skip Date": "2022-09-26T18:51:50Z", + "Release Date": "2020-07-31T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Say Yes, Say No", + "Sort Artist": "Aime Simone", + "Sort Name": "Hold Me Alive", + "Persistent ID": "C6B1BFBCCC3A1E78", + "Track Type": "Remote" + }, + { + "Track ID": "6059", + "Name": "Humankind", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone", + "Album": "Say Yes, Say No", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8829664", + "Total Time": "236040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2022-09-28T19:20:42Z", + "Date Added": "2022-09-28T19:20:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783848873", + "Play Date UTC": "2023-11-26T10:07:53Z", + "Skip Count": "1", + "Skip Date": "2022-10-02T10:30:45Z", + "Release Date": "2020-07-31T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Say Yes, Say No", + "Sort Artist": "Aime Simone", + "Sort Name": "Humankind", + "Persistent ID": "9957A8F6ED188E39", + "Track Type": "Remote" + }, + { + "Track ID": "6061", + "Name": "The Best Part of Life", + "Artist": "SAINt JHN", + "Album Artist": "SAINt JHN", + "Composer": "Adeyinka Bankole, Andre Robertson & Carlos St. John", + "Album": "The Best Part of Life - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7110282", + "Total Time": "196874", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2022-09-30T17:34:52Z", + "Date Added": "2022-09-30T17:34:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "40", + "Play Date": "3783774172", + "Play Date UTC": "2023-11-25T13:22:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-12-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Best Part of Life - Single", + "Sort Artist": "SAINt JHN", + "Sort Name": "Best Part of Life", + "Persistent ID": "50C3D91156502572", + "Track Type": "Remote" + }, + { + "Track ID": "6063", + "Name": "Highway Love", + "Artist": "IVOXYGEN", + "Album Artist": "IVOXYGEN", + "Composer": "Oxana Svoboda", + "Album": "Highway Love - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7223626", + "Total Time": "200178", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2022-09-30T17:35:05Z", + "Date Added": "2022-09-30T17:35:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3777022915", + "Play Date UTC": "2023-09-08T10:01:55Z", + "Skip Count": "3", + "Skip Date": "2022-11-09T21:20:41Z", + "Release Date": "2020-05-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Highway Love - Single", + "Sort Artist": "IVOXYGEN", + "Sort Name": "Highway Love", + "Persistent ID": "B326A414C4B4B2F5", + "Track Type": "Remote" + }, + { + "Track ID": "6065", + "Name": "Doudou", + "Artist": "Squidji", + "Album Artist": "Squidji", + "Composer": "Matheo Walerstein & Fr\u00e9d\u00e9ric Massamba", + "Album": "Doudou - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5986737", + "Total Time": "162325", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2022-10-17T05:25:25Z", + "Date Added": "2022-10-17T05:25:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "53", + "Play Date": "3780916627", + "Play Date UTC": "2023-10-23T11:37:07Z", + "Skip Count": -1, + "Skip Date": "2022-10-17T05:28:31Z", + "Release Date": "2018-12-19T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Doudou - Single", + "Sort Artist": "Squidji", + "Sort Name": "Doudou", + "Persistent ID": "64E3505B4FEECE27", + "Track Type": "Remote" + }, + { + "Track ID": "6067", + "Name": "Earth Song", + "Artist": "Michael Jackson", + "Album Artist": "Michael Jackson", + "Composer": "Michael Jackson", + "Album": "Michael Jackson's This Is It (The Music That Inspired the Movie)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "14866152", + "Total Time": "406211", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "12", + "Track Count": "16", + "Year": "1982", + "Date Modified": "2022-10-21T21:12:46Z", + "Date Added": "2022-10-21T21:12:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3772012853", + "Play Date UTC": "2023-07-12T10:20:53Z", + "Skip Count": "1", + "Skip Date": "2022-10-28T18:11:58Z", + "Release Date": "1982-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Michael Jackson's This Is It (The Music That Inspired the Movie)", + "Sort Artist": "Michael Jackson", + "Sort Name": "Earth Song", + "Persistent ID": "0FD56F76550CC06F", + "Track Type": "Remote" + }, + { + "Track ID": "6069", + "Name": "Darkskin", + "Artist": "Squidji", + "Album Artist": "Squidji", + "Composer": "Matheo Walerstein & Massamba Frederic", + "Album": "Darkskin - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5295510", + "Total Time": "144771", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2022-10-27T16:08:12Z", + "Date Added": "2022-10-27T16:08:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3770190193", + "Play Date UTC": "2023-06-21T08:03:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Darkskin - Single", + "Sort Artist": "Squidji", + "Sort Name": "Darkskin", + "Persistent ID": "3137A492EDA50045", + "Track Type": "Remote" + }, + { + "Track ID": "6071", + "Name": "Blessed", + "Artist": "August Charles", + "Album Artist": "August Charles", + "Composer": "Augustine Danny Chiyesu & Gabriel Gifford", + "Album": "Blessed - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8352991", + "Total Time": "237049", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2022-10-28T11:13:45Z", + "Date Added": "2022-10-28T11:13:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3781524042", + "Play Date UTC": "2023-10-30T12:20:42Z", + "Skip Count": "1", + "Skip Date": "2022-11-20T17:55:49Z", + "Release Date": "2021-09-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Blessed - Single", + "Sort Artist": "August Charles", + "Sort Name": "Blessed", + "Persistent ID": "30634D1415F33E7D", + "Track Type": "Remote" + }, + { + "Track ID": "6073", + "Name": "River", + "Artist": "August Charles", + "Album Artist": "August Charles", + "Composer": "Augustine Danny Chiyesu, Joseph Benjamin Alhallak & Gabriel Emmanuel Gifford", + "Album": "River - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8196074", + "Total Time": "229751", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2022-10-28T11:34:30Z", + "Date Added": "2022-10-28T11:34:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781085773", + "Play Date UTC": "2023-10-25T10:36:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-09-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "River - Single", + "Sort Artist": "August Charles", + "Sort Name": "River", + "Persistent ID": "0236016A6361252D", + "Track Type": "Remote" + }, + { + "Track ID": "6075", + "Name": "worldstar money (interlude)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "undef", + "Album": "In Tongues - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4700667", + "Total Time": "126312", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2016", + "Date Modified": "2022-10-28T18:19:37Z", + "Date Added": "2022-10-28T18:19:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3781347802", + "Play Date UTC": "2023-10-28T11:23:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-04-01T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In Tongues - EP", + "Sort Artist": "Joji", + "Sort Name": "worldstar money (interlude)", + "Persistent ID": "D7C2F53B54083AE2", + "Track Type": "Remote" + }, + { + "Track ID": "6077", + "Name": "I Got It", + "Artist": "Ogi", + "Album Artist": "Ogi", + "Composer": "Ernest Wilson & Ogi Ifediora", + "Album": "I Got It - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7495526", + "Total Time": "207200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2022-11-01T08:57:40Z", + "Date Added": "2022-11-01T08:57:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3783359554", + "Play Date UTC": "2023-11-20T18:12:34Z", + "Skip Count": "2", + "Skip Date": "2022-11-08T01:48:39Z", + "Release Date": "2022-02-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Got It - Single", + "Sort Artist": "Ogi", + "Sort Name": "I Got It", + "Persistent ID": "3F0B2F4372367073", + "Track Type": "Remote" + }, + { + "Track ID": "6079", + "Name": "You Won't Always", + "Artist": "Big Scary", + "Album Artist": "Big Scary", + "Composer": "Joanna Syme & Tom Iansek", + "Album": "Me and You", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4972585", + "Total Time": "133774", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2022", + "Date Modified": "2022-11-02T21:29:40Z", + "Date Added": "2022-11-02T21:29:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3783713549", + "Play Date UTC": "2023-11-24T20:32:29Z", + "Skip Count": "1", + "Skip Date": "2022-11-09T09:37:54Z", + "Release Date": "2022-09-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Me and You", + "Sort Artist": "Big Scary", + "Sort Name": "You Won't Always", + "Persistent ID": "DCB762F3048C069C", + "Track Type": "Remote" + }, + { + "Track ID": "6081", + "Name": "The Chase", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "Brian Burton & James Mercer", + "Album": "INTO THE BLUE", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "11527499", + "Total Time": "329827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-11-06T10:40:58Z", + "Date Added": "2022-11-06T10:40:58Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3750770848", + "Play Date UTC": "2022-11-08T13:47:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-10-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "INTO THE BLUE", + "Sort Artist": "Broken Bells", + "Sort Name": "Chase", + "Persistent ID": "C53AD8F736A841C5", + "Track Type": "Remote" + }, + { + "Track ID": "6083", + "Name": "How Are You True", + "Artist": "Cage the Elephant", + "Album Artist": "Cage the Elephant", + "Composer": "Cage the Elephant", + "Album": "Tell Me I'm Pretty", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9945526", + "Total Time": "280937", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2022-11-06T19:17:23Z", + "Date Added": "2022-11-06T19:17:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3782987889", + "Play Date UTC": "2023-11-16T10:58:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tell Me I'm Pretty", + "Sort Artist": "Cage the Elephant", + "Sort Name": "How Are You True", + "Persistent ID": "6B51624CA41722E1", + "Track Type": "Remote" + }, + { + "Track ID": "6085", + "Name": "Freaking Me Out", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "We Are All Insane - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8104689", + "Total Time": "208231", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2022", + "Date Modified": "2022-11-07T04:56:33Z", + "Date Added": "2022-11-07T04:56:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3770287430", + "Play Date UTC": "2023-06-22T11:03:50Z", + "Skip Count": "2", + "Skip Date": "2023-02-19T11:08:54Z", + "Release Date": "2022-09-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "We Are All Insane - Single", + "Sort Artist": "AWOLNATION", + "Sort Name": "Freaking Me Out", + "Persistent ID": "4C5223FC50C6E14E", + "Track Type": "Remote" + }, + { + "Track ID": "6087", + "Name": "We Are All Insane", + "Artist": "AWOLNATION", + "Album Artist": "AWOLNATION", + "Composer": "Aaron Bruno", + "Album": "We Are All Insane - Single", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7866641", + "Total Time": "211401", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2022", + "Date Modified": "2022-11-07T04:58:43Z", + "Date Added": "2022-11-07T04:58:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3775315356", + "Play Date UTC": "2023-08-19T15:42:36Z", + "Skip Count": "3", + "Skip Date": "2022-11-07T21:50:11Z", + "Release Date": "2022-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "We Are All Insane - Single", + "Sort Artist": "AWOLNATION", + "Sort Name": "We Are All Insane", + "Persistent ID": "A2738A955C2D6480", + "Track Type": "Remote" + }, + { + "Track ID": "6089", + "Name": "Yukon (Interlude)", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "undef", + "Album": "Smithereens", + "Genre": "Rap | Hip-Hop", + "Kind": "MPEG audio file", + "Size": "8401216", + "Total Time": "208440", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "35000", + "Date Modified": "2022-11-07T11:56:04Z", + "Date Added": "2022-11-07T11:56:35Z", + "Bit Rate": "180440", + "Sample Rate": -1, + "Play Count": "2022", + "Play Date": "320", + "Play Date UTC": "2023-10-28T12:24:21Z", + "Skip Count": "33", + "Skip Date": "2023-01-08T20:03:07Z", + "Release Date": "undef", + "Album Rating": "3781351461", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "8", + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "6A5E338FF6B98EDB", + "Track Type": "Remote" + }, + { + "Track ID": "6091", + "Name": "Spaceship", + "Artist": "Ghosu", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "7208751", + "Total Time": "180218", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T11:58:53Z", + "Date Added": "2022-11-07T00:00:07Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "19", + "Play Date": "3772624037", + "Play Date UTC": "2023-07-19T12:07:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "332D55B2C8992C8C", + "Track Type": "Remote" + }, + { + "Track ID": "6093", + "Name": "BLAHBLAHBLAH DEMO", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "undef", + "Album": "Smithereens", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "5702008", + "Total Time": "142550", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2022", + "Date Modified": "2022-11-07T11:58:28Z", + "Date Added": "2022-11-07T00:00:07Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "30", + "Play Date": "3783667486", + "Play Date UTC": "2023-11-24T07:44:46Z", + "Skip Count": "1", + "Skip Date": "2022-11-14T09:53:13Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "25D992C8103FE36C", + "Track Type": "Remote" + }, + { + "Track ID": "6095", + "Name": "The Way I Used to Love You", + "Artist": "Blue October", + "Album Artist": "undef", + "Composer": "undef", + "Album": "This is What I Live For", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "9765616", + "Total Time": "244140", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T11:58:50Z", + "Date Added": "2022-11-07T00:00:07Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "9", + "Play Date": "3783452623", + "Play Date UTC": "2023-11-21T20:03:43Z", + "Skip Count": "1", + "Skip Date": "2022-11-07T12:22:38Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "Way I Used to Love You", + "Persistent ID": "D7F49AC3C1CAD999", + "Track Type": "Remote" + }, + { + "Track ID": "6097", + "Name": "NIGHT RIDER", + "Artist": "Joji", + "Album Artist": "Joji", + "Composer": "undef", + "Album": "Smithereens", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "5121044", + "Total Time": "128026", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2022", + "Date Modified": "2022-11-07T11:58:26Z", + "Date Added": "2022-11-07T00:00:07Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "25", + "Play Date": "3781351313", + "Play Date UTC": "2023-10-28T12:21:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "F68D90A63AD0A6E1", + "Track Type": "Remote" + }, + { + "Track ID": "6099", + "Name": "BOYFRIEND", + "Artist": "Tyler, The Creator", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "9200640", + "Total Time": "230016", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T11:58:12Z", + "Date Added": "2022-11-07T00:00:07Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "16", + "Play Date": "3780831481", + "Play Date UTC": "2023-10-22T11:58:01Z", + "Skip Count": "2", + "Skip Date": "2023-02-25T18:51:08Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "17DAA9F1E3489992", + "Track Type": "Remote" + }, + { + "Track ID": "6101", + "Name": "Do What I Want", + "Artist": "Kid Cudi", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "6883787", + "Total Time": "172094", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T11:58:36Z", + "Date Added": "2022-11-07T00:00:07Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "8", + "Play Date": "3767611718", + "Play Date UTC": "2023-05-22T11:48:38Z", + "Skip Count": "1", + "Skip Date": "2023-02-18T05:57:06Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "881B07E2121A4A3A", + "Track Type": "Remote" + }, + { + "Track ID": "6103", + "Name": "New Recording 12, Jan 3, 2020", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "undef", + "Album": "Twelve Carat Toothache", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "3710432", + "Total Time": "92760", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2022", + "Date Modified": "2022-11-07T11:59:14Z", + "Date Added": "2022-11-07T00:00:07Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "13", + "Play Date": "3783012016", + "Play Date UTC": "2023-11-16T17:40:16Z", + "Skip Count": "1", + "Skip Date": "2022-11-10T05:50:41Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "D168D3A26762D058", + "Track Type": "Remote" + }, + { + "Track ID": "6105", + "Name": "Tiffany Baira", + "Artist": "Moody", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "9954742", + "Total Time": "248868", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T11:58:55Z", + "Date Added": "2022-11-07T00:00:07Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "13", + "Play Date": "3780389770", + "Play Date UTC": "2023-10-17T09:16:10Z", + "Skip Count": "1", + "Skip Date": "2022-12-18T15:31:04Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "AA86EDD9C6A4B60B", + "Track Type": "Remote" + }, + { + "Track ID": "6107", + "Name": "Reputation", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "undef", + "Album": "Twelve Carat Toothache", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "9928620", + "Total Time": "248215", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2022", + "Date Modified": "2022-11-07T00:01:04Z", + "Date Added": "2022-11-07T00:01:23Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "9", + "Play Date": "3783003349", + "Play Date UTC": "2023-11-16T15:15:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "E5CA85FDBFF036A7", + "Track Type": "Remote" + }, + { + "Track ID": "6109", + "Name": "Cooped Up", + "Artist": "Post Malone (feat. Roddy Ricch)", + "Album Artist": "Post Malone", + "Composer": "undef", + "Album": "Twelve Carat Toothache", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "7440718", + "Total Time": "186017", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2022", + "Date Modified": "2022-11-07T00:02:15Z", + "Date Added": "2022-11-07T00:02:27Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "12", + "Play Date": "3783060519", + "Play Date UTC": "2023-11-17T07:08:39Z", + "Skip Count": "1", + "Skip Date": "2023-03-28T09:50:34Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "66001E2DB8DC41C9", + "Track Type": "Remote" + }, + { + "Track ID": "6111", + "Name": "I Like You (A Happier Song)", + "Artist": "Post Malone (feat. Doja Cat)", + "Album Artist": "Post Malone", + "Composer": "undef", + "Album": "Twelve Carat Toothache", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "7715526", + "Total Time": "192888", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2022", + "Date Modified": "2022-11-07T00:02:47Z", + "Date Added": "2022-11-07T00:02:58Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "7", + "Play Date": "3783006704", + "Play Date UTC": "2023-11-16T16:11:44Z", + "Skip Count": "3", + "Skip Date": "2023-04-26T10:00:45Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "874A27B1A18798C3", + "Track Type": "Remote" + }, + { + "Track ID": "6113", + "Name": "I Cannot Be (A Sadder Song)", + "Artist": "Post Malone (feat. Gunna)", + "Album Artist": "Post Malone", + "Composer": "undef", + "Album": "Twelve Carat Toothache", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "6794971", + "Total Time": "169874", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2022", + "Date Modified": "2022-11-07T00:03:14Z", + "Date Added": "2022-11-07T00:03:32Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "12", + "Play Date": "3783011924", + "Play Date UTC": "2023-11-16T17:38:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "72F0E83108FE7110", + "Track Type": "Remote" + }, + { + "Track ID": "6115", + "Name": "Love Hate Letter To Alcohol", + "Artist": "Post Malone (feat. Fleet Foxes)", + "Album Artist": "Post Malone", + "Composer": "undef", + "Album": "Twelve Carat Toothache", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "7353991", + "Total Time": "183849", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2022", + "Date Modified": "2022-11-07T12:03:51Z", + "Date Added": "2022-11-07T00:04:03Z", + "Bit Rate": "320", + "Sample Rate": -1, + "Play Count": "13", + "Play Date": "3783008422", + "Play Date UTC": "2023-11-16T16:40:22Z", + "Skip Count": "3", + "Skip Date": "2022-11-09T08:18:42Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "C1F383E7F67DAB98", + "Track Type": "Remote" + }, + { + "Track ID": "6117", + "Name": "BIRTHDAY GIFT", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "474604", + "Total Time": "52536", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": "1", + "Track Count": "24", + "Year": "2021", + "Date Modified": "2022-11-07T12:58:29Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "7", + "Play Date": "3760431637", + "Play Date UTC": "2023-02-28T09:20:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "44ABDCB096FB26AC", + "Track Type": "Remote" + }, + { + "Track ID": "6119", + "Name": "boys playing pubg", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "53613", + "Total Time": "6696", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:54:57Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "14", + "Play Date": "3778766457", + "Play Date UTC": "2023-09-28T14:20:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "7138400209D3EAB6", + "Track Type": "Remote" + }, + { + "Track ID": "6121", + "Name": "bubble gum b1tch", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "181677", + "Total Time": "22704", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:47:31Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "13", + "Play Date": "3772717053", + "Play Date UTC": "2023-07-20T13:57:33Z", + "Skip Count": "3", + "Skip Date": "2022-11-15T14:02:45Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "C46A85C247958AA0", + "Track Type": "Remote" + }, + { + "Track ID": "6123", + "Name": "CAN I GET A KISS", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "270957", + "Total Time": "33864", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:43:57Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "8", + "Play Date": "3780848136", + "Play Date UTC": "2023-10-22T16:35:36Z", + "Skip Count": "3", + "Skip Date": "2022-11-08T15:12:46Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "4AE3AC014DAD663D", + "Track Type": "Remote" + }, + { + "Track ID": "6125", + "Name": "dont blame me", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "95277", + "Total Time": "11904", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:48:52Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "12", + "Play Date": "3780128066", + "Play Date UTC": "2023-10-14T08:34:26Z", + "Skip Count": "1", + "Skip Date": "2023-02-13T16:34:59Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "E4EDCE9CD0E5A04C", + "Track Type": "Remote" + }, + { + "Track ID": "6127", + "Name": "emenemenem", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "249837", + "Total Time": "31224", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:49:31Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "7", + "Play Date": "3760115249", + "Play Date UTC": "2023-02-24T17:27:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "7225A31FBFE0EC15", + "Track Type": "Remote" + }, + { + "Track ID": "6129", + "Name": "i was just a little boy", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "86253", + "Total Time": "10776", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:53:31Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "13", + "Play Date": "3781616220", + "Play Date UTC": "2023-10-31T13:57:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "910819A9B86733BF", + "Track Type": "Remote" + }, + { + "Track ID": "6131", + "Name": "it was a bad idea", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "274413", + "Total Time": "34296", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:52:03Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "11", + "Play Date": "3781766264", + "Play Date UTC": "2023-11-02T07:37:44Z", + "Skip Count": "4", + "Skip Date": "2023-01-16T11:14:49Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "7A56E9209CC3BBD8", + "Track Type": "Remote" + }, + { + "Track ID": "6133", + "Name": "its not so bad", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "144813", + "Total Time": "18096", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:50:18Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "12", + "Play Date": "3781188045", + "Play Date UTC": "2023-10-26T15:00:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "2F8618D82FFB63DF", + "Track Type": "Remote" + }, + { + "Track ID": "6135", + "Name": "its okay", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "137517", + "Total Time": "17184", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:42:47Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "12", + "Play Date": "3779182327", + "Play Date UTC": "2023-10-03T09:52:07Z", + "Skip Count": "1", + "Skip Date": "2022-11-09T12:13:15Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "B000B6F52890A312", + "Track Type": "Remote" + }, + { + "Track ID": "6137", + "Name": "0110011", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "95853", + "Total Time": "11976", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:52:24Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "8", + "Play Date": "3780847400", + "Play Date UTC": "2023-10-22T16:23:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "C159199C65ED1F9B", + "Track Type": "Remote" + }, + { + "Track ID": "6139", + "Name": "live to love u boy", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "86637", + "Total Time": "10824", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:52:45Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "15", + "Play Date": "3777370936", + "Play Date UTC": "2023-09-12T10:42:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "C9BD9D9B0C57EF31", + "Track Type": "Remote" + }, + { + "Track ID": "6141", + "Name": "YEAH", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "41517", + "Total Time": "5184", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:48:29Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "9", + "Play Date": "3772526424", + "Play Date UTC": "2023-07-18T09:00:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "A2F1823B77BC8C8B", + "Track Type": "Remote" + }, + { + "Track ID": "6143", + "Name": "my boy is pretty", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "194733", + "Total Time": "24336", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:53:10Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "8", + "Play Date": "3783694028", + "Play Date UTC": "2023-11-24T15:07:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "637C7C5D1071D131", + "Track Type": "Remote" + }, + { + "Track ID": "6145", + "Name": "NEW MAGIC WAND", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "116397", + "Total Time": "14544", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:44:49Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "7", + "Play Date": "3768304211", + "Play Date UTC": "2023-05-30T12:10:11Z", + "Skip Count": "1", + "Skip Date": "2022-11-10T05:33:43Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "8123C35F3D41D3EA", + "Track Type": "Remote" + }, + { + "Track ID": "6147", + "Name": "oh luky me", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "32877", + "Total Time": "4104", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:46:08Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "4", + "Play Date": "3760860843", + "Play Date UTC": "2023-03-05T08:34:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "8B35EAD244D553BD", + "Track Type": "Remote" + }, + { + "Track ID": "6149", + "Name": "please stand up", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "134253", + "Total Time": "16776", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:50:45Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "8", + "Play Date": "3783687699", + "Play Date UTC": "2023-11-24T13:21:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "76F64807A077E72A", + "Track Type": "Remote" + }, + { + "Track ID": "6151", + "Name": "segarets", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "81837", + "Total Time": "10224", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:49:13Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "8", + "Play Date": "3776167057", + "Play Date UTC": "2023-08-29T12:17:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "7437CADD71C23D18", + "Track Type": "Remote" + }, + { + "Track ID": "6153", + "Name": "stories 1", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "175917", + "Total Time": "21984", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:45:45Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "10", + "Play Date": "3783669399", + "Play Date UTC": "2023-11-24T08:16:39Z", + "Skip Count": "2", + "Skip Date": "2023-02-07T09:33:44Z", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "185C8FB3D836EA1E", + "Track Type": "Remote" + }, + { + "Track ID": "6155", + "Name": "taratatara remix", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "158637", + "Total Time": "19824", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:46:34Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "10", + "Play Date": "3781086732", + "Play Date UTC": "2023-10-25T10:52:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "2DF8B1E9C8BDD37C", + "Track Type": "Remote" + }, + { + "Track ID": "6157", + "Name": "taratatara", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "78957", + "Total Time": "9864", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:43:21Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "9", + "Play Date": "3783848634", + "Play Date UTC": "2023-11-26T10:03:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "8CFAE4D41DC16B2A", + "Track Type": "Remote" + }, + { + "Track ID": "6159", + "Name": "whatever", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "69357", + "Total Time": "8664", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:51:18Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "8", + "Play Date": "3766560149", + "Play Date UTC": "2023-05-10T07:42:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "DDA6E44E8855C9CA", + "Track Type": "Remote" + }, + { + "Track ID": "6161", + "Name": "WHO IN HERE TRYNA START A RIOT", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "83757", + "Total Time": "10464", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:54:02Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "11", + "Play Date": "3772781679", + "Play Date UTC": "2023-07-21T07:54:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "C27558B18DFA5ABE", + "Track Type": "Remote" + }, + { + "Track ID": "6163", + "Name": "WOODKID RUN BOY", + "Artist": "ingibitor", + "Album Artist": "undef", + "Composer": "undef", + "Album": "BIRTHDAY GIFT", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "71277", + "Total Time": "8904", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-07T00:51:36Z", + "Date Added": "2022-11-07T00:57:54Z", + "Bit Rate": "64", + "Sample Rate": -1, + "Play Count": "8", + "Play Date": "3776323135", + "Play Date UTC": "2023-08-31T07:38:55Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "4668BF83FD33FCAA", + "Track Type": "Remote" + }, + { + "Track ID": "6165", + "Name": "Love On the Run", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "Brian Burton, James Mercer, Sam Cohen & Dean Josiah Cover", + "Album": "INTO THE BLUE", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "14649413", + "Total Time": "423347", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-11-08T01:39:15Z", + "Date Added": "2022-11-08T01:39:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3750728841", + "Play Date UTC": "2022-11-08T02:07:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-09-23T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "INTO THE BLUE", + "Sort Artist": "Broken Bells", + "Sort Name": "Love On the Run", + "Persistent ID": "B4F488221A07EFCE", + "Track Type": "Remote" + }, + { + "Track ID": "6167", + "Name": "Into the Blue", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "James Mercer, Brian Burton & Sam Cohen", + "Album": "INTO THE BLUE", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "11623784", + "Total Time": "333747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-11-08T01:44:08Z", + "Date Added": "2022-11-08T01:44:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3750842179", + "Play Date UTC": "2022-11-09T09:36:19Z", + "Skip Count": "5", + "Skip Date": "2022-11-08T15:50:29Z", + "Release Date": "2022-10-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "INTO THE BLUE", + "Sort Artist": "Broken Bells", + "Sort Name": "Into the Blue", + "Persistent ID": "96F7A688924602B5", + "Track Type": "Remote" + }, + { + "Track ID": "6169", + "Name": "We're Not In Orbit Yet\u2026", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "James Mercer & Brian Burton", + "Album": "We're Not In Orbit Yet\u2026 - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10921509", + "Total Time": "310840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2022-11-08T01:44:08Z", + "Date Added": "2022-11-08T01:44:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3783663018", + "Play Date UTC": "2023-11-24T06:30:18Z", + "Skip Count": "1", + "Skip Date": "2022-11-08T15:00:31Z", + "Release Date": "2022-06-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "We're Not In Orbit Yet\u2026 - Single", + "Sort Artist": "Broken Bells", + "Sort Name": "We're Not In Orbit Yet\u2026", + "Persistent ID": "7DCCFA3048F3B16F", + "Track Type": "Remote" + }, + { + "Track ID": "6171", + "Name": "Invisible Exit", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "Brian Burton & James Mercer", + "Album": "INTO THE BLUE", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "5540401", + "Total Time": "153693", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-11-08T01:44:08Z", + "Date Added": "2022-11-08T01:44:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3750728418", + "Play Date UTC": "2022-11-08T02:00:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-10-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "INTO THE BLUE", + "Sort Artist": "Broken Bells", + "Sort Name": "Invisible Exit", + "Persistent ID": "F5979C62FBE3FFF2", + "Track Type": "Remote" + }, + { + "Track ID": "6173", + "Name": "One Night", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "Brian Burton & James Mercer", + "Album": "INTO THE BLUE", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "8093674", + "Total Time": "229227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-11-08T01:44:08Z", + "Date Added": "2022-11-08T01:44:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3750729070", + "Play Date UTC": "2022-11-08T02:11:10Z", + "Skip Count": "1", + "Skip Date": "2022-11-08T15:00:27Z", + "Release Date": "2022-10-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "INTO THE BLUE", + "Sort Artist": "Broken Bells", + "Sort Name": "One Night", + "Persistent ID": "C95A0EC5E5BD1D66", + "Track Type": "Remote" + }, + { + "Track ID": "6175", + "Name": "Saturdays", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "Brian Burton, James Mercer & James Milne", + "Album": "INTO THE BLUE", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "6838049", + "Total Time": "187413", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-11-08T01:44:08Z", + "Date Added": "2022-11-08T01:44:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3750729258", + "Play Date UTC": "2022-11-08T02:14:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-08-10T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "INTO THE BLUE", + "Sort Artist": "Broken Bells", + "Sort Name": "Saturdays", + "Persistent ID": "9A74E013DF5D2A7B", + "Track Type": "Remote" + }, + { + "Track ID": "6177", + "Name": "Forgotten Boy", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "Brian Burton, James Mercer, Michael Esposito, Ronald Gilbert, Ralph Scala & Emil Thielhelm", + "Album": "INTO THE BLUE", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "7962834", + "Total Time": "224973", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-11-08T01:44:08Z", + "Date Added": "2022-11-08T01:44:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3750729483", + "Play Date UTC": "2022-11-08T02:18:03Z", + "Skip Count": "1", + "Skip Date": "2022-11-08T15:00:21Z", + "Release Date": "2022-10-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "INTO THE BLUE", + "Sort Artist": "Broken Bells", + "Sort Name": "Forgotten Boy", + "Persistent ID": "1C47909A9E8264C5", + "Track Type": "Remote" + }, + { + "Track ID": "6179", + "Name": "Fade Away", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "Brian Burton & James Mercer", + "Album": "INTO THE BLUE", + "Genre": "Alternative", + "Kind": "AAC audio file", + "Size": "9977799", + "Total Time": "286947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2022-11-08T01:44:08Z", + "Date Added": "2022-11-08T01:44:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3750752156", + "Play Date UTC": "2022-11-08T08:35:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-10-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "INTO THE BLUE", + "Sort Artist": "Broken Bells", + "Sort Name": "Fade Away", + "Persistent ID": "C4826E85E31F50D6", + "Track Type": "Remote" + }, + { + "Track ID": "6181", + "Name": "Holding on for Life", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "James Mercer & Brian Burton", + "Album": "After the Disco", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8287486", + "Total Time": "236868", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2014", + "Date Modified": "2022-11-10T08:29:51Z", + "Date Added": "2022-11-10T08:29:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3770536160", + "Play Date UTC": "2023-06-25T08:09:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "After the Disco", + "Sort Artist": "Broken Bells", + "Sort Name": "Holding on for Life", + "Persistent ID": "4187873586486689", + "Track Type": "Remote" + }, + { + "Track ID": "6183", + "Name": "The High Road", + "Artist": "Broken Bells", + "Album Artist": "Broken Bells", + "Composer": "James Mercer & Brian Burton", + "Album": "Broken Bells", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8134731", + "Total Time": "232108", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2009", + "Date Modified": "2022-11-10T09:07:57Z", + "Date Added": "2022-11-10T09:07:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3783687682", + "Play Date UTC": "2023-11-24T13:21:22Z", + "Skip Count": "1", + "Skip Date": "2022-11-10T19:11:15Z", + "Release Date": "2009-12-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Broken Bells", + "Sort Artist": "Broken Bells", + "Sort Name": "High Road", + "Persistent ID": "C4BC70670FFD9B71", + "Track Type": "Remote" + }, + { + "Track ID": "6185", + "Name": "Trustfall", + "Artist": "VELVETEARS & eli filosov [ p h i l o ]", + "Album Artist": "VELVETEARS & eli filosov [ p h i l o ]", + "Composer": "undef", + "Album": "Sleepover - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7481692", + "Total Time": "209789", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "4", + "Year": "2022", + "Date Modified": "2022-11-12T23:00:46Z", + "Date Added": "2022-11-12T23:00:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3781447886", + "Play Date UTC": "2023-10-29T15:11:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-10-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sleepover - EP", + "Sort Artist": "VELVETEARS & eli filosov [ p h i l o ]", + "Sort Name": "Trustfall", + "Persistent ID": "58E8430ABD6C856A", + "Track Type": "Remote" + }, + { + "Track ID": "6187", + "Name": "Feeding Ducks", + "Artist": "Ondi Vil & Neoplasma", + "Album Artist": "Ondi Vil & Neoplasma", + "Composer": "Alexandros Pashalidis & Konstantinos Kontos", + "Album": "Fading Dreams", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4864835", + "Total Time": "131200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "7", + "Year": "2022", + "Date Modified": "2022-11-12T23:06:42Z", + "Date Added": "2022-11-12T23:06:42Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783753549", + "Play Date UTC": "2023-11-25T07:39:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-10-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fading Dreams", + "Sort Artist": "Ondi Vil & Neoplasma", + "Sort Name": "Feeding Ducks", + "Persistent ID": "28D972423B3F81DF", + "Track Type": "Remote" + }, + { + "Track ID": "6189", + "Name": "Pretty Colors", + "Artist": "glibs", + "Album Artist": "glibs", + "Composer": "Matthew Ryan Bagnall", + "Album": "Sweet Dreams", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7904171", + "Total Time": "224001", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "15", + "Year": "2017", + "Date Modified": "2022-11-12T23:21:17Z", + "Date Added": "2022-11-12T23:21:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3780126326", + "Play Date UTC": "2023-10-14T08:05:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-05-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sweet Dreams", + "Sort Artist": "glibs", + "Sort Name": "Pretty Colors", + "Persistent ID": "98186EB2D4D96147", + "Track Type": "Remote" + }, + { + "Track ID": "6191", + "Name": "AWOLNATION - Drinking Lightning", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "12204408", + "Total Time": "305110", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:54Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3776178149", + "Play Date UTC": "2023-08-29T15:22:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "1223B983F20876DE", + "Track Type": "Remote" + }, + { + "Track ID": "6193", + "Name": "AWOLNATION - Fat Face", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "8526367", + "Total Time": "213159", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:08Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3767071452", + "Play Date UTC": "2023-05-16T05:44:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "F8F242F8C02CCE6C", + "Track Type": "Remote" + }, + { + "Track ID": "6195", + "Name": "AWOLNATION - Headrest for My Soul", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "5138808", + "Total Time": "128470", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:19Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3780125896", + "Play Date UTC": "2023-10-14T07:58:16Z", + "Skip Count": "1", + "Skip Date": "2022-11-23T17:49:39Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "1FE29C2C30784CAD", + "Track Type": "Remote" + }, + { + "Track ID": "6197", + "Name": "AWOLNATION - Hollow Moon (Bad Wolf)", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "10359118", + "Total Time": "258977", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:09Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3783681029", + "Play Date UTC": "2023-11-24T11:30:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "873972A2FBE4A9E8", + "Track Type": "Remote" + }, + { + "Track ID": "6199", + "Name": "AWOLNATION - Holy Roller", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "9524244", + "Total Time": "238106", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:26Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783709506", + "Play Date UTC": "2023-11-24T19:25:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "519E3F023F9D6845", + "Track Type": "Remote" + }, + { + "Track ID": "6201", + "Name": "AWOLNATION - Dreamers", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "5817991", + "Total Time": "145449", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:21Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3783849557", + "Play Date UTC": "2023-11-26T10:19:17Z", + "Skip Count": "1", + "Skip Date": "2023-01-04T14:22:05Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "9BE94F6975FC3443", + "Track Type": "Remote" + }, + { + "Track ID": "6203", + "Name": "AWOLNATION - I Am", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "10762449", + "Total Time": "269061", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:17Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3768410835", + "Play Date UTC": "2023-05-31T17:47:15Z", + "Skip Count": "1", + "Skip Date": "2023-03-02T13:13:15Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "3C6E22B1DC77526B", + "Track Type": "Remote" + }, + { + "Track ID": "6205", + "Name": "AWOLNATION - Woman Woman", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "8722808", + "Total Time": "218070", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:29Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3770490090", + "Play Date UTC": "2023-06-24T19:21:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "6185C75C6E579275", + "Track Type": "Remote" + }, + { + "Track ID": "6207", + "Name": "AWOLNATION - Jailbreak", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "9534694", + "Total Time": "238367", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:12Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3772791204", + "Play Date UTC": "2023-07-21T10:33:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "F514AF41DF415A16", + "Track Type": "Remote" + }, + { + "Track ID": "6209", + "Name": "AWOLNATION - KOOKSEVERYWHERE!!!!", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "9365420", + "Total Time": "234135", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:14Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3766853043", + "Play Date UTC": "2023-05-13T17:04:03Z", + "Skip Count": "2", + "Skip Date": "2023-11-21T19:47:38Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "78114BDB6D2DFFDA", + "Track Type": "Remote" + }, + { + "Track ID": "6211", + "Name": "AWOLNATION - Lie Love Live Love", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "10779167", + "Total Time": "269479", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:32Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3772526418", + "Play Date UTC": "2023-07-18T09:00:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "1F98EF7543E92C49", + "Track Type": "Remote" + }, + { + "Track ID": "6213", + "Name": "AWOLNATION - Like People, Like Plastic", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "10846040", + "Total Time": "271151", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:45Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3762143763", + "Play Date UTC": "2023-03-20T04:56:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "8FDCA28C6CA4DA6E", + "Track Type": "Remote" + }, + { + "Track ID": "6215", + "Name": "AWOLNATION - Run (Beautiful Things)", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "9668440", + "Total Time": "241711", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:05Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3768386382", + "Play Date UTC": "2023-05-31T10:59:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "3995AB6C63E056CD", + "Track Type": "Remote" + }, + { + "Track ID": "6217", + "Name": "AWOLNATION - Windows", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "MPEG audio file", + "Size": "8690416", + "Total Time": "217260", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2022-11-23T10:15:23Z", + "Date Added": "2022-11-23T10:16:23Z", + "Bit Rate": "320", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3781450307", + "Play Date UTC": "2023-10-29T15:51:47Z", + "Skip Count": "1", + "Skip Date": "2022-11-23T17:53:25Z", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "0A868B3E96068B6B", + "Track Type": "Remote" + }, + { + "Track ID": "6219", + "Name": "Dark Necessities", + "Artist": "Red Hot Chili Peppers", + "Album Artist": "Red Hot Chili Peppers", + "Composer": "Anthony Kiedis, Brian Burton, Chad Smith, Flea & Josh Klinghoffer", + "Album": "The Getaway", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10561108", + "Total Time": "302013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2016", + "Date Modified": "2022-11-29T18:46:40Z", + "Date Added": "2022-11-29T18:46:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3772630964", + "Play Date UTC": "2023-07-19T14:02:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-05-05T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Getaway", + "Sort Artist": "Red Hot Chili Peppers", + "Sort Name": "Dark Necessities", + "Persistent ID": "74C2B41E346CFD80", + "Track Type": "Remote" + }, + { + "Track ID": "6221", + "Name": "Clocks", + "Artist": "Coldplay", + "Album Artist": "Coldplay", + "Composer": "Chris Martin, Guy Berryman, Jonny Buckland & Will Champion", + "Album": "A Rush of Blood to the Head", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11669997", + "Total Time": "306906", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2002", + "Date Modified": "2022-11-29T18:54:40Z", + "Date Added": "2022-11-29T18:54:40Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3781063149", + "Play Date UTC": "2023-10-25T04:19:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2002-08-26T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rush of Blood to the Head", + "Sort Artist": "Coldplay", + "Sort Name": "Clocks", + "Persistent ID": "E915BE7E58537D8D", + "Track Type": "Remote" + }, + { + "Track ID": "6223", + "Name": "Let It Go", + "Artist": "ANIMA!", + "Album Artist": "ANIMA!", + "Composer": "Vicente Esp\u00ed & Arielle Desiree Vakni", + "Album": "Let It Go - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6379425", + "Total Time": "168600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2022-12-08T18:42:18Z", + "Date Added": "2022-12-08T18:42:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3773540905", + "Play Date UTC": "2023-07-30T02:48:25Z", + "Skip Count": "1", + "Skip Date": "2022-12-27T06:18:51Z", + "Release Date": "2022-11-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Let It Go - Single", + "Sort Artist": "ANIMA!", + "Sort Name": "Let It Go", + "Persistent ID": "401B16A34F22FE01", + "Track Type": "Remote" + }, + { + "Track ID": "6225", + "Name": "Pray", + "Artist": "DUCKWRTH & GAWD", + "Album Artist": "DUCKWRTH", + "Composer": "Jared Lee, Kareem James, Tyler Acord & David Wilson", + "Album": "Chrome Bull", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "6475428", + "Total Time": "175909", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "8", + "Year": "2022", + "Date Modified": "2022-12-08T20:03:59Z", + "Date Added": "2022-12-08T20:03:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780389946", + "Play Date UTC": "2023-10-17T09:19:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-10-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Chrome Bull", + "Sort Artist": "DUCKWRTH & GAWD", + "Sort Name": "Pray", + "Persistent ID": "1EB973DF2B9C7366", + "Track Type": "Remote" + }, + { + "Track ID": "6227", + "Name": "Chiquita", + "Artist": "Tyla Yaweh", + "Album Artist": "Tyla Yaweh", + "Composer": "Rayvon Cawley, Brittany Chykira Barber, Ramiro Padilla, Fernando Garibay, Jason Wilkinson, Dominique Davis & Tyler Jamal Brown", + "Album": "Heart Full of Rage", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5634248", + "Total Time": "155716", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2022-12-09T11:58:29Z", + "Date Added": "2022-12-09T11:58:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3783362858", + "Play Date UTC": "2023-11-20T19:07:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-02-22T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Heart Full of Rage", + "Sort Artist": "Tyla Yaweh", + "Sort Name": "Chiquita", + "Persistent ID": "6372D17CF810C828", + "Track Type": "Remote" + }, + { + "Track ID": "6229", + "Name": "The Beach", + "Artist": "The Neighbourhood", + "Album Artist": "The Neighbourhood", + "Composer": "Jesse\u00ae, Justyn Pilbrow, Zachary Abels, Michael Margott, Jeremiah Freedman & Brandon Fried", + "Album": "Wiped Out!", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9001970", + "Total Time": "255133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2022-12-10T06:13:54Z", + "Date Added": "2022-12-10T06:13:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3781184247", + "Play Date UTC": "2023-10-26T13:57:27Z", + "Skip Count": "1", + "Skip Date": "2022-12-13T18:09:11Z", + "Release Date": "2015-10-30T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wiped Out!", + "Sort Artist": "Neighbourhood", + "Sort Name": "Neighbourhood", + "Persistent ID": "Beach", + "Track Type": "1F684B4AED0E54B1" + }, + { + "Track ID": "6231", + "Name": "Magnolia", + "Artist": "Playboi Carti", + "Album Artist": "Playboi Carti", + "Composer": "Jordan Carter & Pi\u2019erre Bourne", + "Album": "Playboi Carti", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6631961", + "Total Time": "181812", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "15", + "Year": "2017", + "Date Modified": "2022-12-10T07:30:48Z", + "Date Added": "2022-12-10T07:30:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3783332050", + "Play Date UTC": "2023-11-20T10:34:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Playboi Carti", + "Sort Artist": "Playboi Carti", + "Sort Name": "Magnolia", + "Persistent ID": "486A563D1DADC937", + "Track Type": "Remote" + }, + { + "Track ID": "6233", + "Name": "The Temperature of the Air On the Bow of the Kaleetan", + "Artist": "Chris Zabriskie", + "Album Artist": "Chris Zabriskie", + "Composer": "undef", + "Album": "Undercover Vampire Policeman", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "8732427", + "Total Time": "264133", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2012", + "Date Modified": "2022-12-12T15:48:22Z", + "Date Added": "2022-12-12T15:48:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780492216", + "Play Date UTC": "2023-10-18T13:43:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2012-01-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Undercover Vampire Policeman", + "Sort Artist": "Chris Zabriskie", + "Sort Name": "Temperature of the Air On the Bow of the Kaleetan", + "Persistent ID": "AD8806E7A959F142", + "Track Type": "Remote" + }, + { + "Track ID": "6235", + "Name": "I Am a Man Who Will Fight for Your Honor", + "Artist": "Chris Zabriskie", + "Album Artist": "Chris Zabriskie", + "Composer": "undef", + "Album": "I Am a Man Who Will Fight for Your Honor", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "22966003", + "Total Time": "686480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "7", + "Year": "2009", + "Date Modified": "2022-12-12T15:59:24Z", + "Date Added": "2022-12-12T15:59:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3762139378", + "Play Date UTC": "2023-03-20T03:42:58Z", + "Skip Count": "1", + "Skip Date": "2023-01-08T20:37:22Z", + "Release Date": "2009-03-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Am a Man Who Will Fight for Your Honor", + "Sort Artist": "Chris Zabriskie", + "Sort Name": "I Am a Man Who Will Fight for Your Honor", + "Persistent ID": "EFA4BEC146F8B3ED", + "Track Type": "Remote" + }, + { + "Track ID": "6237", + "Name": "Direct to Video", + "Artist": "Chris Zabriskie", + "Album Artist": "Chris Zabriskie", + "Composer": "undef", + "Album": "Direct to Video", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "11855773", + "Total Time": "345222", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2015", + "Date Modified": "2022-12-12T16:35:45Z", + "Date Added": "2022-12-12T16:35:45Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3780247208", + "Play Date UTC": "2023-10-15T17:40:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-01-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Direct to Video", + "Sort Artist": "Chris Zabriskie", + "Sort Name": "Direct to Video", + "Persistent ID": "C5A71CAF27E948E7", + "Track Type": "Remote" + }, + { + "Track ID": "6239", + "Name": "Love Lost (Piano Version)", + "Artist": "Mattia Cupelli", + "Album Artist": "Mattia Cupelli", + "Composer": "undef", + "Album": "Reminiscence (Mattia Cupelli)", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "14467243", + "Total Time": "427143", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "22", + "Track Count": "23", + "Year": "2014", + "Date Modified": "2022-12-12T16:47:57Z", + "Date Added": "2022-12-12T16:47:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3783671460", + "Play Date UTC": "2023-11-24T08:51:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-12-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reminiscence (Mattia Cupelli)", + "Sort Artist": "Mattia Cupelli", + "Sort Name": "Love Lost (Piano Version)", + "Persistent ID": "ED70E9173411A89A", + "Track Type": "Remote" + }, + { + "Track ID": "6241", + "Name": "Call", + "Artist": "The American Dollar", + "Album Artist": "The American Dollar", + "Composer": "undef", + "Album": "A Memory Stream", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "11138279", + "Total Time": "325200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2008", + "Date Modified": "2022-12-12T19:51:01Z", + "Date Added": "2022-12-12T19:51:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3774100214", + "Play Date UTC": "2023-08-05T14:10:14Z", + "Skip Count": "2", + "Skip Date": "2023-02-01T22:43:19Z", + "Release Date": "2008-08-18T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "A Memory Stream", + "Sort Artist": "American Dollar", + "Sort Name": "American Dollar", + "Persistent ID": "Call", + "Track Type": "12F405E8B97A710B" + }, + { + "Track ID": "6243", + "Name": "Goodbye Blue Sky", + "Artist": "Pink Floyd", + "Album Artist": "Pink Floyd", + "Composer": "Roger Waters", + "Album": "The Wall", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "6445880", + "Total Time": "167293", + "Disc Number": "1", + "Disc Count": "3", + "Track Number": "7", + "Track Count": "13", + "Year": "1979", + "Date Modified": "2022-12-16T21:40:49Z", + "Date Added": "2022-12-16T21:40:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3780136147", + "Play Date UTC": "2023-10-14T10:49:07Z", + "Skip Count": "1", + "Skip Date": "2022-12-19T22:03:15Z", + "Release Date": "1979-11-30T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Wall", + "Sort Artist": "Pink Floyd", + "Sort Name": "Goodbye Blue Sky", + "Persistent ID": "02AC6B5D45A1CAB6", + "Track Type": "Remote" + }, + { + "Track ID": "6245", + "Name": "Oncle Jazz", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Emmanuelle Proulx & Jessy Caron", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "2351863", + "Total Time": "57877", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3776690531", + "Play Date UTC": "2023-09-04T13:42:11Z", + "Skip Count": "1", + "Skip Date": "2023-03-23T10:22:33Z", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Oncle Jazz", + "Persistent ID": "2CA5B01FCDDEFD1E", + "Track Type": "Remote" + }, + { + "Track ID": "6247", + "Name": "Norton Commander (Album V)", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Emmanuelle Proulx & Jessy Caron", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7747783", + "Total Time": "206313", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3775202153", + "Play Date UTC": "2023-08-18T08:15:53Z", + "Skip Count": "3", + "Skip Date": "2023-10-14T10:30:33Z", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Norton Commander (Album V)", + "Persistent ID": "B176C2A5A5C1729D", + "Track Type": "Remote" + }, + { + "Track ID": "6249", + "Name": "Days Go By", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Dragos Chiriac & Emmanuelle Proulx", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7042870", + "Total Time": "197172", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3775159979", + "Play Date UTC": "2023-08-17T20:32:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Days Go By", + "Persistent ID": "851D881B4214C0CE", + "Track Type": "Remote" + }, + { + "Track ID": "6251", + "Name": "Tailwhip (Album V)", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Emmanuelle Proulx & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8038923", + "Total Time": "228060", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "38", + "Play Date": "3782886844", + "Play Date UTC": "2023-11-15T06:54:04Z", + "Skip Count": "1", + "Skip Date": "2023-01-08T22:13:52Z", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Tailwhip (Album V)", + "Persistent ID": "C998E5DB402A752B", + "Track Type": "Remote" + }, + { + "Track ID": "6253", + "Name": "Found Me", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Jessy Caron & Emmanuelle Proulx", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7522216", + "Total Time": "211961", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3777019132", + "Play Date UTC": "2023-09-08T08:58:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Found Me", + "Persistent ID": "94C498FB2DBEB37A", + "Track Type": "Remote" + }, + { + "Track ID": "6255", + "Name": "Numb (Album V)", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Emmanuelle Proulx, Jessy Caron & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7756686", + "Total Time": "219340", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3775155818", + "Play Date UTC": "2023-08-17T19:23:38Z", + "Skip Count": -1, + "Skip Date": "2022-12-22T19:24:43Z", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Numb (Album V)", + "Persistent ID": "85B0AC72A564114D", + "Track Type": "Remote" + }, + { + "Track ID": "6257", + "Name": "Say Can You Hear (Album V)", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Emmanuelle Proulx & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6818725", + "Total Time": "189246", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3783074738", + "Play Date UTC": "2023-11-17T11:05:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Say Can You Hear (Album V)", + "Persistent ID": "F07F02B327030AA7", + "Track Type": "Remote" + }, + { + "Track ID": "6259", + "Name": "All Night", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Jessy Caron & Emmanuelle Proulx", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6883495", + "Total Time": "188469", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3779310457", + "Play Date UTC": "2023-10-04T21:27:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "All Night", + "Persistent ID": "0E74CF2D638E38A5", + "Track Type": "Remote" + }, + { + "Track ID": "6261", + "Name": "I Hope to Be Around (Album V)", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Jessy Caron & Emmanuelle Proulx", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7212047", + "Total Time": "206174", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3782995152", + "Play Date UTC": "2023-11-16T12:59:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "I Hope to Be Around (Album V)", + "Persistent ID": "CBD2EFC59566BAC4", + "Track Type": "Remote" + }, + { + "Track ID": "6263", + "Name": "Dorian", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Emmanuelle Proulx & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6279554", + "Total Time": "171579", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781571113", + "Play Date UTC": "2023-10-31T01:25:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Dorian", + "Persistent ID": "14B2890582336653", + "Track Type": "Remote" + }, + { + "Track ID": "6265", + "Name": "Pines", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Emmanuelle Proulx & Jessy Caron", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7815368", + "Total Time": "222090", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3779898449", + "Play Date UTC": "2023-10-11T16:47:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Pines", + "Persistent ID": "9EF5407E3407AD3F", + "Track Type": "Remote" + }, + { + "Track ID": "6267", + "Name": "Slap Pie", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Emmanuelle Proulx & Jessy Caron", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5638266", + "Total Time": "139815", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3781063781", + "Play Date UTC": "2023-10-25T04:29:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Slap Pie", + "Persistent ID": "CFC9C2962C65A6DE", + "Track Type": "Remote" + }, + { + "Track ID": "6269", + "Name": "Fiero GT", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Jessy Caron & Emmanuelle Proulx", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "2306554", + "Total Time": "51401", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3783768534", + "Play Date UTC": "2023-11-25T11:48:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Fiero GT", + "Persistent ID": "ACD1573F8DF02C15", + "Track Type": "Remote" + }, + { + "Track ID": "6271", + "Name": "Seven (Album V)", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Jessy Caron & Emmanuelle Proulx", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8254913", + "Total Time": "225394", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3774100437", + "Play Date UTC": "2023-08-05T14:13:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Seven (Album V)", + "Persistent ID": "3F5CE69DAE3FF1FA", + "Track Type": "Remote" + }, + { + "Track ID": "6273", + "Name": "Show Me How (Album V)", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Emmanuelle Proulx & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7644982", + "Total Time": "215111", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3774099820", + "Play Date UTC": "2023-08-05T14:03:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Show Me How (Album V)", + "Persistent ID": "B873E8596CACF92A", + "Track Type": "Remote" + }, + { + "Track ID": "6275", + "Name": "Alright", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Emmanuelle Proulx & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6205627", + "Total Time": "157949", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3779914071", + "Play Date UTC": "2023-10-11T21:07:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Alright", + "Persistent ID": "B8BF0A9FA196F01D", + "Track Type": "Remote" + }, + { + "Track ID": "6277", + "Name": "You Deserve This (Album V)", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Emmanuelle Proulx & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6568414", + "Total Time": "185625", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3774099613", + "Play Date UTC": "2023-08-05T14:00:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "You Deserve This (Album V)", + "Persistent ID": "5E5B6F2EFEC38882", + "Track Type": "Remote" + }, + { + "Track ID": "6279", + "Name": "Pierre", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Emmanuelle Proulx & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7239459", + "Total Time": "206860", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3781531841", + "Play Date UTC": "2023-10-30T14:30:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Pierre", + "Persistent ID": "334807E35C2DB1F5", + "Track Type": "Remote" + }, + { + "Track ID": "6281", + "Name": "Air", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Emmanuelle Proulx, Jessy Caron & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7069403", + "Total Time": "194364", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3774100842", + "Play Date UTC": "2023-08-05T14:20:42Z", + "Skip Count": -1, + "Skip Date": "2023-07-28T05:26:55Z", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Air", + "Persistent ID": "6F5FD2FBFF74E591", + "Track Type": "Remote" + }, + { + "Track ID": "6283", + "Name": "Porcelain", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Emmanuelle Proulx, Jessy Caron & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7817612", + "Total Time": "212890", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3776345948", + "Play Date UTC": "2023-08-31T13:59:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Porcelain", + "Persistent ID": "8E0DAF54541BDE67", + "Track Type": "Remote" + }, + { + "Track ID": "6285", + "Name": "Poodle of Mud", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Jessy Caron & Emmanuelle Proulx", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "3264127", + "Total Time": "79597", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "21", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3783712744", + "Play Date UTC": "2023-11-24T20:19:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Poodle of Mud", + "Persistent ID": "660850FCBF80F15F", + "Track Type": "Remote" + }, + { + "Track ID": "6287", + "Name": "Something in Water", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Emmanuelle Proulx, Jessy Caron & Dragos Chiriac", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7211419", + "Total Time": "198875", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "22", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783707648", + "Play Date UTC": "2023-11-24T18:54:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Something in Water", + "Persistent ID": "388A11C21825E310", + "Track Type": "Remote" + }, + { + "Track ID": "6289", + "Name": "Tailwhip Revisited", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Jessy Caron, Dragos Chiriac & Emmanuelle Proulx", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "8590836", + "Total Time": "240000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "23", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3779192552", + "Play Date UTC": "2023-10-03T12:42:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Tailwhip Revisited", + "Persistent ID": "F0DC4931EB6E057F", + "Track Type": "Remote" + }, + { + "Track ID": "6291", + "Name": "Poplar Tree", + "Artist": "Men I Trust", + "Album Artist": "Men I Trust", + "Composer": "Dragos Chiriac, Emmanuelle Proulx & Jessy Caron", + "Album": "Oncle Jazz", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "3103305", + "Total Time": "74092", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "24", + "Track Count": "24", + "Year": "2019", + "Date Modified": "2022-12-22T12:40:07Z", + "Date Added": "2022-12-22T12:40:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3777564059", + "Play Date UTC": "2023-09-14T16:20:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oncle Jazz", + "Sort Artist": "Men I Trust", + "Sort Name": "Poplar Tree", + "Persistent ID": "45763F22BD373338", + "Track Type": "Remote" + }, + { + "Track ID": "6293", + "Name": "So Long Forever", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10718062", + "Total Time": "305040", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T10:28:35Z", + "Date Added": "2022-12-23T10:28:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781531237", + "Play Date UTC": "2023-10-30T14:20:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "So Long Forever", + "Persistent ID": "B1823D671750FAD2", + "Track Type": "Remote" + }, + { + "Track ID": "6295", + "Name": "Break the Silence", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7634845", + "Total Time": "211907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3773377628", + "Play Date UTC": "2023-07-28T05:27:08Z", + "Skip Count": "1", + "Skip Date": "2022-12-26T22:16:42Z", + "Release Date": "2016-05-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "Break the Silence", + "Persistent ID": "44D94AB7C9B27BE1", + "Track Type": "Remote" + }, + { + "Track ID": "6297", + "Name": "Bitter", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8286612", + "Total Time": "233360", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3780834474", + "Play Date UTC": "2023-10-22T12:47:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "Bitter", + "Persistent ID": "7C6941BFD55ECA2A", + "Track Type": "Remote" + }, + { + "Track ID": "6299", + "Name": "Live Well", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8764053", + "Total Time": "249840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3779202878", + "Play Date UTC": "2023-10-03T15:34:38Z", + "Skip Count": "1", + "Skip Date": "2022-12-25T14:13:04Z", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "Live Well", + "Persistent ID": "B616A8C802AA5857", + "Track Type": "Remote" + }, + { + "Track ID": "6301", + "Name": "It's Over", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7540798", + "Total Time": "214400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3776428534", + "Play Date UTC": "2023-09-01T12:55:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-10-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "It's Over", + "Persistent ID": "191DA9EC2434FCCB", + "Track Type": "Remote" + }, + { + "Track ID": "6303", + "Name": "Fire in the Sky", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Matt Hodges & Will Dorey", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9620118", + "Total Time": "272253", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3773378696", + "Play Date UTC": "2023-07-28T05:44:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "Fire in the Sky", + "Persistent ID": "8505EF0CA7F4A038", + "Track Type": "Remote" + }, + { + "Track ID": "6305", + "Name": "Family", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6596898", + "Total Time": "186160", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3779199267", + "Play Date UTC": "2023-10-03T14:34:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "Family", + "Persistent ID": "87063366810429BA", + "Track Type": "Remote" + }, + { + "Track ID": "6307", + "Name": "Have Faith", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8712292", + "Total Time": "246893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3783778797", + "Play Date UTC": "2023-11-25T14:39:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-07-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "Have Faith", + "Persistent ID": "8384BD32EB1AF748", + "Track Type": "Remote" + }, + { + "Track ID": "6309", + "Name": "Blackheath", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9650835", + "Total Time": "276760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3777135749", + "Play Date UTC": "2023-09-09T17:22:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "Blackheath", + "Persistent ID": "7D291AC9B9418593", + "Track Type": "Remote" + }, + { + "Track ID": "6311", + "Name": "Holy Smoke", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Will Dorey & Matt Hodges", + "Album": "So Long Forever", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7101921", + "Total Time": "198013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2022-12-23T11:16:46Z", + "Date Added": "2022-12-23T11:16:46Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3780195159", + "Play Date UTC": "2023-10-15T03:12:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-09-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Long Forever", + "Sort Artist": "Palace", + "Sort Name": "Holy Smoke", + "Persistent ID": "8E42E92B315CC143", + "Track Type": "Remote" + }, + { + "Track ID": "6313", + "Name": "Ghost!", + "Artist": "Kid Cudi", + "Album Artist": "Kid Cudi", + "Composer": "Scott Mescudi, E. Haynie, Rusty Evans, Victoria Pike & Teddy Randazzo", + "Album": "Man On the Moon II: The Legend of Mr. Rager", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10250171", + "Total Time": "289067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "17", + "Year": "2010", + "Date Modified": "2022-12-27T17:41:34Z", + "Date Added": "2022-12-27T17:41:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781520001", + "Play Date UTC": "2023-10-30T11:13:21Z", + "Skip Count": "1", + "Skip Date": "2023-01-08T19:34:11Z", + "Release Date": "2010-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Man On the Moon II: The Legend of Mr. Rager", + "Sort Artist": "Kid Cudi", + "Sort Name": "Ghost!", + "Persistent ID": "9771D106081D3863", + "Track Type": "Remote" + }, + { + "Track ID": "6315", + "Name": "4:44", + "Artist": "JAY-Z", + "Album Artist": "JAY-Z", + "Composer": "Shawn Carter, Kanan Keeney & No ID", + "Album": "4:44", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9974196", + "Total Time": "284496", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2022-12-27T18:02:09Z", + "Date Added": "2022-12-27T18:02:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3772792387", + "Play Date UTC": "2023-07-21T10:53:07Z", + "Skip Count": "2", + "Skip Date": "2023-01-14T21:37:27Z", + "Release Date": "2017-06-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "4:44", + "Sort Artist": "JAY-Z", + "Sort Name": "4:44", + "Persistent ID": "E61BF8642A8E5A09", + "Track Type": "Remote" + }, + { + "Track ID": "6317", + "Name": "Stargirl Interlude (feat. Lana Del Rey)", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "Lana Del Rey, The Weeknd, Martin McKinney & Timothy Mckenzie", + "Album": "Starboy", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4269635", + "Total Time": "111611", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2022-12-28T16:46:16Z", + "Date Added": "2022-12-28T16:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "61", + "Play Date": "3783779221", + "Play Date UTC": "2023-11-25T14:47:01Z", + "Skip Count": "1", + "Skip Date": "2022-12-30T16:14:00Z", + "Release Date": "2016-11-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Starboy", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Stargirl Interlude (feat. Lana Del Rey)", + "Track Type": "71070213E29F9BB4" + }, + { + "Track ID": "6319", + "Name": "A Real Hero", + "Artist": "College & Electric Youth", + "Album Artist": "College & Electric Youth", + "Composer": "undef", + "Album": "A Real Hero - Single", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "9360337", + "Total Time": "267848", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2010", + "Date Modified": "2023-01-04T20:44:51Z", + "Date Added": "2023-01-04T20:44:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3767085031", + "Play Date UTC": "2023-05-16T09:30:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2010-01-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "A Real Hero - Single", + "Sort Artist": "College & Electric Youth", + "Sort Name": "Real Hero", + "Persistent ID": "A46A228ABA734A93", + "Track Type": "Remote" + }, + { + "Track ID": "6321", + "Name": "Exonerate (Stripped)", + "Artist": "The Hails", + "Album Artist": "The Hails", + "Composer": "Robert Kingsley & Dylan McCue", + "Album": "Exonerate (Stripped) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7404909", + "Total Time": "210000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2023-01-06T21:22:00Z", + "Date Added": "2023-01-06T21:22:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3778570843", + "Play Date UTC": "2023-09-26T08:00:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-12-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Exonerate (Stripped) - Single", + "Sort Artist": "Hails", + "Sort Name": "Hails", + "Persistent ID": "Exonerate (Stripped)", + "Track Type": "C4C41748C24B345B" + }, + { + "Track ID": "6323", + "Name": "I Was Never There", + "Artist": "The Weeknd & Gesaffelstein", + "Album Artist": "The Weeknd", + "Composer": "Gesaffelstein, The Weeknd & Frank Dukes", + "Album": "My Dear Melancholy,", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8644174", + "Total Time": "241070", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2018", + "Date Modified": "2023-01-08T15:09:51Z", + "Date Added": "2023-01-08T15:09:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3783455371", + "Play Date UTC": "2023-11-21T20:49:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-03-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "My Dear Melancholy,", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd & Gesaffelstein", + "Persistent ID": "I Was Never There", + "Track Type": "FC5C51F573F381B6" + }, + { + "Track ID": "6325", + "Name": "Nights", + "Artist": "Frank Ocean", + "Album Artist": "Frank Ocean", + "Composer": "undef", + "Album": "Blonde", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "10665613", + "Total Time": "307151", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2023-01-08T21:05:07Z", + "Date Added": "2023-01-08T21:05:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3773543718", + "Play Date UTC": "2023-07-30T03:35:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-08-20T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blonde", + "Sort Artist": "Frank Ocean", + "Sort Name": "Nights", + "Persistent ID": "9ADAAC38A59B2792", + "Track Type": "Remote" + }, + { + "Track ID": "6327", + "Name": "midnight sun (reflects) [acoustic version]", + "Artist": "Nil\u00fcfer Yanya", + "Album Artist": "Nil\u00fcfer Yanya", + "Composer": "Nil\u00fcfer Yanya & Will Archer", + "Album": "PAINLESS (Deluxe Edition)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11141317", + "Total Time": "295341", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "18", + "Year": "2022", + "Date Modified": "2023-01-14T08:26:50Z", + "Date Added": "2023-01-14T08:26:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3776604021", + "Play Date UTC": "2023-09-03T13:40:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-12-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "PAINLESS (Deluxe Edition)", + "Sort Artist": "Nil\u00fcfer Yanya", + "Sort Name": "midnight sun (reflects) [acoustic version]", + "Persistent ID": "8294FCDDDB85726C", + "Track Type": "Remote" + }, + { + "Track ID": "6329", + "Name": "Passion", + "Artist": "BONES & Slim Guerilla", + "Album Artist": "BONES", + "Composer": "undef", + "Album": "2MillionBlunts", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6981895", + "Total Time": "195056", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "19", + "Year": "2022", + "Date Modified": "2023-01-14T09:21:02Z", + "Date Added": "2023-01-14T09:21:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780247583", + "Play Date UTC": "2023-10-15T17:46:23Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-10-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "2MillionBlunts", + "Sort Artist": "BONES & Slim Guerilla", + "Sort Name": "Passion", + "Persistent ID": "2D7C88D99EAFD97C", + "Track Type": "Remote" + }, + { + "Track ID": "6331", + "Name": "Money Trees (feat. Jay Rock)", + "Artist": "Kendrick Lamar", + "Album Artist": "Kendrick Lamar", + "Composer": "Kendrick Lamar, D. Natche, Johnny McKinzie, V. Garance, A. Legrand & Alex Scally", + "Album": "good kid, m.A.A.d city (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "13550144", + "Total Time": "386905", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "19", + "Year": "2012", + "Date Modified": "2023-01-18T22:08:06Z", + "Date Added": "2023-01-18T22:08:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3781059297", + "Play Date UTC": "2023-10-25T03:14:57Z", + "Skip Count": "2", + "Skip Date": "2023-04-28T17:04:37Z", + "Release Date": "2012-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "good kid, m.A.A.d city (Deluxe)", + "Sort Artist": "Kendrick Lamar", + "Sort Name": "Money Trees (feat. Jay Rock)", + "Persistent ID": "9EB268B7B2446CFB", + "Track Type": "Remote" + }, + { + "Track ID": "6333", + "Name": "The Motorcycle Song", + "Artist": "Acid Ghost", + "Album Artist": "Acid Ghost", + "Composer": "Ace Barcelon", + "Album": "-", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "9011329", + "Total Time": "253333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "8", + "Year": "2023", + "Date Modified": "2023-01-20T21:00:56Z", + "Date Added": "2023-01-20T21:00:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "56", + "Play Date": "3781387531", + "Play Date UTC": "2023-10-28T22:25:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-01-18T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "-", + "Sort Artist": "Acid Ghost", + "Sort Name": "Motorcycle Song", + "Persistent ID": "69F917ABCDC82AE1", + "Track Type": "Remote" + }, + { + "Track ID": "6335", + "Name": "Eve II", + "Artist": "Mileena", + "Album Artist": "Mileena", + "Composer": "Isaac Teague, Jason Abanador, Mileena Trinidad Sobreira-Yousufy, Hans Li & Felix Fox-Pappas", + "Album": "Eve II - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6727032", + "Total Time": "190499", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-01-20T21:53:57Z", + "Date Added": "2023-01-20T21:53:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781060772", + "Play Date UTC": "2023-10-25T03:39:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Eve II - Single", + "Sort Artist": "Mileena", + "Sort Name": "Eve II", + "Persistent ID": "DDA3A0C25BC19CAD", + "Track Type": "Remote" + }, + { + "Track ID": "6337", + "Name": "Feelings", + "Artist": "Jay Prince & Tiny Spys", + "Album Artist": "Jay Prince & Tiny Spys", + "Composer": "Jazon Kawu-Eugenio & Dominique Sanders", + "Album": "Adventures Of You - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6938686", + "Total Time": "190250", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2022", + "Date Modified": "2023-01-21T08:53:25Z", + "Date Added": "2023-01-21T08:53:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780500972", + "Play Date UTC": "2023-10-18T16:09:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-12-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Adventures Of You - Single", + "Sort Artist": "Jay Prince & Tiny Spys", + "Sort Name": "Feelings", + "Persistent ID": "AE3E58DA79F4927C", + "Track Type": "Remote" + }, + { + "Track ID": "6339", + "Name": "Seen It All Before", + "Artist": "Pouya & Delmar", + "Album Artist": "Pouya & Delmar", + "Composer": "Pouya, Christian Carcamo & Luke Wild", + "Album": "Seen It All Before - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7060202", + "Total Time": "187768", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-01-21T10:02:53Z", + "Date Added": "2023-01-21T10:02:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3774967094", + "Play Date UTC": "2023-08-15T14:58:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seen It All Before - Single", + "Sort Artist": "Pouya & Delmar", + "Sort Name": "Seen It All Before", + "Persistent ID": "58DECAF47B16B45B", + "Track Type": "Remote" + }, + { + "Track ID": "6341", + "Name": "Fat Head", + "Artist": "Jakey", + "Album Artist": "Jakey", + "Composer": "Jacob Matthew Christensen", + "Album": "Romcom", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9745822", + "Total Time": "276654", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "8", + "Year": "2022", + "Date Modified": "2023-01-21T10:08:22Z", + "Date Added": "2023-01-21T10:08:22Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3782894474", + "Play Date UTC": "2023-11-15T09:01:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-11-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Romcom", + "Sort Artist": "Jakey", + "Sort Name": "Fat Head", + "Persistent ID": "59201F31010195EF", + "Track Type": "Remote" + }, + { + "Track ID": "6343", + "Name": "Believer", + "Artist": "SYML", + "Album Artist": "SYML", + "Composer": "Brian Fennell", + "Album": "The Day My Father Died", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9370639", + "Total Time": "263253", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "15", + "Year": "2023", + "Date Modified": "2023-01-21T11:53:31Z", + "Date Added": "2023-01-21T11:53:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3774966633", + "Play Date UTC": "2023-08-15T14:50:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-01-06T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Day My Father Died", + "Sort Artist": "SYML", + "Sort Name": "Believer", + "Persistent ID": "554EE7BB871FCE35", + "Track Type": "Remote" + }, + { + "Track ID": "6345", + "Name": "Shadows", + "Artist": "CHRIS YONGE", + "Album Artist": "CHRIS YONGE", + "Composer": "Chris Stiliadis & Ren\u00e9 Datz", + "Album": "Shadows - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6969910", + "Total Time": "187842", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-01-21T12:01:52Z", + "Date Added": "2023-01-21T12:01:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3776326295", + "Play Date UTC": "2023-08-31T08:31:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-01-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Shadows - Single", + "Sort Artist": "CHRIS YONGE", + "Sort Name": "Shadows", + "Persistent ID": "DAB9A3EBE19FB10A", + "Track Type": "Remote" + }, + { + "Track ID": "6347", + "Name": "All Gone (Aftermath)", + "Artist": "Gustavo Santaolalla", + "Album Artist": "Gustavo Santaolalla", + "Composer": "Gustavo Santaolalla", + "Album": "The Last of Us (Video Game Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "2693751", + "Total Time": "64440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "30", + "Year": "2013", + "Date Modified": "2023-01-25T09:41:29Z", + "Date Added": "2023-01-25T09:41:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3781437341", + "Play Date UTC": "2023-10-29T12:15:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-06-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Last of Us (Video Game Soundtrack)", + "Sort Artist": "Gustavo Santaolalla", + "Sort Name": "All Gone (Aftermath)", + "Persistent ID": "01EC9AE222AECE98", + "Track Type": "Remote" + }, + { + "Track ID": "6349", + "Name": "The Last of Us", + "Artist": "Gustavo Santaolalla", + "Album Artist": "Gustavo Santaolalla", + "Composer": "Gustavo Santaolalla", + "Album": "The Last of Us (Video Game Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6802734", + "Total Time": "183533", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "30", + "Year": "2013", + "Date Modified": "2023-01-25T15:50:44Z", + "Date Added": "2023-01-25T15:50:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780772171", + "Play Date UTC": "2023-10-21T19:29:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-06-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Last of Us (Video Game Soundtrack)", + "Sort Artist": "Gustavo Santaolalla", + "Sort Name": "Last of Us", + "Persistent ID": "9424D28930EDCB0E", + "Track Type": "Remote" + }, + { + "Track ID": "6351", + "Name": "The Choice", + "Artist": "Gustavo Santaolalla", + "Album Artist": "Gustavo Santaolalla", + "Composer": "Gustavo Santaolalla", + "Album": "The Last of Us (Video Game Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "4001033", + "Total Time": "102373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "30", + "Year": "2013", + "Date Modified": "2023-01-25T16:05:17Z", + "Date Added": "2023-01-25T16:05:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "28", + "Play Date": "3783492744", + "Play Date UTC": "2023-11-22T07:12:24Z", + "Skip Count": "1", + "Skip Date": "2023-01-25T16:51:41Z", + "Release Date": "2013-06-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Last of Us (Video Game Soundtrack)", + "Sort Artist": "Gustavo Santaolalla", + "Sort Name": "Choice", + "Persistent ID": "48012B626A0591AF", + "Track Type": "Remote" + }, + { + "Track ID": "6353", + "Name": "The Night King", + "Artist": "Ramin Djawadi", + "Album Artist": "Ramin Djawadi", + "Composer": "Ramin Djawadi", + "Album": "Game of Thrones: Season 8 (Music from the HBO Series)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "18391422", + "Total Time": "530532", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "32", + "Year": "2019", + "Date Modified": "2023-01-26T07:51:19Z", + "Date Added": "2023-01-26T07:51:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "20", + "Play Date": "3782979661", + "Play Date UTC": "2023-11-16T08:41:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-28T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "100", + "Sort Album": "Game of Thrones: Season 8 (Music from the HBO Series)", + "Sort Artist": "Ramin Djawadi", + "Sort Name": "Night King", + "Persistent ID": "1313C08A2CC9211F", + "Track Type": "Remote" + }, + { + "Track ID": "6355", + "Name": "Rabbot Ho", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Dennis Hamm", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "1865869", + "Total Time": "38602", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3776346502", + "Play Date UTC": "2023-08-31T14:08:22Z", + "Skip Count": "3", + "Skip Date": "2023-05-07T14:13:30Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Rabbot Ho", + "Persistent ID": "0A3AACE850673D78", + "Track Type": "Remote" + }, + { + "Track ID": "6357", + "Name": "Bus In These Streets", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Louis Cole", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5316320", + "Total Time": "144197", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "23", + "Year": "2016", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3773757711", + "Play Date UTC": "2023-08-01T15:01:51Z", + "Skip Count": "1", + "Skip Date": "2023-03-08T08:17:57Z", + "Release Date": "2016-08-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Bus In These Streets", + "Persistent ID": "448622491362ED94", + "Track Type": "Remote" + }, + { + "Track ID": "6359", + "Name": "A Fan's Mail (Tron Song Suite II)", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Mark Spears", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6163751", + "Total Time": "158938", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3783665916", + "Play Date UTC": "2023-11-24T07:18:36Z", + "Skip Count": "2", + "Skip Date": "2023-02-11T09:27:27Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Fan's Mail (Tron Song Suite II)", + "Persistent ID": "C746416996F5A435", + "Track Type": "Remote" + }, + { + "Track ID": "6361", + "Name": "Lava Lamp", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Mark Spears", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6509918", + "Total Time": "178570", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780415270", + "Play Date UTC": "2023-10-17T16:21:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Lava Lamp", + "Persistent ID": "28CADEE05C760034", + "Track Type": "Remote" + }, + { + "Track ID": "6363", + "Name": "Jethro", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Steven Ellison", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "3811014", + "Total Time": "94897", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3767612810", + "Play Date UTC": "2023-05-22T12:06:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Jethro", + "Persistent ID": "1331279015CACE4D", + "Track Type": "Remote" + }, + { + "Track ID": "6365", + "Name": "Day & Night", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Sanaa Burris", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "1767429", + "Total Time": "37397", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3770359219", + "Play Date UTC": "2023-06-23T07:00:19Z", + "Skip Count": "2", + "Skip Date": "2023-03-02T08:33:13Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Day & Night", + "Persistent ID": "612D96D28DFFA9EF", + "Track Type": "Remote" + }, + { + "Track ID": "6367", + "Name": "Show You the Way (feat. Michael McDonald & Kenny Loggins)", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Michael McDonald, Kenny Loggins & Stephen Bruner", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7670826", + "Total Time": "214554", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3776148723", + "Play Date UTC": "2023-08-29T07:12:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-01-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Show You the Way (feat. Michael McDonald & Kenny Loggins)", + "Persistent ID": "38C46D21E7320C56", + "Track Type": "Remote" + }, + { + "Track ID": "6369", + "Name": "Walk On By (feat. Kendrick Lamar)", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Kendrick Lamar & Stephen Bruner", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7153400", + "Total Time": "199137", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781205763", + "Play Date UTC": "2023-10-26T19:56:03Z", + "Skip Count": "1", + "Skip Date": "2023-03-07T05:21:06Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Walk On By (feat. Kendrick Lamar)", + "Persistent ID": "AEA5AAC497B6AE90", + "Track Type": "Remote" + }, + { + "Track ID": "6371", + "Name": "Blackkk", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Mark Spears", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5037769", + "Total Time": "119761", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3770534856", + "Play Date UTC": "2023-06-25T07:47:36Z", + "Skip Count": "1", + "Skip Date": "2023-10-26T13:18:35Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Blackkk", + "Persistent ID": "7E06F5646D2ADF92", + "Track Type": "Remote" + }, + { + "Track ID": "6373", + "Name": "Tokyo", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Dennis Hamm", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5373899", + "Total Time": "144941", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3762699874", + "Play Date UTC": "2023-03-26T15:24:34Z", + "Skip Count": "1", + "Skip Date": "2023-03-27T08:14:46Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Tokyo", + "Persistent ID": "641F28F463458581", + "Track Type": "Remote" + }, + { + "Track ID": "6375", + "Name": "Jameel's Space Ride", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Louis Cole", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "2888832", + "Total Time": "69234", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3780831961", + "Play Date UTC": "2023-10-22T12:06:01Z", + "Skip Count": "2", + "Skip Date": "2023-05-30T14:44:33Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Jameel's Space Ride", + "Persistent ID": "CE405E0A0752CEE5", + "Track Type": "Remote" + }, + { + "Track ID": "6377", + "Name": "Friend Zone", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Charles Dickerson", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6969265", + "Total Time": "192511", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3767073523", + "Play Date UTC": "2023-05-16T06:18:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Friend Zone", + "Persistent ID": "00FD8696151BB314", + "Track Type": "Remote" + }, + { + "Track ID": "6379", + "Name": "Them Changes", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner, Steven Ellison, Chris Jasper, Ernie Isley, Marvin Isley, O'Kelly Isley, Ronald Isley & Rudolph Isley", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6783110", + "Total Time": "188454", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "23", + "Year": "2015", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3780296215", + "Play Date UTC": "2023-10-16T07:16:55Z", + "Skip Count": "2", + "Skip Date": "2023-10-29T15:51:53Z", + "Release Date": "2015-06-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Them Changes", + "Persistent ID": "70FA581AC81E426F", + "Track Type": "Remote" + }, + { + "Track ID": "6381", + "Name": "Where I'm Going", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Steven Ellison", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4824266", + "Total Time": "129759", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3780663197", + "Play Date UTC": "2023-10-20T13:13:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Where I'm Going", + "Persistent ID": "FDA6F426A8852F12", + "Track Type": "Remote" + }, + { + "Track ID": "6383", + "Name": "Drink Dat (feat. Wiz Khalifa)", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner, Cameron Thomaz & Taylor Graves", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7742937", + "Total Time": "215163", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3762700669", + "Play Date UTC": "2023-03-26T15:37:49Z", + "Skip Count": "1", + "Skip Date": "2023-10-25T09:22:09Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Drink Dat (feat. Wiz Khalifa)", + "Persistent ID": "DE8CB738587ABE79", + "Track Type": "Remote" + }, + { + "Track ID": "6385", + "Name": "Inferno", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & S Bruner", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8523117", + "Total Time": "240902", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3780192703", + "Play Date UTC": "2023-10-15T02:31:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Inferno", + "Persistent ID": "07C19FE91B96FB3C", + "Track Type": "Remote" + }, + { + "Track ID": "6387", + "Name": "I Am Crazy", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "1384571", + "Total Time": "25870", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3767702375", + "Play Date UTC": "2023-05-23T12:59:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "I Am Crazy", + "Persistent ID": "06234CDDBD13D90E", + "Track Type": "Remote" + }, + { + "Track ID": "6389", + "Name": "3AM", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Steven Ellison", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "3025214", + "Total Time": "75154", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3768982814", + "Play Date UTC": "2023-06-07T08:40:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "3AM", + "Persistent ID": "654A2DF8D9158730", + "Track Type": "Remote" + }, + { + "Track ID": "6391", + "Name": "Drunk", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Steven Ellison", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "3904694", + "Total Time": "102378", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "21", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3781616737", + "Play Date UTC": "2023-10-31T14:05:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Drunk", + "Persistent ID": "3D4B235ECF3762CA", + "Track Type": "Remote" + }, + { + "Track ID": "6393", + "Name": "The Turn Down (feat. Pharrell)", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Pharrell Williams", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5628991", + "Total Time": "149085", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "22", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3781868104", + "Play Date UTC": "2023-11-03T11:55:04Z", + "Skip Count": "1", + "Skip Date": "2023-07-09T08:39:32Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "Turn Down (feat. Pharrell)", + "Persistent ID": "B8AB4ADC9474DA53", + "Track Type": "Remote" + }, + { + "Track ID": "6395", + "Name": "DUI", + "Artist": "Thundercat", + "Album Artist": "Thundercat", + "Composer": "Stephen Bruner & Dennis Hamm", + "Album": "Drunk", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5092412", + "Total Time": "138223", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "23", + "Track Count": "23", + "Year": "2017", + "Date Modified": "2023-01-26T10:46:16Z", + "Date Added": "2023-01-26T10:46:16Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3777365141", + "Play Date UTC": "2023-09-12T09:05:41Z", + "Skip Count": "1", + "Skip Date": "2023-03-25T08:03:51Z", + "Release Date": "2017-02-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Drunk", + "Sort Artist": "Thundercat", + "Sort Name": "DUI", + "Persistent ID": "79902913F324319E", + "Track Type": "Remote" + }, + { + "Track ID": "6397", + "Name": "Pyramids", + "Artist": "Frank Ocean", + "Album Artist": "Frank Ocean", + "Composer": "Malay, Frank Ocean & Taylor Johnson", + "Album": "channel ORANGE", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "20333981", + "Total Time": "592920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2012", + "Date Modified": "2023-01-29T07:40:11Z", + "Date Added": "2023-01-29T07:40:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3767271243", + "Play Date UTC": "2023-05-18T13:14:03Z", + "Skip Count": "2", + "Skip Date": "2023-02-23T18:18:45Z", + "Release Date": "2012-06-08T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "channel ORANGE", + "Sort Artist": "Frank Ocean", + "Sort Name": "Pyramids", + "Persistent ID": "239FFB4E4112C0D0", + "Track Type": "Remote" + }, + { + "Track ID": "6399", + "Name": "Time Moves Slow", + "Artist": "BADBADNOTGOOD & Samuel T. Herring", + "Album Artist": "BADBADNOTGOOD", + "Composer": "Chester Hansen", + "Album": "IV", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "9618206", + "Total Time": "273864", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2016", + "Date Modified": "2023-01-29T08:03:27Z", + "Date Added": "2023-01-29T08:03:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "30", + "Play Date": "3781386909", + "Play Date UTC": "2023-10-28T22:15:09Z", + "Skip Count": "1", + "Skip Date": "2023-02-13T11:25:51Z", + "Release Date": "2016-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "IV", + "Sort Artist": "BADBADNOTGOOD & Samuel T. Herring", + "Sort Name": "Time Moves Slow", + "Persistent ID": "AEEE8BE9777D9DA4", + "Track Type": "Remote" + }, + { + "Track ID": "6401", + "Name": "Trust", + "Artist": "Brent Faiyaz", + "Album Artist": "Brent Faiyaz", + "Composer": "Christopher Brent Wood", + "Album": "Lost - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5670717", + "Total Time": "158421", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2018", + "Date Modified": "2023-01-29T08:16:32Z", + "Date Added": "2023-01-29T08:16:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3778766618", + "Play Date UTC": "2023-09-28T14:23:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-10-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lost - EP", + "Sort Artist": "Brent Faiyaz", + "Sort Name": "Trust", + "Persistent ID": "3B86DBF9A3456E12", + "Track Type": "Remote" + }, + { + "Track ID": "6403", + "Name": "PRICE OF FAME", + "Artist": "Brent Faiyaz", + "Album Artist": "Brent Faiyaz", + "Composer": "Brent Faiyaz", + "Album": "WASTELAND", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "13254779", + "Total Time": "379004", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "19", + "Year": "2022", + "Date Modified": "2023-01-29T11:23:03Z", + "Date Added": "2023-01-29T11:23:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3781061151", + "Play Date UTC": "2023-10-25T03:45:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-06-24T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WASTELAND", + "Sort Artist": "Brent Faiyaz", + "Sort Name": "PRICE OF FAME", + "Persistent ID": "999947C7613C8A8E", + "Track Type": "Remote" + }, + { + "Track ID": "6405", + "Name": "Searchin", + "Artist": "Sonder", + "Album Artist": "Sonder", + "Composer": "undef", + "Album": "Into", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9290998", + "Total Time": "264242", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "7", + "Year": "2017", + "Date Modified": "2023-01-29T11:29:19Z", + "Date Added": "2023-01-29T11:29:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "32", + "Play Date": "3781198582", + "Play Date UTC": "2023-10-26T17:56:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-01-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Into", + "Sort Artist": "Sonder", + "Sort Name": "Searchin", + "Persistent ID": "4240CF4AE705606F", + "Track Type": "Remote" + }, + { + "Track ID": "6407", + "Name": "Life is but a Stream~", + "Artist": "$uicideboy$", + "Album Artist": "$uicideboy$", + "Composer": "Aristos Petrou & Scott Arceneaux Jr.", + "Album": "Long Term Effects of SUFFERING", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4589417", + "Total Time": "122880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2021", + "Date Modified": "2023-02-01T22:23:07Z", + "Date Added": "2023-02-01T22:23:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "31", + "Play Date": "3777564830", + "Play Date UTC": "2023-09-14T16:33:50Z", + "Skip Count": "1", + "Skip Date": "2023-02-03T17:45:42Z", + "Release Date": "2021-08-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Long Term Effects of SUFFERING", + "Sort Artist": "$uicideboy$", + "Sort Name": "Life is but a Stream~", + "Persistent ID": "B2E96015620709BE", + "Track Type": "Remote" + }, + { + "Track ID": "6409", + "Name": "Push", + "Artist": "Fog Lake", + "Album Artist": "Fog Lake", + "Composer": "undef", + "Album": "Dragonchaser", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6781019", + "Total Time": "182749", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2016", + "Date Modified": "2023-02-02T15:04:33Z", + "Date Added": "2023-02-02T15:04:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3781185552", + "Play Date UTC": "2023-10-26T14:19:12Z", + "Skip Count": "1", + "Skip Date": "2023-02-06T19:28:42Z", + "Release Date": "2016-04-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dragonchaser", + "Sort Artist": "Fog Lake", + "Sort Name": "Push", + "Persistent ID": "1597B24D75CDC528", + "Track Type": "Remote" + }, + { + "Track ID": "6411", + "Name": "As Always", + "Artist": "Hibou", + "Album Artist": "Hibou", + "Composer": "Peter Michel", + "Album": "Halve", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "7807084", + "Total Time": "220440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2023-02-02T15:13:26Z", + "Date Added": "2023-02-02T15:13:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3776335116", + "Play Date UTC": "2023-08-31T10:58:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-06-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Halve", + "Sort Artist": "Hibou", + "Sort Name": "As Always", + "Persistent ID": "71E90741AE83A93E", + "Track Type": "Remote" + }, + { + "Track ID": "6413", + "Name": "Apocalypse", + "Artist": "Cigarettes After Sex", + "Album Artist": "Cigarettes After Sex", + "Composer": "Gregory Steven Gonzalez", + "Album": "Cigarettes After Sex", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10135492", + "Total Time": "290147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2023-02-02T15:22:02Z", + "Date Added": "2023-02-02T15:22:02Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "44", + "Play Date": "3781188337", + "Play Date UTC": "2023-10-26T15:05:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-03-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cigarettes After Sex", + "Sort Artist": "Cigarettes After Sex", + "Sort Name": "Apocalypse", + "Persistent ID": "3EC53B60657B58B3", + "Track Type": "Remote" + }, + { + "Track ID": "6415", + "Name": "Reflex", + "Artist": "SAINt JHN", + "Album Artist": "SAINt JHN", + "Composer": "Carlos St. John & Lee Stashenko", + "Album": "Collection One", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8644358", + "Total Time": "241842", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2016", + "Date Modified": "2023-02-10T13:49:13Z", + "Date Added": "2023-02-10T13:49:13Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3775211520", + "Play Date UTC": "2023-08-18T10:52:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-09-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Collection One", + "Sort Artist": "SAINt JHN", + "Sort Name": "Reflex", + "Persistent ID": "38F7DEDA20A20CBB", + "Track Type": "Remote" + }, + { + "Track ID": "6417", + "Name": "Don't Come Out the House (feat. 21 Savage)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Sh\u00e9yaa Bin Abraham-Joseph & Brytavious Lakeith Chambers", + "Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6192712", + "Total Time": "168347", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "3", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-02-11T17:11:25Z", + "Date Added": "2023-02-11T17:11:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3783781596", + "Play Date UTC": "2023-11-25T15:26:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Sort Artist": "Metro Boomin", + "Sort Name": "Don't Come Out the House (feat. 21 Savage)", + "Persistent ID": "24EC89EEDD02F396", + "Track Type": "Remote" + }, + { + "Track ID": "6419", + "Name": "Sold Out Dates (feat. Lil Baby)", + "Artist": "Gunna", + "Album Artist": "Gunna", + "Composer": "undef", + "Album": "Sold Out Dates (feat. Lil Baby) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6053229", + "Total Time": "166368", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "2023-02-12T14:28:54Z", + "Date Added": "2023-02-12T14:28:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "43", + "Play Date": "3783778549", + "Play Date UTC": "2023-11-25T14:35:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sold Out Dates (feat. Lil Baby) - Single", + "Sort Artist": "Gunna", + "Sort Name": "Sold Out Dates (feat. Lil Baby)", + "Persistent ID": "2D41C3518FD76A63", + "Track Type": "Remote" + }, + { + "Track ID": "6421", + "Name": "No Other", + "Artist": "Palace", + "Album Artist": "Palace", + "Composer": "Leo Wyndham, Rupert Turner, Matt Hodges & Harry Deacon", + "Album": "Life After", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8318300", + "Total Time": "233200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2019", + "Date Modified": "2023-02-14T12:49:38Z", + "Date Added": "2023-02-14T12:49:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3768570753", + "Play Date UTC": "2023-06-02T14:12:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-02-26T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life After", + "Sort Artist": "Palace", + "Sort Name": "No Other", + "Persistent ID": "1F0981BD4AC555D7", + "Track Type": "Remote" + }, + { + "Track ID": "6423", + "Name": "Rainy Day Loop", + "Artist": "SALES", + "Album Artist": "SALES", + "Composer": "undef", + "Album": "Forever & Ever", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7669361", + "Total Time": "222000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2018", + "Date Modified": "2023-02-14T12:54:51Z", + "Date Added": "2023-02-14T12:54:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3780910929", + "Play Date UTC": "2023-10-23T10:02:09Z", + "Skip Count": "1", + "Skip Date": "2023-02-22T07:48:02Z", + "Release Date": "2018-07-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Forever & Ever", + "Sort Artist": "SALES", + "Sort Name": "Rainy Day Loop", + "Persistent ID": "63F5F99D2BAFF020", + "Track Type": "Remote" + }, + { + "Track ID": "6425", + "Name": "Stranger", + "Artist": "Mild Orange", + "Album Artist": "Mild Orange", + "Composer": "Jack Ferguson, Mehrtens Josh, Tom Kelk & Josh Reid", + "Album": "Foreplay", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8012024", + "Total Time": "218370", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2017", + "Date Modified": "2023-02-14T14:11:26Z", + "Date Added": "2023-02-14T14:11:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3780127835", + "Play Date UTC": "2023-10-14T08:30:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-10-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Foreplay", + "Sort Artist": "Mild Orange", + "Sort Name": "Stranger", + "Persistent ID": "0CCEE9CEBB4B5966", + "Track Type": "Remote" + }, + { + "Track ID": "6427", + "Name": "Vow", + "Artist": "SALES", + "Album Artist": "SALES", + "Composer": "undef", + "Album": "Sales - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6559152", + "Total Time": "184401", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2014", + "Date Modified": "2023-02-14T17:46:32Z", + "Date Added": "2023-02-14T17:46:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3781387276", + "Play Date UTC": "2023-10-28T22:21:16Z", + "Skip Count": "1", + "Skip Date": "2023-02-14T19:33:19Z", + "Release Date": "2014-05-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sales - EP", + "Sort Artist": "SALES", + "Sort Name": "Vow", + "Persistent ID": "534FCA961F57F961", + "Track Type": "Remote" + }, + { + "Track ID": "6429", + "Name": "Maybe Another Time", + "Artist": "Feng Suave", + "Album Artist": "Feng Suave", + "Composer": "Dani\u00ebl Schoemaker, Daniel de Jong, Adura Sulaiman & Kike Zwagerman", + "Album": "Warping Youth - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6684062", + "Total Time": "185293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2020", + "Date Modified": "2023-02-15T09:59:53Z", + "Date Added": "2023-02-15T09:59:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "37", + "Play Date": "3780918014", + "Play Date UTC": "2023-10-23T12:00:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-03-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Warping Youth - EP", + "Sort Artist": "Feng Suave", + "Sort Name": "Maybe Another Time", + "Persistent ID": "555D1A84388B6227", + "Track Type": "Remote" + }, + { + "Track ID": "6431", + "Name": "Blinding Sights (Left Me Cold in the Night)", + "Artist": "Yellow House", + "Album Artist": "Yellow House", + "Composer": "undef", + "Album": "A Carnival of Fears - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6171625", + "Total Time": "166287", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2017", + "Date Modified": "2023-02-15T11:36:01Z", + "Date Added": "2023-02-15T11:36:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "41", + "Play Date": "3769612228", + "Play Date UTC": "2023-06-14T15:30:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "A Carnival of Fears - EP", + "Sort Artist": "Yellow House", + "Sort Name": "Blinding Sights (Left Me Cold in the Night)", + "Persistent ID": "03B63528AD3E2B91", + "Track Type": "Remote" + }, + { + "Track ID": "6433", + "Name": "Give It All", + "Artist": "Foals", + "Album Artist": "Foals", + "Composer": "Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis", + "Album": "What Went Down", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10138296", + "Total Time": "287213", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "4", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2023-02-27T07:58:11Z", + "Date Added": "2023-02-27T07:58:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "47", + "Play Date": "3783494083", + "Play Date UTC": "2023-11-22T07:34:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-08-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "What Went Down", + "Sort Artist": "Foals", + "Sort Name": "Give It All", + "Persistent ID": "3B555DCF5B6C8E9A", + "Track Type": "Remote" + }, + { + "Track ID": "6435", + "Name": "Bacc Seat (feat. Ty Dolla $ign)", + "Artist": "Roddy Ricch", + "Album Artist": "Roddy Ricch", + "Composer": "Milan Modi, Rodrick Moore & Tyrone Griffin", + "Album": "Please Excuse Me For Being Antisocial", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6252077", + "Total Time": "172320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2023-03-10T17:03:51Z", + "Date Added": "2023-03-10T17:03:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "36", + "Play Date": "3773527669", + "Play Date UTC": "2023-07-29T23:07:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-12-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Please Excuse Me For Being Antisocial", + "Sort Artist": "Roddy Ricch", + "Sort Name": "Bacc Seat (feat. Ty Dolla $ign)", + "Persistent ID": "5320D82798C6CD83", + "Track Type": "Remote" + }, + { + "Track ID": "6437", + "Name": "Roll Dice", + "Artist": "Roddy Ricch", + "Album Artist": "Roddy Ricch", + "Composer": "Adarius Moragne, Aqeel Qadir Tate, Rodrick Moore & Samuel Gloade", + "Album": "Please Excuse Me For Being Antisocial", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6264982", + "Total Time": "170995", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2019", + "Date Modified": "2023-03-10T17:06:04Z", + "Date Added": "2023-03-10T17:06:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "39", + "Play Date": "3780774088", + "Play Date UTC": "2023-10-21T20:01:28Z", + "Skip Count": "3", + "Skip Date": "2023-06-04T20:59:12Z", + "Release Date": "2019-12-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Please Excuse Me For Being Antisocial", + "Sort Artist": "Roddy Ricch", + "Sort Name": "Roll Dice", + "Persistent ID": "5C42FFFF0DD6FAE1", + "Track Type": "Remote" + }, + { + "Track ID": "6439", + "Name": "MAFIA", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster, Jahaan Sweet, J. Cole & Matthew Samuels", + "Album": "ESCAPE PLAN / MAFIA - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8741707", + "Total Time": "240000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2021", + "Date Modified": "2023-03-12T17:34:51Z", + "Date Added": "2023-03-12T17:34:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3773234037", + "Play Date UTC": "2023-07-26T13:33:57Z", + "Skip Count": "2", + "Skip Date": "2023-06-04T20:59:07Z", + "Release Date": "2021-11-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ESCAPE PLAN / MAFIA - Single", + "Sort Artist": "Travis Scott", + "Sort Name": "MAFIA", + "Persistent ID": "79B81DF97187772F", + "Track Type": "Remote" + }, + { + "Track ID": "6441", + "Name": "Quiet", + "Artist": "Hashir", + "Album Artist": "Hashir", + "Composer": "haashir butt", + "Album": "In Limbo EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4831402", + "Total Time": "125221", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "7", + "Year": "2019", + "Date Modified": "2023-03-12T21:12:12Z", + "Date Added": "2023-03-12T21:12:12Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "33", + "Play Date": "3783693232", + "Play Date UTC": "2023-11-24T14:53:52Z", + "Skip Count": "2", + "Skip Date": "2023-06-04T20:59:01Z", + "Release Date": "2019-11-15T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In Limbo EP", + "Sort Artist": "Hashir", + "Sort Name": "Quiet", + "Persistent ID": "27D94FF23C82D990", + "Track Type": "Remote" + }, + { + "Track ID": "6443", + "Name": "Decency", + "Artist": "Balthazar", + "Album Artist": "Balthazar", + "Composer": "undef", + "Album": "Thin Walls", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8484539", + "Total Time": "239797", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2015", + "Date Modified": "2023-03-15T07:08:00Z", + "Date Added": "2023-03-15T07:08:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3780135979", + "Play Date UTC": "2023-10-14T10:46:19Z", + "Skip Count": "1", + "Skip Date": "2023-06-04T20:58:56Z", + "Release Date": "2015-03-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": true, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Thin Walls", + "Sort Artist": "Balthazar", + "Sort Name": "Decency", + "Persistent ID": "58D2EE6E88EA8A7F", + "Track Type": "Remote" + }, + { + "Track ID": "6445", + "Name": "Black Beatles (feat. Gucci Mane)", + "Artist": "Rae Sremmurd", + "Album Artist": "Rae Sremmurd", + "Composer": "Aaquil Brown, Radric Davis, Michael L. Williams II & Khalif Brown", + "Album": "SremmLife 2 (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10293385", + "Total Time": "291890", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2016", + "Date Modified": "2023-03-15T21:18:55Z", + "Date Added": "2023-03-15T21:18:55Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3781204356", + "Play Date UTC": "2023-10-26T19:32:36Z", + "Skip Count": "2", + "Skip Date": "2023-06-04T20:58:47Z", + "Release Date": "2016-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SremmLife 2 (Deluxe)", + "Sort Artist": "Rae Sremmurd", + "Sort Name": "Black Beatles (feat. Gucci Mane)", + "Persistent ID": "285CCB91D2E0EEC0", + "Track Type": "Remote" + }, + { + "Track ID": "6447", + "Name": "Creepin' (Mixed)", + "Artist": "21 Savage, The Weeknd & Metro Boomin", + "Album Artist": "Apple Music Resident DJ", + "Composer": "undef", + "Album": "Today\u2019s Hits: December 2022 (DJ Mix)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7491973", + "Total Time": "206776", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "19", + "Year": "2022", + "Date Modified": "2023-03-15T22:04:24Z", + "Date Added": "2023-03-15T22:04:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "55", + "Play Date": "3783775406", + "Play Date UTC": "2023-11-25T13:43:26Z", + "Skip Count": "1", + "Skip Date": "2023-03-23T14:52:05Z", + "Release Date": "2022-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Today\u2019s Hits: December 2022 (DJ Mix)", + "Sort Artist": "21 Savage, The Weeknd & Metro Boomin", + "Sort Name": "Creepin' (Mixed)", + "Persistent ID": "8FF0F192670B51EA", + "Track Type": "Remote" + }, + { + "Track ID": "6449", + "Name": "Home", + "Artist": "Gustavo Santaolalla", + "Album Artist": "Gustavo Santaolalla", + "Composer": "Gustavo Santaolalla", + "Album": "The Last of Us (Video Game Soundtrack)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6753061", + "Total Time": "187853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "30", + "Year": "2013", + "Date Modified": "2023-03-27T18:06:56Z", + "Date Added": "2023-03-27T18:06:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3783413948", + "Play Date UTC": "2023-11-21T09:19:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2013-06-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Last of Us (Video Game Soundtrack)", + "Sort Artist": "Gustavo Santaolalla", + "Sort Name": "Home", + "Persistent ID": "794E76BEBE4B06F1", + "Track Type": "Remote" + }, + { + "Track ID": "6451", + "Name": "Leaving Earth", + "Artist": "Clint Mansell", + "Album Artist": "EA Games Soundtrack", + "Composer": "undef", + "Album": "Mass Effect 3 (Original Soundtrack)", + "Genre": "Video Game", + "Kind": "Apple Music AAC audio file", + "Size": "4715664", + "Total Time": "123720", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "23", + "Year": "2012", + "Date Modified": "2023-03-27T18:41:19Z", + "Date Added": "2023-03-27T18:41:19Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3772875054", + "Play Date UTC": "2023-07-22T09:50:54Z", + "Skip Count": "1", + "Skip Date": "2023-06-04T20:52:06Z", + "Release Date": "2012-04-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Mass Effect 3 (Original Soundtrack)", + "Sort Artist": "Clint Mansell", + "Sort Name": "Leaving Earth", + "Persistent ID": "7FB015FA5A15ED05", + "Track Type": "Remote" + }, + { + "Track ID": "6453", + "Name": "New Moon (The Meadow)", + "Artist": "Alexandre Desplat", + "Album Artist": "Various Artists", + "Composer": "Alexandre Desplat", + "Album": "The Twilight Saga: New Moon (Deluxe Version) [Original Motion Picture Soundtrack]", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8952308", + "Total Time": "248950", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "18", + "Year": "2009", + "Date Modified": "2023-03-27T18:51:32Z", + "Date Added": "2023-03-27T18:51:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "23", + "Play Date": "3776319275", + "Play Date UTC": "2023-08-31T06:34:35Z", + "Skip Count": "1", + "Skip Date": "2023-03-27T18:51:36Z", + "Release Date": "2009-10-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "The Twilight Saga: New Moon (Deluxe Version) [Original Motion Picture Soundtrack]", + "Sort Artist": "Alexandre Desplat", + "Sort Name": "New Moon (The Meadow)", + "Persistent ID": "1EDA0EA563930753", + "Track Type": "Remote" + }, + { + "Track ID": "6455", + "Name": "A Quiet Life", + "Artist": "Marco Beltrami", + "Album Artist": "Marco Beltrami", + "Composer": "Marco Beltrami", + "Album": "A Quiet Place (Original Soundtrack Album)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6427494", + "Total Time": "178720", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2023-03-27T19:31:53Z", + "Date Added": "2023-03-27T19:31:53Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3781081011", + "Play Date UTC": "2023-10-25T09:16:51Z", + "Skip Count": "2", + "Skip Date": "2023-06-15T12:53:24Z", + "Release Date": "2018-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "A Quiet Place (Original Soundtrack Album)", + "Sort Artist": "Marco Beltrami", + "Sort Name": "Quiet Life", + "Persistent ID": "87FA2045B446EA8F", + "Track Type": "Remote" + }, + { + "Track ID": "6457", + "Name": "Lighthouses", + "Artist": "SurrenderDorothy", + "Album Artist": "SurrenderDorothy", + "Composer": "undef", + "Album": "BreathingExercise", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4577887", + "Total Time": "124250", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2023-04-24T12:13:08Z", + "Date Added": "2023-04-24T12:13:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3775209434", + "Play Date UTC": "2023-08-18T10:17:14Z", + "Skip Count": "3", + "Skip Date": "2023-06-04T20:44:36Z", + "Release Date": "2018-06-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BreathingExercise", + "Sort Artist": "SurrenderDorothy", + "Sort Name": "Lighthouses", + "Persistent ID": "D3058B06F8410785", + "Track Type": "Remote" + }, + { + "Track ID": "6459", + "Name": "All I Know", + "Artist": "Bones", + "Album Artist": "Bones", + "Composer": "Marquis Sapp", + "Album": "All I Know - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6637845", + "Total Time": "184289", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2023-04-24T20:04:32Z", + "Date Added": "2023-04-24T20:04:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "29", + "Play Date": "3781395992", + "Play Date UTC": "2023-10-29T00:46:32Z", + "Skip Count": "1", + "Skip Date": "2023-06-04T20:44:31Z", + "Release Date": "2020-05-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "All I Know - Single", + "Sort Artist": "Bones", + "Sort Name": "All I Know", + "Persistent ID": "89303B27BEE5B0A5", + "Track Type": "Remote" + }, + { + "Track ID": "6461", + "Name": "10 Freaky Girls (feat. 21 Savage)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Sh\u00e9yaa Bin Abraham-Joseph & Michael Jones", + "Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7493983", + "Total Time": "208293", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "6", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-04-24T21:08:31Z", + "Date Added": "2023-04-24T21:08:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "27", + "Play Date": "3780911138", + "Play Date UTC": "2023-10-23T10:05:38Z", + "Skip Count": "1", + "Skip Date": "2023-06-04T20:44:25Z", + "Release Date": "2018-11-02T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Sort Artist": "Metro Boomin", + "Sort Name": "10 Freaky Girls (feat. 21 Savage)", + "Persistent ID": "3B0EE1794FCD6009", + "Track Type": "Remote" + }, + { + "Track ID": "6463", + "Name": "Overdue (feat. Travis Scott)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Travis Scott, Hannah Robinson, Annie Strand & Richard Phillips", + "Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6096792", + "Total Time": "166093", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-04-24T21:37:49Z", + "Date Added": "2023-04-24T21:37:49Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783322786", + "Play Date UTC": "2023-11-20T07:59:46Z", + "Skip Count": "1", + "Skip Date": "2023-06-04T20:44:20Z", + "Release Date": "2018-11-02T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Sort Artist": "Metro Boomin", + "Sort Name": "Overdue (feat. Travis Scott)", + "Persistent ID": "4A0C8836574A1D70", + "Track Type": "Remote" + }, + { + "Track ID": "6465", + "Name": "Mile High (feat. Travis Scott & Metro Boomin)", + "Artist": "James Blake", + "Album Artist": "James Blake", + "Composer": "James Blake, Metro Boomin & Travis Scott", + "Album": "Assume Form", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6938450", + "Total Time": "193600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2019", + "Date Modified": "2023-04-28T09:11:26Z", + "Date Added": "2023-04-28T09:11:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3782980352", + "Play Date UTC": "2023-11-16T08:52:32Z", + "Skip Count": "2", + "Skip Date": "2023-06-04T20:44:14Z", + "Release Date": "2019-01-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Assume Form", + "Sort Artist": "James Blake", + "Sort Name": "Mile High (feat. Travis Scott & Metro Boomin)", + "Persistent ID": "1EEAC713AA09BC57", + "Track Type": "Remote" + }, + { + "Track ID": "6467", + "Name": "ORANGE SODA", + "Artist": "Baby Keem", + "Album Artist": "Baby Keem", + "Composer": "Hykeem Carter & Keanu Torres", + "Album": "ORANGE SODA - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4830335", + "Total Time": "129882", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2023-04-28T11:29:09Z", + "Date Added": "2023-04-28T11:29:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "42", + "Play Date": "3783594325", + "Play Date UTC": "2023-11-23T11:25:25Z", + "Skip Count": "2", + "Skip Date": "2023-06-04T20:44:08Z", + "Release Date": "2019-07-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ORANGE SODA - Single", + "Sort Artist": "Baby Keem", + "Sort Name": "ORANGE SODA", + "Persistent ID": "F9F4F8EFCE2A8EC7", + "Track Type": "Remote" + }, + { + "Track ID": "6469", + "Name": "LifeAsAMelody", + "Artist": "Bones & Xavier Wulf", + "Album Artist": "Bones & Xavier Wulf", + "Composer": "Elmo O'Connor & xavier beard", + "Album": "LifeAsAMelody - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4480993", + "Total Time": "121704", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2023-05-11T21:52:04Z", + "Date Added": "2023-05-11T21:52:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3782476406", + "Play Date UTC": "2023-11-10T12:53:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-04-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "LifeAsAMelody - Single", + "Sort Artist": "Bones & Xavier Wulf", + "Sort Name": "LifeAsAMelody", + "Persistent ID": "A01ED737FF1E9122", + "Track Type": "Remote" + }, + { + "Track ID": "6471", + "Name": ".223", + "Artist": "BONES", + "Album Artist": "BONES", + "Composer": "BONES", + "Album": "FromBeyondTheGrave", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4814283", + "Total Time": "129776", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2020", + "Date Modified": "2023-05-11T21:54:17Z", + "Date Added": "2023-05-11T21:54:17Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3770735205", + "Play Date UTC": "2023-06-27T15:26:45Z", + "Skip Count": "3", + "Skip Date": "2023-10-15T02:38:48Z", + "Release Date": "2020-11-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "FromBeyondTheGrave", + "Sort Artist": "BONES", + "Sort Name": ".223", + "Persistent ID": "48FA3B2014DDA428", + "Track Type": "Remote" + }, + { + "Track ID": "6473", + "Name": "I Guess", + "Artist": "Drew The Architect, Bones & Cat Soup", + "Album Artist": "Drew The Architect, Bones & Cat Soup", + "Composer": "Drew The Architect, Bones & Cat Soup", + "Album": "Sl\u00e1n", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5537895", + "Total Time": "154645", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "8", + "Year": "2016", + "Date Modified": "2023-05-11T22:18:48Z", + "Date Added": "2023-05-11T22:18:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3779309180", + "Play Date UTC": "2023-10-04T21:06:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-01-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sl\u00e1n", + "Sort Artist": "Drew The Architect, Bones & Cat Soup", + "Sort Name": "I Guess", + "Persistent ID": "1636A27AE6E18F45", + "Track Type": "Remote" + }, + { + "Track ID": "6475", + "Name": "Count Me Out (Mixed)", + "Artist": "Kendrick Lamar", + "Album Artist": "U-LEE", + "Composer": "undef", + "Album": "VISION: U-LEE (DJ Mix)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9901348", + "Total Time": "279597", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "18", + "Year": "2022", + "Date Modified": "2023-05-15T08:53:09Z", + "Date Added": "2023-05-15T08:53:09Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3781201093", + "Play Date UTC": "2023-10-26T18:38:13Z", + "Skip Count": "1", + "Skip Date": "2023-05-27T13:58:13Z", + "Release Date": "2022-06-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "VISION: U-LEE (DJ Mix)", + "Sort Artist": "Kendrick Lamar", + "Sort Name": "Count Me Out (Mixed)", + "Persistent ID": "867FF20806054712", + "Track Type": "Remote" + }, + { + "Track ID": "6477", + "Name": "Far Away (feat. A$AP Rocky)", + "Artist": "Yebba", + "Album Artist": "Yebba", + "Composer": "Abbey Smith, James Francies, Jr., Malachi Mabson, Rakim Mayers, Charles Myers & Jacques Smith II", + "Album": "Dawn", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7110762", + "Total Time": "199416", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2021", + "Date Modified": "2023-05-25T07:09:57Z", + "Date Added": "2023-05-25T07:09:57Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3774964428", + "Play Date UTC": "2023-08-15T14:13:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-09-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dawn", + "Sort Artist": "Yebba", + "Sort Name": "Far Away (feat. A$AP Rocky)", + "Persistent ID": "ED7FC7EB63BCB63A", + "Track Type": "Remote" + }, + { + "Track ID": "6479", + "Name": "God Forbid", + "Artist": "T:ME", + "Album Artist": "T:ME", + "Composer": "undef", + "Album": "The Death of Robert Scott", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5380987", + "Total Time": "143810", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2023-05-25T07:10:21Z", + "Date Added": "2023-05-25T07:10:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "24", + "Play Date": "3776237721", + "Play Date UTC": "2023-08-30T07:55:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-04-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Death of Robert Scott", + "Sort Artist": "T:ME", + "Sort Name": "God Forbid", + "Persistent ID": "1C62B7D95EB56EAA", + "Track Type": "Remote" + }, + { + "Track ID": "6481", + "Name": "Backseat Driver", + "Artist": "Credit Electric", + "Album Artist": "Credit Electric", + "Composer": "Ryan John LoPilato", + "Album": "Backseat Driver - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7302714", + "Total Time": "202286", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-05-30T15:05:36Z", + "Date Added": "2023-05-30T15:05:36Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3780401280", + "Play Date UTC": "2023-10-17T12:28:00Z", + "Skip Count": "1", + "Skip Date": "2023-06-23T15:20:09Z", + "Release Date": "2023-05-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Backseat Driver - Single", + "Sort Artist": "Credit Electric", + "Sort Name": "Backseat Driver", + "Persistent ID": "862750BD7E825409", + "Track Type": "Remote" + }, + { + "Track ID": "6483", + "Name": "Shadows", + "Artist": "Old Man Canyon", + "Album Artist": "Old Man Canyon", + "Composer": "Jett Payne Pace", + "Album": "Phantoms & Friends (10th Anniversary Edition)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7505160", + "Total Time": "211275", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "7", + "Year": "2023", + "Date Modified": "2023-05-30T15:17:08Z", + "Date Added": "2023-05-30T15:17:08Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783693607", + "Play Date UTC": "2023-11-24T15:00:07Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Phantoms & Friends (10th Anniversary Edition)", + "Sort Artist": "Old Man Canyon", + "Sort Name": "Shadows", + "Persistent ID": "67E900149C6EF42D", + "Track Type": "Remote" + }, + { + "Track ID": "6485", + "Name": "Gradients", + "Artist": "Salami Rose Joe Louis", + "Album Artist": "Salami Rose Joe Louis", + "Composer": "Lindsay Rose Olsen", + "Album": "Akousmatikous", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5213937", + "Total Time": "140528", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2023", + "Date Modified": "2023-05-30T15:17:27Z", + "Date Added": "2023-05-30T15:17:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3780845314", + "Play Date UTC": "2023-10-22T15:48:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Akousmatikous", + "Sort Artist": "Salami Rose Joe Louis", + "Sort Name": "Gradients", + "Persistent ID": "A54AAC32FD36D8F2", + "Track Type": "Remote" + }, + { + "Track ID": "6487", + "Name": "This Little Life", + "Artist": "Tom Rosenthal", + "Album Artist": "Tom Rosenthal", + "Composer": "Olivia Ter-Berg & Tom Rosenthal", + "Album": "This Little Life - Single", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "7163356", + "Total Time": "198049", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-05-30T18:24:32Z", + "Date Added": "2023-05-30T18:24:32Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "25", + "Play Date": "3783715320", + "Play Date UTC": "2023-11-24T21:02:00Z", + "Skip Count": "1", + "Skip Date": "2023-06-29T21:02:28Z", + "Release Date": "2023-04-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Little Life - Single", + "Sort Artist": "Tom Rosenthal", + "Sort Name": "This Little Life", + "Persistent ID": "7221FF5468949987", + "Track Type": "Remote" + }, + { + "Track ID": "6489", + "Name": "ball w/o you", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "21 Savage, Bryan Simmons, Kenneth Smith, Jr., Tyshane Thompson & Ralphy London", + "Album": "i am > i was (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6968106", + "Total Time": "195047", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2023-06-01T11:40:24Z", + "Date Added": "2023-06-01T11:40:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3771043390", + "Play Date UTC": "2023-07-01T05:03:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-12-21T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "i am > i was (Deluxe)", + "Sort Artist": "21 Savage", + "Sort Name": "ball w/o you", + "Persistent ID": "102B9E2FE83BC311", + "Track Type": "Remote" + }, + { + "Track ID": "6491", + "Name": "1.5", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "21 Savage, Kiari Kendrell Cephus, Nils & Wesley Glass", + "Album": "i am > i was (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5437710", + "Total Time": "148656", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2023-06-01T11:49:33Z", + "Date Added": "2023-06-01T11:49:33Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3777563985", + "Play Date UTC": "2023-09-14T16:19:45Z", + "Skip Count": "1", + "Skip Date": "2023-06-29T20:53:12Z", + "Release Date": "2018-12-21T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "i am > i was (Deluxe)", + "Sort Artist": "21 Savage", + "Sort Name": "1.5", + "Persistent ID": "3AC97F382C759933", + "Track Type": "Remote" + }, + { + "Track ID": "6493", + "Name": "can't leave without it", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "21 Savage, Dominique' Jones, Sergio Kitchens, Wesley Glass, Kevin Gomringer & Tim Gomringer", + "Album": "i am > i was (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7318645", + "Total Time": "205352", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2023-06-01T11:57:03Z", + "Date Added": "2023-06-01T11:57:03Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "26", + "Play Date": "3780906933", + "Play Date UTC": "2023-10-23T08:55:33Z", + "Skip Count": "1", + "Skip Date": "2023-06-07T14:13:21Z", + "Release Date": "2018-12-21T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "i am > i was (Deluxe)", + "Sort Artist": "21 Savage", + "Sort Name": "can't leave without it", + "Persistent ID": "589495D7258D4D2C", + "Track Type": "Remote" + }, + { + "Track ID": "6495", + "Name": "asmr", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "21 Savage, Leland Wayne & Ahmar Bailey", + "Album": "i am > i was (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6180964", + "Total Time": "171714", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2023-06-01T12:00:41Z", + "Date Added": "2023-06-01T12:00:41Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "35", + "Play Date": "3775200830", + "Play Date UTC": "2023-08-18T07:53:50Z", + "Skip Count": "1", + "Skip Date": "2023-08-15T13:40:50Z", + "Release Date": "2018-12-21T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "i am > i was (Deluxe)", + "Sort Artist": "21 Savage", + "Sort Name": "asmr", + "Persistent ID": "E43C9F3DCA0E72DF", + "Track Type": "Remote" + }, + { + "Track ID": "6497", + "Name": "4L", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "21 Savage, Quantavious Thomas, Ahmar Bailey & Roshwita Larisha Bacha", + "Album": "i am > i was (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9983616", + "Total Time": "288364", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2023-06-01T13:03:50Z", + "Date Added": "2023-06-01T13:03:50Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "34", + "Play Date": "3783661170", + "Play Date UTC": "2023-11-24T05:59:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-12-21T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "i am > i was (Deluxe)", + "Sort Artist": "21 Savage", + "Sort Name": "4L", + "Persistent ID": "768E0405854290E2", + "Track Type": "Remote" + }, + { + "Track ID": "6499", + "Name": "Weit weg", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider", + "Album": "Rammstein", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "9762529", + "Total Time": "260916", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2019", + "Date Modified": "2023-06-02T20:22:18Z", + "Date Added": "2023-06-02T20:22:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "22", + "Play Date": "3782387180", + "Play Date UTC": "2023-11-09T12:06:20Z", + "Skip Count": "1", + "Skip Date": "2023-10-12T16:31:40Z", + "Release Date": "2019-05-17T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "RAMMSTEIN", + "Sort Artist": "Rammstein", + "Sort Name": "Weit weg", + "Persistent ID": "A9CD57D58A876BF8", + "Track Type": "Remote" + }, + { + "Track ID": "6501", + "Name": "Ich hasse Kinder", + "Artist": "Till Lindemann", + "Album Artist": "Till Lindemann", + "Composer": "Sky van Hoff", + "Album": "Ich hasse Kinder - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "8365177", + "Total Time": "232378", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2021", + "Date Modified": "2023-06-02T20:56:51Z", + "Date Added": "2023-06-02T20:56:51Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "21", + "Play Date": "3780840293", + "Play Date UTC": "2023-10-22T14:24:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ich hasse Kinder - Single", + "Sort Artist": "Till Lindemann", + "Sort Name": "Ich hasse Kinder", + "Persistent ID": "969710BD9A37B639", + "Track Type": "Remote" + }, + { + "Track ID": "6503", + "Name": "The Unforgiven II", + "Artist": "Metallica", + "Album Artist": "Metallica", + "Composer": "Kirk Hammett, Lars Ulrich & James Hetfield", + "Album": "Reload", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "14489698", + "Total Time": "396213", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "1997", + "Date Modified": "2023-06-02T21:02:30Z", + "Date Added": "2023-06-02T21:02:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3773643437", + "Play Date UTC": "2023-07-31T07:17:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1997-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reload", + "Sort Artist": "Metallica", + "Sort Name": "Unforgiven II", + "Persistent ID": "5BB904160F495D49", + "Track Type": "Remote" + }, + { + "Track ID": "6505", + "Name": "Nothing Else Matters", + "Artist": "Metallica", + "Album Artist": "Metallica", + "Composer": "James Hetfield & Lars Ulrich", + "Album": "Metallica (Remastered)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "13372839", + "Total Time": "388733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "1991", + "Date Modified": "2023-06-04T13:09:31Z", + "Date Added": "2023-06-04T13:09:31Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "17", + "Play Date": "3777372772", + "Play Date UTC": "2023-09-12T11:12:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1991-08-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Metallica (Remastered)", + "Sort Artist": "Metallica", + "Sort Name": "Nothing Else Matters", + "Persistent ID": "23839D126EF75A5A", + "Track Type": "Remote" + }, + { + "Track ID": "6507", + "Name": "Snowman", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11568505", + "Total Time": "315006", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T14:35:39Z", + "Date Added": "2023-06-07T14:35:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3770909467", + "Play Date UTC": "2023-06-29T15:51:07Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-31T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Snowman", + "Persistent ID": "C4D1B37D2D093FB8", + "Track Type": "Remote" + }, + { + "Track ID": "6509", + "Name": "Kiss Her Kiss Her", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10049878", + "Total Time": "262942", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-09-28T21:28:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783494610", + "Play Date UTC": "2023-11-22T07:43:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-09-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Kiss Her Kiss Her", + "Persistent ID": "A129866A36D4838A", + "Track Type": "Remote" + }, + { + "Track ID": "6511", + "Name": "Not for Me", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9379917", + "Total Time": "254272", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-09-28T21:28:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3781203853", + "Play Date UTC": "2023-10-26T19:24:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-09-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Not for Me", + "Persistent ID": "98A13104ADA7551C", + "Track Type": "Remote" + }, + { + "Track ID": "6513", + "Name": "Melody Experiment", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11050071", + "Total Time": "310095", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-06-27T06:38:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3776619424", + "Play Date UTC": "2023-09-03T17:57:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-06-27T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Melody Experiment", + "Persistent ID": "14E2540B4E9DB8F0", + "Track Type": "Remote" + }, + { + "Track ID": "6515", + "Name": "Rest of Her Life", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7038454", + "Total Time": "195206", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-09-28T21:31:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3783598353", + "Play Date UTC": "2023-11-23T12:32:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-09-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Rest of Her Life", + "Persistent ID": "0A0ADEC3732DA5C2", + "Track Type": "Remote" + }, + { + "Track ID": "6517", + "Name": "Sit Down for Dinner (Part 1)", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6925454", + "Total Time": "191827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-09-25T21:06:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3779359047", + "Play Date UTC": "2023-10-05T10:57:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-09-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Sit Down for Dinner (Part 1)", + "Persistent ID": "5B1E7C78F6954A69", + "Track Type": "Remote" + }, + { + "Track ID": "6519", + "Name": "Sit Down for Dinner (Part 2)", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7413195", + "Total Time": "208468", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-09-25T21:06:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3783452833", + "Play Date UTC": "2023-11-21T20:07:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-09-26T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Sit Down for Dinner (Part 2)", + "Persistent ID": "0B920CCF0F71BE35", + "Track Type": "Remote" + }, + { + "Track ID": "6521", + "Name": "I Thought You Should Know", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "12050433", + "Total Time": "324384", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-09-28T21:30:00Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3782733234", + "Play Date UTC": "2023-11-13T12:13:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-09-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "I Thought You Should Know", + "Persistent ID": "951B84B01CA8F78E", + "Track Type": "Remote" + }, + { + "Track ID": "6523", + "Name": "Before", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10018815", + "Total Time": "268123", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-08-09T12:48:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3776965947", + "Play Date UTC": "2023-09-07T18:12:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-08-09T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Before", + "Persistent ID": "D7A5AB0B8B17F0D1", + "Track Type": "Remote" + }, + { + "Track ID": "6525", + "Name": "If", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9998599", + "Total Time": "262378", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-09-28T21:30:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3783599464", + "Play Date UTC": "2023-11-23T12:51:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-09-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "If", + "Persistent ID": "D91078214EF308FB", + "Track Type": "Remote" + }, + { + "Track ID": "6527", + "Name": "Via Savona", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Kazu Makino, Amedeo Pace & Simone Pace", + "Album": "Sit Down for Dinner", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11034369", + "Total Time": "313342", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "11", + "Year": "2023", + "Date Modified": "2023-06-07T15:39:31Z", + "Date Added": "2023-09-28T21:30:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3782732902", + "Play Date UTC": "2023-11-13T12:08:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-09-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sit Down for Dinner", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Via Savona", + "Persistent ID": "10C67E3AE69E1A0A", + "Track Type": "Remote" + }, + { + "Track ID": "6529", + "Name": "The Dress", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "Amedeo Pace, Kazu Makino & Simone Pace", + "Album": "23", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9406424", + "Total Time": "240893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2007", + "Date Modified": "2023-06-07T15:55:20Z", + "Date Added": "2023-06-07T15:55:20Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3779901817", + "Play Date UTC": "2023-10-11T17:43:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "23", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Dress", + "Persistent ID": "375CE33F4E1B3E8F", + "Track Type": "Remote" + }, + { + "Track ID": "6531", + "Name": "Hated Because of Great Qualities", + "Artist": "Blonde Redhead", + "Album Artist": "Blonde Redhead", + "Composer": "undef", + "Album": "Melody of Certain Damaged Lemons", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10020959", + "Total Time": "282733", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2000", + "Date Modified": "2023-06-07T16:00:10Z", + "Date Added": "2023-06-07T16:00:10Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3781052121", + "Play Date UTC": "2023-10-25T01:15:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2000-06-06T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Melody of Certain Damaged Lemons", + "Sort Artist": "Blonde Redhead", + "Sort Name": "Hated Because of Great Qualities", + "Persistent ID": "B5284CEC235A874B", + "Track Type": "Remote" + }, + { + "Track ID": "6533", + "Name": "Goodbye Moonmen", + "Artist": "Andy Kapetanakis", + "Album Artist": "Andy Kapetanakis", + "Composer": "Jemaine Clement", + "Album": "Goodbye Moonmen - Single", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "5295475", + "Total Time": "150439", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "2023-06-07T16:49:25Z", + "Date Added": "2023-06-07T16:49:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3771840110", + "Play Date UTC": "2023-07-10T10:21:50Z", + "Skip Count": "2", + "Skip Date": "2023-06-27T05:57:46Z", + "Release Date": "2017-08-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Goodbye Moonmen - Single", + "Sort Artist": "Andy Kapetanakis", + "Sort Name": "Goodbye Moonmen", + "Persistent ID": "57669D6EECE12B41", + "Track Type": "Remote" + }, + { + "Track ID": "6535", + "Name": "Stop Playin'", + "Artist": "THEY.", + "Album Artist": "THEY.", + "Composer": "Christopher Ahn, Dante Jones, Drew Love & Paris Strother", + "Album": "Stop Playin' - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6556271", + "Total Time": "178680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2023-06-25T18:22:21Z", + "Date Added": "2023-06-25T18:22:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3772089619", + "Play Date UTC": "2023-07-13T07:40:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-08-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stop Playin' - Single", + "Sort Artist": "THEY.", + "Sort Name": "Stop Playin'", + "Persistent ID": "87BB11EEBF9BE7CD", + "Track Type": "Remote" + }, + { + "Track ID": "6537", + "Name": "TheBestVersionOfMyself", + "Artist": "SurrenderDorothy", + "Album Artist": "SurrenderDorothy", + "Composer": "undef", + "Album": "BreathingExercise", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "2923106", + "Total Time": "72875", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3783410127", + "Play Date UTC": "2023-11-21T08:15:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-06-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BreathingExercise", + "Sort Artist": "SurrenderDorothy", + "Sort Name": "TheBestVersionOfMyself", + "Persistent ID": "0C605A3BD16BF382", + "Track Type": "Remote" + }, + { + "Track ID": "6539", + "Name": "Fell In Love", + "Artist": "Marshmello & Brent Faiyaz", + "Album Artist": "Marshmello & Brent Faiyaz", + "Composer": "Christopher Brent Wood, Chrome Sparks & Marshmello", + "Album": "Fell In Love - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4555561", + "Total Time": "121284", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3782804009", + "Play Date UTC": "2023-11-14T07:53:29Z", + "Skip Count": "1", + "Skip Date": "2023-09-03T17:57:54Z", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fell In Love - Single", + "Sort Artist": "Marshmello & Brent Faiyaz", + "Sort Name": "Fell In Love", + "Persistent ID": "E73AF0F8500B313D", + "Track Type": "Remote" + }, + { + "Track ID": "6541", + "Name": "90210 (feat. Kacy Hill)", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Kacy Hill, Jacques Webster, Dacoury Natche, Allen Ritter, Chantel Jeffries, MIKE DEAN, Ebony Oshunrinde, Glenda \"GIZZLE\" Proby, Duilio Radici & Ugo Fusco", + "Album": "Rodeo", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12162963", + "Total Time": "339061", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2015", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3782052630", + "Play Date UTC": "2023-11-05T15:10:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-09-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rodeo", + "Sort Artist": "Travis Scott", + "Sort Name": "90210 (feat. Kacy Hill)", + "Persistent ID": "03DD342F712EBDF7", + "Track Type": "Remote" + }, + { + "Track ID": "6543", + "Name": "ASTROTHUNDER", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster, John Mayer, Adam Feeney, Stephen Bruner, Matthew Tavares, Tommy Paxton-Beesley & Joseph Thornalley", + "Album": "ASTROWORLD", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5348772", + "Total Time": "142969", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "17", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782060490", + "Play Date UTC": "2023-11-05T17:21:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ASTROWORLD", + "Sort Artist": "Travis Scott", + "Sort Name": "ASTROTHUNDER", + "Persistent ID": "B1A8AF093B376F28", + "Track Type": "Remote" + }, + { + "Track ID": "6545", + "Name": "Glock in My Lap", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Sh\u00e9yaa Bin Abraham-Joseph, Leland Wayne, Joshua Luellen & Carlton Mays Jr.", + "Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6955995", + "Total Time": "193591", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "3", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3779555927", + "Play Date UTC": "2023-10-07T17:38:47Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Glock in My Lap", + "Persistent ID": "BBC814ACEBD306E6", + "Track Type": "Remote" + }, + { + "Track ID": "6547", + "Name": "Metro Boomin", + "Artist": "Elmo Tha I", + "Album Artist": "Elmo Tha I", + "Composer": "Rodney Mpangazitha, Leland Wayne, Nayvadius Wilburn, Jeffery Williams, Relebohile Dithebe & Bonakele Maqungo", + "Album": "SPLASH SEAson", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6941626", + "Total Time": "197198", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3777370061", + "Play Date UTC": "2023-09-12T10:27:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SPLASH SEAson", + "Sort Artist": "Elmo Tha I", + "Sort Name": "Metro Boomin", + "Persistent ID": "076D4ED9487FD974", + "Track Type": "Remote" + }, + { + "Track ID": "6549", + "Name": "On BS (Mixed)", + "Artist": "Drake & 21 Savage", + "Album Artist": "Deejay Massive", + "Composer": "undef", + "Album": "Party In The Jungle: DeeJay Massive, Dec 2022 (DJ Mix)", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "3401659", + "Total Time": "83023", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "41", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3782051308", + "Play Date UTC": "2023-11-05T14:48:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-12-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Party In The Jungle: DeeJay Massive, Dec 2022 (DJ Mix)", + "Sort Artist": "Drake & 21 Savage", + "Sort Name": "On BS (Mixed)", + "Persistent ID": "49B8E777970AAB61", + "Track Type": "Remote" + }, + { + "Track ID": "6551", + "Name": "loving u is harder", + "Artist": "SEB", + "Album Artist": "SEB", + "Composer": "SEB", + "Album": "loving u is harder - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5408727", + "Total Time": "147427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782050686", + "Play Date UTC": "2023-11-05T14:38:06Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-11-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "loving u is harder - Single", + "Sort Artist": "SEB", + "Sort Name": "loving u is harder", + "Persistent ID": "60B54B27E43F47BD", + "Track Type": "Remote" + }, + { + "Track ID": "6553", + "Name": "I Wonder", + "Artist": "Kanye West", + "Album Artist": "Kanye West", + "Composer": "Kanye West & Labi Siffre", + "Album": "Graduation", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8608053", + "Total Time": "243440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2007", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782052290", + "Play Date UTC": "2023-11-05T15:04:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2007-09-11T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Graduation", + "Sort Artist": "Kanye West", + "Sort Name": "I Wonder", + "Persistent ID": "F82F8222024F63AF", + "Track Type": "Remote" + }, + { + "Track ID": "6555", + "Name": "Uuuu", + "Artist": "Steve Lacy", + "Album Artist": "Steve Lacy", + "Composer": "Steve Lacy", + "Album": "The Lo-Fis", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "3530677", + "Total Time": "90709", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-12-04T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Lo-Fis", + "Sort Artist": "Steve Lacy", + "Sort Name": "Uuuu", + "Persistent ID": "FFF56C512F5B7BD1", + "Track Type": "Remote" + }, + { + "Track ID": "6557", + "Name": "RIP Young", + "Artist": "Isaiah Rashad", + "Album Artist": "Isaiah Rashad", + "Composer": "I. McClain, Jordan Houston, K. Berry, P. Beauregard & Patrick Houston", + "Album": "The House Is Burning [homies begged]", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5796051", + "Total Time": "158051", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "20", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782051627", + "Play Date UTC": "2023-11-05T14:53:47Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-07-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The House Is Burning [homies begged]", + "Sort Artist": "Isaiah Rashad", + "Sort Name": "RIP Young", + "Persistent ID": "878F64A94867DFD8", + "Track Type": "Remote" + }, + { + "Track ID": "6559", + "Name": "In My Room", + "Artist": "Frank Ocean", + "Album Artist": "Frank Ocean", + "Composer": "undef", + "Album": "In My Room - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "4983252", + "Total Time": "133680", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3782050537", + "Play Date UTC": "2023-11-05T14:35:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In My Room - Single", + "Sort Artist": "Frank Ocean", + "Sort Name": "In My Room", + "Persistent ID": "13FE54F32F3ADF74", + "Track Type": "Remote" + }, + { + "Track ID": "6561", + "Name": "ILoveUIHateU", + "Artist": "Playboi Carti", + "Album Artist": "Playboi Carti", + "Composer": "Jordan Carter & Pi\u2019erre Bourne", + "Album": "Whole Lotta Red", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5055111", + "Total Time": "135122", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "21", + "Track Count": "24", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783776555", + "Play Date UTC": "2023-11-25T14:02:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-12-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Whole Lotta Red", + "Sort Artist": "Playboi Carti", + "Sort Name": "ILoveUIHateU", + "Persistent ID": "338FCA1745D717BD", + "Track Type": "Remote" + }, + { + "Track ID": "6563", + "Name": "Shut up My Moms Calling", + "Artist": "Hotel Ugly", + "Album Artist": "Hotel Ugly", + "Composer": "Michael Fiscella", + "Album": "Shut up My Moms Calling - Single", + "Genre": "Neo-Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5844897", + "Total Time": "164571", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782904587", + "Play Date UTC": "2023-11-15T11:49:47Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-02-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Shut up My Moms Calling - Single", + "Sort Artist": "Hotel Ugly", + "Sort Name": "Shut up My Moms Calling", + "Persistent ID": "C95A1F5CA4EA1C32", + "Track Type": "Remote" + }, + { + "Track ID": "6565", + "Name": "The God Hour", + "Artist": "A$AP ANT & A$AP Rocky", + "Album Artist": "A$AP ANT & A$AP Rocky", + "Composer": "A$AP ANT, A$AP Rocky, Mannyvelli & Spizzledoe", + "Album": "The God Hour - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5634895", + "Total Time": "155077", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3779896863", + "Play Date UTC": "2023-10-11T16:21:03Z", + "Skip Count": "4", + "Skip Date": "2023-10-11T17:56:02Z", + "Release Date": "2022-04-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The God Hour - Single", + "Sort Artist": "A$AP ANT & A$AP Rocky", + "Sort Name": "God Hour", + "Persistent ID": "E45B476673207BCC", + "Track Type": "Remote" + }, + { + "Track ID": "6567", + "Name": "Borrowed Love (feat. Swae Lee & Wizkid)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Khalif Malikibnsham Brown, Wizkid, Mary Lou Cross & Johnnie Lee Frierson", + "Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8209102", + "Total Time": "230240", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "10", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782054238", + "Play Date UTC": "2023-11-05T15:37:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T07:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES (Deluxe)", + "Sort Artist": "Metro Boomin", + "Sort Name": "Borrowed Love (feat. Swae Lee & Wizkid)", + "Persistent ID": "43AC82029C612B8F", + "Track Type": "Remote" + }, + { + "Track ID": "6569", + "Name": "Niagara Falls (Foot or 2) [Mixed]", + "Artist": "Metro Boomin, 21 Savage & Travis Scott", + "Album Artist": "SFR", + "Composer": "undef", + "Album": "Rap, Vol. 5 (DJ Mix)", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "3869744", + "Total Time": "99352", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "45", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3783768634", + "Play Date UTC": "2023-11-25T11:50:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-06-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Rap, Vol. 5 (DJ Mix)", + "Sort Artist": "Metro Boomin, 21 Savage & Travis Scott", + "Sort Name": "Niagara Falls (Foot or 2) [Mixed]", + "Persistent ID": "C9F5C5AD5649AF91", + "Track Type": "Remote" + }, + { + "Track ID": "6571", + "Name": "Summers Over Interlude", + "Artist": "Drake", + "Album Artist": "Drake", + "Composer": "M. Bidaye & M. Al-Maskati", + "Album": "Views", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3993020", + "Total Time": "106325", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "20", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783692480", + "Play Date UTC": "2023-11-24T14:41:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-04-29T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Views", + "Sort Artist": "Drake", + "Sort Name": "Summers Over Interlude", + "Persistent ID": "37165E9C8FEFF57B", + "Track Type": "Remote" + }, + { + "Track ID": "6573", + "Name": "COFFEE BEAN", + "Artist": "Travis Scott", + "Album Artist": "Travis Scott", + "Composer": "Jacques Webster, Cydel Young, MIKE DEAN, Tim Suby & Paul Jefferies", + "Album": "ASTROWORLD", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7460631", + "Total Time": "209116", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "17", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3783677910", + "Play Date UTC": "2023-11-24T10:38:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-08-03T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ASTROWORLD", + "Sort Artist": "Travis Scott", + "Sort Name": "COFFEE BEAN", + "Persistent ID": "AFFE143FDD757A49", + "Track Type": "Remote" + }, + { + "Track ID": "6575", + "Name": "Been Away", + "Artist": "Brent Faiyaz", + "Album Artist": "Brent Faiyaz", + "Composer": "Christopher Brent Wood, Chirstopher Ruelas, samuel Wishkoski, Jacob Dutton, Carlos Mu\u00f1oz, David Patino, John Key, Jariuce Banks, Jonathan Wells & James Jeanty", + "Album": "Fuck the World", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7899466", + "Total Time": "223630", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3779308809", + "Play Date UTC": "2023-10-04T21:00:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-02-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fuck the World", + "Sort Artist": "Brent Faiyaz", + "Sort Name": "Been Away", + "Persistent ID": "6879EE9E3A5E7437", + "Track Type": "Remote" + }, + { + "Track ID": "6577", + "Name": "Bluffin", + "Artist": "Brent Faiyaz", + "Album Artist": "Brent Faiyaz", + "Composer": "Christopher Brent Wood, David Patino, Atupele Ndisale, Jason Avalos & Playa Fly", + "Album": "Fuck the World", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7074229", + "Total Time": "195802", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782981856", + "Play Date UTC": "2023-11-16T09:17:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-02-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fuck the World", + "Sort Artist": "Brent Faiyaz", + "Sort Name": "Bluffin", + "Persistent ID": "737D92D9CDC54C65", + "Track Type": "Remote" + }, + { + "Track ID": "6579", + "Name": "20 Min", + "Artist": "Lil Uzi Vert", + "Album Artist": "Lil Uzi Vert", + "Composer": "Da Honorable C.N.O.T.E. & Lil Uzi Vert", + "Album": "Luv Is Rage 2 (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7926455", + "Total Time": "220587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "20", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3781530615", + "Play Date UTC": "2023-10-30T14:10:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-08-25T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Luv Is Rage 2 (Deluxe)", + "Sort Artist": "Lil Uzi Vert", + "Sort Name": "20 Min", + "Persistent ID": "0052CBE6ACD46561", + "Track Type": "Remote" + }, + { + "Track ID": "6581", + "Name": "ball w/o you", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "21 Savage, Bryan Simmons, Kenneth Smith, Jr., Tyshane Thompson & Ralphy London", + "Album": "i am > i was", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6968106", + "Total Time": "195047", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "15", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782053901", + "Play Date UTC": "2023-11-05T15:31:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-12-21T12:00:00Z", + "Album Rating": "60", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "i am > i was", + "Sort Artist": "21 Savage", + "Sort Name": "ball w/o you", + "Persistent ID": "1F52EB10FB3B1B25", + "Track Type": "Remote" + }, + { + "Track ID": "6583", + "Name": "Embarrassed (feat. Travis Scott) [Mixed]", + "Artist": "Don Toliver", + "Album Artist": "DJ Nitrane", + "Composer": "undef", + "Album": "TRANE Tracks (DJ Mix)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3327031", + "Total Time": "81851", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782054320", + "Play Date UTC": "2023-11-05T15:38:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-03-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "TRANE Tracks (DJ Mix)", + "Sort Artist": "Don Toliver", + "Sort Name": "Embarrassed (feat. Travis Scott) [Mixed]", + "Persistent ID": "DB053C5A7BC1CDD8", + "Track Type": "Remote" + }, + { + "Track ID": "6585", + "Name": "Superhero (Heroes & Villains) [Mixed]", + "Artist": "Metro Boomin, Future & Chris Brown", + "Album Artist": "Charlie Sloth", + "Composer": "undef", + "Album": "The Penthouse (DJ Mix)", + "Genre": "Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5956248", + "Total Time": "161373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "44", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-02-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "The Penthouse (DJ Mix)", + "Sort Artist": "Metro Boomin, Future & Chris Brown", + "Sort Name": "Superhero (Heroes & Villains) [Mixed]", + "Persistent ID": "C59DB39BD0B23373", + "Track Type": "Remote" + }, + { + "Track ID": "6587", + "Name": "BURN EVERYTHING (feat. Ye)", + "Artist": "Sean Leon", + "Album Artist": "Sean Leon", + "Composer": "Matthew Sean Leon, Ye West, Bijan Amir & John Cunningham", + "Album": "BURN EVERYTHING (feat. Ye) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6024166", + "Total Time": "169464", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3782050061", + "Play Date UTC": "2023-11-05T14:27:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-11-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "BURN EVERYTHING (feat. Ye) - Single", + "Sort Artist": "Sean Leon", + "Sort Name": "BURN EVERYTHING (feat. Ye)", + "Persistent ID": "A6F75010AA4C7C04", + "Track Type": "Remote" + }, + { + "Track ID": "6589", + "Name": "From You (feat. Joji)", + "Artist": "Bonobo", + "Album Artist": "Bonobo", + "Composer": "Simon Green & George Miller", + "Album": "Fragments", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7605966", + "Total Time": "210280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3783762601", + "Play Date UTC": "2023-11-25T10:10:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-01-03T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fragments", + "Sort Artist": "Bonobo", + "Sort Name": "From You (feat. Joji)", + "Persistent ID": "E105DD7EC0C635BA", + "Track Type": "Remote" + }, + { + "Track ID": "6591", + "Name": "JACKIE BROWN", + "Artist": "Brent Faiyaz", + "Album Artist": "Brent Faiyaz", + "Composer": "Christopher Brent Wood, Jason Avalos, Jordan Ware, Stephen Garrett & Timothy Mosley", + "Album": "WASTELAND", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6093194", + "Total Time": "169014", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "19", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3783587680", + "Play Date UTC": "2023-11-23T09:34:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-07-08T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "WASTELAND", + "Sort Artist": "Brent Faiyaz", + "Sort Name": "JACKIE BROWN", + "Persistent ID": "CD14C5959835A064", + "Track Type": "Remote" + }, + { + "Track ID": "6593", + "Name": "Know You Miss Me", + "Artist": "Ayparia & Armut", + "Album Artist": "Ayparia & Armut", + "Composer": "Caroline Polachek, Cassie Ventura, Ernest Greene, Jacques Webster & Ricci Riera", + "Album": "Know You Miss Me - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10965393", + "Total Time": "324615", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-03-20T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Know You Miss Me - Single", + "Sort Artist": "Ayparia & Armut", + "Sort Name": "Know You Miss Me", + "Persistent ID": "58E62C3A0B988620", + "Track Type": "Remote" + }, + { + "Track ID": "6595", + "Name": "Post Malone Chemical", + "Artist": "thomazinn", + "Album Artist": "thomazinn", + "Composer": "Andr\u00e9 Silva", + "Album": "Post Malone Chemical - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7809585", + "Total Time": "221611", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782051060", + "Play Date UTC": "2023-11-05T14:44:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-04-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Post Malone Chemical - Single", + "Sort Artist": "thomazinn", + "Sort Name": "Post Malone Chemical", + "Persistent ID": "2BA1776AD80CE1BB", + "Track Type": "Remote" + }, + { + "Track ID": "6597", + "Name": "Kissin Pink", + "Artist": "Andreas Alives", + "Album Artist": "Andreas Alives", + "Composer": "Rakel Mike Bayers & Jan Raudy Marcel", + "Album": "Multiverse Rocky - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "7635558", + "Total Time": "211302", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2011", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-10-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Multiverse Rocky - Single", + "Sort Artist": "Andreas Alives", + "Sort Name": "Kissin Pink", + "Persistent ID": "7432FD0C9D0C8703", + "Track Type": "Remote" + }, + { + "Track ID": "6599", + "Name": "Moonlight (Kali Uchis)", + "Artist": "omgkirby", + "Album Artist": "omgkirby", + "Composer": "Kali Uchis", + "Album": "Moonlight - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4782192", + "Total Time": "132414", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3782050833", + "Play Date UTC": "2023-11-05T14:40:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-06-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Moonlight - EP", + "Sort Artist": "omgkirby", + "Sort Name": "Moonlight (Kali Uchis)", + "Persistent ID": "74EFB163027FB2CB", + "Track Type": "Remote" + }, + { + "Track ID": "6601", + "Name": "m y . l i f e", + "Artist": "J. Cole, 21 Savage & Morray", + "Album Artist": "J. Cole", + "Composer": "J. Cole, 21 Savage & Jake One", + "Album": "The Off-Season", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7897194", + "Total Time": "218802", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3783670852", + "Play Date UTC": "2023-11-24T08:40:52Z", + "Skip Count": "2", + "Skip Date": "2023-11-05T14:51:06Z", + "Release Date": "2021-05-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Off-Season", + "Sort Artist": "J. Cole, 21 Savage & Morray", + "Sort Name": "m y . l i f e", + "Persistent ID": "DA89AF1FBBA6E003", + "Track Type": "Remote" + }, + { + "Track ID": "6603", + "Name": "Freestyle", + "Artist": "Lil Baby", + "Album Artist": "Lil Baby", + "Composer": "Dominique' Jones", + "Album": "Too Hard", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5852352", + "Total Time": "162053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3781465081", + "Play Date UTC": "2023-10-29T19:58:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Too Hard", + "Sort Artist": "Lil Baby", + "Sort Name": "Freestyle", + "Persistent ID": "3EC7A42EC124002B", + "Track Type": "Remote" + }, + { + "Track ID": "6605", + "Name": "Rich Flex (Drake & 21 Savage Remix)", + "Artist": "Lul Kp", + "Album Artist": "Lul Kp", + "Composer": "Lul K P", + "Album": "Real Playa", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "4494147", + "Total Time": "118560", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "8", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:11Z", + "Date Added": "2023-07-11T20:24:11Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-11-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Real Playa", + "Sort Artist": "Lul Kp", + "Sort Name": "Rich Flex (Drake & 21 Savage Remix)", + "Persistent ID": "C04BC981DAF6EC19", + "Track Type": "Remote" + }, + { + "Track ID": "6607", + "Name": "Strike (Holster) [Mixed]", + "Artist": "Lil Yachty", + "Album Artist": "JJESS", + "Composer": "undef", + "Album": "The Agenda: May 2023 (DJ Mix)", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "3761636", + "Total Time": "96200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "35", + "Track Count": "40", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3781615982", + "Play Date UTC": "2023-10-31T13:53:02Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "The Agenda: May 2023 (DJ Mix)", + "Sort Artist": "Lil Yachty", + "Sort Name": "Strike (Holster) [Mixed]", + "Persistent ID": "38A475E245B79589", + "Track Type": "Remote" + }, + { + "Track ID": "6609", + "Name": "David Kushner daylight", + "Artist": "Star one", + "Album Artist": "Star one", + "Composer": "Enmanuel Estarlin Reyes", + "Album": "David Kushner daylight - Single", + "Genre": "Pop", + "Kind": "AAC audio file", + "Size": "7406413", + "Total Time": "207231", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "David Kushner daylight - Single", + "Sort Artist": "Star one", + "Sort Name": "David Kushner daylight", + "Persistent ID": "54E270EF6B34AE9F", + "Track Type": "Remote" + }, + { + "Track ID": "6611", + "Name": "Off the Map", + "Artist": "Ramzoid", + "Album Artist": "Ramzoid", + "Composer": "Julien Lopes", + "Album": "Off the Map - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "4883830", + "Total Time": "129114", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3780913361", + "Play Date UTC": "2023-10-23T10:42:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-09-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Off the Map - Single", + "Sort Artist": "Ramzoid", + "Sort Name": "Off the Map", + "Persistent ID": "97091B4CF285C7A8", + "Track Type": "Remote" + }, + { + "Track ID": "6613", + "Name": "Saint Pablo", + "Artist": "Kanye West", + "Album Artist": "Kanye West", + "Composer": "Kanye West, Sampha Sisay, MIKE DEAN, Allen Ritter, Shawn Carter, Deric Angelettie, Ronald Lawrence & Norman Whitfield", + "Album": "The Life of Pablo", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "12844348", + "Total Time": "372113", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "20", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3773756346", + "Play Date UTC": "2023-08-01T14:39:06Z", + "Skip Count": "1", + "Skip Date": "2023-11-05T14:21:29Z", + "Release Date": "2016-02-14T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Life of Pablo", + "Sort Artist": "Kanye West", + "Sort Name": "Saint Pablo", + "Persistent ID": "F76F4201C479AB5A", + "Track Type": "Remote" + }, + { + "Track ID": "6615", + "Name": "2 Am", + "Artist": "Rama", + "Album Artist": "Rama", + "Composer": "Rama Kinuthia Ngugi", + "Album": "2 Am - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7191513", + "Total Time": "200000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3778341569", + "Play Date UTC": "2023-09-23T16:19:29Z", + "Skip Count": "1", + "Skip Date": "2023-10-21T15:45:23Z", + "Release Date": "2022-12-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "2 Am - Single", + "Sort Artist": "Rama", + "Sort Name": "2 Am", + "Persistent ID": "3585A2F9EB0359A6", + "Track Type": "Remote" + }, + { + "Track ID": "6617", + "Name": "Bright Lights", + "Artist": "Derek Pope", + "Album Artist": "Derek Pope", + "Composer": "Derek Pope", + "Album": "Bright Lights / Body - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7239343", + "Total Time": "202927", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3783754280", + "Play Date UTC": "2023-11-25T07:51:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-12-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bright Lights / Body - Single", + "Sort Artist": "Derek Pope", + "Sort Name": "Bright Lights", + "Persistent ID": "E3991B113A0054DC", + "Track Type": "Remote" + }, + { + "Track ID": "6619", + "Name": "Spaceship", + "Artist": "48 Lanez & Wintrs", + "Album Artist": "48 Lanez & Wintrs", + "Composer": "Draco Mawri", + "Album": "Spaceship - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "6349588", + "Total Time": "185063", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-12-16T00:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Spaceship - Single", + "Sort Artist": "48 Lanez & Wintrs", + "Sort Name": "Spaceship", + "Persistent ID": "A8FD0D94EE8C8F79", + "Track Type": "Remote" + }, + { + "Track ID": "6621", + "Name": "all my friends", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "21 Savage, Austin Post, Louis Bell, Travis Galette, Idan Kalai & Billy Walsh", + "Album": "i am > i was (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7514854", + "Total Time": "211785", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "16", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783773975", + "Play Date UTC": "2023-11-25T13:19:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-12-21T08:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "i am > i was (Deluxe)", + "Sort Artist": "21 Savage", + "Sort Name": "all my friends", + "Persistent ID": "DA46C57C19E017B6", + "Track Type": "Remote" + }, + { + "Track ID": "6623", + "Name": "Do What I Want (Mixed)", + "Artist": "Kid Cudi", + "Album Artist": "U-LEE", + "Composer": "undef", + "Album": "VISION: U-LEE (DJ Mix)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5098253", + "Total Time": "136248", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "18", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3783076269", + "Play Date UTC": "2023-11-17T11:31:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-06-29T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "VISION: U-LEE (DJ Mix)", + "Sort Artist": "Kid Cudi", + "Sort Name": "Do What I Want (Mixed)", + "Persistent ID": "858EA7293E1401B4", + "Track Type": "Remote" + }, + { + "Track ID": "6625", + "Name": "No Opp Left Behind", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Sh\u00e9yaa Bin Abraham-Joseph & Leland Wayne", + "Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7171401", + "Total Time": "194214", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "13", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3783767527", + "Play Date UTC": "2023-11-25T11:32:07Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-02T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SAVAGE MODE II [CHOPPED NOT SLOPPED]", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "No Opp Left Behind", + "Persistent ID": "6EA0DE2EF14F5E6C", + "Track Type": "Remote" + }, + { + "Track ID": "6627", + "Name": "Rich Spirit (Piano Version)", + "Artist": "Oyster Lovers", + "Album Artist": "Oyster Lovers", + "Composer": "D. Natche, Frano Huett, Jahaan Sweet, Kendrick Lamar, M. Spears & Sam Dew", + "Album": "Kendrick Lamar's Mr. Morale & the Big Steppers On Piano - Disc 1 (Piano Version)", + "Genre": "Easy Listening", + "Kind": "Apple Music AAC audio file", + "Size": "3911674", + "Total Time": "101053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "8", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778342610", + "Play Date UTC": "2023-09-23T16:36:50Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Kendrick Lamar's Mr. Morale & the Big Steppers On Piano - Disc 1 (Piano Version)", + "Sort Artist": "Oyster Lovers", + "Sort Name": "Rich Spirit (Piano Version)", + "Persistent ID": "28E6B16E52D005AC", + "Track Type": "Remote" + }, + { + "Track ID": "6629", + "Name": "Slow Song", + "Artist": "Master Peace & Kasien", + "Album Artist": "Master Peace", + "Composer": "Master Peace, Gina Kushka, Jacob Manson, Kasien Daley & George Reid", + "Album": "Public Display Of Affection - EP", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7054995", + "Total Time": "197236", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783692880", + "Play Date UTC": "2023-11-24T14:48:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-05-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Public Display Of Affection - EP", + "Sort Artist": "Master Peace & Kasien", + "Sort Name": "Slow Song", + "Persistent ID": "17D49FED5DD497BB", + "Track Type": "Remote" + }, + { + "Track ID": "6631", + "Name": "Night Scenee", + "Artist": "Trav Jr", + "Album Artist": "Trav Jr", + "Composer": "Kenith Johns", + "Album": "Ot2 - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "AAC audio file", + "Size": "8092389", + "Total Time": "227360", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3772201203", + "Play Date UTC": "2023-07-14T14:40:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-02-10T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ot2 - Single", + "Sort Artist": "Trav Jr", + "Sort Name": "Night Scenee", + "Persistent ID": "BDA0C32331042874", + "Track Type": "Remote" + }, + { + "Track ID": "6633", + "Name": "House of Balloons / Glass Table Girls (Original)", + "Artist": "The Weeknd", + "Album Artist": "The Weeknd", + "Composer": "The Weeknd, Carlo Montagnese, Doc McKinney, Susan Ballion, Peter Clarke, John Martin & Steven Severin", + "Album": "House of Balloons (Original)", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "14030059", + "Total Time": "407316", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "9", + "Year": "2011", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3772203322", + "Play Date UTC": "2023-07-14T15:15:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-03-21T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "House of Balloons (Original)", + "Sort Artist": "Weeknd", + "Sort Name": "Weeknd", + "Persistent ID": "Weeknd, Carlo Montagnese, Doc McKinney, Susan Ballion, Peter Clarke, John Martin & Steven Severin", + "Track Type": "House of Balloons / Glass Table Girls (Original)" + }, + { + "Track ID": "6635", + "Name": "MIDDLE CHILD", + "Artist": "J. Cole", + "Album Artist": "Dreamville & J. Cole", + "Composer": "J. Cole", + "Album": "Revenge of the Dreamers III", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7515233", + "Total Time": "213000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "18", + "Year": "2019", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": "1", + "Skip Date": "2023-10-12T16:31:43Z", + "Release Date": "2019-01-23T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Revenge of the Dreamers III", + "Sort Artist": "J. Cole", + "Sort Name": "MIDDLE CHILD", + "Persistent ID": "20CC7667E14EEBD9", + "Track Type": "Remote" + }, + { + "Track ID": "6637", + "Name": "Location", + "Artist": "Playboi Carti", + "Album Artist": "Playboi Carti", + "Composer": "Rory W. Quigley, Allan Holdsworth & Mark Rowanne", + "Album": "Playboi Carti", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6090169", + "Total Time": "168784", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "15", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3778348905", + "Play Date UTC": "2023-09-23T18:21:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-14T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "Playboi Carti", + "Sort Artist": "Playboi Carti", + "Sort Name": "Location", + "Persistent ID": "B6808C71BA04CDC1", + "Track Type": "Remote" + }, + { + "Track ID": "6639", + "Name": "RIP Luv", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage & Metro Boomin", + "Composer": "Sh\u00e9yaa Bin Abraham-Joseph, Leland Wayne, Xavier Dotson, Wallace Childs, James Epps, Cleveland Horne & Joseph Pruitt", + "Album": "SAVAGE MODE II", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7598313", + "Total Time": "214192", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "15", + "Year": "2020", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3777565191", + "Play Date UTC": "2023-09-14T16:39:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-10-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "SAVAGE MODE II", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "RIP Luv", + "Persistent ID": "7AA6BC8F0EA818DB", + "Track Type": "Remote" + }, + { + "Track ID": "6641", + "Name": "Lost Forever", + "Artist": "Cactilewis", + "Album Artist": "Cactilewis", + "Composer": "Dremond Lewis", + "Album": "Afterdark - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6166284", + "Total Time": "166905", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3783775573", + "Play Date UTC": "2023-11-25T13:46:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-03-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Afterdark - EP", + "Sort Artist": "Cactilewis", + "Sort Name": "Lost Forever", + "Persistent ID": "469EBBED59879981", + "Track Type": "Remote" + }, + { + "Track ID": "6643", + "Name": "Last Minute", + "Artist": "SASH", + "Album Artist": "SASH", + "Composer": "Jack Sash Basora", + "Album": "Last Minute - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6274939", + "Total Time": "174815", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3783709104", + "Play Date UTC": "2023-11-24T19:18:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-12-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Last Minute - Single", + "Sort Artist": "SASH", + "Sort Name": "Last Minute", + "Persistent ID": "61A97E3F37DC8C78", + "Track Type": "Remote" + }, + { + "Track ID": "6645", + "Name": "Les", + "Artist": "Childish Gambino", + "Album Artist": "Childish Gambino", + "Composer": "Ludwig G\u00f6ransson & Donald Glover", + "Album": "Camp", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11098181", + "Total Time": "317293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2011", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3777367876", + "Play Date UTC": "2023-09-12T09:51:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-11-15T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Camp", + "Sort Artist": "Childish Gambino", + "Sort Name": "Les", + "Persistent ID": "666C3A51D7FC47CD", + "Track Type": "Remote" + }, + { + "Track ID": "6647", + "Name": "5Min", + "Artist": "Paxslim", + "Album Artist": "Paxslim", + "Composer": "Pax Anthony", + "Album": "5Min - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4487725", + "Total Time": "118590", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3778341934", + "Play Date UTC": "2023-09-23T16:25:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-04-13T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "5Min - Single", + "Sort Artist": "Paxslim", + "Sort Name": "5Min", + "Persistent ID": "336DA206232B3024", + "Track Type": "Remote" + }, + { + "Track ID": "6649", + "Name": "Father Stretch My Hands, Pt. 1", + "Artist": "Kanye West", + "Album Artist": "Kanye West", + "Composer": "Kanye West, Scott Mescudi, Rick Rubin, MIKE DEAN, Noah Goldstein, Leland Wayne, Cydel Young, Allen Ritter, Jerome Potter, Samuel Griesemer, Chancelor Bennett & T. L. Barrett", + "Album": "The Life of Pablo", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5081268", + "Total Time": "135920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "20", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3783452971", + "Play Date UTC": "2023-11-21T20:09:31Z", + "Skip Count": "1", + "Skip Date": "2023-09-23T16:25:56Z", + "Release Date": "2016-02-14T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "The Life of Pablo", + "Sort Artist": "Kanye West", + "Sort Name": "Father Stretch My Hands, Pt. 1", + "Persistent ID": "498AEBCABE8BF2A6", + "Track Type": "Remote" + }, + { + "Track ID": "6651", + "Name": "4Real", + "Artist": "Ramy", + "Album Artist": "Ramy", + "Composer": "Ramy Westwood", + "Album": "4Real - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "4990354", + "Total Time": "132923", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3781617278", + "Play Date UTC": "2023-10-31T14:14:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-09-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "4Real - Single", + "Sort Artist": "Ramy", + "Sort Name": "4Real", + "Persistent ID": "95CAD17AFFE22EF5", + "Track Type": "Remote" + }, + { + "Track ID": "6653", + "Name": "Attention (Mixed)", + "Artist": "Doja Cat", + "Album Artist": "Apple Music Resident DJ", + "Composer": "undef", + "Album": "Today's Hits: July 2023 (DJ Mix)", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "7748227", + "Total Time": "213699", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "23", + "Year": "2023", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3780564423", + "Play Date UTC": "2023-10-19T09:47:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-07-07T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Today's Hits: July 2023 (DJ Mix)", + "Sort Artist": "Doja Cat", + "Sort Name": "Attention (Mixed)", + "Persistent ID": "CB88D75A7A7BC630", + "Track Type": "Remote" + }, + { + "Track ID": "6655", + "Name": "16", + "Artist": "Baby Keem", + "Album Artist": "Baby Keem", + "Composer": "Hykeem Carter, Dacoury Natche & Jeff Kleinman", + "Album": "The Melodic Blue", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5743168", + "Total Time": "156040", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "16", + "Track Count": "16", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3782049680", + "Play Date UTC": "2023-11-05T14:21:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-09-10T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "The Melodic Blue", + "Sort Artist": "Baby Keem", + "Sort Name": "16", + "Persistent ID": "CA5C5C3E4816DC67", + "Track Type": "Remote" + }, + { + "Track ID": "6657", + "Name": "MOVIE SHIT (feat. Manu)", + "Artist": "Kasien & Odunsi (The Engine)", + "Album Artist": "Kasien & Odunsi (The Engine)", + "Composer": "Bowofoluwa Oluwafisayo Odunsi, Emanuelle Loca & Kasien Daley", + "Album": "Movie Shit (feat. Manu) - Single", + "Genre": "Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5671447", + "Total Time": "156000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3778347381", + "Play Date UTC": "2023-09-23T17:56:21Z", + "Skip Count": "1", + "Skip Date": "2023-07-15T12:44:10Z", + "Release Date": "2021-12-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Movie Shit (feat. Manu) - Single", + "Sort Artist": "Kasien & Odunsi (The Engine)", + "Sort Name": "MOVIE SHIT (feat. Manu)", + "Persistent ID": "E79B62B940B5156E", + "Track Type": "Remote" + }, + { + "Track ID": "6659", + "Name": "What You Heard", + "Artist": "Sonder", + "Album Artist": "Sonder", + "Composer": "Atupele Ndisale, Carlos Mu\u00f1oz, David Patino & Christopher Wood", + "Album": "What You Heard - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8743625", + "Total Time": "238242", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3778348553", + "Play Date UTC": "2023-09-23T18:15:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-02-22T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "What You Heard - Single", + "Sort Artist": "Sonder", + "Sort Name": "What You Heard", + "Persistent ID": "2458243A79D5177C", + "Track Type": "Remote" + }, + { + "Track ID": "6661", + "Name": "Honda civic '98", + "Artist": "Chase Shakur", + "Album Artist": "Chase Shakur", + "Composer": "undef", + "Album": "It'll Be Fine", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6822393", + "Total Time": "187723", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "9", + "Year": "2022", + "Date Modified": "2023-07-11T20:24:23Z", + "Date Added": "2023-07-11T20:24:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3781571998", + "Play Date UTC": "2023-10-31T01:39:58Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2022-06-24T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "It'll Be Fine", + "Sort Artist": "Chase Shakur", + "Sort Name": "Honda civic '98", + "Persistent ID": "BA81DB119BEFBEBB", + "Track Type": "Remote" + }, + { + "Track ID": "6663", + "Name": "10AM / Save the World (feat. Gucci Mane)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Radric Davis, Andre Proctor, Joseph Froese & Gladys Williams Givens", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8113409", + "Total Time": "226320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3772352552", + "Play Date UTC": "2023-07-16T08:42:32Z", + "Skip Count": "1", + "Skip Date": "2023-10-21T15:45:28Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "10AM / Save the World (feat. Gucci Mane)", + "Persistent ID": "3C04F488310F44B2", + "Track Type": "Remote" + }, + { + "Track ID": "6665", + "Name": "Don't Come Out the House (feat. 21 Savage)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Sh\u00e9yaa Bin Abraham-Joseph & Brytavious Lakeith Chambers", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6192695", + "Total Time": "168347", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3777563388", + "Play Date UTC": "2023-09-14T16:09:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "Don't Come Out the House (feat. 21 Savage)", + "Persistent ID": "276955367AC78EAB", + "Track Type": "Remote" + }, + { + "Track ID": "6667", + "Name": "10 Freaky Girls (feat. 21 Savage)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Sh\u00e9yaa Bin Abraham-Joseph & Michael Jones", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7493794", + "Total Time": "208293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3779915288", + "Play Date UTC": "2023-10-11T21:28:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "10 Freaky Girls (feat. 21 Savage)", + "Persistent ID": "D89FE40FA5602FB0", + "Track Type": "Remote" + }, + { + "Track ID": "6669", + "Name": "Up to Something (feat. Travis Scott & Young Thug)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Travis Scott, Jeffrey Williams, Allen Ritter & Joshua Luellen", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6684630", + "Total Time": "184360", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3772353346", + "Play Date UTC": "2023-07-16T08:55:46Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "Up to Something (feat. Travis Scott & Young Thug)", + "Persistent ID": "8AC65F504D252972", + "Track Type": "Remote" + }, + { + "Track ID": "6671", + "Name": "Only 1 (Interlude) [feat. Travis Scott]", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin & Travis Scott", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3150144", + "Total Time": "80467", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3772805512", + "Play Date UTC": "2023-07-21T14:31:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "Only 1 (Interlude) [feat. Travis Scott]", + "Persistent ID": "54093230DEC3F49C", + "Track Type": "Remote" + }, + { + "Track ID": "6673", + "Name": "Lesbian (feat. Gunna & Young Thug)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Sergio Kitchens, Jeffrey Williams & Joshua Luellen", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7534782", + "Total Time": "206813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3772276530", + "Play Date UTC": "2023-07-15T11:35:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "Lesbian (feat. Gunna & Young Thug)", + "Persistent ID": "69B4163ADB9E4100", + "Track Type": "Remote" + }, + { + "Track ID": "6675", + "Name": "Borrowed Love (feat. Swae Lee & Wizkid)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Khalif Malikibnsham Brown, Wizkid, Mary Lou Cross & Johnnie Lee Frierson", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8209092", + "Total Time": "230240", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3783449962", + "Play Date UTC": "2023-11-21T19:19:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "Borrowed Love (feat. Swae Lee & Wizkid)", + "Persistent ID": "75DCA318C4D1646D", + "Track Type": "Remote" + }, + { + "Track ID": "6677", + "Name": "Only You (feat. Wizkid & Offset)", + "Artist": "Metro Boomin & J Balvin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Wizkid, Offset, J Balvin & Allen Ritter", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7787719", + "Total Time": "218627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3772198777", + "Play Date UTC": "2023-07-14T13:59:37Z", + "Skip Count": "1", + "Skip Date": "2023-07-15T11:39:42Z", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin & J Balvin", + "Sort Name": "Only You (feat. Wizkid & Offset)", + "Persistent ID": "2B9F42FD1D3964CC", + "Track Type": "Remote" + }, + { + "Track ID": "6679", + "Name": "No More (feat. Travis Scott, Kodak Black & 21 Savage)", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Travis Scott, Sh\u00e9yaa Bin Abraham-Joseph, Bill K. Kapri, Dieuson Octave & Dale Ossman Warren", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9467941", + "Total Time": "265120", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3776351156", + "Play Date UTC": "2023-08-31T15:25:56Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-11-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "No More (feat. Travis Scott, Kodak Black & 21 Savage)", + "Persistent ID": "3AD7B0DE287A0C43", + "Track Type": "Remote" + }, + { + "Track ID": "6681", + "Name": "No Complaints (feat. Offset & Drake) [Bonus]", + "Artist": "Metro Boomin", + "Album Artist": "Metro Boomin", + "Composer": "Metro Boomin, Offset & Drake", + "Album": "NOT ALL HEROES WEAR CAPES", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9237256", + "Total Time": "265480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "13", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:25Z", + "Date Added": "2023-07-11T20:24:25Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3782894197", + "Play Date UTC": "2023-11-15T08:56:37Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-06-23T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "NOT ALL HEROES WEAR CAPES", + "Sort Artist": "Metro Boomin", + "Sort Name": "No Complaints (feat. Offset & Drake) [Bonus]", + "Persistent ID": "4365BC5ED4631087", + "Track Type": "Remote" + }, + { + "Track ID": "6683", + "Name": "Rap Saved Me (feat. Quavo)", + "Artist": "21 Savage, Offset & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Shayaa Joseph, Kiari Cephus, Leland Wayne & Quavious Marshall", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9053128", + "Total Time": "257600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3783768256", + "Play Date UTC": "2023-11-25T11:44:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "21 Savage, Offset & Metro Boomin", + "Sort Name": "Rap Saved Me (feat. Quavo)", + "Persistent ID": "3A147B35812BC7A1", + "Track Type": "Remote" + }, + { + "Track ID": "6685", + "Name": "Nightmare", + "Artist": "Offset & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Kiari Cephus & Leland Wayne", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5685822", + "Total Time": "147987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3780414600", + "Play Date UTC": "2023-10-17T16:10:00Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "Offset & Metro Boomin", + "Sort Name": "Nightmare", + "Persistent ID": "7FE9E1915475128A", + "Track Type": "Remote" + }, + { + "Track ID": "6687", + "Name": "Mad Stalkers", + "Artist": "21 Savage, Offset & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Shayaa Joseph, Kiari Cephus, Leland Wayne & Andre Eric Proctor", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7168898", + "Total Time": "202667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3779236697", + "Play Date UTC": "2023-10-04T00:58:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "21 Savage, Offset & Metro Boomin", + "Sort Name": "Mad Stalkers", + "Persistent ID": "D3A2373B7BF8B5ED", + "Track Type": "Remote" + }, + { + "Track ID": "6689", + "Name": "Disrespectful", + "Artist": "21 Savage, Offset & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Shayaa Joseph, Kiari Cephus & Leland Wayne", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5821370", + "Total Time": "160320", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3781447263", + "Play Date UTC": "2023-10-29T15:01:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "21 Savage, Offset & Metro Boomin", + "Sort Name": "Disrespectful", + "Persistent ID": "25BDB85C251EFE80", + "Track Type": "Remote" + }, + { + "Track ID": "6691", + "Name": "Run Up the Racks", + "Artist": "21 Savage & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Shayaa Joseph, Leland Wayne & Joshua Luellen", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6786106", + "Total Time": "189800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3775200218", + "Play Date UTC": "2023-08-18T07:43:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "21 Savage & Metro Boomin", + "Sort Name": "Run Up the Racks", + "Persistent ID": "F503B0B7BD877A86", + "Track Type": "Remote" + }, + { + "Track ID": "6693", + "Name": "Still Serving", + "Artist": "21 Savage, Offset & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Shayaa Joseph, Kiari Cephus, Leland Wayne, Kevin Gromringer & Tim Gomringer", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8195542", + "Total Time": "231787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3774013128", + "Play Date UTC": "2023-08-04T13:58:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "21 Savage, Offset & Metro Boomin", + "Sort Name": "Still Serving", + "Persistent ID": "308E7C43D993E855", + "Track Type": "Remote" + }, + { + "Track ID": "6695", + "Name": "Darth Vader", + "Artist": "21 Savage, Offset & Metro Boomin", + "Album Artist": "21 Savage, Offset & Metro Boomin", + "Composer": "Shayaa Joseph, Kiari Cephus & Leland Wayne", + "Album": "Without Warning", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7945839", + "Total Time": "228893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2017", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "16", + "Play Date": "3780905246", + "Play Date UTC": "2023-10-23T08:27:26Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-12-23T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Without Warning", + "Sort Artist": "21 Savage, Offset & Metro Boomin", + "Sort Name": "Darth Vader", + "Persistent ID": "17D1325AF0EDDE9E", + "Track Type": "Remote" + }, + { + "Track ID": "6697", + "Name": "Big Lie", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Dijon McFarlane, Nicholas Audino, Lewis Hughes, Te Whiti Warbrick, Louis Bell & Carl Rosen", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7717881", + "Total Time": "207688", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3783060729", + "Play Date UTC": "2023-11-17T07:12:09Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Big Lie", + "Persistent ID": "F6DC12C4065FFC7C", + "Track Type": "Remote" + }, + { + "Track ID": "6699", + "Name": "Deja Vu (feat. Justin Bieber)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Justin Bieber, Post Malone, Frank Dukes, Kaan Gunesberk, Louis Bell, Julian Swirsky, Trocon Markous Roberts, Jr., Carl Rosen, Anderson \"Vinylz\" Hernandez & Matthew Tavares", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8521606", + "Total Time": "234213", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3783450699", + "Play Date UTC": "2023-11-21T19:31:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-09-08T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Deja Vu (feat. Justin Bieber)", + "Persistent ID": "F7383071D44E4C5F", + "Track Type": "Remote" + }, + { + "Track ID": "6701", + "Name": "No Option", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Idan Kalai, Michael Hancock, Michael McGinnis, Louis Bell, Christopher Rude, Justin Bieber & Trocon Markous Roberts, Jr.", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6502362", + "Total Time": "179824", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3783002982", + "Play Date UTC": "2023-11-16T15:09:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "No Option", + "Persistent ID": "2B12E2754C512AC0", + "Track Type": "Remote" + }, + { + "Track ID": "6703", + "Name": "Cold", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Frank Dukes & Trocon Markous Roberts, Jr.", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9516001", + "Total Time": "268928", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3783005203", + "Play Date UTC": "2023-11-16T15:46:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Cold", + "Persistent ID": "69EACDEA0BFA0F34", + "Track Type": "Remote" + }, + { + "Track ID": "6705", + "Name": "White Iverson", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Trocon Markous Roberts, Jr., Andre Jackson, Idan Kalai & Rex Kudo", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9059482", + "Total Time": "256532", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "18", + "Year": "2015", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783454609", + "Play Date UTC": "2023-11-21T20:36:49Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-02-04T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "White Iverson", + "Persistent ID": "AD72E2545F4FDADE", + "Track Type": "Remote" + }, + { + "Track ID": "6707", + "Name": "Feel (feat. Kehlani)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Kehlani, Idan Kalai, Trocon Markous Roberts, Jr. & Ryan Vojtesak", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7154125", + "Total Time": "197121", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3783008952", + "Play Date UTC": "2023-11-16T16:49:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Feel (feat. Kehlani)", + "Persistent ID": "4A6FAF287D56AC45", + "Track Type": "Remote" + }, + { + "Track ID": "6709", + "Name": "Yours Truly, Austin Post", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Louis Bell, Jahphet Landis, Leon Thomas & Carl Rosen", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7888348", + "Total Time": "219152", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3783013918", + "Play Date UTC": "2023-11-16T18:11:58Z", + "Skip Count": "2", + "Skip Date": "2023-07-17T10:45:29Z", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Yours Truly, Austin Post", + "Persistent ID": "43A34584019747C8", + "Track Type": "Remote" + }, + { + "Track ID": "6711", + "Name": "Money Made Me Do It (feat. 2 Chainz)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Tauheed Epps & Trocon Markous Roberts, Jr.", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8050319", + "Total Time": "224951", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3783005795", + "Play Date UTC": "2023-11-16T15:56:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Money Made Me Do It (feat. 2 Chainz)", + "Persistent ID": "9C1DBF497794AA6B", + "Track Type": "Remote" + }, + { + "Track ID": "6713", + "Name": "Feeling Whitney", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone & Andrew Watt", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9116281", + "Total Time": "257278", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "18", + "Year": "2016", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3783006963", + "Play Date UTC": "2023-11-16T16:16:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-12-09T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Feeling Whitney", + "Persistent ID": "552674EF33DCB886", + "Track Type": "Remote" + }, + { + "Track ID": "6715", + "Name": "Paranoid", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Idan Kalai, Louis Bell, Alexander Krashinsky, Carl Rosen & William Walsh", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8015876", + "Total Time": "221781", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3783057519", + "Play Date UTC": "2023-11-17T06:18:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Paranoid", + "Persistent ID": "88B300BAD843C89E", + "Track Type": "Remote" + }, + { + "Track ID": "6717", + "Name": "Rich & Sad", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Frank Dukes, William Walsh & Louis Bell", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7384541", + "Total Time": "206460", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3783005411", + "Play Date UTC": "2023-11-16T15:50:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Rich & Sad", + "Persistent ID": "8FA7AAA3805B5FD5", + "Track Type": "Remote" + }, + { + "Track ID": "6719", + "Name": "Takin' Shots", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Louis Bell, William Walsh, PARTYNEXTDOOR & David Hughes", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7794063", + "Total Time": "216749", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3783596652", + "Play Date UTC": "2023-11-23T12:04:12Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Takin' Shots", + "Persistent ID": "8C2F40CF9EBDCE07", + "Track Type": "Remote" + }, + { + "Track ID": "6721", + "Name": "Ball For Me (feat. Nicki Minaj)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Louis Bell & Nicki Minaj", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7704038", + "Total Time": "206269", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3783712952", + "Play Date UTC": "2023-11-24T20:22:32Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Ball For Me (feat. Nicki Minaj)", + "Persistent ID": "7687F67AB6514F89", + "Track Type": "Remote" + }, + { + "Track ID": "6723", + "Name": "Same Bitches (feat. G-Eazy & YG)", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Louis Bell, Idan Kalai, William Walsh, Samuel Ahana, Gerald Gillum, Keenon Jackson & Rod Argent", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7588796", + "Total Time": "212463", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3779314814", + "Play Date UTC": "2023-10-04T22:40:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Same Bitches (feat. G-Eazy & YG)", + "Persistent ID": "4C644C4D3710A75C", + "Track Type": "Remote" + }, + { + "Track ID": "6725", + "Name": "92 Explorer", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Louis Bell, London On Da Track, Roark Bailey, Aubrey Robinson & Jaison Harris", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7637779", + "Total Time": "211432", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3783057831", + "Play Date UTC": "2023-11-17T06:23:51Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "92 Explorer", + "Persistent ID": "CE494E6FD3773D1A", + "Track Type": "Remote" + }, + { + "Track ID": "6727", + "Name": "Sugar Wraith", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Louis Bell & Post Malone", + "Album": "beerbongs & bentleys", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8098261", + "Total Time": "228147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "18", + "Year": "2018", + "Date Modified": "2023-07-11T20:24:26Z", + "Date Added": "2023-07-11T20:24:26Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3783593978", + "Play Date UTC": "2023-11-23T11:19:38Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-04-27T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "beerbongs & bentleys", + "Sort Artist": "Post Malone", + "Sort Name": "Sugar Wraith", + "Persistent ID": "CD74CBDBB6CDD10B", + "Track Type": "Remote" + }, + { + "Track ID": "6729", + "Name": "Rose in a Glass", + "Artist": "Provoker", + "Album Artist": "Provoker", + "Composer": "Christian Crow Petty & Jonathon Lopez", + "Album": "Body Jumper", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6535468", + "Total Time": "178937", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:29Z", + "Date Added": "2023-07-11T20:24:29Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3781060481", + "Play Date UTC": "2023-10-25T03:34:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-07-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Body Jumper", + "Sort Artist": "Provoker", + "Sort Name": "Rose in a Glass", + "Persistent ID": "F7E4E1E91B2A1863", + "Track Type": "Remote" + }, + { + "Track ID": "6731", + "Name": "Fog (Again Again Version)", + "Artist": "Radiohead", + "Album Artist": "Radiohead", + "Composer": "Colin Greenwood, Ed O'Brien, Jonny Greenwood, Phil Selway & Thom Yorke", + "Album": "KID A MNESIA", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5378555", + "Total Time": "145443", + "Disc Number": "3", + "Disc Count": "3", + "Track Number": "3", + "Track Count": "12", + "Year": "2021", + "Date Modified": "2023-07-11T20:24:30Z", + "Date Added": "2023-07-11T20:24:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3778338675", + "Play Date UTC": "2023-09-23T15:31:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-11-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "KID A MNESIA", + "Sort Artist": "Radiohead", + "Sort Name": "Fog (Again Again Version)", + "Persistent ID": "4C366E14E61E609D", + "Track Type": "Remote" + }, + { + "Track ID": "6733", + "Name": "In the Room Where You Sleep", + "Artist": "Dead Man's Bones", + "Album Artist": "Dead Man's Bones", + "Composer": "Zach Shields & Ryan Gosling", + "Album": "Dead Man's Bones", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8730069", + "Total Time": "236827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2009", + "Date Modified": "2023-07-11T20:24:30Z", + "Date Added": "2023-07-11T20:24:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3779556593", + "Play Date UTC": "2023-10-07T17:49:53Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2009-10-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dead Man's Bones", + "Sort Artist": "Dead Man's Bones", + "Sort Name": "In the Room Where You Sleep", + "Persistent ID": "CA4BD98DAD7E7EF1", + "Track Type": "Remote" + }, + { + "Track ID": "6735", + "Name": "Imagine", + "Artist": "John Lennon", + "Album Artist": "John Lennon", + "Composer": "John Lennon & Yoko Ono", + "Album": "Imagine (The Ultimate Mixes)", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "6689331", + "Total Time": "186221", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "1971", + "Date Modified": "2023-07-13T05:57:18Z", + "Date Added": "2023-07-13T05:57:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3780845662", + "Play Date UTC": "2023-10-22T15:54:22Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1971-09-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Imagine (The Ultimate Mixes)", + "Sort Artist": "John Lennon", + "Sort Name": "Imagine", + "Persistent ID": "3DFBE2FB884EF70C", + "Track Type": "Remote" + }, + { + "Track ID": "6737", + "Name": "Mycose", + "Artist": "La Femme", + "Album Artist": "La Femme", + "Composer": "Marlon Magnee & Sacha Got", + "Album": "Myst\u00e8re", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8068288", + "Total Time": "231787", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2016", + "Date Modified": "2023-07-21T21:04:56Z", + "Date Added": "2023-07-21T21:04:56Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3783413424", + "Play Date UTC": "2023-11-21T09:10:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2016-09-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Myst\u00e8re", + "Sort Artist": "La Femme", + "Sort Name": "Mycose", + "Persistent ID": "6B505191153A85AE", + "Track Type": "Remote" + }, + { + "Track ID": "6739", + "Name": "Never Far", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7806252", + "Total Time": "221440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3777366534", + "Play Date UTC": "2023-09-12T09:28:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Never Far", + "Persistent ID": "248130D00BE1F354", + "Track Type": "Remote" + }, + { + "Track ID": "6741", + "Name": "Baby Don't Quit", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7000703", + "Total Time": "192540", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3775560011", + "Play Date UTC": "2023-08-22T11:40:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-02-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Baby Don't Quit", + "Persistent ID": "215421DBC5FE4DEA", + "Track Type": "Remote" + }, + { + "Track ID": "6743", + "Name": "The Wine", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7470962", + "Total Time": "207699", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3775560218", + "Play Date UTC": "2023-08-22T11:43:38Z", + "Skip Count": "1", + "Skip Date": "2023-09-03T17:23:19Z", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Wine", + "Persistent ID": "F6FAE537D8120C6C", + "Track Type": "Remote" + }, + { + "Track ID": "6745", + "Name": "Answer the Night", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7312505", + "Total Time": "200000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2021", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783596221", + "Play Date UTC": "2023-11-23T11:57:01Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2021-11-17T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Answer the Night", + "Persistent ID": "A4FDA0FDAC300329", + "Track Type": "Remote" + }, + { + "Track ID": "6747", + "Name": "In Love", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6996667", + "Total Time": "201979", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3775560620", + "Play Date UTC": "2023-08-22T11:50:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "In Love", + "Persistent ID": "712ECCEA4BB661B5", + "Track Type": "Remote" + }, + { + "Track ID": "6749", + "Name": "Give Me Love or Give Me Nothing", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6941909", + "Total Time": "195027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3781539310", + "Play Date UTC": "2023-10-30T16:35:10Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Give Me Love or Give Me Nothing", + "Persistent ID": "A48F5BEDC9A6C8D1", + "Track Type": "Remote" + }, + { + "Track ID": "6751", + "Name": "Not a Rockstar", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5543062", + "Total Time": "148960", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3781196053", + "Play Date UTC": "2023-10-26T17:14:13Z", + "Skip Count": "1", + "Skip Date": "2023-07-27T08:20:12Z", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Not a Rockstar", + "Persistent ID": "342FC5DE987C5732", + "Track Type": "Remote" + }, + { + "Track ID": "6753", + "Name": "Not What You Wanted", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7568196", + "Total Time": "213947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3781080059", + "Play Date UTC": "2023-10-25T09:00:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Not What You Wanted", + "Persistent ID": "1A9B0E170CB1844A", + "Track Type": "Remote" + }, + { + "Track ID": "6755", + "Name": "Life In This Pain", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5860923", + "Total Time": "161120", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3781523804", + "Play Date UTC": "2023-10-30T12:16:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Life In This Pain", + "Persistent ID": "8412AF5519986F84", + "Track Type": "Remote" + }, + { + "Track ID": "6757", + "Name": "Oh Yeah", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "4594668", + "Total Time": "122293", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3783495080", + "Play Date UTC": "2023-11-22T07:51:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "Oh Yeah", + "Persistent ID": "169968248C5F7698", + "Track Type": "Remote" + }, + { + "Track ID": "6759", + "Name": "New World", + "Artist": "Aime Simone", + "Album Artist": "Aime Simone", + "Composer": "Aime Simone & Sonja Fix", + "Album": "Oh Glory", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6855099", + "Total Time": "194627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": -1, + "Year": "2023", + "Date Modified": "2023-07-23T07:54:59Z", + "Date Added": "2023-07-23T07:54:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3775483941", + "Play Date UTC": "2023-08-21T14:32:21Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Glory", + "Sort Artist": "Aime Simone", + "Sort Name": "New World", + "Persistent ID": "A20817F8906450A7", + "Track Type": "Remote" + }, + { + "Track ID": "6761", + "Name": "Thread", + "Artist": "Wombo", + "Album Artist": "Wombo", + "Composer": "Sydney Chadwick, Cameron Lowe & Joel Taylor", + "Album": "Slab - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6616766", + "Total Time": "183080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2023", + "Date Modified": "2023-07-23T08:01:23Z", + "Date Added": "2023-07-23T08:01:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3781063409", + "Play Date UTC": "2023-10-25T04:23:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-06-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Slab - EP", + "Sort Artist": "Wombo", + "Sort Name": "Thread", + "Persistent ID": "FBE8445D7F1AD378", + "Track Type": "Remote" + }, + { + "Track ID": "6763", + "Name": "Constant Flux", + "Artist": "Sivu", + "Album Artist": "Sivu", + "Composer": "James Page", + "Album": "Wild Horse Running", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "9137143", + "Total Time": "255707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T08:07:01Z", + "Date Added": "2023-07-23T08:07:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3780914731", + "Play Date UTC": "2023-10-23T11:05:31Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-06-09T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wild Horse Running", + "Sort Artist": "Sivu", + "Sort Name": "Constant Flux", + "Persistent ID": "110EEB51A6488EFE", + "Track Type": "Remote" + }, + { + "Track ID": "6765", + "Name": "Yes I Have Eaten So Many Lemons Yes I Am So Bitte", + "Artist": "bar italia", + "Album Artist": "bar italia", + "Composer": "Jezmi Tarik Fehmi, Nina Cristante & Samuel Fenton", + "Album": "Tracey Denim", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6491385", + "Total Time": "179195", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "15", + "Year": "2023", + "Date Modified": "2023-07-23T08:29:06Z", + "Date Added": "2023-07-23T08:29:06Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3781614174", + "Play Date UTC": "2023-10-31T13:22:54Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-19T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tracey Denim", + "Sort Artist": "bar italia", + "Sort Name": "Yes I Have Eaten So Many Lemons Yes I Am So Bitte", + "Persistent ID": "9583FAEFBEBC370B", + "Track Type": "Remote" + }, + { + "Track ID": "6767", + "Name": "Angourie", + "Artist": "The Nagging Doubts", + "Album Artist": "The Nagging Doubts", + "Composer": "Thomas O'Rourke, Ruby King, Eden Neilson, Josef Wilks & Gabriel Edward Jessie-Smith", + "Album": "Angourie - Single", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "7288052", + "Total Time": "193189", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-07-23T08:31:07Z", + "Date Added": "2023-07-23T08:31:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3776966538", + "Play Date UTC": "2023-09-07T18:22:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-05-12T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Angourie - Single", + "Sort Artist": "Nagging Doubts", + "Sort Name": "Nagging Doubts", + "Persistent ID": "Angourie", + "Track Type": "452582B68A2D6406" + }, + { + "Track ID": "6769", + "Name": "Earth Glows No More Devine", + "Artist": "Samuel Organ", + "Album Artist": "Samuel Organ", + "Composer": "Samuel Organ & Samuel Christian Organ", + "Album": "Guided by Horses", + "Genre": "Easy Listening", + "Kind": "Apple Music AAC audio file", + "Size": "7861247", + "Total Time": "219000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "7", + "Year": "2023", + "Date Modified": "2023-07-23T08:41:15Z", + "Date Added": "2023-07-23T08:41:15Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3776966344", + "Play Date UTC": "2023-09-07T18:19:04Z", + "Skip Count": "1", + "Skip Date": "2023-09-06T15:17:44Z", + "Release Date": "2023-05-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Guided by Horses", + "Sort Artist": "Samuel Organ", + "Sort Name": "Earth Glows No More Devine", + "Persistent ID": "AD753021F7114B98", + "Track Type": "Remote" + }, + { + "Track ID": "6771", + "Name": "Self Service", + "Artist": "May Rio", + "Album Artist": "May Rio", + "Composer": "May Rio", + "Album": "French Bath", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "6438714", + "Total Time": "178267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2023", + "Date Modified": "2023-07-23T08:42:43Z", + "Date Added": "2023-07-23T08:42:43Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3776966125", + "Play Date UTC": "2023-09-07T18:15:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-06-16T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "French Bath", + "Sort Artist": "May Rio", + "Sort Name": "Self Service", + "Persistent ID": "A4B0E8B5AC42C97A", + "Track Type": "Remote" + }, + { + "Track ID": "6773", + "Name": "Magic", + "Artist": "Elliot Moss", + "Album Artist": "Elliot Moss", + "Composer": "Elliot Moss", + "Album": "Magic - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9248925", + "Total Time": "253646", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-08-18T14:32:39Z", + "Date Added": "2023-08-18T14:32:39Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3782887097", + "Play Date UTC": "2023-11-15T06:58:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-07-14T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Magic - Single", + "Sort Artist": "Elliot Moss", + "Sort Name": "Magic", + "Persistent ID": "3F1D50268F9B9E7A", + "Track Type": "Remote" + }, + { + "Track ID": "6775", + "Name": "2SEATER (feat. Aaron Shaw, Samantha Nelson, and Austin Feinstein)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Cherry Bomb", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "14149724", + "Total Time": "409779", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-08-24T10:49:30Z", + "Date Added": "2023-08-24T10:49:30Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3777212644", + "Play Date UTC": "2023-09-10T14:44:04Z", + "Skip Count": "1", + "Skip Date": "2023-09-07T15:58:57Z", + "Release Date": "2015-04-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cherry Bomb", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "2SEATER (feat. Aaron Shaw, Samantha Nelson, and Austin Feinstein)", + "Persistent ID": "921816EA24EE00D1", + "Track Type": "Remote" + }, + { + "Track ID": "6777", + "Name": "BUFFALO (feat. Shane Powers)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Cherry Bomb", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6073049", + "Total Time": "159964", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-09-07T15:45:01Z", + "Date Added": "2023-09-07T15:45:01Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3778747176", + "Play Date UTC": "2023-09-28T08:59:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-04-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cherry Bomb", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "BUFFALO (feat. Shane Powers)", + "Persistent ID": "28BF588DBFA3E15D", + "Track Type": "Remote" + }, + { + "Track ID": "6779", + "Name": "FIND YOUR WINGS (feat. Roy Ayers, Syd Bennett, and Kali Uchis)", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Cherry Bomb", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6868419", + "Total Time": "179043", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-09-07T15:51:18Z", + "Date Added": "2023-09-07T15:51:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3781078991", + "Play Date UTC": "2023-10-25T08:43:11Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-04-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cherry Bomb", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "FIND YOUR WINGS (feat. Roy Ayers, Syd Bennett, and Kali Uchis)", + "Persistent ID": "0B93A00930164D0B", + "Track Type": "Remote" + }, + { + "Track ID": "6781", + "Name": "CHERRY BOMB", + "Artist": "Tyler, The Creator", + "Album Artist": "Tyler, The Creator", + "Composer": "Tyler Okonma", + "Album": "Cherry Bomb", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9895694", + "Total Time": "269352", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-09-07T15:52:52Z", + "Date Added": "2023-09-07T15:52:52Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3778746837", + "Play Date UTC": "2023-09-28T08:53:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-04-13T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cherry Bomb", + "Sort Artist": "Tyler, The Creator", + "Sort Name": "CHERRY BOMB", + "Persistent ID": "DBD49642F783CCAF", + "Track Type": "Remote" + }, + { + "Track ID": "6783", + "Name": "Don't Be So Serious", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija, Andrew Scheps & Mike Lindsay", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "13823050", + "Total Time": "372867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "22", + "Year": "2017", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3781157305", + "Play Date UTC": "2023-10-26T06:28:25Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Don't Be So Serious", + "Persistent ID": "971E5F3CAE748410", + "Track Type": "Remote" + }, + { + "Track ID": "6785", + "Name": "Bones (feat. Jofridur)", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija, Andrew Scheps & Mike Lindsay", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6182369", + "Total Time": "170107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "18", + "Play Date": "3782980788", + "Play Date UTC": "2023-11-16T08:59:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Bones (feat. Jofridur)", + "Persistent ID": "40585F84C993839A", + "Track Type": "Remote" + }, + { + "Track ID": "6787", + "Name": "Easy Way Out", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "10569513", + "Total Time": "288280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3781075238", + "Play Date UTC": "2023-10-25T07:40:38Z", + "Skip Count": "2", + "Skip Date": "2023-09-24T00:58:25Z", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Easy Way Out", + "Persistent ID": "D7D640B9DC31CBC7", + "Track Type": "Remote" + }, + { + "Track ID": "6789", + "Name": "Poznan", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija, Andrew Scheps & Mike Lindsay", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "5060056", + "Total Time": "123413", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "22", + "Year": "2017", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3782903577", + "Play Date UTC": "2023-11-15T11:32:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Poznan", + "Persistent ID": "E070C7AAD099CDA3", + "Track Type": "Remote" + }, + { + "Track ID": "6791", + "Name": "Asylums for the Feeling (feat. Leila Adu)", + "Artist": "SILENT POETS", + "Album Artist": "Various Artists", + "Composer": "Leila Adu & Michiharu Shimoda", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "15134543", + "Total Time": "427760", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3779238839", + "Play Date UTC": "2023-10-04T01:33:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "SILENT POETS", + "Sort Name": "Asylums for the Feeling (feat. Leila Adu)", + "Persistent ID": "30F6A707D1744358", + "Track Type": "Remote" + }, + { + "Track ID": "6793", + "Name": "Once in a Long, Long While", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "11479546", + "Total Time": "317480", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "22", + "Year": "2017", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "6", + "Play Date": "3781353999", + "Play Date UTC": "2023-10-28T13:06:39Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-04-05T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Once in a Long, Long While", + "Persistent ID": "C09C46C6A954DEB1", + "Track Type": "Remote" + }, + { + "Track ID": "6795", + "Name": "St. Eriksplan", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija, Andrew Scheps & Mike Lindsay", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8390504", + "Total Time": "222840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3779203936", + "Play Date UTC": "2023-10-03T15:52:16Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "St. Eriksplan", + "Persistent ID": "2CF0FF3F4A2071E0", + "Track Type": "Remote" + }, + { + "Track ID": "6797", + "Name": "Death Stranding", + "Artist": "CHVRCHES", + "Album Artist": "CHVRCHES", + "Composer": "Iain Cook, Martin Doherty & Lauren Mayberry", + "Album": "In Search Of Darkness - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "11051509", + "Total Time": "316214", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2019", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3779175112", + "Play Date UTC": "2023-10-03T07:51:52Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-09-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In Search Of Darkness - EP", + "Sort Artist": "CHVRCHES", + "Sort Name": "Death Stranding", + "Persistent ID": "C30C96B03FA6D8B8", + "Track Type": "Remote" + }, + { + "Track ID": "6799", + "Name": "Please Don't Stop Chapter 1", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "10142640", + "Total Time": "282373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3778741542", + "Play Date UTC": "2023-09-28T07:25:42Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Please Don't Stop Chapter 1", + "Persistent ID": "31C0BBCFACBEDA87", + "Track Type": "Remote" + }, + { + "Track ID": "6801", + "Name": "Because We Have To", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8649547", + "Total Time": "233920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778741783", + "Play Date UTC": "2023-09-28T07:29:43Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Because We Have To", + "Persistent ID": "890195F57D4C2F23", + "Track Type": "Remote" + }, + { + "Track ID": "6803", + "Name": "Waiting (10 Years)", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija, Andrew Scheps & Mike Lindsay", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "8781875", + "Total Time": "246227", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782982460", + "Play Date UTC": "2023-11-16T09:27:40Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Waiting (10 Years)", + "Persistent ID": "2EB4EEBEE658D876", + "Track Type": "Remote" + }, + { + "Track ID": "6805", + "Name": "Almost Nothing (feat. Okay Kaya)", + "Artist": "SILENT POETS", + "Album Artist": "Various Artists", + "Composer": "Okay Kaya & Michiharu Shimoda", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "10383318", + "Total Time": "297907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3783586263", + "Play Date UTC": "2023-11-23T09:11:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "SILENT POETS", + "Sort Name": "Almost Nothing (feat. Okay Kaya)", + "Persistent ID": "764545C83E2D4545", + "Track Type": "Remote" + }, + { + "Track ID": "6807", + "Name": "Tonight, Tonight, Tonight", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "17441420", + "Total Time": "477840", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778742806", + "Play Date UTC": "2023-09-28T07:46:46Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Tonight, Tonight, Tonight", + "Persistent ID": "2F4054248696EDC3", + "Track Type": "Remote" + }, + { + "Track ID": "6809", + "Name": "Nobody Else", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "10463187", + "Total Time": "297960", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "22", + "Year": "2011", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778743104", + "Play Date UTC": "2023-09-28T07:51:44Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2011-11-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Nobody Else", + "Persistent ID": "E1DB4C68276E1A22", + "Track Type": "Remote" + }, + { + "Track ID": "6811", + "Name": "The Machine", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija, Andrew Scheps & Mike Lindsay", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "12037112", + "Total Time": "337027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778743440", + "Play Date UTC": "2023-09-28T07:57:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Machine", + "Persistent ID": "D384241B994FF148", + "Track Type": "Remote" + }, + { + "Track ID": "6813", + "Name": "Anything You Need", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "7213581", + "Total Time": "192373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778743634", + "Play Date UTC": "2023-09-28T08:00:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Anything You Need", + "Persistent ID": "A7B8A17A65092AD7", + "Track Type": "Remote" + }, + { + "Track ID": "6815", + "Name": "Give Up", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "6857728", + "Total Time": "186267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3781598673", + "Play Date UTC": "2023-10-31T09:04:33Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Give Up", + "Persistent ID": "BFCA6952A1DF2337", + "Track Type": "Remote" + }, + { + "Track ID": "6817", + "Name": "Patience", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "12216245", + "Total Time": "344453", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778744421", + "Play Date UTC": "2023-09-28T08:13:41Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Patience", + "Persistent ID": "D11EB05FD98B4465", + "Track Type": "Remote" + }, + { + "Track ID": "6819", + "Name": "Path", + "Artist": "Apocalyptica", + "Album Artist": "Various Artists", + "Composer": "Eicca Toppinen", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "6927039", + "Total Time": "187947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "22", + "Year": "2000", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3779318061", + "Play Date UTC": "2023-10-04T23:34:21Z", + "Skip Count": "1", + "Skip Date": "2023-09-28T15:42:02Z", + "Release Date": "2000-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Apocalyptica", + "Sort Name": "Path", + "Persistent ID": "6B82D02E1138FA13", + "Track Type": "Remote" + }, + { + "Track ID": "6821", + "Name": "Not Around", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija, Andrew Scheps & Mike Lindsay", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "11446610", + "Total Time": "314653", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778745473", + "Play Date UTC": "2023-09-28T08:31:13Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "Not Around", + "Persistent ID": "C39A38C2702C68FC", + "Track Type": "Remote" + }, + { + "Track ID": "6823", + "Name": "I'm Leaving", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "12310031", + "Total Time": "334000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "21", + "Track Count": "22", + "Year": "2020", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3778746567", + "Play Date UTC": "2023-09-28T08:49:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2020-01-31T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "I'm Leaving", + "Persistent ID": "14CEFF6600E630C0", + "Track Type": "Remote" + }, + { + "Track ID": "6825", + "Name": "I'll Keep Coming", + "Artist": "Low Roar", + "Album Artist": "Various Artists", + "Composer": "Ryan Joseph Karazija & Andrew Scheps", + "Album": "Death Stranding (Songs from the Video Game)", + "Genre": "Soundtrack", + "Kind": "Apple Music AAC audio file", + "Size": "12781487", + "Total Time": "353813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "22", + "Track Count": "22", + "Year": "2014", + "Date Modified": "2023-09-16T19:01:04Z", + "Date Added": "2023-09-16T19:01:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Death Stranding (Songs from the Video Game)", + "Sort Artist": "Low Roar", + "Sort Name": "I'll Keep Coming", + "Persistent ID": "D7E74DA7C2A85303", + "Track Type": "Remote" + }, + { + "Track ID": "6827", + "Name": "Strangers In Conversation", + "Artist": "Daphn\u00e9 & Mama Aiuto", + "Album Artist": "Daphn\u00e9", + "Composer": "Benjamin McCarthy & Conor McCarthy", + "Album": "Life Routines", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4309175", + "Total Time": "110641", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "9", + "Year": "2020", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Life Routines", + "Sort Artist": "Daphn\u00e9 & Mama Aiuto", + "Sort Name": "Strangers In Conversation", + "Persistent ID": "7747E8073551412A", + "Track Type": "Remote" + }, + { + "Track ID": "6829", + "Name": "Who Are We", + "Artist": "Burrito Eats & DAO", + "Album Artist": "Burrito Eats & DAO", + "Composer": "Burrito Eats & christian kalla", + "Album": "Who Are We - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4349081", + "Total Time": "116053", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Who Are We - Single", + "Sort Artist": "Burrito Eats & DAO", + "Sort Name": "Who Are We", + "Persistent ID": "B6A04A52662C7B53", + "Track Type": "Remote" + }, + { + "Track ID": "6833", + "Name": "Modern World (Notes from California)", + "Artist": "Max Jury", + "Album Artist": "Max Jury", + "Composer": "Max Jury, Robin Hannibal & Thomas John Drayton", + "Album": "Notes from California - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7567297", + "Total Time": "212907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Notes from California - EP", + "Sort Artist": "Max Jury", + "Sort Name": "Modern World (Notes from California)", + "Persistent ID": "42D6C5AC1A784BAF", + "Track Type": "Remote" + }, + { + "Track ID": "6835", + "Name": "Stronger", + "Artist": "The Score", + "Album Artist": "The Score", + "Composer": "Edan Dover, Jason Merris Bell, Jordan Rand Miller & Eddie Ramirez", + "Album": "Carry On", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6914330", + "Total Time": "190049", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "15", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Carry On", + "Sort Artist": "Score", + "Sort Name": "Score", + "Persistent ID": "Stronger", + "Track Type": "9D89B9F1AD7ED269" + }, + { + "Track ID": "6839", + "Name": "Pearl", + "Artist": "Lazlow", + "Album Artist": "Lazlow", + "Composer": "Adam Laszlo", + "Album": "Pearl - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4850201", + "Total Time": "126711", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pearl - Single", + "Sort Artist": "Lazlow", + "Sort Name": "Pearl", + "Persistent ID": "F52AE9DAD0EC7296", + "Track Type": "Remote" + }, + { + "Track ID": "6841", + "Name": "Newlife", + "Artist": "Flandrs", + "Album Artist": "Flandrs", + "Composer": "Mar-Antoine Bernard", + "Album": "Goldies", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6000662", + "Total Time": "162857", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Goldies", + "Sort Artist": "Flandrs", + "Sort Name": "Newlife", + "Persistent ID": "14C6FF3925A48E4E", + "Track Type": "Remote" + }, + { + "Track ID": "6843", + "Name": "Almyra (feat. Billa Qause)", + "Artist": "Moderator, Drips Zacheer & Mononome", + "Album Artist": "Moderator, Drips Zacheer & Mononome", + "Composer": "Alexandros Adam, Pavlos Zacharis, Filippos Michadasis & Vasileios Zafiridis", + "Album": "Almyra (feat. Billa Qause) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5316753", + "Total Time": "140250", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Almyra (feat. Billa Qause) - Single", + "Sort Artist": "Moderator, Drips Zacheer & Mononome", + "Sort Name": "Almyra (feat. Billa Qause)", + "Persistent ID": "7AD2F3C36E7E1629", + "Track Type": "Remote" + }, + { + "Track ID": "6845", + "Name": "Hoping", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Casey Harris, Noah Feldshuh, Sam Harris & Adam Levin", + "Album": "Hoping - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6957542", + "Total Time": "193567", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hoping - Single", + "Sort Artist": "X Ambassadors", + "Sort Name": "Hoping", + "Persistent ID": "A66E8FE011174488", + "Track Type": "Remote" + }, + { + "Track ID": "6847", + "Name": "splash splash", + "Artist": "Pistachio", + "Album Artist": "Pistachio", + "Composer": "Zaron", + "Album": "splash splash - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6137851", + "Total Time": "174066", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "splash splash - Single", + "Sort Artist": "Pistachio", + "Sort Name": "splash splash", + "Persistent ID": "1B05DF37E56C1B1F", + "Track Type": "Remote" + }, + { + "Track ID": "6849", + "Name": "true authentic self", + "Artist": "Sarah, the Illstrumentalist", + "Album Artist": "Sarah, the Illstrumentalist", + "Composer": "Sarah Debnam", + "Album": "the universe is watching", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4809266", + "Total Time": "131270", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "8", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "universe is watching", + "Sort Artist": "Sarah, the Illstrumentalist", + "Sort Name": "true authentic self", + "Persistent ID": "DCD02544E3561EF3", + "Track Type": "Remote" + }, + { + "Track ID": "6851", + "Name": "on my way home", + "Artist": "clay house & URCHN", + "Album Artist": "clay house & URCHN", + "Composer": "Max Greenhalgh & Andres Dylan Owens", + "Album": "on my way home - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5297532", + "Total Time": "140225", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "on my way home - Single", + "Sort Artist": "clay house & URCHN", + "Sort Name": "on my way home", + "Persistent ID": "9DB54DD1C6F70BA9", + "Track Type": "Remote" + }, + { + "Track ID": "6853", + "Name": "Villa", + "Artist": "DLJ, \u00d8DYSSEE & Florent Garcia", + "Album Artist": "DLJ, \u00d8DYSSEE & Florent Garcia", + "Composer": "Felix Schmidt, Louis Le Clerc & Florent Garcia", + "Album": "Monte Carle - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5296324", + "Total Time": "143494", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Monte Carle - Single", + "Sort Artist": "DLJ, \u00d8DYSSEE & Florent Garcia", + "Sort Name": "Villa", + "Persistent ID": "33185647551BFD31", + "Track Type": "Remote" + }, + { + "Track ID": "6855", + "Name": "Elise", + "Artist": "Tom Doolie", + "Album Artist": "Tom Doolie", + "Composer": "Thomas Huber", + "Album": "Elise - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3382243", + "Total Time": "84214", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Elise - Single", + "Sort Artist": "Tom Doolie", + "Sort Name": "Elise", + "Persistent ID": "7AF1055E2E61C321", + "Track Type": "Remote" + }, + { + "Track ID": "6857", + "Name": "Summer Is Over", + "Artist": "Kazuki Isogai, The Field Tapes & wowflower", + "Album Artist": "Kazuki Isogai, The Field Tapes & wowflower", + "Composer": "Kazuki Isogai, Kyle Torr-Brown & Kyle McEvoy", + "Album": "Summer Is Over - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4901186", + "Total Time": "128571", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Summer Is Over - Single", + "Sort Artist": "Kazuki Isogai, The Field Tapes & wowflower", + "Sort Name": "Summer Is Over", + "Persistent ID": "6DF6A49E36ECE1EE", + "Track Type": "Remote" + }, + { + "Track ID": "6859", + "Name": "Insides Out", + "Artist": "Kid Cudi", + "Album Artist": "Kid Cudi", + "Composer": "Scott Mescudi", + "Album": "Speedin' Bullet 2 Heaven", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "6807531", + "Total Time": "187264", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "5", + "Track Count": "8", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Speedin' Bullet 2 Heaven", + "Sort Artist": "Kid Cudi", + "Sort Name": "Insides Out", + "Persistent ID": "DC8D57FB0BA4CD09", + "Track Type": "Remote" + }, + { + "Track ID": "6861", + "Name": "Nervous", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine", + "Album": "VHS 2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7651105", + "Total Time": "213067", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "18", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "VHS 2.0", + "Sort Artist": "X Ambassadors", + "Sort Name": "Nervous", + "Persistent ID": "F15E2445C13FDACF", + "Track Type": "Remote" + }, + { + "Track ID": "6863", + "Name": "Focus", + "Artist": "P\u00d8PE", + "Album Artist": "P\u00d8PE", + "Composer": "Pauline Bouillaud", + "Album": "Focus - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5192775", + "Total Time": "140308", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Focus - Single", + "Sort Artist": "P\u00d8PE", + "Sort Name": "Focus", + "Persistent ID": "CD784CA8A3300D02", + "Track Type": "Remote" + }, + { + "Track ID": "6865", + "Name": "Aarons Bees", + "Artist": "Daniel Fridell & Sven Lindvall", + "Album Artist": "Daniel Fridell & Sven Lindvall", + "Composer": "Daniel Fridell & Sven Lindvall", + "Album": "Big City Issues - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6998506", + "Total Time": "193682", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Big City Issues - EP", + "Sort Artist": "Daniel Fridell & Sven Lindvall", + "Sort Name": "Aarons Bees", + "Persistent ID": "66F05AC084495603", + "Track Type": "Remote" + }, + { + "Track ID": "6871", + "Name": "All Of U (Instrumental)", + "Artist": "URCHN", + "Album Artist": "URCHN", + "Composer": "Max Greenhalgh & Thomas Reid", + "Album": "Summer Solstice (Instrumentals) - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4452583", + "Total Time": "120013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Summer Solstice (Instrumentals) - EP", + "Sort Artist": "URCHN", + "Sort Name": "All Of U (Instrumental)", + "Persistent ID": "8AAEEF164DE584C6", + "Track Type": "Remote" + }, + { + "Track ID": "6873", + "Name": "The Floating World", + "Artist": "Mama Aiuto & Dan Gregory", + "Album Artist": "Mama Aiuto & Dan Gregory", + "Composer": "Dan Gregory & Benjamin McCarthy", + "Album": "Holiday Music - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4491288", + "Total Time": "122900", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holiday Music - EP", + "Sort Artist": "Mama Aiuto & Dan Gregory", + "Sort Name": "Floating World", + "Persistent ID": "71E98DE1F8A2A258", + "Track Type": "Remote" + }, + { + "Track ID": "6875", + "Name": "Day Blessing", + "Artist": "Screen Jazzmaster & .Eehou", + "Album Artist": "Screen Jazzmaster & .Eehou", + "Composer": "Yury Vasilyev & Mars Saralinov", + "Album": "Day Blessing - Single", + "Genre": "Lounge", + "Kind": "Apple Music AAC audio file", + "Size": "4477546", + "Total Time": "120000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Day Blessing - Single", + "Sort Artist": "Screen Jazzmaster & .Eehou", + "Sort Name": "Day Blessing", + "Persistent ID": "4217DE1C7FA33ED2", + "Track Type": "Remote" + }, + { + "Track ID": "6877", + "Name": "Puffer Sea Pools", + "Artist": "Mama Aiuto & Dan Gregory", + "Album Artist": "Mama Aiuto & Dan Gregory", + "Composer": "Dan Gregory & Benjamin McCarthy", + "Album": "Holiday Music - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4973990", + "Total Time": "135559", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holiday Music - EP", + "Sort Artist": "Mama Aiuto & Dan Gregory", + "Sort Name": "Puffer Sea Pools", + "Persistent ID": "0C132A7F5746F9EB", + "Track Type": "Remote" + }, + { + "Track ID": "6879", + "Name": "Memories", + "Artist": "MiDN8, Oul Good & Sam Rasta", + "Album Artist": "MiDN8, Oul Good & Sam Rasta", + "Composer": "Torsten Stefes, Olaf Nazim & Samuel J.A. Baumann", + "Album": "Memories - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6329197", + "Total Time": "165479", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Memories - Single", + "Sort Artist": "MiDN8, Oul Good & Sam Rasta", + "Sort Name": "Memories", + "Persistent ID": "B9A6A0419CBFA15B", + "Track Type": "Remote" + }, + { + "Track ID": "6881", + "Name": "Sky Waves", + "Artist": "Leavv & dennisivnvc", + "Album Artist": "Leavv & dennisivnvc", + "Composer": "Cyrano Kaul & Dennis Wiebe", + "Album": "Sky Waves - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5902108", + "Total Time": "160385", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sky Waves - Single", + "Sort Artist": "Leavv & dennisivnvc", + "Sort Name": "Sky Waves", + "Persistent ID": "94A46EA4D7A20C6C", + "Track Type": "Remote" + }, + { + "Track ID": "6883", + "Name": "No Grass Today", + "Artist": "AJR", + "Album Artist": "AJR", + "Composer": "Adam Met, Ryan Met & Jack Met", + "Album": "The Click (Deluxe Edition)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9260020", + "Total Time": "259115", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Click (Deluxe Edition)", + "Sort Artist": "AJR", + "Sort Name": "No Grass Today", + "Persistent ID": "F22EF33D4148BAE5", + "Track Type": "Remote" + }, + { + "Track ID": "6885", + "Name": "What Was I Made For? (Mixed)", + "Artist": "Billie Eilish", + "Album Artist": "DJ Barbie", + "Composer": "undef", + "Album": "Barbie: Live from the Barbie Dream House (DJ Mix)", + "Genre": "Dance", + "Kind": "Apple Music AAC audio file", + "Size": "7928466", + "Total Time": "222239", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "33", + "Track Count": "33", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Barbie: Live from the Barbie Dream House (DJ Mix)", + "Sort Artist": "Billie Eilish", + "Sort Name": "What Was I Made For? (Mixed)", + "Persistent ID": "DA681C846D1B6331", + "Track Type": "Remote" + }, + { + "Track ID": "6887", + "Name": "Skyline Moods", + "Artist": "Shuko & Valentine Morell", + "Album Artist": "Shuko & Valentine Morell", + "Composer": "Christoph Bauss & Valentine Esilda Morell", + "Album": "Skyline Moods - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4953104", + "Total Time": "125573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Skyline Moods - Single", + "Sort Artist": "Shuko & Valentine Morell", + "Sort Name": "Skyline Moods", + "Persistent ID": "C88D4F3458918298", + "Track Type": "Remote" + }, + { + "Track ID": "6889", + "Name": "before (unconditional Remix Instrumental)", + "Artist": "HOAX & DAVI JUNO", + "Album Artist": "HOAX & Arden", + "Composer": "Michael Paul Raj, Francesco Grieco & David LaFlamme", + "Album": "words that start with b?", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5519002", + "Total Time": "150237", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "8", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "words that start with b?", + "Sort Artist": "HOAX & DAVI JUNO", + "Sort Name": "before (unconditional Remix Instrumental)", + "Persistent ID": "EBABB79E9CF2798A", + "Track Type": "Remote" + }, + { + "Track ID": "6891", + "Name": "Cyanea", + "Artist": "Dentist", + "Album Artist": "Dentist", + "Composer": "Matthias Leonard Freunek", + "Album": "Cyanea - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4390459", + "Total Time": "115200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cyanea - Single", + "Sort Artist": "Dentist", + "Sort Name": "Cyanea", + "Persistent ID": "EC45A1FD61469EB5", + "Track Type": "Remote" + }, + { + "Track ID": "6897", + "Name": "Sanguine", + "Artist": "Cap Kendricks", + "Album Artist": "Cap Kendricks", + "Composer": "Julian Weiss-Vogtmann", + "Album": "Sanguine - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5977722", + "Total Time": "147200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sanguine - Single", + "Sort Artist": "Cap Kendricks", + "Sort Name": "Sanguine", + "Persistent ID": "58E759FBC72D8823", + "Track Type": "Remote" + }, + { + "Track ID": "6899", + "Name": "Backpocket Breakdown", + "Artist": "Burrito Eats & DAO", + "Album Artist": "Burrito Eats & DAO", + "Composer": "Burrito Eats & christian kalla", + "Album": "Backpocket Breakdown - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4798343", + "Total Time": "124821", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Backpocket Breakdown - Single", + "Sort Artist": "Burrito Eats & DAO", + "Sort Name": "Backpocket Breakdown", + "Persistent ID": "33A223D712A0009A", + "Track Type": "Remote" + }, + { + "Track ID": "6903", + "Name": "Flying Rivers", + "Artist": "Hugo Santini", + "Album Artist": "Hugo Santini", + "Composer": "Hugo Hugo", + "Album": "Flying Rivers - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5796330", + "Total Time": "138842", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Flying Rivers - EP", + "Sort Artist": "Hugo Santini", + "Sort Name": "Flying Rivers", + "Persistent ID": "36B1C8F604CBC727", + "Track Type": "Remote" + }, + { + "Track ID": "6905", + "Name": "Make The Desert Bloom", + "Artist": "Tom Doolie & Oh, My.", + "Album Artist": "Tom Doolie", + "Composer": "Thomas Huber & Oliver Hultqvist", + "Album": "Only Poem", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4501402", + "Total Time": "117831", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "16", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Only Poem", + "Sort Artist": "Tom Doolie & Oh, My.", + "Sort Name": "Make The Desert Bloom", + "Persistent ID": "27989E1FD1F9888A", + "Track Type": "Remote" + }, + { + "Track ID": "6907", + "Name": "Sandbox", + "Artist": "Grand Motel", + "Album Artist": "Grand Motel", + "Composer": "Rodolphe Lecat", + "Album": "Sandbox - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4946385", + "Total Time": "128639", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sandbox - Single", + "Sort Artist": "Grand Motel", + "Sort Name": "Sandbox", + "Persistent ID": "4ED0D834756D4572", + "Track Type": "Remote" + }, + { + "Track ID": "6909", + "Name": "Forever Under My Blanket", + "Artist": "Hans Hu$tle", + "Album Artist": "Hans Hu$tle", + "Composer": "Hans Vincent Heusterberg", + "Album": "Futon Feels - EP", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4795593", + "Total Time": "129780", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Futon Feels - EP", + "Sort Artist": "Hans Hu$tle", + "Sort Name": "Forever Under My Blanket", + "Persistent ID": "70E1843BAE307973", + "Track Type": "Remote" + }, + { + "Track ID": "6911", + "Name": "6 Pack and Cigarettes", + "Artist": "ALEXSUCKS", + "Album Artist": "ALEXSUCKS", + "Composer": "Alexander Alvarez, John Carolus, Garrett Orseno, Ethan Demoulin & Daniel Lonner", + "Album": "The Gutter", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6582137", + "Total Time": "174642", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "9", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gutter", + "Sort Artist": "ALEXSUCKS", + "Sort Name": "6 Pack and Cigarettes", + "Persistent ID": "9F99D2B51B92BB17", + "Track Type": "Remote" + }, + { + "Track ID": "6913", + "Name": "Butterscotch Square", + "Artist": "Sebastian Kamae & MONODUKE", + "Album Artist": "Sebastian Kamae & MONODUKE", + "Composer": "Pim de Jonge & Daan Herweg", + "Album": "Butterscotch Square - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5785522", + "Total Time": "160000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Butterscotch Square - Single", + "Sort Artist": "Sebastian Kamae & MONODUKE", + "Sort Name": "Butterscotch Square", + "Persistent ID": "867F301D31254A3C", + "Track Type": "Remote" + }, + { + "Track ID": "6915", + "Name": "Cadillac Cruise", + "Artist": "Loop Schrauber & Hans Hu$tle", + "Album Artist": "Loop Schrauber & Hans Hu$tle", + "Composer": "Loop Schrauber & Hans Vincent Heusterberg", + "Album": "Cadillac Cruise - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5137336", + "Total Time": "138125", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cadillac Cruise - Single", + "Sort Artist": "Loop Schrauber & Hans Hu$tle", + "Sort Name": "Cadillac Cruise", + "Persistent ID": "7FA6BB6D75B094AD", + "Track Type": "Remote" + }, + { + "Track ID": "6923", + "Name": "Bahar 1402", + "Artist": "Farhot", + "Album Artist": "Farhot", + "Composer": "Farhad Samadzada", + "Album": "Nowroz 1402 - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5127998", + "Total Time": "138592", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nowroz 1402 - Single", + "Sort Artist": "Farhot", + "Sort Name": "Bahar 1402", + "Persistent ID": "216BFA2798CFB55D", + "Track Type": "Remote" + }, + { + "Track ID": "6925", + "Name": "Young In America", + "Artist": "Barns Courtney", + "Album Artist": "Barns Courtney", + "Composer": "Barnaby George Courtney & Sam Hollander", + "Album": "Young In America - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8172361", + "Total Time": "224913", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Young In America - Single", + "Sort Artist": "Barns Courtney", + "Sort Name": "Young In America", + "Persistent ID": "9E6511AF2FE722DD", + "Track Type": "Remote" + }, + { + "Track ID": "6929", + "Name": "Shelter From The Sun", + "Artist": "Tom Doolie", + "Album Artist": "Tom Doolie", + "Composer": "Thomas Huber", + "Album": "Shelter From The Sun - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4275167", + "Total Time": "112587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Shelter From The Sun - Single", + "Sort Artist": "Tom Doolie", + "Sort Name": "Shelter From The Sun", + "Persistent ID": "B9BA0C074B0D3B88", + "Track Type": "Remote" + }, + { + "Track ID": "6933", + "Name": "Quiet Oasis", + "Artist": "Vigudo", + "Album Artist": "Vigudo", + "Composer": "Ivan Ohanezov", + "Album": "Thoughts Like Clouds - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5275977", + "Total Time": "148359", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Thoughts Like Clouds - EP", + "Sort Artist": "Vigudo", + "Sort Name": "Quiet Oasis", + "Persistent ID": "64CE343E925480E3", + "Track Type": "Remote" + }, + { + "Track ID": "6939", + "Name": "Mac & Queso", + "Artist": "KOFE BUX", + "Album Artist": "KOFE BUX", + "Composer": "Alex Larsson", + "Album": "Nice To Meet You - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7789477", + "Total Time": "200854", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": -1, + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nice To Meet You - EP", + "Sort Artist": "KOFE BUX", + "Sort Name": "Mac & Queso", + "Persistent ID": "A4C84806D3960436", + "Track Type": "Remote" + }, + { + "Track ID": "6941", + "Name": "Superglue", + "Artist": "Michigander", + "Album Artist": "Michigander", + "Composer": "Aaron Senor, Jake LeMond & Jason Singer", + "Album": "Michigander (Vevo DSCVR) - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9313304", + "Total Time": "250363", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Michigander (Vevo DSCVR) - EP", + "Sort Artist": "Michigander", + "Sort Name": "Superglue", + "Persistent ID": "ECD9782E841B47CF", + "Track Type": "Remote" + }, + { + "Track ID": "6945", + "Name": "Sky Waves", + "Artist": "Leavv & dennisivnvc", + "Album Artist": "Leavv", + "Composer": "Cyrano Kaul & Dennis Wiebe", + "Album": "Sealed - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5901507", + "Total Time": "160385", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sealed - EP", + "Sort Artist": "Leavv & dennisivnvc", + "Sort Name": "Sky Waves", + "Persistent ID": "E949F06D3A577334", + "Track Type": "Remote" + }, + { + "Track ID": "6947", + "Name": "Loose Ends", + "Artist": "Blue Wednesday", + "Album Artist": "Blue Wednesday", + "Composer": "Gustav Joseph", + "Album": "Loose Ends - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6510175", + "Total Time": "172683", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Loose Ends - Single", + "Sort Artist": "Blue Wednesday", + "Sort Name": "Loose Ends", + "Persistent ID": "BA2D2DC7EB8D0B22", + "Track Type": "Remote" + }, + { + "Track ID": "6949", + "Name": "Timeless", + "Artist": "Komachi & mameshiba", + "Album Artist": "Komachi & mameshiba", + "Composer": "Issei Endo & Krystyna Gonchar", + "Album": "Timeless - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4156457", + "Total Time": "108649", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Timeless - Single", + "Sort Artist": "Komachi & mameshiba", + "Sort Name": "Timeless", + "Persistent ID": "B79B1F87432671E4", + "Track Type": "Remote" + }, + { + "Track ID": "6953", + "Name": "XO TOUR Llif3", + "Artist": "Lil Uzi Vert", + "Album Artist": "Lil Uzi Vert", + "Composer": "Bryan Lamar Simmons, Bryan Simmons & Lil Uzi Vert", + "Album": "Luv Is Rage 2 (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6651445", + "Total Time": "182707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "16", + "Track Count": "20", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Luv Is Rage 2 (Deluxe)", + "Sort Artist": "Lil Uzi Vert", + "Sort Name": "XO TOUR Llif3", + "Persistent ID": "F8D8F8F916017051", + "Track Type": "Remote" + }, + { + "Track ID": "6957", + "Name": "Ease (feat. Burrito Eats)", + "Artist": "S\u014dNE, Lazlow & Louk", + "Album Artist": "S\u014dNE, Lazlow & Louk", + "Composer": "Fabian Grewe, Adam Laszlo, Louk Cox & Burrito Eats", + "Album": "Ease (feat. Burrito Eats) - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5276648", + "Total Time": "139091", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ease (feat. Burrito Eats) - Single", + "Sort Artist": "S\u014dNE, Lazlow & Louk", + "Sort Name": "Ease (feat. Burrito Eats)", + "Persistent ID": "116FE312CDEE7000", + "Track Type": "Remote" + }, + { + "Track ID": "6959", + "Name": "Hearts", + "Artist": "Saiko & Osive", + "Album Artist": "Saiko & Osive", + "Composer": "Gregor Nezval & Oliver Cortez", + "Album": "Hearts - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4517923", + "Total Time": "120000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hearts - Single", + "Sort Artist": "Saiko & Osive", + "Sort Name": "Hearts", + "Persistent ID": "88AD79FED72D2EFE", + "Track Type": "Remote" + }, + { + "Track ID": "6961", + "Name": "Pandawa", + "Artist": "sloh rou", + "Album Artist": "sloh rou", + "Composer": "Nikos Heidinger", + "Album": "Pandawa - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4173027", + "Total Time": "111000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pandawa - Single", + "Sort Artist": "sloh rou", + "Sort Name": "Pandawa", + "Persistent ID": "0ED92FBF2646EA9F", + "Track Type": "Remote" + }, + { + "Track ID": "6963", + "Name": "Fluorescence", + "Artist": "Blue Wednesday", + "Album Artist": "Blue Wednesday", + "Composer": "Gustav Joseph", + "Album": "The Bigger Picture - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5879672", + "Total Time": "159375", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bigger Picture - EP", + "Sort Artist": "Blue Wednesday", + "Sort Name": "Fluorescence", + "Persistent ID": "13E9768C10D695E6", + "Track Type": "Remote" + }, + { + "Track ID": "6967", + "Name": "Fardosa", + "Artist": "Drips Zacheer & Moderator", + "Album Artist": "Drips Zacheer", + "Composer": "Pavlos Zacharis & Alexandros Adam", + "Album": "Film sweats", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5804847", + "Total Time": "156784", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Film sweats", + "Sort Artist": "Drips Zacheer & Moderator", + "Sort Name": "Fardosa", + "Persistent ID": "2CD441F5684FE704", + "Track Type": "Remote" + }, + { + "Track ID": "6969", + "Name": "And Bliss!", + "Artist": "Horizon Estetique", + "Album Artist": "Horizon Estetique", + "Composer": "Oskar Jennefors", + "Album": "And Bliss! - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5528905", + "Total Time": "148867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "And Bliss! - Single", + "Sort Artist": "Horizon Estetique", + "Sort Name": "And Bliss!", + "Persistent ID": "5CFD31FAB8912B4D", + "Track Type": "Remote" + }, + { + "Track ID": "6971", + "Name": "Goosebumps", + "Artist": "No Spirit & S\u00e1tyr", + "Album Artist": "No Spirit & S\u00e1tyr", + "Composer": "Philipp Geitmann & Lukas St\u00fctz", + "Album": "Goosebumps - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6234245", + "Total Time": "165613", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Goosebumps - Single", + "Sort Artist": "No Spirit & S\u00e1tyr", + "Sort Name": "Goosebumps", + "Persistent ID": "48BE733B20B5D8ED", + "Track Type": "Remote" + }, + { + "Track ID": "6973", + "Name": "L\u00fcn", + "Artist": "brillion. & xander.", + "Album Artist": "brillion.", + "Composer": "Christian Joseph Schulte & Alexander Papamitrou", + "Album": "Bedtime Stories Pt.4", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "7172591", + "Total Time": "208941", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "15", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bedtime Stories Pt.4", + "Sort Artist": "brillion. & xander.", + "Sort Name": "L\u00fcn", + "Persistent ID": "8FF98CB9B3D53033", + "Track Type": "Remote" + }, + { + "Track ID": "6975", + "Name": "American Money", + "Artist": "B\u00d8RNS", + "Album Artist": "B\u00d8RNS", + "Composer": "B\u00d8RNS, Irena Lysiuk, Thomas Schleiter, Genevieve Anne Bufalino & Aimee Rose Cavanagh", + "Album": "Dopamine", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9197383", + "Total Time": "260997", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dopamine", + "Sort Artist": "B\u00d8RNS", + "Sort Name": "American Money", + "Persistent ID": "1EFFAA6ACFC722BE", + "Track Type": "Remote" + }, + { + "Track ID": "6979", + "Name": "Light It Up", + "Artist": "Zmeyev & Screen Jazzmaster", + "Album Artist": "Zmeyev & Screen Jazzmaster", + "Composer": "Konstantin Georgievich Baratashvili & Yury Vasilyev", + "Album": "Light It Up - Single", + "Genre": "Lounge", + "Kind": "Apple Music AAC audio file", + "Size": "5591351", + "Total Time": "155122", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Light It Up - Single", + "Sort Artist": "Zmeyev & Screen Jazzmaster", + "Sort Name": "Light It Up", + "Persistent ID": "7D4C5AF741C237DA", + "Track Type": "Remote" + }, + { + "Track ID": "6981", + "Name": "ideary", + "Artist": "Plusma, Miramare & a boy with a balloon", + "Album Artist": "Plusma, Miramare & a boy with a balloon", + "Composer": "Viktor Theede, eliah turlon & Andreas Scheffer", + "Album": "ideary - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4822460", + "Total Time": "128683", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ideary - Single", + "Sort Artist": "Plusma, Miramare & a boy with a balloon", + "Sort Name": "ideary", + "Persistent ID": "D0BF0F156080C82F", + "Track Type": "Remote" + }, + { + "Track ID": "6983", + "Name": "Free", + "Artist": "6LACK", + "Album Artist": "6LACK", + "Composer": "Ricardo Valentine & Nova", + "Album": "FREE 6LACK (Bonus Track Version)", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9293147", + "Total Time": "263013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "FREE 6LACK (Bonus Track Version)", + "Sort Artist": "6LACK", + "Sort Name": "Free", + "Persistent ID": "F0C431579A34BD92", + "Track Type": "Remote" + }, + { + "Track ID": "6985", + "Name": "Free & Lonely", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Sam Harris, Noah Feldshuh, Adam Levin, Casey Harris & Alex Da Kid", + "Album": "The Reason - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8891780", + "Total Time": "248478", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2014", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reason - EP", + "Sort Artist": "X Ambassadors", + "Sort Name": "Free & Lonely", + "Persistent ID": "2D0B9300465CA1CB", + "Track Type": "Remote" + }, + { + "Track ID": "6987", + "Name": "Donut Shop", + "Artist": "Ric Wavy", + "Album Artist": "Ric Wavy", + "Composer": "Ric Wavy", + "Album": "For Your Soul", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4362716", + "Total Time": "105882", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "8", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "For Your Soul", + "Sort Artist": "Ric Wavy", + "Sort Name": "Donut Shop", + "Persistent ID": "A922CA5D2BC94B9E", + "Track Type": "Remote" + }, + { + "Track ID": "6989", + "Name": "Pillow", + "Artist": "Emanuele Triglia & Gianni Brezzo", + "Album Artist": "Emanuele Triglia", + "Composer": "Emanuele Triglia, Gianni Brezzo & Federico Romeo", + "Album": "Seven Beats I Forgot", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "6455074", + "Total Time": "179641", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "7", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seven Beats I Forgot", + "Sort Artist": "Emanuele Triglia & Gianni Brezzo", + "Sort Name": "Pillow", + "Persistent ID": "5235F8260A4A95D3", + "Track Type": "Remote" + }, + { + "Track ID": "6991", + "Name": "Clout (feat. Cardi B)", + "Artist": "Offset", + "Album Artist": "Offset", + "Composer": "Offset, Kevin Gomringer & Tim Gomringer", + "Album": "FATHER OF 4", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7423856", + "Total Time": "205803", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "16", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "FATHER OF 4", + "Sort Artist": "Offset", + "Sort Name": "Clout (feat. Cardi B)", + "Persistent ID": "EC7D84CD0ADD67FC", + "Track Type": "Remote" + }, + { + "Track ID": "6993", + "Name": "First Date", + "Artist": "Youthology", + "Album Artist": "Youthology", + "Composer": "Youthology", + "Album": "First Date - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "6807334", + "Total Time": "192000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "First Date - Single", + "Sort Artist": "Youthology", + "Sort Name": "First Date", + "Persistent ID": "974282D15BC44C4C", + "Track Type": "Remote" + }, + { + "Track ID": "6997", + "Name": "castle in the clouds", + "Artist": "radio lull", + "Album Artist": "radio lull", + "Composer": "Dino Sotiropoulos, Jonathan Whitehouse & FOREST JOHNSON", + "Album": "tide eye - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4398779", + "Total Time": "115513", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "tide eye - EP", + "Sort Artist": "radio lull", + "Sort Name": "castle in the clouds", + "Persistent ID": "0C2DBAD9D0369E37", + "Track Type": "Remote" + }, + { + "Track ID": "6999", + "Name": "Rooftop Rhythms", + "Artist": "aunt", + "Album Artist": "aunt", + "Composer": "Aiko Sat\u014d", + "Album": "Rooftop Rhythms - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6631372", + "Total Time": "164000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rooftop Rhythms - Single", + "Sort Artist": "aunt", + "Sort Name": "Rooftop Rhythms", + "Persistent ID": "A82243D316AD4BE3", + "Track Type": "Remote" + }, + { + "Track ID": "7001", + "Name": "Rescue Me", + "Artist": "Dirty Heads", + "Album Artist": "Dirty Heads", + "Composer": "Anthony Kiedis, Jared Watson, Dustin Bushnell, Ryan Ogren, Flea, John Frusciante & Chad Smith", + "Album": "Rescue Me - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6320837", + "Total Time": "172280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rescue Me - Single", + "Sort Artist": "Dirty Heads", + "Sort Name": "Rescue Me", + "Persistent ID": "9F98FF38849CE6DC", + "Track Type": "Remote" + }, + { + "Track ID": "7003", + "Name": "Pool Side", + "Artist": "DOWORK & The Goldenboys", + "Album Artist": "DOWORK & The Goldenboys", + "Composer": "Rob Jager, Luuk Hof & Jeroen Verberne", + "Album": "Pool Side - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4497579", + "Total Time": "117859", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pool Side - Single", + "Sort Artist": "DOWORK & The Goldenboys", + "Sort Name": "Pool Side", + "Persistent ID": "EC6F23E408F5E602", + "Track Type": "Remote" + }, + { + "Track ID": "7005", + "Name": "Only Love", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom (Deluxe Video Edition)", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "8955018", + "Total Time": "249173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "17", + "Year": "2011", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Every Kingdom (Deluxe Video Edition)", + "Sort Artist": "Ben Howard", + "Sort Name": "Only Love", + "Persistent ID": "551D3C04BFE4308F", + "Track Type": "Remote" + }, + { + "Track ID": "7009", + "Name": "Amaqebelengwane", + "Artist": "Toji\u00e9 Cai & DAVI JUNO", + "Album Artist": "Toji\u00e9 Cai & DAVI JUNO", + "Composer": "Perfect Thandokuhle Zuma & David LaFlamme", + "Album": "Udengezi - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5707219", + "Total Time": "144219", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Udengezi - Single", + "Sort Artist": "Toji\u00e9 Cai & DAVI JUNO", + "Sort Name": "Amaqebelengwane", + "Persistent ID": "414790CF8A0C7B83", + "Track Type": "Remote" + }, + { + "Track ID": "7011", + "Name": "She Treats Me Well", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "I Forget Where We Were", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "10917537", + "Total Time": "317935", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "10", + "Year": "2014", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Forget Where We Were", + "Sort Artist": "Ben Howard", + "Sort Name": "She Treats Me Well", + "Persistent ID": "BC3CAC3ABFF7768A", + "Track Type": "Remote" + }, + { + "Track ID": "7013", + "Name": "Conrad", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "I Forget Where We Were", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "12504029", + "Total Time": "368125", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2014", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I Forget Where We Were", + "Sort Artist": "Ben Howard", + "Sort Name": "Conrad", + "Persistent ID": "CB5F5C0289A3A8C3", + "Track Type": "Remote" + }, + { + "Track ID": "7019", + "Name": "i ran 2 miles and wept", + "Artist": "Beach Boy Rad", + "Album Artist": "Beach Boy Rad", + "Composer": "Derick Fagbohun", + "Album": "i ran 2 miles and wept - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "3669300", + "Total Time": "94795", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "i ran 2 miles and wept - Single", + "Sort Artist": "Beach Boy Rad", + "Sort Name": "i ran 2 miles and wept", + "Persistent ID": "2BD2869A56AE9E08", + "Track Type": "Remote" + }, + { + "Track ID": "7021", + "Name": "Leave", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Rex Kudo, Ryan Vojtesak & Idan Kalai", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "11486461", + "Total Time": "324854", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "18", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Leave", + "Persistent ID": "1EB2769639B25975", + "Track Type": "Remote" + }, + { + "Track ID": "7023", + "Name": "turbulence", + "Artist": "radio lull", + "Album Artist": "radio lull", + "Composer": "Dino Sotiropoulos, FOREST JOHNSON & Jonathan Whitehouse", + "Album": "turbulence - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4599968", + "Total Time": "115461", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "turbulence - Single", + "Sort Artist": "radio lull", + "Sort Name": "turbulence", + "Persistent ID": "54855EDA128D71E9", + "Track Type": "Remote" + }, + { + "Track ID": "7027", + "Name": "Hang", + "Artist": "Cuba Rouge", + "Album Artist": "Cuba Rouge", + "Composer": "LAV8 & Cuba Rouge", + "Album": "Hang - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5420411", + "Total Time": "146633", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Hang - Single", + "Sort Artist": "Cuba Rouge", + "Sort Name": "Hang", + "Persistent ID": "946AA755ED659154", + "Track Type": "Remote" + }, + { + "Track ID": "7029", + "Name": "Around the World", + "Artist": "Maple Syrup & Salad Days", + "Album Artist": "Maple Syrup & Salad Days", + "Composer": "Kirill Voronkov", + "Album": "Around the World - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4012649", + "Total Time": "104828", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Around the World - Single", + "Sort Artist": "Maple Syrup & Salad Days", + "Sort Name": "Around the World", + "Persistent ID": "B9B3079391396908", + "Track Type": "Remote" + }, + { + "Track ID": "7031", + "Name": "Past Times", + "Artist": "Oatmello & Ornithology", + "Album Artist": "Oatmello & Ornithology", + "Composer": "Shaan Chhadva & Cosmos Corbin", + "Album": "Eternity", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4449252", + "Total Time": "110125", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "12", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Eternity", + "Sort Artist": "Oatmello & Ornithology", + "Sort Name": "Past Times", + "Persistent ID": "3D1429D59E6A88F9", + "Track Type": "Remote" + }, + { + "Track ID": "7033", + "Name": "High", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8287408", + "Total Time": "231897", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "10", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "High", + "Persistent ID": "AD7940C7A0C387AA", + "Track Type": "Remote" + }, + { + "Track ID": "7037", + "Name": "coral", + "Artist": "Arden & Maono", + "Album Artist": "Arden", + "Composer": "Szymon Smolin", + "Album": "Earth Day (Deluxe)", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6413525", + "Total Time": "170118", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Earth Day (Deluxe)", + "Sort Artist": "Arden & Maono", + "Sort Name": "coral", + "Persistent ID": "991A7CD67F62F4C9", + "Track Type": "Remote" + }, + { + "Track ID": "7043", + "Name": "show u something", + "Artist": "Pleij", + "Album Artist": "Pleij", + "Composer": "Boudewijn Pleij", + "Album": "show u something - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6001330", + "Total Time": "163636", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "show u something - Single", + "Sort Artist": "Pleij", + "Sort Name": "show u something", + "Persistent ID": "D1D842E3D8FD1EA5", + "Track Type": "Remote" + }, + { + "Track ID": "7045", + "Name": "Confidence (feat. Chrishan The Prince)", + "Artist": "King Los", + "Album Artist": "King Los", + "Composer": "Carlos Coleman, David Doman, Matt Beck, Alex Brofsky & Christopher Dotson", + "Album": "God, Money, War", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8862669", + "Total Time": "254551", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "14", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "God, Money, War", + "Sort Artist": "King Los", + "Sort Name": "Confidence (feat. Chrishan The Prince)", + "Persistent ID": "4D164157EFAB67F6", + "Track Type": "Remote" + }, + { + "Track ID": "7047", + "Name": "Torches", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Casey Harris, Sam Harris, Nathan Perez, Andrew \"Papa Justifi\" Wansel, A. Grant, Adam Levin & Dustin Cavazos", + "Album": "Torches - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7623570", + "Total Time": "207373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "100", + "Sort Album": "Torches - Single", + "Sort Artist": "X Ambassadors", + "Sort Name": "Torches", + "Persistent ID": "4D698234841D097A", + "Track Type": "Remote" + }, + { + "Track ID": "7049", + "Name": "Sunny Side up", + "Artist": "Duan Wasi", + "Album Artist": "Duan Wasi", + "Composer": "Wasili Ntuanoglu", + "Album": "Sunny Side up - Single", + "Genre": "Lounge", + "Kind": "Apple Music AAC audio file", + "Size": "5122635", + "Total Time": "128000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunny Side up - Single", + "Sort Artist": "Duan Wasi", + "Sort Name": "Sunny Side up", + "Persistent ID": "433952B934A57A51", + "Track Type": "Remote" + }, + { + "Track ID": "7051", + "Name": "Seasons", + "Artist": "Soulone Beats", + "Album Artist": "Soulone Beats", + "Composer": "Dean Rogerson", + "Album": "Seasons - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "5013301", + "Total Time": "133500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seasons - Single", + "Sort Artist": "Soulone Beats", + "Sort Name": "Seasons", + "Persistent ID": "C52D29F25025133F", + "Track Type": "Remote" + }, + { + "Track ID": "7053", + "Name": "Nuvola", + "Artist": "Oh, My.", + "Album Artist": "Oh, My.", + "Composer": "Oliver Hultqvist", + "Album": "Nuvola - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4917930", + "Total Time": "120000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nuvola - Single", + "Sort Artist": "Oh, My.", + "Sort Name": "Nuvola", + "Persistent ID": "34CC635F49F2979D", + "Track Type": "Remote" + }, + { + "Track ID": "7055", + "Name": "falling for you", + "Artist": "Pleij", + "Album Artist": "Pleij", + "Composer": "Boudewijn Pleij", + "Album": "about time - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5296027", + "Total Time": "144493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "about time - EP", + "Sort Artist": "Pleij", + "Sort Name": "falling for you", + "Persistent ID": "2239F86C5387E4E0", + "Track Type": "Remote" + }, + { + "Track ID": "7057", + "Name": "Magic Hour", + "Artist": "ondol & BROCKBEATS", + "Album Artist": "ondol & BROCKBEATS", + "Composer": "ondol & BROCKBEATS", + "Album": "Magic Hour - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6226163", + "Total Time": "158378", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Magic Hour - Single", + "Sort Artist": "ondol & BROCKBEATS", + "Sort Name": "Magic Hour", + "Persistent ID": "D50E984B77065541", + "Track Type": "Remote" + }, + { + "Track ID": "7059", + "Name": "Meadow", + "Artist": "Keliris", + "Album Artist": "Keliris", + "Composer": "Nicholas Keliris", + "Album": "Meadow - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6320552", + "Total Time": "164051", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Meadow - Single", + "Sort Artist": "Keliris", + "Sort Name": "Meadow", + "Persistent ID": "516DA6FA10A436D6", + "Track Type": "Remote" + }, + { + "Track ID": "7065", + "Name": "Chance", + "Artist": "Flock Together & Earbuds", + "Album Artist": "Flock Together", + "Composer": "Flock Together, Chancelvy Lomeka, Tagara Mhizha & Anish Bhatt", + "Album": "Taste the Sky - London - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5447512", + "Total Time": "141000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Taste the Sky - London - EP", + "Sort Artist": "Flock Together & Earbuds", + "Sort Name": "Chance", + "Persistent ID": "30DD9A2EBDA33478", + "Track Type": "Remote" + }, + { + "Track ID": "7067", + "Name": "City Walks", + "Artist": "Horizon Estetique", + "Album Artist": "Horizon Estetique", + "Composer": "Oskar Jennefors", + "Album": "City Walks - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4913552", + "Total Time": "129176", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "City Walks - Single", + "Sort Artist": "Horizon Estetique", + "Sort Name": "City Walks", + "Persistent ID": "AB3E44156DD2C8A0", + "Track Type": "Remote" + }, + { + "Track ID": "7069", + "Name": "Cantaloupe", + "Artist": "fl\u00e2neur & marsquake", + "Album Artist": "fl\u00e2neur & marsquake", + "Composer": "fl\u00e2neur & marsquake", + "Album": "Cantaloupe - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "4958489", + "Total Time": "131989", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cantaloupe - Single", + "Sort Artist": "fl\u00e2neur & marsquake", + "Sort Name": "Cantaloupe", + "Persistent ID": "255E1AD3E0E0990F", + "Track Type": "Remote" + }, + { + "Track ID": "7071", + "Name": "Living In A Haze", + "Artist": "Milky Chance", + "Album Artist": "Milky Chance", + "Composer": "Clemens Rehbein, Philipp Maximilian Dausch, Joacim Bo Persson & Sebastian Arman", + "Album": "Living in a Haze", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6295913", + "Total Time": "173369", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Living in a Haze", + "Sort Artist": "Milky Chance", + "Sort Name": "Living In A Haze", + "Persistent ID": "A7ABC47D7A9CDF21", + "Track Type": "Remote" + }, + { + "Track ID": "7073", + "Name": "The Bitter End", + "Artist": "Suff Daddy", + "Album Artist": "Suff Daddy", + "Composer": "David Bormann", + "Album": "Hair Of The Dog", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "3999876", + "Total Time": "103784", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hair Of The Dog", + "Sort Artist": "Suff Daddy", + "Sort Name": "Bitter End", + "Persistent ID": "A3BBB801B8F83F3B", + "Track Type": "Remote" + }, + { + "Track ID": "7075", + "Name": "Sunset Sips", + "Artist": "Clap Cotton", + "Album Artist": "Clap Cotton", + "Composer": "Hans Sch\u00f6tz", + "Album": "Sunset Sips - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5023104", + "Total Time": "133602", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunset Sips - Single", + "Sort Artist": "Clap Cotton", + "Sort Name": "Sunset Sips", + "Persistent ID": "B10EC8A902E91EC0", + "Track Type": "Remote" + }, + { + "Track ID": "7077", + "Name": "Night Train", + "Artist": "Tomh & The Flipside", + "Album Artist": "Tomh & The Flipside", + "Composer": "Tomh & The Flipside", + "Album": "Night Train - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5040272", + "Total Time": "131188", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Night Train - Single", + "Sort Artist": "Tomh & The Flipside", + "Sort Name": "Night Train", + "Persistent ID": "8563DE46DD3DD676", + "Track Type": "Remote" + }, + { + "Track ID": "7079", + "Name": "Cavallo", + "Artist": "Sharks Deli", + "Album Artist": "Sharks Deli", + "Composer": "andrew ho", + "Album": "Memories Point", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5142149", + "Total Time": "140000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "8", + "Year": -1, + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Memories Point", + "Sort Artist": "Sharks Deli", + "Sort Name": "Cavallo", + "Persistent ID": "D37CCA1F081064D6", + "Track Type": "Remote" + }, + { + "Track ID": "7085", + "Name": "Keep Your Head Up", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom (Deluxe Video Edition)", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "9523427", + "Total Time": "264547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "17", + "Year": "2011", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Every Kingdom (Deluxe Video Edition)", + "Sort Artist": "Ben Howard", + "Sort Name": "Keep Your Head Up", + "Persistent ID": "B92109F6029B25EA", + "Track Type": "Remote" + }, + { + "Track ID": "7087", + "Name": "Fen\u00eatre", + "Artist": "Houis", + "Album Artist": "Houis", + "Composer": "Gabriel King Houis", + "Album": "Fen\u00eatre - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7394503", + "Total Time": "206506", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fen\u00eatre - Single", + "Sort Artist": "Houis", + "Sort Name": "Fen\u00eatre", + "Persistent ID": "FFF821484111A3D8", + "Track Type": "Remote" + }, + { + "Track ID": "7089", + "Name": "Appa", + "Artist": "Sleep Culture, RNDN & Iv\u00e1n Rosa", + "Album Artist": "Sleep Culture", + "Composer": "Iv\u00e1n Rosa, Abraham Rend\u00f3n Coronel & Noah Tauscher", + "Album": "La Manera - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4799382", + "Total Time": "129076", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": -1, + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "La Manera - EP", + "Sort Artist": "Sleep Culture, RNDN & Iv\u00e1n Rosa", + "Sort Name": "Appa", + "Persistent ID": "BB9859EAEA9CAA3D", + "Track Type": "Remote" + }, + { + "Track ID": "7091", + "Name": "Boa Tarde", + "Artist": "Hugo Santini", + "Album Artist": "Hugo Santini", + "Composer": "Hugo Hugo", + "Album": "Sol - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6448383", + "Total Time": "162729", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sol - EP", + "Sort Artist": "Hugo Santini", + "Sort Name": "Boa Tarde", + "Persistent ID": "B00C9AE05E156FF3", + "Track Type": "Remote" + }, + { + "Track ID": "7093", + "Name": "Illusion", + "Artist": "Mozzie", + "Album Artist": "Mozzie", + "Composer": "Arseniy Troshin", + "Album": "Illusion - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5180673", + "Total Time": "132985", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Illusion - Single", + "Sort Artist": "Mozzie", + "Sort Name": "Illusion", + "Persistent ID": "CED84B849F5E7DB4", + "Track Type": "Remote" + }, + { + "Track ID": "7095", + "Name": "Cruiser's Blvd", + "Artist": "Suff Daddy & Lushdogg", + "Album Artist": "Suff Daddy & Lushdogg", + "Composer": "David Bormann & Lush Dogg", + "Album": "Cruiser's Blvd - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5186094", + "Total Time": "143049", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cruiser's Blvd - Single", + "Sort Artist": "Suff Daddy & Lushdogg", + "Sort Name": "Cruiser's Blvd", + "Persistent ID": "01A582E00C2BD0A4", + "Track Type": "Remote" + }, + { + "Track ID": "7099", + "Name": "Mvments", + "Artist": "Noni", + "Album Artist": "Noni", + "Composer": "Thomas Huber", + "Album": "Mvments - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3889280", + "Total Time": "101512", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mvments - Single", + "Sort Artist": "Noni", + "Sort Name": "Mvments", + "Persistent ID": "538E35120AFAE500", + "Track Type": "Remote" + }, + { + "Track ID": "7103", + "Name": "Simpler Emotions", + "Artist": "xander. & S\u00f8ren S\u00f8strom", + "Album Artist": "xander. & S\u00f8ren S\u00f8strom", + "Composer": "Alex Papamitrou & Elijah Fox-Peck", + "Album": "Simpler Emotions - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7587524", + "Total Time": "211765", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Simpler Emotions - Single", + "Sort Artist": "xander. & S\u00f8ren S\u00f8strom", + "Sort Name": "Simpler Emotions", + "Persistent ID": "AB927710AD2CA8C2", + "Track Type": "Remote" + }, + { + "Track ID": "7105", + "Name": "Egg Yolk", + "Artist": "Carabide", + "Album Artist": "Carabide", + "Composer": "Tommy Lambrechtsen", + "Album": "Egg Yolk - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4281161", + "Total Time": "111781", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Egg Yolk - Single", + "Sort Artist": "Carabide", + "Sort Name": "Egg Yolk", + "Persistent ID": "8FF5C47203D74115", + "Track Type": "Remote" + }, + { + "Track ID": "7107", + "Name": "relief", + "Artist": "SMUV", + "Album Artist": "SMUV", + "Composer": "Marcel B\u00f6hm", + "Album": "relief - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4475738", + "Total Time": "115200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "relief - Single", + "Sort Artist": "SMUV", + "Sort Name": "relief", + "Persistent ID": "C3BF1CD05D546D6F", + "Track Type": "Remote" + }, + { + "Track ID": "7109", + "Name": "Suneater", + "Artist": "SYNC.EXE & ultmt.", + "Album Artist": "SYNC.EXE", + "Composer": "David Price & Markus Kallel Daniels", + "Album": "Equinox II", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5882059", + "Total Time": "154823", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "26", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Equinox II", + "Sort Artist": "SYNC.EXE & ultmt.", + "Sort Name": "Suneater", + "Persistent ID": "7B9FB972D7C2D434", + "Track Type": "Remote" + }, + { + "Track ID": "7111", + "Name": "Crying In the Shower", + "Artist": "Letdown.", + "Album Artist": "Letdown.", + "Composer": "Blake Coddington, Jason Bell, Jordan Miller & Wes Period", + "Album": "Crying In the Shower", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6942155", + "Total Time": "184064", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Crying In the Shower", + "Sort Artist": "Letdown.", + "Sort Name": "Crying In the Shower", + "Persistent ID": "1EA50C06E860E21C", + "Track Type": "Remote" + }, + { + "Track ID": "7113", + "Name": "Positive", + "Artist": "ZeDe & okwow", + "Album Artist": "ZeDe & okwow", + "Composer": "Joel Marian", + "Album": "Lips & Melodies - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4982879", + "Total Time": "130909", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lips & Melodies - Single", + "Sort Artist": "ZeDe & okwow", + "Sort Name": "Positive", + "Persistent ID": "90B22C08F2B5B563", + "Track Type": "Remote" + }, + { + "Track ID": "7115", + "Name": "Closely", + "Artist": "Afroham & Ian Ewing", + "Album Artist": "Afroham", + "Composer": "Ian Ewing & Nathan Avraham", + "Album": "Quantum Love - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6199569", + "Total Time": "171307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Quantum Love - EP", + "Sort Artist": "Afroham & Ian Ewing", + "Sort Name": "Closely", + "Persistent ID": "9597ACCFE9E24A67", + "Track Type": "Remote" + }, + { + "Track ID": "7119", + "Name": "Alma", + "Artist": "Oh, My.", + "Album Artist": "Oh, My.", + "Composer": "Oliver Hultqvist", + "Album": "Alma - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5679104", + "Total Time": "148148", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Alma - Single", + "Sort Artist": "Oh, My.", + "Sort Name": "Alma", + "Persistent ID": "2D94937C29926EBC", + "Track Type": "Remote" + }, + { + "Track ID": "7121", + "Name": "I Know You", + "Artist": "Faye Webster", + "Album Artist": "Faye Webster", + "Composer": "Faye Webster", + "Album": "Faye Webster", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8865134", + "Total Time": "251667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Faye Webster", + "Sort Artist": "Faye Webster", + "Sort Name": "I Know You", + "Persistent ID": "82A73D36702B46C5", + "Track Type": "Remote" + }, + { + "Track ID": "7123", + "Name": "Calm Place", + "Artist": "Living Room, Ak\u012bn & okwow", + "Album Artist": "Living Room, Ak\u012bn & okwow", + "Composer": "Ingolf Schapke & Jeroen De Vleeschhouwer", + "Album": "Sound of the Night - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5919725", + "Total Time": "160833", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sound of the Night - Single", + "Sort Artist": "Living Room, Ak\u012bn & okwow", + "Sort Name": "Calm Place", + "Persistent ID": "D0A53744E7C742B8", + "Track Type": "Remote" + }, + { + "Track ID": "7125", + "Name": "mellow gold", + "Artist": "Kromattic", + "Album Artist": "Kromattic", + "Composer": "Eugene Ugorski", + "Album": "mellow gold - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5095646", + "Total Time": "140308", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "mellow gold - Single", + "Sort Artist": "Kromattic", + "Sort Name": "mellow gold", + "Persistent ID": "72D3EA9D9A1CCA6E", + "Track Type": "Remote" + }, + { + "Track ID": "7127", + "Name": "Blue Skies", + "Artist": "Goldenninjah", + "Album Artist": "Goldenninjah", + "Composer": "Anestis Gogalis", + "Album": "Blue Skies - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5794408", + "Total Time": "158117", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blue Skies - Single", + "Sort Artist": "Goldenninjah", + "Sort Name": "Blue Skies", + "Persistent ID": "D139B01C0E310B83", + "Track Type": "Remote" + }, + { + "Track ID": "7129", + "Name": "Beachdays", + "Artist": "Goldenninjah & jhfly", + "Album Artist": "Goldenninjah & jhfly", + "Composer": "Anestis Gogalis & Declan Browne", + "Album": "Beachdays - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5140854", + "Total Time": "137143", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Beachdays - Single", + "Sort Artist": "Goldenninjah & jhfly", + "Sort Name": "Beachdays", + "Persistent ID": "8F08E7AD11402D39", + "Track Type": "Remote" + }, + { + "Track ID": "7131", + "Name": "horizon (Sequoia)", + "Artist": "Arden & DAVI JUNO", + "Album Artist": "Arden", + "Composer": "Francesco Grieco & David LaFlamme", + "Album": "National Parks, Vol. 1", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4871120", + "Total Time": "121500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "8", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "National Parks, Vol. 1", + "Sort Artist": "Arden & DAVI JUNO", + "Sort Name": "horizon (Sequoia)", + "Persistent ID": "AEED07CE6FDD48E6", + "Track Type": "Remote" + }, + { + "Track ID": "7135", + "Name": "I Fall Apart", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Carlo Montagnese & William Walsh", + "Album": "Stoney", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7996702", + "Total Time": "223350", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "14", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney", + "Sort Artist": "Post Malone", + "Sort Name": "I Fall Apart", + "Persistent ID": "0FFEDC5E0CE907FE", + "Track Type": "Remote" + }, + { + "Track ID": "7137", + "Name": "Moore", + "Artist": "ondol", + "Album Artist": "ondol", + "Composer": "ondol", + "Album": "Moore - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5236724", + "Total Time": "134246", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Moore - Single", + "Sort Artist": "ondol", + "Sort Name": "Moore", + "Persistent ID": "33F11BDC8C00CD01", + "Track Type": "Remote" + }, + { + "Track ID": "7139", + "Name": "thundo", + "Artist": "godchild", + "Album Artist": "godchild", + "Composer": "Mohammed Najeeb Jones", + "Album": "thundo / peace pipe - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5206443", + "Total Time": "141750", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "thundo / peace pipe - Single", + "Sort Artist": "godchild", + "Sort Name": "thundo", + "Persistent ID": "49D6803490C46C2A", + "Track Type": "Remote" + }, + { + "Track ID": "7141", + "Name": "Shark", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6732171", + "Total Time": "187424", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "15", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "Shark", + "Persistent ID": "82A40795648FA873", + "Track Type": "Remote" + }, + { + "Track ID": "7143", + "Name": "Alphabet Radio", + "Artist": "Daphn\u00e9", + "Album Artist": "Daphn\u00e9", + "Composer": "Conor McCarthy", + "Album": "Tragedy Critique - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4799168", + "Total Time": "122927", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tragedy Critique - EP", + "Sort Artist": "Daphn\u00e9", + "Sort Name": "Alphabet Radio", + "Persistent ID": "BC5C2A8F134230B1", + "Track Type": "Remote" + }, + { + "Track ID": "7145", + "Name": "Tough", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi, Fiona Bevan & Jonathan Hugh Quarmby", + "Album": "Breach - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8174590", + "Total Time": "228813", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Breach - EP", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Tough", + "Persistent ID": "0717D98ADABD6E34", + "Track Type": "Remote" + }, + { + "Track ID": "7147", + "Name": "cloud", + "Artist": "Kromattic", + "Album Artist": "Kromattic", + "Composer": "Eugene Ugorski", + "Album": "illuminate - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6796102", + "Total Time": "184000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "illuminate - EP", + "Sort Artist": "Kromattic", + "Sort Name": "cloud", + "Persistent ID": "5F4CE6EB9B03A41D", + "Track Type": "Remote" + }, + { + "Track ID": "7149", + "Name": "Alive And Safe", + "Artist": "Brous One", + "Album Artist": "Brous One", + "Composer": "Eduardo Rojas Conduela", + "Album": "More In My Mind Than In My Pockets - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6285136", + "Total Time": "165714", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "More In My Mind Than In My Pockets - EP", + "Sort Artist": "Brous One", + "Sort Name": "Alive And Safe", + "Persistent ID": "7F2987160C99439F", + "Track Type": "Remote" + }, + { + "Track ID": "7153", + "Name": "Cupid's Crush", + "Artist": "LIVE FREE", + "Album Artist": "LIVE FREE", + "Composer": "Alex Larsson", + "Album": "alska - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6498323", + "Total Time": "156706", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "alska - EP", + "Sort Artist": "LIVE FREE", + "Sort Name": "Cupid's Crush", + "Persistent ID": "AC3372764697F278", + "Track Type": "Remote" + }, + { + "Track ID": "7155", + "Name": "Beach Day", + "Artist": "Keliris", + "Album Artist": "Keliris", + "Composer": "Nicholas Keliris", + "Album": "Beach Day - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5153320", + "Total Time": "137250", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Beach Day - Single", + "Sort Artist": "Keliris", + "Sort Name": "Beach Day", + "Persistent ID": "A724B34C554D6696", + "Track Type": "Remote" + }, + { + "Track ID": "7157", + "Name": "Red Juice", + "Artist": "LIVE FREE", + "Album Artist": "LIVE FREE", + "Composer": "Alex Larsson", + "Album": "alska - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6938662", + "Total Time": "175059", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "alska - EP", + "Sort Artist": "LIVE FREE", + "Sort Name": "Red Juice", + "Persistent ID": "5061FB983A3B52E3", + "Track Type": "Remote" + }, + { + "Track ID": "7159", + "Name": "Summer's Here", + "Artist": "Broke Beats", + "Album Artist": "Broke Beats", + "Composer": "Fernando Mendez-Weston", + "Album": "Summer's Here - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5354509", + "Total Time": "148052", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Summer's Here - Single", + "Sort Artist": "Broke Beats", + "Sort Name": "Summer's Here", + "Persistent ID": "D001A496A25B1509", + "Track Type": "Remote" + }, + { + "Track ID": "7161", + "Name": "emerald", + "Artist": "Kromattic", + "Album Artist": "Kromattic", + "Composer": "Eugene Ugorski", + "Album": "shades - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4691141", + "Total Time": "124138", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "shades - EP", + "Sort Artist": "Kromattic", + "Sort Name": "emerald", + "Persistent ID": "AD83C4AB6EF831AF", + "Track Type": "Remote" + }, + { + "Track ID": "7163", + "Name": "Hug", + "Artist": "Toshiki Soejima & Nahokimama", + "Album Artist": "Toshiki Soejima & Nahokimama", + "Composer": "Toshiki Soejima", + "Album": "Tokyo - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "5011333", + "Total Time": "138082", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": -1, + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tokyo - EP", + "Sort Artist": "Toshiki Soejima & Nahokimama", + "Sort Name": "Hug", + "Persistent ID": "82FC5848A176EAFD", + "Track Type": "Remote" + }, + { + "Track ID": "7165", + "Name": "Time", + "Artist": "Toshiki Soejima & Nahokimama", + "Album Artist": "Toshiki Soejima & Nahokimama", + "Composer": "Toshiki Soejima", + "Album": "Tokyo - EP", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8200182", + "Total Time": "230333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": -1, + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tokyo - EP", + "Sort Artist": "Toshiki Soejima & Nahokimama", + "Sort Name": "Time", + "Persistent ID": "71775FB48BD5C07F", + "Track Type": "Remote" + }, + { + "Track ID": "7167", + "Name": "Bylily", + "Artist": "LIVE FREE", + "Album Artist": "LIVE FREE", + "Composer": "Alex Larsson", + "Album": "alska - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6455834", + "Total Time": "156957", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "alska - EP", + "Sort Artist": "LIVE FREE", + "Sort Name": "Bylily", + "Persistent ID": "74A7F9FFBFAFEB87", + "Track Type": "Remote" + }, + { + "Track ID": "7171", + "Name": "Apaixonar", + "Artist": "akoYuno", + "Album Artist": "akoYuno", + "Composer": "Daniel Treimer & Lukas Gro\u00dfmann", + "Album": "Apaixonar - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4960119", + "Total Time": "129231", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Apaixonar - Single", + "Sort Artist": "akoYuno", + "Sort Name": "Apaixonar", + "Persistent ID": "A68C800B7E555666", + "Track Type": "Remote" + }, + { + "Track ID": "7173", + "Name": "So Many People", + "Artist": "Lil Yachty", + "Album Artist": "Lil Yachty", + "Composer": "Miles McCollum, Jean-Baptiste Kouame, Michael McHenry & Ryan Buendia", + "Album": "Summer Songs 2", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10133299", + "Total Time": "283333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "14", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Summer Songs 2", + "Sort Artist": "Lil Yachty", + "Sort Name": "So Many People", + "Persistent ID": "A634F03C19545B0F", + "Track Type": "Remote" + }, + { + "Track ID": "7177", + "Name": "On Demand", + "Artist": "Tom Doolie", + "Album Artist": "Tom Doolie", + "Composer": "Thomas Huber", + "Album": "Only Poem", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4488252", + "Total Time": "116493", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "16", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Only Poem", + "Sort Artist": "Tom Doolie", + "Sort Name": "On Demand", + "Persistent ID": "85460F3B6D620BF3", + "Track Type": "Remote" + }, + { + "Track ID": "7179", + "Name": "Renegades", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Noah Feldshuh, Casey Harris, Sam Harris, Alex Da Kid & Adam Levin", + "Album": "VHS 2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7371763", + "Total Time": "195200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "18", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "VHS 2.0", + "Sort Artist": "X Ambassadors", + "Sort Name": "Renegades", + "Persistent ID": "13C60C73DFBAA5BF", + "Track Type": "Remote" + }, + { + "Track ID": "7181", + "Name": "More / Less", + "Artist": "Cap Kendricks", + "Album Artist": "Cap Kendricks", + "Composer": "Julian Weiss-Vogtmann", + "Album": "More / Less - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4853246", + "Total Time": "128000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "More / Less - Single", + "Sort Artist": "Cap Kendricks", + "Sort Name": "More / Less", + "Persistent ID": "5D3243562FA88DBF", + "Track Type": "Remote" + }, + { + "Track ID": "7183", + "Name": "Modern Girl", + "Artist": "Bleachers", + "Album Artist": "Bleachers", + "Composer": "Jack Antonoff & Evan Smith", + "Album": "Modern Girl - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7969298", + "Total Time": "223100", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Modern Girl - Single", + "Sort Artist": "Bleachers", + "Sort Name": "Modern Girl", + "Persistent ID": "04D94FA4AD2E677F", + "Track Type": "Remote" + }, + { + "Track ID": "7185", + "Name": "French Vanilla", + "Artist": "Olyva", + "Album Artist": "Olyva", + "Composer": "Bozley Hodgson", + "Album": "Vetiver - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5573834", + "Total Time": "152195", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Vetiver - EP", + "Sort Artist": "Olyva", + "Sort Name": "French Vanilla", + "Persistent ID": "0869B9B63D6EFA7A", + "Track Type": "Remote" + }, + { + "Track ID": "7191", + "Name": "Pisolino", + "Artist": "DAVI JUNO", + "Album Artist": "DAVI JUNO", + "Composer": "David LaFlamme & Francesco Grieco", + "Album": "Off The Beat'n Path / Pisolino - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4531221", + "Total Time": "121500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": -1, + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Off The Beat'n Path / Pisolino - Single", + "Sort Artist": "DAVI JUNO", + "Sort Name": "Pisolino", + "Persistent ID": "1C975F0745AE8883", + "Track Type": "Remote" + }, + { + "Track ID": "7193", + "Name": "Waiting", + "Artist": "xander. & S\u00f8ren S\u00f8strom", + "Album Artist": "xander. & S\u00f8ren S\u00f8strom", + "Composer": "Alex Papamitrou", + "Album": "Waiting - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6612811", + "Total Time": "181259", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Waiting - Single", + "Sort Artist": "xander. & S\u00f8ren S\u00f8strom", + "Sort Name": "Waiting", + "Persistent ID": "D27F244BBF3E1123", + "Track Type": "Remote" + }, + { + "Track ID": "7195", + "Name": "buttercream", + "Artist": "Pistachio", + "Album Artist": "Pistachio", + "Composer": "Jacob Attwooll", + "Album": "buttercream - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5804614", + "Total Time": "146625", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "buttercream - Single", + "Sort Artist": "Pistachio", + "Sort Name": "buttercream", + "Persistent ID": "12C705CB60F3CCF5", + "Track Type": "Remote" + }, + { + "Track ID": "7197", + "Name": "White Iverson", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Trocon Markous Roberts, Jr., Andre Jackson, Idan Kalai & Rex Kudo", + "Album": "Stoney", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9059493", + "Total Time": "256532", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "14", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney", + "Sort Artist": "Post Malone", + "Sort Name": "White Iverson", + "Persistent ID": "EC93B81C3CDE4633", + "Track Type": "Remote" + }, + { + "Track ID": "7199", + "Name": "slow talker", + "Artist": "yoshi the brilliant", + "Album Artist": "yoshi the brilliant", + "Composer": "yoshi the brilliant", + "Album": "slow talker - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6042175", + "Total Time": "170667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "slow talker - Single", + "Sort Artist": "yoshi the brilliant", + "Sort Name": "slow talker", + "Persistent ID": "02271DD95FA5D2B4", + "Track Type": "Remote" + }, + { + "Track ID": "7203", + "Name": "Noritsu", + "Artist": "\u00d8DYSSEE, Drips Zacheer & Kristoffer Eikrem", + "Album Artist": "\u00d8DYSSEE, Drips Zacheer & Kristoffer Eikrem", + "Composer": "Kristoffer Eikrem, Pavlos Zacharis & Louis Le Clerc", + "Album": "Noritsu - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5794835", + "Total Time": "146002", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Noritsu - Single", + "Sort Artist": "\u00d8DYSSEE, Drips Zacheer & Kristoffer Eikrem", + "Sort Name": "Noritsu", + "Persistent ID": "E9FB5C5B704E76B9", + "Track Type": "Remote" + }, + { + "Track ID": "7205", + "Name": "shades", + "Artist": "Pleij", + "Album Artist": "Pleij", + "Composer": "Boudewijn Pleij", + "Album": "shades - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5189492", + "Total Time": "133605", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "shades - Single", + "Sort Artist": "Pleij", + "Sort Name": "shades", + "Persistent ID": "70AA45CAA2007B3D", + "Track Type": "Remote" + }, + { + "Track ID": "7207", + "Name": "Dreamscape", + "Artist": "Lotus Beats", + "Album Artist": "Lotus Beats", + "Composer": "Lotus Beats", + "Album": "Oblivion - EP", + "Genre": "Lounge", + "Kind": "Apple Music AAC audio file", + "Size": "3691148", + "Total Time": "94338", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oblivion - EP", + "Sort Artist": "Lotus Beats", + "Sort Name": "Dreamscape", + "Persistent ID": "AF5985730966CDB3", + "Track Type": "Remote" + }, + { + "Track ID": "7213", + "Name": "Grace", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi, Nicholas Atkinson & Edward Holloway", + "Album": "Divinely Uninspired To A Hellish Extent", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6709326", + "Total Time": "184880", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divinely Uninspired To A Hellish Extent", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Grace", + "Persistent ID": "695DC63A19E18505", + "Track Type": "Remote" + }, + { + "Track ID": "7217", + "Name": "Bruises", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi & James Earp", + "Album": "Divinely Uninspired To A Hellish Extent", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7784497", + "Total Time": "220492", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divinely Uninspired To A Hellish Extent", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Bruises", + "Persistent ID": "DB1D978E27B68E2B", + "Track Type": "Remote" + }, + { + "Track ID": "7223", + "Name": "Over You", + "Artist": "El Train & Paal Singh", + "Album Artist": "Chillhop Music", + "Composer": "Luke Nyeke & Paal Singh Dilgeer", + "Album": "Chillhop Essentials Spring 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4747309", + "Total Time": "125312", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "28", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Spring 2023", + "Sort Artist": "El Train & Paal Singh", + "Sort Name": "Over You", + "Persistent ID": "149310B3860BA267", + "Track Type": "Remote" + }, + { + "Track ID": "7225", + "Name": "Haunted", + "Artist": "doidoi", + "Album Artist": "doidoi", + "Composer": "George Brenner", + "Album": "Haunted - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6816357", + "Total Time": "187479", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Haunted - Single", + "Sort Artist": "doidoi", + "Sort Name": "Haunted", + "Persistent ID": "C1BB9426DB75A099", + "Track Type": "Remote" + }, + { + "Track ID": "7227", + "Name": "Ethereal", + "Artist": "Zmeyev, Red Astro & skrn", + "Album Artist": "Zmeyev, Red Astro & skrn", + "Composer": "Konstantin Georgievich Baratashvili, Yury Vasilyev & Mars Saralinov", + "Album": "Ethereal - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4883207", + "Total Time": "130370", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ethereal - Single", + "Sort Artist": "Zmeyev, Red Astro & skrn", + "Sort Name": "Ethereal", + "Persistent ID": "B853CE265AB4530A", + "Track Type": "Remote" + }, + { + "Track ID": "7231", + "Name": "Yellowblue", + "Artist": "Yasper & sonofmark", + "Album Artist": "Chillhop Music", + "Composer": "Yasper Molle & Teun Dillisse", + "Album": "Chillhop Essentials Spring 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6649106", + "Total Time": "174044", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "28", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Spring 2023", + "Sort Artist": "Yasper & sonofmark", + "Sort Name": "Yellowblue", + "Persistent ID": "B2ECDA23565C2676", + "Track Type": "Remote" + }, + { + "Track ID": "7233", + "Name": "Treasures", + "Artist": "alhivi & Snowji", + "Album Artist": "alhivi & Snowji", + "Composer": "Alberto Vitali & Cl\u00e9ment Darrouzes", + "Album": "Treasures - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4822878", + "Total Time": "119333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Treasures - Single", + "Sort Artist": "alhivi & Snowji", + "Sort Name": "Treasures", + "Persistent ID": "D4C25F7851EE0524", + "Track Type": "Remote" + }, + { + "Track ID": "7237", + "Name": "Up There", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Louis Bell, Pharrell Williams & Carl Rosen", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7063581", + "Total Time": "194831", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "18", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Up There", + "Persistent ID": "BCB6E580A5B5CE70", + "Track Type": "Remote" + }, + { + "Track ID": "7239", + "Name": "Tessellate", + "Artist": "Mozzie", + "Album Artist": "Mozzie", + "Composer": "Arseniy Troshin", + "Album": "Tessellate - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4683049", + "Total Time": "124557", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tessellate - Single", + "Sort Artist": "Mozzie", + "Sort Name": "Tessellate", + "Persistent ID": "77C3029074B3E064", + "Track Type": "Remote" + }, + { + "Track ID": "7245", + "Name": "Kero", + "Artist": "invention_", + "Album Artist": "invention_", + "Composer": "Zakary LaVigne", + "Album": "Arize - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5427562", + "Total Time": "146000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Arize - EP", + "Sort Artist": "invention_", + "Sort Name": "Kero", + "Persistent ID": "F12CE594903317B9", + "Track Type": "Remote" + }, + { + "Track ID": "7247", + "Name": "4pm in shibuya", + "Artist": "oh, the joy.", + "Album Artist": "oh, the joy.", + "Composer": "Joyous Jones", + "Album": "4pm in shibuya - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6290762", + "Total Time": "171747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "4pm in shibuya - Single", + "Sort Artist": "oh, the joy.", + "Sort Name": "4pm in shibuya", + "Persistent ID": "526D3E314F0215D0", + "Track Type": "Remote" + }, + { + "Track ID": "7249", + "Name": "Going to the Moon", + "Artist": "Wine In Dusk", + "Album Artist": "Wine In Dusk", + "Composer": "Sam Murray & Wine In Dusk", + "Album": "Going to the Moon - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5943050", + "Total Time": "164869", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Going to the Moon - Single", + "Sort Artist": "Wine In Dusk", + "Sort Name": "Going to the Moon", + "Persistent ID": "5261C0C8C5FEB59C", + "Track Type": "Remote" + }, + { + "Track ID": "7253", + "Name": "By Your Side", + "Artist": "Grand Motel", + "Album Artist": "Grand Motel", + "Composer": "Rodolphe Lecat", + "Album": "By Your Side - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5380604", + "Total Time": "139059", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "By Your Side - Single", + "Sort Artist": "Grand Motel", + "Sort Name": "By Your Side", + "Persistent ID": "177C03A2B6D02DE2", + "Track Type": "Remote" + }, + { + "Track ID": "7255", + "Name": "Sunset Days", + "Artist": "Sharks Deli", + "Album Artist": "Sharks Deli", + "Composer": "Sharks Deli", + "Album": "Cloud City Ultra", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4606611", + "Total Time": "121846", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "8", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cloud City Ultra", + "Sort Artist": "Sharks Deli", + "Sort Name": "Sunset Days", + "Persistent ID": "B74D0E35E04EBF3F", + "Track Type": "Remote" + }, + { + "Track ID": "7257", + "Name": "Launch", + "Artist": "Lofios", + "Album Artist": "Lofios", + "Composer": "Raney Shockne & Ross Rosaer", + "Album": "Alpha - EP", + "Genre": "Downtempo", + "Kind": "Apple Music AAC audio file", + "Size": "5160054", + "Total Time": "140355", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Alpha - EP", + "Sort Artist": "Lofios", + "Sort Name": "Launch", + "Persistent ID": "6128B0114A41CC67", + "Track Type": "Remote" + }, + { + "Track ID": "7263", + "Name": "Wild Mallow", + "Artist": "The Lofi Big Band", + "Album Artist": "The Lofi Big Band", + "Composer": "The Lofi Big Band", + "Album": "Wild Mallow - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "6386554", + "Total Time": "177621", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wild Mallow - Single", + "Sort Artist": "Lofi Big Band", + "Sort Name": "Lofi Big Band", + "Persistent ID": "Lofi Big Band", + "Track Type": "Wild Mallow" + }, + { + "Track ID": "7265", + "Name": "Before You Go", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi, Tom Barnes, Peter Kelleher, Benjamin Kohn & Phil Plested", + "Album": "Divinely Uninspired To a Hellish Extent (Extended Edition)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7615615", + "Total Time": "216062", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "15", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divinely Uninspired To a Hellish Extent (Extended Edition)", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Before You Go", + "Persistent ID": "E12D6D4CCD3D0D6E", + "Track Type": "Remote" + }, + { + "Track ID": "7267", + "Name": "Rents", + "Artist": "Kyle McEvoy, Kazuki Isogai & wowflower", + "Album Artist": "Kyle McEvoy, Kazuki Isogai & wowflower", + "Composer": "Kyle McEvoy, Kazuki Isogai & Kyle Torr-Brown", + "Album": "Atwood - EP", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "4818536", + "Total Time": "127055", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Atwood - EP", + "Sort Artist": "Kyle McEvoy, Kazuki Isogai & wowflower", + "Sort Name": "Rents", + "Persistent ID": "A5CA4AF3A1D653CA", + "Track Type": "Remote" + }, + { + "Track ID": "7271", + "Name": "Microstroll", + "Artist": "Jobii", + "Album Artist": "Jobii", + "Composer": "Gabe Millman", + "Album": "Full Tank", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5007577", + "Total Time": "130035", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "8", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Full Tank", + "Sort Artist": "Jobii", + "Sort Name": "Microstroll", + "Persistent ID": "A01CDA623EBEB5EB", + "Track Type": "Remote" + }, + { + "Track ID": "7277", + "Name": "Trust Your Instincts", + "Artist": "DYVN", + "Album Artist": "DYVN", + "Composer": "David Nilles", + "Album": "Trust Your Instincts - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4787037", + "Total Time": "120000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Trust Your Instincts - Single", + "Sort Artist": "DYVN", + "Sort Name": "Trust Your Instincts", + "Persistent ID": "DC5B194D7B64AB99", + "Track Type": "Remote" + }, + { + "Track ID": "7279", + "Name": "Promise", + "Artist": "Ben Howard", + "Album Artist": "Ben Howard", + "Composer": "Ben Howard", + "Album": "Every Kingdom (Deluxe Video Edition)", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "13461829", + "Total Time": "384080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "17", + "Year": "2011", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Every Kingdom (Deluxe Video Edition)", + "Sort Artist": "Ben Howard", + "Sort Name": "Promise", + "Persistent ID": "66F5B075D79E9E46", + "Track Type": "Remote" + }, + { + "Track ID": "7281", + "Name": "Bogus Operandi", + "Artist": "The Hives", + "Album Artist": "The Hives", + "Composer": "Montgomery Fitzsimmons, Chip Fitzsimmons, Randy Fitzsimmons & Wilbur Fitzsimmons", + "Album": "The Death of Randy Fitzsimmons", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8436480", + "Total Time": "223786", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "12", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Death of Randy Fitzsimmons", + "Sort Artist": "Hives", + "Sort Name": "Hives", + "Persistent ID": "Bogus Operandi", + "Track Type": "81116584DAF84DC6" + }, + { + "Track ID": "7283", + "Name": "Routine", + "Artist": "Grand Motel", + "Album Artist": "Grand Motel", + "Composer": "Rodolphe Lecat", + "Album": "Routine - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4731603", + "Total Time": "125914", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Routine - Single", + "Sort Artist": "Grand Motel", + "Sort Name": "Routine", + "Persistent ID": "DC61D9AED4318C4B", + "Track Type": "Remote" + }, + { + "Track ID": "7285", + "Name": "Airport (feat. Paul Grant)", + "Artist": "RMB Justize", + "Album Artist": "RMB Justize", + "Composer": "Ryan Baker & Paul Grant", + "Album": "Airport (feat. Paul Grant) - Single", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "6639497", + "Total Time": "178585", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Airport (feat. Paul Grant) - Single", + "Sort Artist": "RMB Justize", + "Sort Name": "Airport (feat. Paul Grant)", + "Persistent ID": "B4B54FF393B485DF", + "Track Type": "Remote" + }, + { + "Track ID": "7289", + "Name": "Bonaventura", + "Artist": "Birocratic, Saib & \u00d8DYSSEE", + "Album Artist": "Chillhop Music", + "Composer": "Brandon Gabriel Rowan, Hamza Saib & Louis Le Clerc", + "Album": "Chillhop Essentials Summer 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5271944", + "Total Time": "145168", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "28", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Summer 2023", + "Sort Artist": "Birocratic, Saib & \u00d8DYSSEE", + "Sort Name": "Bonaventura", + "Persistent ID": "16BC40D1F75B13C5", + "Track Type": "Remote" + }, + { + "Track ID": "7291", + "Name": "Take Out", + "Artist": "m\u0153bius", + "Album Artist": "m\u0153bius", + "Composer": "Ben Thomas", + "Album": "Take Out - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5209154", + "Total Time": "135882", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Take Out - Single", + "Sort Artist": "m\u0153bius", + "Sort Name": "Take Out", + "Persistent ID": "75D3CF38AEDBA134", + "Track Type": "Remote" + }, + { + "Track ID": "7295", + "Name": "Old Fashioned", + "Artist": "Monaqee", + "Album Artist": "Monaqee", + "Composer": "Monaqee", + "Album": "Old Fashioned - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5382956", + "Total Time": "144510", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Old Fashioned - Single", + "Sort Artist": "Monaqee", + "Sort Name": "Old Fashioned", + "Persistent ID": "BE15370E23137641", + "Track Type": "Remote" + }, + { + "Track ID": "7297", + "Name": "Downtown", + "Artist": "Screen Jazzmaster & .Eehou", + "Album Artist": "Chillhop Music", + "Composer": "Yury Vasilyev & Mars", + "Album": "Chillhop Essentials Summer 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5381168", + "Total Time": "144276", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "18", + "Track Count": "28", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Summer 2023", + "Sort Artist": "Screen Jazzmaster & .Eehou", + "Sort Name": "Downtown", + "Persistent ID": "FD2B0B41840F544F", + "Track Type": "Remote" + }, + { + "Track ID": "7299", + "Name": "Printed", + "Artist": "Loop Schrauber", + "Album Artist": "Loop Schrauber", + "Composer": "Loop Schrauber", + "Album": "Printed - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4410580", + "Total Time": "115765", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Printed - Single", + "Sort Artist": "Loop Schrauber", + "Sort Name": "Printed", + "Persistent ID": "E8C1030328B1CDB7", + "Track Type": "Remote" + }, + { + "Track ID": "7301", + "Name": "Maybe She", + "Artist": "Ouska, Slipfunc & Anetta Morozova", + "Album Artist": "Chillhop Music", + "Composer": "Anetta Morozova, Valentin Chauveau & Pauli Kaarlo Juhani Niemi", + "Album": "Chillhop Essentials Summer 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7276919", + "Total Time": "204502", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "28", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Summer 2023", + "Sort Artist": "Ouska, Slipfunc & Anetta Morozova", + "Sort Name": "Maybe She", + "Persistent ID": "F3716F79BB0C22C8", + "Track Type": "Remote" + }, + { + "Track ID": "7303", + "Name": "May 27", + "Artist": "Donkeychote", + "Album Artist": "Donkeychote", + "Composer": "Florian Br\u00fchl", + "Album": "Lost Wallet - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4761524", + "Total Time": "126000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lost Wallet - Single", + "Sort Artist": "Donkeychote", + "Sort Name": "May 27", + "Persistent ID": "466D0F4262D263B9", + "Track Type": "Remote" + }, + { + "Track ID": "7307", + "Name": "Kerosene Dreams", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Noah Feldshuh, Casey Harris, Sam Harris, Alex Da Kid & Adam Levin", + "Album": "VHS 2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8445942", + "Total Time": "233013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "15", + "Track Count": "18", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "VHS 2.0", + "Sort Artist": "X Ambassadors", + "Sort Name": "Kerosene Dreams", + "Persistent ID": "CF6F4FFA8A8CA740", + "Track Type": "Remote" + }, + { + "Track ID": "7309", + "Name": "Jardim", + "Artist": "Tinman", + "Album Artist": "Tinman", + "Composer": "Tinman", + "Album": "Bossa Beats - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7661964", + "Total Time": "208300", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bossa Beats - EP", + "Sort Artist": "Tinman", + "Sort Name": "Jardim", + "Persistent ID": "7E37465BC125EA45", + "Track Type": "Remote" + }, + { + "Track ID": "7311", + "Name": "Fly High", + "Artist": ".Eehou, skrn & flowless", + "Album Artist": ".Eehou, skrn & flowless", + "Composer": "Mars Saralinov, Yury Vladimirovich Vasilyev & Konstantin Georgievich Baratashvili", + "Album": "Fly High - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5073722", + "Total Time": "128571", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fly High - Single", + "Sort Artist": ".Eehou, skrn & flowless", + "Sort Name": "Fly High", + "Persistent ID": "05DBEA89E7B9005C", + "Track Type": "Remote" + }, + { + "Track ID": "7313", + "Name": "At The Pool", + "Artist": "Bobby Dreamz BIG", + "Album Artist": "Bobby Dreamz BIG", + "Composer": "Marc Lensing", + "Album": "At The Pool - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5371001", + "Total Time": "151538", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "At The Pool - Single", + "Sort Artist": "Bobby Dreamz BIG", + "Sort Name": "At The Pool", + "Persistent ID": "6163B2FC5C81A068", + "Track Type": "Remote" + }, + { + "Track ID": "7315", + "Name": "Bloom", + "Artist": "Chris Mazuera", + "Album Artist": "Chris Mazuera", + "Composer": "Christopher Mazuera", + "Album": "Bloom - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5915969", + "Total Time": "157808", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Bloom - Single", + "Sort Artist": "Chris Mazuera", + "Sort Name": "Bloom", + "Persistent ID": "3A825DBA989C07E1", + "Track Type": "Remote" + }, + { + "Track ID": "7317", + "Name": "Kimata", + "Artist": "No Spirit", + "Album Artist": "No Spirit", + "Composer": "Philipp Alexander Geitmann", + "Album": "Kimata - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "4614144", + "Total Time": "121579", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Kimata - Single", + "Sort Artist": "No Spirit", + "Sort Name": "Kimata", + "Persistent ID": "E1603842EF29578C", + "Track Type": "Remote" + }, + { + "Track ID": "7319", + "Name": "River Flow", + "Artist": "Kazuki Isogai & yuhei miura", + "Album Artist": "Kazuki Isogai & yuhei miura", + "Composer": "Kazuki Isogai & yuhei miura", + "Album": "Seasons - EP", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "4060453", + "Total Time": "108643", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seasons - EP", + "Sort Artist": "Kazuki Isogai & yuhei miura", + "Sort Name": "River Flow", + "Persistent ID": "06AA3B32B9C59F9A", + "Track Type": "Remote" + }, + { + "Track ID": "7321", + "Name": "To Everything, There Is A Season", + "Artist": "Kazuki Isogai & yuhei miura", + "Album Artist": "Kazuki Isogai & yuhei miura", + "Composer": "Kazuki Isogai & yuhei miura", + "Album": "Seasons - EP", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "5026257", + "Total Time": "137109", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seasons - EP", + "Sort Artist": "Kazuki Isogai & yuhei miura", + "Sort Name": "To Everything, There Is A Season", + "Persistent ID": "EB5FF49337257A82", + "Track Type": "Remote" + }, + { + "Track ID": "7323", + "Name": "AmaGrootman", + "Artist": "uBeyond, John Lundun, Phonikz & Toji\u00e9 Cai", + "Album Artist": "uBeyond", + "Composer": "Perfect Thandokuhle Zuma, Chuene Reshoketjwe Marakalala, Thato Modika & Neo Langalakhe Mokoatle", + "Album": "Amanzimtoti - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5511430", + "Total Time": "140000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Amanzimtoti - Single", + "Sort Artist": "uBeyond, John Lundun, Phonikz & Toji\u00e9 Cai", + "Sort Name": "AmaGrootman", + "Persistent ID": "C054FC445A0853EF", + "Track Type": "Remote" + }, + { + "Track ID": "7325", + "Name": "Sonic", + "Artist": "Noni", + "Album Artist": "Noni", + "Composer": "Thomas Huber", + "Album": "Sonic - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3559174", + "Total Time": "90000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sonic - Single", + "Sort Artist": "Noni", + "Sort Name": "Sonic", + "Persistent ID": "C1CFF8BFE2C3A63C", + "Track Type": "Remote" + }, + { + "Track ID": "7327", + "Name": "Anywhere the Wind Blows", + "Artist": "Mama Aiuto & Dan Gregory", + "Album Artist": "Mama Aiuto & Dan Gregory", + "Composer": "Dan Gregory & Benjamin McCarthy", + "Album": "Anywhere the Wind Blows - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4122453", + "Total Time": "110352", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Anywhere the Wind Blows - Single", + "Sort Artist": "Mama Aiuto & Dan Gregory", + "Sort Name": "Anywhere the Wind Blows", + "Persistent ID": "D322CB4945E7EB02", + "Track Type": "Remote" + }, + { + "Track ID": "7329", + "Name": "Raw Raw", + "Artist": "K.Flay", + "Album Artist": "K.Flay", + "Composer": "Jason Suwito, Kristine Flaherty, Bradley Hale & Daniel Armbruster", + "Album": "Raw Raw - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6496462", + "Total Time": "177933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Raw Raw - Single", + "Sort Artist": "K.Flay", + "Sort Name": "Raw Raw", + "Persistent ID": "94CFA7E85EA93417", + "Track Type": "Remote" + }, + { + "Track ID": "7331", + "Name": "Longtemps", + "Artist": "Houis & Ushuaia", + "Album Artist": "Houis & Ushuaia", + "Composer": "Gabriel King Houis & Federico Marchi", + "Album": "Longtemps - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "8548802", + "Total Time": "234533", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Longtemps - Single", + "Sort Artist": "Houis & Ushuaia", + "Sort Name": "Longtemps", + "Persistent ID": "268DD909A11C57DF", + "Track Type": "Remote" + }, + { + "Track ID": "7333", + "Name": "where do shooting stars go?", + "Artist": "Beach Boy Rad", + "Album Artist": "Beach Boy Rad", + "Composer": "Derick Fagbohoun & Derick Fagbohun", + "Album": "where do shooting stars go? - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4496571", + "Total Time": "118856", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "where do shooting stars go? - Single", + "Sort Artist": "Beach Boy Rad", + "Sort Name": "where do shooting stars go?", + "Persistent ID": "356456B02A6A29C5", + "Track Type": "Remote" + }, + { + "Track ID": "7335", + "Name": "Sunburn", + "Artist": "love_eight", + "Album Artist": "love_eight", + "Composer": "Lavotha, Jonathan & love_eight", + "Album": "Sunburn - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4863928", + "Total Time": "130833", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Sunburn - Single", + "Sort Artist": "love_eight", + "Sort Name": "Sunburn", + "Persistent ID": "3B9482D244384110", + "Track Type": "Remote" + }, + { + "Track ID": "7337", + "Name": "Upward Circles", + "Artist": "DYVN", + "Album Artist": "DYVN", + "Composer": "David Nilles", + "Album": "Waves", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5154838", + "Total Time": "128500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Waves", + "Sort Artist": "DYVN", + "Sort Name": "Upward Circles", + "Persistent ID": "D0C49F8EDF8803DE", + "Track Type": "Remote" + }, + { + "Track ID": "7341", + "Name": "Trust the Process", + "Artist": "Wine In Dusk", + "Album Artist": "Wine In Dusk", + "Composer": "Sam Murray & Wine In Dusk", + "Album": "Disculpe - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5290441", + "Total Time": "143716", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Disculpe - Single", + "Sort Artist": "Wine In Dusk", + "Sort Name": "Trust the Process", + "Persistent ID": "CC7574168241BDB8", + "Track Type": "Remote" + }, + { + "Track ID": "7345", + "Name": "Windfall", + "Artist": "Enluv & azayaka", + "Album Artist": "Enluv & azayaka", + "Composer": "Brandon Hartt & Jacob Henry Feingold", + "Album": "Windfall", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6016977", + "Total Time": "162162", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Windfall", + "Sort Artist": "Enluv & azayaka", + "Sort Name": "Windfall", + "Persistent ID": "F4B2D4DAA4EA8D88", + "Track Type": "Remote" + }, + { + "Track ID": "7347", + "Name": "easy peezy", + "Artist": "Pistachio", + "Album Artist": "Pistachio", + "Composer": "Jacob Attwooll", + "Album": "buttery beats - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5145193", + "Total Time": "130495", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "buttery beats - EP", + "Sort Artist": "Pistachio", + "Sort Name": "easy peezy", + "Persistent ID": "220BBA88403089C4", + "Track Type": "Remote" + }, + { + "Track ID": "7351", + "Name": "Warm For The Cold", + "Artist": "S\u00f8ren S\u00f8strom & xander.", + "Album Artist": "S\u00f8ren S\u00f8strom & xander.", + "Composer": "Elijah Fox-Peck & Alex Papamitrou", + "Album": "Warm For The Cold - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6419319", + "Total Time": "176552", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Warm For The Cold - Single", + "Sort Artist": "S\u00f8ren S\u00f8strom & xander.", + "Sort Name": "Warm For The Cold", + "Persistent ID": "59CA2FD930EB2589", + "Track Type": "Remote" + }, + { + "Track ID": "7353", + "Name": "Resin", + "Artist": "aunt & Beats for Trees", + "Album Artist": "aunt & Beats for Trees", + "Composer": "Aiko Sat\u014d", + "Album": "Resin - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6480421", + "Total Time": "158990", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Resin - Single", + "Sort Artist": "aunt & Beats for Trees", + "Sort Name": "Resin", + "Persistent ID": "8F84F48C58A071C2", + "Track Type": "Remote" + }, + { + "Track ID": "7355", + "Name": "pilea", + "Artist": "riel", + "Album Artist": "riel", + "Composer": "Gabriel King Houis", + "Album": "hazel - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6464876", + "Total Time": "168000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "hazel - EP", + "Sort Artist": "riel", + "Sort Name": "pilea", + "Persistent ID": "20476E94E7CFFA7F", + "Track Type": "Remote" + }, + { + "Track ID": "7357", + "Name": "Skimmed Milk", + "Artist": "Mr Argyle", + "Album Artist": "Mr Argyle", + "Composer": "Andreas Wegelius & Mr Argyle", + "Album": "Skimmed Milk - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5266903", + "Total Time": "141176", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Skimmed Milk - Single", + "Sort Artist": "Mr Argyle", + "Sort Name": "Skimmed Milk", + "Persistent ID": "8FC62CA7C27A003E", + "Track Type": "Remote" + }, + { + "Track ID": "7361", + "Name": "Sunglass", + "Artist": "KOFE BUX", + "Album Artist": "KOFE BUX", + "Composer": "Alex Larsson", + "Album": "Late Night Delivery?", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6901637", + "Total Time": "169988", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "7", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Late Night Delivery?", + "Sort Artist": "KOFE BUX", + "Sort Name": "Sunglass", + "Persistent ID": "63CEB21B340166B0", + "Track Type": "Remote" + }, + { + "Track ID": "7363", + "Name": "Highland", + "Artist": "KOFE BUX", + "Album Artist": "KOFE BUX", + "Composer": "Alex Larsson", + "Album": "Late Night Delivery?", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6821459", + "Total Time": "183984", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "7", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Late Night Delivery?", + "Sort Artist": "KOFE BUX", + "Sort Name": "Highland", + "Persistent ID": "4EA6B4E535D95552", + "Track Type": "Remote" + }, + { + "Track ID": "7369", + "Name": "Little St Leonard's Street", + "Artist": "KOFE BUX", + "Album Artist": "KOFE BUX", + "Composer": "Alex Larsson", + "Album": "Late Night Delivery?", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6550370", + "Total Time": "168937", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "7", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Late Night Delivery?", + "Sort Artist": "KOFE BUX", + "Sort Name": "Little St Leonard's Street", + "Persistent ID": "1C9B19A356D58C8D", + "Track Type": "Remote" + }, + { + "Track ID": "7371", + "Name": "Blissed Out", + "Artist": "Glimlip, DAO & Adam Friedman", + "Album Artist": "Glimlip, DAO & Adam Friedman", + "Composer": "Thomas Philip Lieftinck, christian kalla & Adam Friedman", + "Album": "Blissed Out - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5754183", + "Total Time": "157849", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Blissed Out - Single", + "Sort Artist": "Glimlip, DAO & Adam Friedman", + "Sort Name": "Blissed Out", + "Persistent ID": "47181AA172E31830", + "Track Type": "Remote" + }, + { + "Track ID": "7373", + "Name": "Tillatilla", + "Artist": "LIVE FREE", + "Album Artist": "LIVE FREE", + "Composer": "Alex Larsson", + "Album": "Table for 4 - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7159526", + "Total Time": "184186", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Table for 4 - EP", + "Sort Artist": "LIVE FREE", + "Sort Name": "Tillatilla", + "Persistent ID": "E5C411629816EE23", + "Track Type": "Remote" + }, + { + "Track ID": "7375", + "Name": "Cruisin\u2019", + "Artist": "El Train", + "Album Artist": "Chillhop Music", + "Composer": "Luke Nyeke", + "Album": "Chillhop Essentials Fall 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5187858", + "Total Time": "136879", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "30", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Fall 2023", + "Sort Artist": "El Train", + "Sort Name": "Cruisin\u2019", + "Persistent ID": "4B0EC8F493DF3B71", + "Track Type": "Remote" + }, + { + "Track ID": "7377", + "Name": "Tulip", + "Artist": ".Eehou", + "Album Artist": ".Eehou", + "Composer": "Mars Saralinov", + "Album": "Tulip - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5771716", + "Total Time": "149442", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tulip - Single", + "Sort Artist": ".Eehou", + "Sort Name": "Tulip", + "Persistent ID": "666694C8F42F1D7F", + "Track Type": "Remote" + }, + { + "Track ID": "7379", + "Name": "Jafita", + "Artist": "LIVE FREE", + "Album Artist": "LIVE FREE", + "Composer": "Alex Larsson", + "Album": "Table for 4 - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5664906", + "Total Time": "153176", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Table for 4 - EP", + "Sort Artist": "LIVE FREE", + "Sort Name": "Jafita", + "Persistent ID": "3A24C32640E7B9F0", + "Track Type": "Remote" + }, + { + "Track ID": "7381", + "Name": "Roxie's Diner", + "Artist": "LIVE FREE", + "Album Artist": "LIVE FREE", + "Composer": "Alex Larsson", + "Album": "Table for 4 - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7210146", + "Total Time": "181111", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": -1, + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Table for 4 - EP", + "Sort Artist": "LIVE FREE", + "Sort Name": "Roxie's Diner", + "Persistent ID": "E0CE3521084AADE3", + "Track Type": "Remote" + }, + { + "Track ID": "7383", + "Name": "Golden", + "Artist": "Melt On", + "Album Artist": "Melt On", + "Composer": "Melt On", + "Album": "Golden - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3861751", + "Total Time": "99000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Golden - Single", + "Sort Artist": "Melt On", + "Sort Name": "Golden", + "Persistent ID": "3A5E4BC15793176F", + "Track Type": "Remote" + }, + { + "Track ID": "7385", + "Name": "Rooftop Coffee", + "Artist": "Yawnathan", + "Album Artist": "Yawnathan", + "Composer": "Jave Hughes", + "Album": "Rooftop Coffee - Single", + "Genre": "Electronica", + "Kind": "Apple Music AAC audio file", + "Size": "5682452", + "Total Time": "142975", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rooftop Coffee - Single", + "Sort Artist": "Yawnathan", + "Sort Name": "Rooftop Coffee", + "Persistent ID": "2D3AD971BDE45E7E", + "Track Type": "Remote" + }, + { + "Track ID": "7387", + "Name": "Natalie", + "Artist": "Sean McVerry", + "Album Artist": "Sean McVerry", + "Composer": "undef", + "Album": "Hourglass Switchboard 1 - EP", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7440028", + "Total Time": "203853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": -1, + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hourglass Switchboard 1 - EP", + "Sort Artist": "Sean McVerry", + "Sort Name": "Natalie", + "Persistent ID": "9C6692F3468A5C13", + "Track Type": "Remote" + }, + { + "Track ID": "7389", + "Name": "Giving Up", + "Artist": "The Used", + "Album Artist": "The Used", + "Composer": "Robert McCracken, Dan Whitesides, Jepha Howard, Joseph Bradford, John Feldmann & Rachel West", + "Album": "Toxic Positivity", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6997445", + "Total Time": "190222", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": -1, + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Toxic Positivity", + "Sort Artist": "Used", + "Sort Name": "Used", + "Persistent ID": "Giving Up", + "Track Type": "F9955589DDC3736A" + }, + { + "Track ID": "7393", + "Name": "Wooden Eyes", + "Artist": "Loyae & Astair\u00e9", + "Album Artist": "Various Artists", + "Composer": "Shearton Relyae Carter & Natty Reeves", + "Album": "Lost Paradise", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4398771", + "Total Time": "116616", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Lost Paradise", + "Sort Artist": "Loyae & Astair\u00e9", + "Sort Name": "Wooden Eyes", + "Persistent ID": "EC87E55212D3B8D3", + "Track Type": "Remote" + }, + { + "Track ID": "7395", + "Name": "Sails", + "Artist": "Sleep Culture & The Tea Shop", + "Album Artist": "Sleep Culture & The Tea Shop", + "Composer": "Noah Tauscher & Andre Bernier", + "Album": "Sails - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6788235", + "Total Time": "167773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sails - EP", + "Sort Artist": "Sleep Culture & The Tea Shop", + "Sort Name": "Sails", + "Persistent ID": "C4EC143ED6701B6C", + "Track Type": "Remote" + }, + { + "Track ID": "7397", + "Name": "Entre Nous", + "Artist": "Saib", + "Album Artist": "Various Artists", + "Composer": "Hamza Saib", + "Album": "Lost Paradise", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6353616", + "Total Time": "174000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "12", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Lost Paradise", + "Sort Artist": "Saib", + "Sort Name": "Entre Nous", + "Persistent ID": "04A90D716A3F07F7", + "Track Type": "Remote" + }, + { + "Track ID": "7399", + "Name": "Paper Machete", + "Artist": "Queens of the Stone Age", + "Album Artist": "Queens of the Stone Age", + "Composer": "Dean Fertita, Jon Theodore, Michael Shuman, Troy Van Leeuwen & Joshua Homme", + "Album": "In Times New Roman...", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7471203", + "Total Time": "202777", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In Times New Roman...", + "Sort Artist": "Queens of the Stone Age", + "Sort Name": "Paper Machete", + "Persistent ID": "0D48F2E264F7EE84", + "Track Type": "Remote" + }, + { + "Track ID": "7401", + "Name": "Sea Taxis", + "Artist": "Tohaj, Drips Zacheer & Cvsket Pretty", + "Album Artist": "Tohaj, Drips Zacheer & Cvsket Pretty", + "Composer": "Pavlos Zacharis, Th\u00e9o Risacher & Seth Sheffler-Collins", + "Album": "Sea taxis - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6569577", + "Total Time": "175281", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sea taxis - Single", + "Sort Artist": "Tohaj, Drips Zacheer & Cvsket Pretty", + "Sort Name": "Sea Taxis", + "Persistent ID": "E51B5EA46BEF1E4A", + "Track Type": "Remote" + }, + { + "Track ID": "7403", + "Name": "viloh", + "Artist": "Plusma & Miramare", + "Album Artist": "Plusma & Miramare", + "Composer": "Viktor Theede & eliah turlon", + "Album": "viloh - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5484576", + "Total Time": "138051", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "viloh - Single", + "Sort Artist": "Plusma & Miramare", + "Sort Name": "viloh", + "Persistent ID": "724801C965C53B7F", + "Track Type": "Remote" + }, + { + "Track ID": "7407", + "Name": "Slow Days", + "Artist": "Toji\u00e9 Cai", + "Album Artist": "Toji\u00e9 Cai", + "Composer": "Perfect Thandokuhle Zuma", + "Album": "Slow Days - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4994328", + "Total Time": "127828", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Slow Days - Single", + "Sort Artist": "Toji\u00e9 Cai", + "Sort Name": "Slow Days", + "Persistent ID": "FA834D27CF475FDE", + "Track Type": "Remote" + }, + { + "Track ID": "7409", + "Name": "Pineta", + "Artist": "Koralle", + "Album Artist": "Koralle", + "Composer": "Lorenzo Nadalin", + "Album": "Pineta - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5645841", + "Total Time": "150723", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pineta - Single", + "Sort Artist": "Koralle", + "Sort Name": "Pineta", + "Persistent ID": "FD3EEAE0F3E2D0B2", + "Track Type": "Remote" + }, + { + "Track ID": "7411", + "Name": "New State of Mind", + "Artist": "Rebecca Mardal", + "Album Artist": "Rebecca Mardal", + "Composer": "Rebecca Mardal Engman", + "Album": "Old School Soul - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5642740", + "Total Time": "152093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Old School Soul - Single", + "Sort Artist": "Rebecca Mardal", + "Sort Name": "New State of Mind", + "Persistent ID": "B5B49ACB2F3BE4BD", + "Track Type": "Remote" + }, + { + "Track ID": "7413", + "Name": "Good Days", + "Artist": "Kainbeats, Bcalm & rukachu", + "Album Artist": "Kainbeats", + "Composer": "Callum Alexander Sykora, Matthew-Keane Q Wang & Roo Walker", + "Album": "Sunshine Shores - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5161778", + "Total Time": "138947", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunshine Shores - EP", + "Sort Artist": "Kainbeats, Bcalm & rukachu", + "Sort Name": "Good Days", + "Persistent ID": "3DA62A838AF6AD1E", + "Track Type": "Remote" + }, + { + "Track ID": "7415", + "Name": "Sunrise", + "Artist": "Aves", + "Album Artist": "Chillhop Music", + "Composer": "Dotan Bergman", + "Album": "Chillhop Essentials Fall 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6461909", + "Total Time": "157946", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "30", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Fall 2023", + "Sort Artist": "Aves", + "Sort Name": "Sunrise", + "Persistent ID": "FE0F2728FE187E30", + "Track Type": "Remote" + }, + { + "Track ID": "7417", + "Name": "Bliss", + "Artist": "Parkbench Epiphany", + "Album Artist": "Chillhop Music", + "Composer": "Theo Egginton", + "Album": "Chillhop Essentials Fall 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4675720", + "Total Time": "121971", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "20", + "Track Count": "30", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Fall 2023", + "Sort Artist": "Parkbench Epiphany", + "Sort Name": "Bliss", + "Persistent ID": "EA6E137CF709F572", + "Track Type": "Remote" + }, + { + "Track ID": "7419", + "Name": "Pastries", + "Artist": "Monma", + "Album Artist": "Chillhop Music", + "Composer": "Marko Juhani Lehtil\u00e4", + "Album": "Chillhop Essentials Fall 2023", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5349217", + "Total Time": "145280", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "30", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Chillhop Essentials Fall 2023", + "Sort Artist": "Monma", + "Sort Name": "Pastries", + "Persistent ID": "377920C9F9A4737A", + "Track Type": "Remote" + }, + { + "Track ID": "7421", + "Name": "Jade", + "Artist": "\u00d8DYSSEE, DLJ & Bastien Brison", + "Album Artist": "\u00d8DYSSEE, DLJ & Bastien Brison", + "Composer": "Louis Le Clerc, Felix Schmidt & Bastien Brison", + "Album": "Jade - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "5961628", + "Total Time": "161386", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Jade - Single", + "Sort Artist": "\u00d8DYSSEE, DLJ & Bastien Brison", + "Sort Name": "Jade", + "Persistent ID": "D2603E29687C33A7", + "Track Type": "Remote" + }, + { + "Track ID": "7423", + "Name": "Take it EZ", + "Artist": "Tell", + "Album Artist": "Tell", + "Composer": "Milan Daudin", + "Album": "Take it EZ - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6737043", + "Total Time": "192000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Take it EZ - Single", + "Sort Artist": "Tell", + "Sort Name": "Take it EZ", + "Persistent ID": "F155E2B7D70D3728", + "Track Type": "Remote" + }, + { + "Track ID": "7425", + "Name": "Faux Gold", + "Artist": "Webmoms & Horace Maurice", + "Album Artist": "Webmoms & Horace Maurice", + "Composer": "Karum Cooper", + "Album": "Faux Gold - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6048582", + "Total Time": "166627", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Faux Gold - Single", + "Sort Artist": "Webmoms & Horace Maurice", + "Sort Name": "Faux Gold", + "Persistent ID": "90A1A34E3C3CAAC3", + "Track Type": "Remote" + }, + { + "Track ID": "7427", + "Name": "Unsteady", + "Artist": "X Ambassadors", + "Album Artist": "X Ambassadors", + "Composer": "Noah Feldshuh, Casey Harris, Sam Harris, Alex Da Kid & Adam Levin", + "Album": "VHS 2.0", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7043670", + "Total Time": "193547", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "18", + "Year": "2014", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "80", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "VHS 2.0", + "Sort Artist": "X Ambassadors", + "Sort Name": "Unsteady", + "Persistent ID": "AADC090D6145723B", + "Track Type": "Remote" + }, + { + "Track ID": "7437", + "Name": "Pork Soda", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9198598", + "Total Time": "253831", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Pork Soda", + "Persistent ID": "1C44014769D1C031", + "Track Type": "Remote" + }, + { + "Track ID": "7439", + "Name": "Mama's Gun", + "Artist": "Glass Animals", + "Album Artist": "Glass Animals", + "Composer": "Dave Bayley", + "Album": "How to Be a Human Being", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9505056", + "Total Time": "266747", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "80", + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "80", + "Sort Album": "How to Be a Human Being", + "Sort Artist": "Glass Animals", + "Sort Name": "Mama's Gun", + "Persistent ID": "BCF4D59954D61D30", + "Track Type": "Remote" + }, + { + "Track ID": "7443", + "Name": "Sirius", + "Artist": "ONO1, whewee & Naos", + "Album Artist": "ONO1, whewee & Naos", + "Composer": "Deniz Cengizler, George Brenner, Florian Mohr & Zeta Puppis", + "Album": "Sirius - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4900605", + "Total Time": "129882", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sirius - Single", + "Sort Artist": "ONO1, whewee & Naos", + "Sort Name": "Sirius", + "Persistent ID": "D2B84B1D5A652BD4", + "Track Type": "Remote" + }, + { + "Track ID": "7445", + "Name": "TBH", + "Artist": "space cwby & Thomorrow", + "Album Artist": "space cwby & Thomorrow", + "Composer": "Matt Bullard & Ben Thomas", + "Album": "TBH / BLOOM - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5833512", + "Total Time": "160000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "TBH / BLOOM - Single", + "Sort Artist": "space cwby & Thomorrow", + "Sort Name": "TBH", + "Persistent ID": "CEF90C7E3A9C7B10", + "Track Type": "Remote" + }, + { + "Track ID": "7447", + "Name": "Tiny Dreams", + "Artist": "l'eupe & Yannkee", + "Album Artist": "l'eupe & Yannkee", + "Composer": "Peter Leupold & Yannik Kr\u00e4mer", + "Album": "Tiny Dreams - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4523046", + "Total Time": "110250", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tiny Dreams - Single", + "Sort Artist": "l'eupe & Yannkee", + "Sort Name": "Tiny Dreams", + "Persistent ID": "CC21CB07003C3BCC", + "Track Type": "Remote" + }, + { + "Track ID": "7449", + "Name": "Emergence (Instrumental)", + "Artist": "Quazzy & Thomorrow", + "Album Artist": "Quazzy", + "Composer": "Nicholas Herd", + "Album": "Clear+Here", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5753828", + "Total Time": "148193", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "5", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Clear+Here", + "Sort Artist": "Quazzy & Thomorrow", + "Sort Name": "Emergence (Instrumental)", + "Persistent ID": "F5C7D87FFE91DFEB", + "Track Type": "Remote" + }, + { + "Track ID": "7451", + "Name": "Starfall", + "Artist": ".Eehou", + "Album Artist": ".Eehou", + "Composer": ".Eehou", + "Album": "Starfall - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4818048", + "Total Time": "126536", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Starfall - Single", + "Sort Artist": ".Eehou", + "Sort Name": "Starfall", + "Persistent ID": "6A430D7C8FC7B04D", + "Track Type": "Remote" + }, + { + "Track ID": "7453", + "Name": "Ghost", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "You Haunt Me", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8152238", + "Total Time": "217765", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "12", + "Year": "2014", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "You Haunt Me", + "Sort Artist": "Sir Sly", + "Sort Name": "Ghost", + "Persistent ID": "99DA090B32BDDF1B", + "Track Type": "Remote" + }, + { + "Track ID": "7455", + "Name": "Jet Don't Lag", + "Artist": "Webmoms & Horace Maurice", + "Album Artist": "Webmoms & Horace Maurice", + "Composer": "Karum Cooper", + "Album": "Jet Don't Lag - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5060626", + "Total Time": "136920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Jet Don't Lag - Single", + "Sort Artist": "Webmoms & Horace Maurice", + "Sort Name": "Jet Don't Lag", + "Persistent ID": "A7A68FAA161BA169", + "Track Type": "Remote" + }, + { + "Track ID": "7457", + "Name": "Couch Surfing", + "Artist": "Naptunes & Shuko", + "Album Artist": "Naptunes & Shuko", + "Composer": "Ren\u00e9 Fl\u00e4chsenhaar, Shaan Chhadva & Christoph Bauss", + "Album": "Couch Surfing - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5245023", + "Total Time": "138591", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Couch Surfing - Single", + "Sort Artist": "Naptunes & Shuko", + "Sort Name": "Couch Surfing", + "Persistent ID": "A81B6B00DC41D9F9", + "Track Type": "Remote" + }, + { + "Track ID": "7461", + "Name": "Daybreak", + "Artist": "Kupla", + "Album Artist": "Kupla", + "Composer": "Lauri Acht\u00e9", + "Album": "Daybreak - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5015163", + "Total Time": "135288", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Daybreak - Single", + "Sort Artist": "Kupla", + "Sort Name": "Daybreak", + "Persistent ID": "02165744717EBE91", + "Track Type": "Remote" + }, + { + "Track ID": "7463", + "Name": "My Love Mine All Mine", + "Artist": "Mitski", + "Album Artist": "Mitski", + "Composer": "Mitski Miyawaki", + "Album": "The Land Is Inhospitable and So Are We", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5037014", + "Total Time": "137773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "11", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Land Is Inhospitable and So Are We", + "Sort Artist": "Mitski", + "Sort Name": "My Love Mine All Mine", + "Persistent ID": "3EE8F2CC62F1C764", + "Track Type": "Remote" + }, + { + "Track ID": "7469", + "Name": "Broken Whiskey Glass", + "Artist": "Post Malone", + "Album Artist": "Post Malone", + "Composer": "Post Malone, Rex Kudo, Trocon Markous Roberts, Jr. & Idan Kalai", + "Album": "Stoney (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8366082", + "Total Time": "233805", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "18", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stoney (Deluxe)", + "Sort Artist": "Post Malone", + "Sort Name": "Broken Whiskey Glass", + "Persistent ID": "FB3C3349424DB1AC", + "Track Type": "Remote" + }, + { + "Track ID": "7471", + "Name": "mogh", + "Artist": "Plusma & Miramare", + "Album Artist": "Plusma & Miramare", + "Composer": "Viktor Theede & eliah turlon", + "Album": "polytree", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5062544", + "Total Time": "133994", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "polytree", + "Sort Artist": "Plusma & Miramare", + "Sort Name": "mogh", + "Persistent ID": "F5A24CBF27A2D84D", + "Track Type": "Remote" + }, + { + "Track ID": "7473", + "Name": "Found You Out", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "You Haunt Me", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8017669", + "Total Time": "217323", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "12", + "Year": "2013", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "You Haunt Me", + "Sort Artist": "Sir Sly", + "Sort Name": "Found You Out", + "Persistent ID": "9E9999A2222784A8", + "Track Type": "Remote" + }, + { + "Track ID": "7475", + "Name": "Buenos Nachos", + "Artist": "Frida Cowboy", + "Album Artist": "Frida Cowboy", + "Composer": "William George Henderson & Jaiia Cerff", + "Album": "I'm Noisy! / Buenos Nachos - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4562283", + "Total Time": "121867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "I'm Noisy! / Buenos Nachos - Single", + "Sort Artist": "Frida Cowboy", + "Sort Name": "Buenos Nachos", + "Persistent ID": "C73E50ACB91DEED5", + "Track Type": "Remote" + }, + { + "Track ID": "7477", + "Name": "For a While", + "Artist": "Houis", + "Album Artist": "Houis", + "Composer": "Gabriel King Houis", + "Album": "Outgrown", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5218764", + "Total Time": "140440", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Outgrown", + "Sort Artist": "Houis", + "Sort Name": "For a While", + "Persistent ID": "C6B75CAC8057EF17", + "Track Type": "Remote" + }, + { + "Track ID": "7479", + "Name": "Midnight Green", + "Artist": "Hoffy Beats & MAS", + "Album Artist": "Hoffy Beats & MAS", + "Composer": "Thomas Etholm & Jonas Hoffmann Nedergaard", + "Album": "Midnight Green - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4310728", + "Total Time": "112812", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Midnight Green - Single", + "Sort Artist": "Hoffy Beats & MAS", + "Sort Name": "Midnight Green", + "Persistent ID": "13CDB44865A2793B", + "Track Type": "Remote" + }, + { + "Track ID": "7481", + "Name": "midnight express", + "Artist": "bby knife", + "Album Artist": "bby knife", + "Composer": "bby knife", + "Album": "midnight express - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6112955", + "Total Time": "166612", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "midnight express - Single", + "Sort Artist": "bby knife", + "Sort Name": "midnight express", + "Persistent ID": "20CACCE663FB704B", + "Track Type": "Remote" + }, + { + "Track ID": "7483", + "Name": "2am in Kokrobite", + "Artist": "Beach Boy Rad", + "Album Artist": "Beach Boy Rad", + "Composer": "Derick Fagbohun", + "Album": "2am in Kokrobite - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "3629214", + "Total Time": "92400", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "2am in Kokrobite - Single", + "Sort Artist": "Beach Boy Rad", + "Sort Name": "2am in Kokrobite", + "Persistent ID": "3D256B3BADD99094", + "Track Type": "Remote" + }, + { + "Track ID": "7485", + "Name": "Hopscotch", + "Artist": "Enluv & Molly McPhaul", + "Album Artist": "Enluv & Molly McPhaul", + "Composer": "Clem Braden, Brandon Hartt, Molly McPhaul & Austin Yankunas", + "Album": "Hopscotch - Single", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "7394583", + "Total Time": "207273", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hopscotch - Single", + "Sort Artist": "Enluv & Molly McPhaul", + "Sort Name": "Hopscotch", + "Persistent ID": "7D256D44FD147083", + "Track Type": "Remote" + }, + { + "Track ID": "7487", + "Name": "Fum\u00e9e De Vacances", + "Artist": "Inf & Oaty.", + "Album Artist": "Inf & Oaty.", + "Composer": "Bas te Braak & Angelo Emo", + "Album": "Fum\u00e9e De Vacances - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4929937", + "Total Time": "128611", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Fum\u00e9e De Vacances - Single", + "Sort Artist": "Inf & Oaty.", + "Sort Name": "Fum\u00e9e De Vacances", + "Persistent ID": "CD2672EA05356074", + "Track Type": "Remote" + }, + { + "Track ID": "7491", + "Name": "Rush (feat. Jessie Reyez)", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi & Malay", + "Album": "Rush (feat. Jessie Reyez) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7189340", + "Total Time": "198351", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rush (feat. Jessie Reyez) - Single", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Rush (feat. Jessie Reyez)", + "Persistent ID": "B799BA1392A751A2", + "Track Type": "Remote" + }, + { + "Track ID": "7493", + "Name": "Ocean/Sea", + "Artist": "Halibab Matador", + "Album Artist": "Halibab Matador", + "Composer": "Alban Murenzi, J\u00e9r\u00e9my Dumont, L\u00e9a Kadian & Tim De Fontaine", + "Album": "Souvenirs", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "7937599", + "Total Time": "219429", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": -1, + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Souvenirs", + "Sort Artist": "Halibab Matador", + "Sort Name": "Ocean/Sea", + "Persistent ID": "E4B5C4E55A05530F", + "Track Type": "Remote" + }, + { + "Track ID": "7495", + "Name": "Off My Mind", + "Artist": "Joe P", + "Album Artist": "Joe P", + "Composer": "Joe Parella", + "Album": "Emily Can't Sing", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7668666", + "Total Time": "213855", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "8", + "Year": "2021", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Emily Can't Sing", + "Sort Artist": "Joe P", + "Sort Name": "Off My Mind", + "Persistent ID": "C10F8343FBD53A2A", + "Track Type": "Remote" + }, + { + "Track ID": "7497", + "Name": "Awe", + "Artist": "Vincent Rayn", + "Album Artist": "Vincent Rayn", + "Composer": "Jona Raischl & Hans Heusterberg", + "Album": "Awe - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4741022", + "Total Time": "127375", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Awe - Single", + "Sort Artist": "Vincent Rayn", + "Sort Name": "Awe", + "Persistent ID": "4EF7A00BEDED21B3", + "Track Type": "Remote" + }, + { + "Track ID": "7499", + "Name": "Skyline", + "Artist": "Halibab Matador", + "Album Artist": "Halibab Matador", + "Composer": "Alban Murenzi, Tim De Fontaine & J\u00e9r\u00e9my Dumont", + "Album": "Souvenirs", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "9085070", + "Total Time": "255180", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Souvenirs", + "Sort Artist": "Halibab Matador", + "Sort Name": "Skyline", + "Persistent ID": "0D8F9DC239FE431C", + "Track Type": "Remote" + }, + { + "Track ID": "7501", + "Name": "Aged", + "Artist": "Oaty. & Soulful Cali", + "Album Artist": "Oaty. & Soulful Cali", + "Composer": "Angelo Emo & Soulful Cali", + "Album": "Aged - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4446860", + "Total Time": "115200", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Aged - Single", + "Sort Artist": "Oaty. & Soulful Cali", + "Sort Name": "Aged", + "Persistent ID": "E829A617B206388C", + "Track Type": "Remote" + }, + { + "Track ID": "7503", + "Name": "Remember", + "Artist": "Harry Hawaii", + "Album Artist": "Harry Hawaii", + "Composer": "Heiko Schenk", + "Album": "Remember - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4305053", + "Total Time": "114500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Remember - Single", + "Sort Artist": "Harry Hawaii", + "Sort Name": "Remember", + "Persistent ID": "0E611C0872A09F42", + "Track Type": "Remote" + }, + { + "Track ID": "7505", + "Name": "Yuma", + "Artist": "Jazzy James", + "Album Artist": "Jazzy James", + "Composer": "Jakob Gerhardt & Frederik Schlender", + "Album": "Azur - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5863053", + "Total Time": "159474", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Azur - EP", + "Sort Artist": "Jazzy James", + "Sort Name": "Yuma", + "Persistent ID": "AC941C34961A2942", + "Track Type": "Remote" + }, + { + "Track ID": "7507", + "Name": "Lili", + "Artist": "Halibab Matador", + "Album Artist": "Halibab Matador", + "Composer": "Alban Murenzi, L\u00e9a Kadian, Stacy de Bruges & Tim De Fontaine", + "Album": "Souvenirs", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "8158996", + "Total Time": "229161", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": -1, + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Souvenirs", + "Sort Artist": "Halibab Matador", + "Sort Name": "Lili", + "Persistent ID": "7CD0EA65AAB56E50", + "Track Type": "Remote" + }, + { + "Track ID": "7509", + "Name": "Unknown Places", + "Artist": "HATAMITSUNAMI", + "Album Artist": "HATAMITSUNAMI", + "Composer": "SIAMAK HATAMI", + "Album": "The Original Wan - EP", + "Genre": "Lounge", + "Kind": "Apple Music AAC audio file", + "Size": "5733505", + "Total Time": "155551", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Original Wan - EP", + "Sort Artist": "HATAMITSUNAMI", + "Sort Name": "Unknown Places", + "Persistent ID": "84EA3709791DF301", + "Track Type": "Remote" + }, + { + "Track ID": "7515", + "Name": "Free Drinks", + "Artist": "Jazzy James & Mosalla", + "Album Artist": "Jazzy James & Mosalla", + "Composer": "Jakob Gerhardt & Florian Br\u00fchl", + "Album": "Free Drinks - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5309255", + "Total Time": "133125", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Free Drinks - Single", + "Sort Artist": "Jazzy James & Mosalla", + "Sort Name": "Free Drinks", + "Persistent ID": "F71F39F7E240540F", + "Track Type": "Remote" + }, + { + "Track ID": "7517", + "Name": "Life Lived Dangerously", + "Artist": "Daphn\u00e9", + "Album Artist": "Daphn\u00e9", + "Composer": "Conor McCarthy", + "Album": "Tragedy Critique - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5768202", + "Total Time": "136622", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tragedy Critique - EP", + "Sort Artist": "Daphn\u00e9", + "Sort Name": "Life Lived Dangerously", + "Persistent ID": "A32D18DA53E2011A", + "Track Type": "Remote" + }, + { + "Track ID": "7519", + "Name": "Dusty", + "Artist": "Damn Homies", + "Album Artist": "Damn Homies", + "Composer": "Alexander Saenda L\u00fcck", + "Album": "Look - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5283261", + "Total Time": "145116", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Look - EP", + "Sort Artist": "Damn Homies", + "Sort Name": "Dusty", + "Persistent ID": "B0C0606C606B0551", + "Track Type": "Remote" + }, + { + "Track ID": "7521", + "Name": "Lose It", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8100244", + "Total Time": "229935", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "15", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "Lose It", + "Persistent ID": "784F5FEC5A4F0392", + "Track Type": "Remote" + }, + { + "Track ID": "7525", + "Name": "Cheers", + "Artist": "xander.", + "Album Artist": "xander.", + "Composer": "Alex Papamitrou", + "Album": "Cheers - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6803770", + "Total Time": "187013", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cheers - Single", + "Sort Artist": "xander.", + "Sort Name": "Cheers", + "Persistent ID": "037CD643647D988E", + "Track Type": "Remote" + }, + { + "Track ID": "7527", + "Name": "Lost in Soho", + "Artist": "Keliris", + "Album Artist": "Keliris", + "Composer": "Nicholas Keliris", + "Album": "Lost in Soho - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5582282", + "Total Time": "147000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lost in Soho - Single", + "Sort Artist": "Keliris", + "Sort Name": "Lost in Soho", + "Persistent ID": "05441F176191EA5F", + "Track Type": "Remote" + }, + { + "Track ID": "7531", + "Name": "Lightways", + "Artist": "xander. & S\u00f8ren S\u00f8strom", + "Album Artist": "xander. & S\u00f8ren S\u00f8strom", + "Composer": "Alex Papamitrou & Elijah Fox-Peck", + "Album": "Lightways - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6137283", + "Total Time": "167711", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lightways - Single", + "Sort Artist": "xander. & S\u00f8ren S\u00f8strom", + "Sort Name": "Lightways", + "Persistent ID": "6D922437B9BC5211", + "Track Type": "Remote" + }, + { + "Track ID": "7533", + "Name": "All We Do", + "Artist": "Oh Wonder", + "Album Artist": "Oh Wonder", + "Composer": "Josephine Vander Gucht & Anthony West", + "Album": "Oh Wonder", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7464516", + "Total Time": "214174", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "15", + "Year": "2014", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oh Wonder", + "Sort Artist": "Oh Wonder", + "Sort Name": "All We Do", + "Persistent ID": "756047E2FB40A1A0", + "Track Type": "Remote" + }, + { + "Track ID": "7537", + "Name": "Slow Steps", + "Artist": "Drips Zacheer", + "Album Artist": "Drips Zacheer", + "Composer": "Pavlos Zacharis", + "Album": "Slow Steps - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5431129", + "Total Time": "138462", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Slow Steps - Single", + "Sort Artist": "Drips Zacheer", + "Sort Name": "Slow Steps", + "Persistent ID": "94E64EF2060DA56E", + "Track Type": "Remote" + }, + { + "Track ID": "7539", + "Name": "Meaningless Television (Thomorrow Remix)", + "Artist": "90s Child Actor", + "Album Artist": "90s Child Actor", + "Composer": "Tim Granbacka", + "Album": "Meaningless Television - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5943024", + "Total Time": "148885", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Meaningless Television - Single", + "Sort Artist": "90s Child Actor", + "Sort Name": "Meaningless Television (Thomorrow Remix)", + "Persistent ID": "FE3E649850F82BD9", + "Track Type": "Remote" + }, + { + "Track ID": "7541", + "Name": "Westward", + "Artist": "Enluv, azayaka & No\u00e9 Mina", + "Album Artist": "Enluv, azayaka & No\u00e9 Mina", + "Composer": "Brandon Hartt, Jacob Henry Feingold & No\u00e9 Mina", + "Album": "Westward - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6805262", + "Total Time": "187500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Westward - Single", + "Sort Artist": "Enluv, azayaka & No\u00e9 Mina", + "Sort Name": "Westward", + "Persistent ID": "09BDCA808F703A2B", + "Track Type": "Remote" + }, + { + "Track ID": "7543", + "Name": "XIN", + "Artist": "YIIN", + "Album Artist": "YIIN", + "Composer": "Eugene Ugorski", + "Album": "DAO - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5315935", + "Total Time": "144000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "DAO - EP", + "Sort Artist": "YIIN", + "Sort Name": "XIN", + "Persistent ID": "6D81000EC7AB6513", + "Track Type": "Remote" + }, + { + "Track ID": "7545", + "Name": "Swim", + "Artist": "Joe Arrow", + "Album Artist": "Joe Arrow", + "Composer": "Joe Arrow", + "Album": "Swim - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5385887", + "Total Time": "145235", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Swim - Single", + "Sort Artist": "Joe Arrow", + "Sort Name": "Swim", + "Persistent ID": "D38ECDFF8604B032", + "Track Type": "Remote" + }, + { + "Track ID": "7547", + "Name": "Summer", + "Artist": "Yinoluu", + "Album Artist": "Yinoluu", + "Composer": "Yinoluwa Olowofoyeku", + "Album": "Nostalgic", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6592870", + "Total Time": "184403", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "18", + "Year": "2021", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nostalgic", + "Sort Artist": "Yinoluu", + "Sort Name": "Summer", + "Persistent ID": "DBFF7961B90DA272", + "Track Type": "Remote" + }, + { + "Track ID": "7549", + "Name": "coastline", + "Artist": "night light", + "Album Artist": "night light", + "Composer": "night light", + "Album": "coastline - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4883420", + "Total Time": "128000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "coastline - EP", + "Sort Artist": "night light", + "Sort Name": "coastline", + "Persistent ID": "8779679231DCEB5F", + "Track Type": "Remote" + }, + { + "Track ID": "7551", + "Name": "Pangaea", + "Artist": "Thomorrow & Terrestrial Paradise", + "Album Artist": "Thomorrow & Terrestrial Paradise", + "Composer": "Ben Thomas", + "Album": "Pangaea - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4909801", + "Total Time": "117000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Pangaea - Single", + "Sort Artist": "Thomorrow & Terrestrial Paradise", + "Sort Name": "Pangaea", + "Persistent ID": "706EE9C65D1DDFA8", + "Track Type": "Remote" + }, + { + "Track ID": "7555", + "Name": "Isipikili", + "Artist": "Toji\u00e9 Cai", + "Album Artist": "Toji\u00e9 Cai", + "Composer": "Perfect Thandokuhle Zuma", + "Album": "Signs of Life - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5267795", + "Total Time": "139516", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "5", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Signs of Life - EP", + "Sort Artist": "Toji\u00e9 Cai", + "Sort Name": "Isipikili", + "Persistent ID": "D05851E3184FE188", + "Track Type": "Remote" + }, + { + "Track ID": "7557", + "Name": "Urban Serenade", + "Artist": "Uli Tiro", + "Album Artist": "Uli Tiro", + "Composer": "Uli Tiro", + "Album": "Urban Serenade - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4428285", + "Total Time": "115897", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Urban Serenade - Single", + "Sort Artist": "Uli Tiro", + "Sort Name": "Urban Serenade", + "Persistent ID": "29B01F2D912B35FA", + "Track Type": "Remote" + }, + { + "Track ID": "7559", + "Name": "Feels Like", + "Artist": "Houis", + "Album Artist": "Houis", + "Composer": "Gabriel King Houis", + "Album": "Feels Like - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6467434", + "Total Time": "176679", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Feels Like - Single", + "Sort Artist": "Houis", + "Sort Name": "Feels Like", + "Persistent ID": "CC06CD4DBB526646", + "Track Type": "Remote" + }, + { + "Track ID": "7565", + "Name": "Activated (feat. miamore)", + "Artist": "Tom Doolie, Molly McPhaul & Lazlow", + "Album Artist": "Tom Doolie", + "Composer": "Molly McPhaul, Thomas Huber, Mia Garcia & Adam Laszlo", + "Album": "Only Poem", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4388776", + "Total Time": "114419", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "16", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Only Poem", + "Sort Artist": "Tom Doolie, Molly McPhaul & Lazlow", + "Sort Name": "Activated (feat. miamore)", + "Persistent ID": "D6295E359B0C8560", + "Track Type": "Remote" + }, + { + "Track ID": "7569", + "Name": "Rays", + "Artist": "astra division", + "Album Artist": "astra division", + "Composer": "Curtis Dean & astra division", + "Album": "Rays - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4453878", + "Total Time": "118438", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Rays - Single", + "Sort Artist": "astra division", + "Sort Name": "Rays", + "Persistent ID": "01DB5680A9E994B2", + "Track Type": "Remote" + }, + { + "Track ID": "7571", + "Name": "Trident", + "Artist": "Just Steezy Things", + "Album Artist": "Just Steezy Things", + "Composer": "Ryan Spellman", + "Album": "The Night Ride", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5404526", + "Total Time": "147626", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "7", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Night Ride", + "Sort Artist": "Just Steezy Things", + "Sort Name": "Trident", + "Persistent ID": "CBBFB2D55613365B", + "Track Type": "Remote" + }, + { + "Track ID": "7573", + "Name": "Telling Stories", + "Artist": "Mindscape", + "Album Artist": "Mindscape", + "Composer": "Michael Reinhardt", + "Album": "Telling Stories - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5321130", + "Total Time": "144534", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Telling Stories - Single", + "Sort Artist": "Mindscape", + "Sort Name": "Telling Stories", + "Persistent ID": "705B01347DA1201A", + "Track Type": "Remote" + }, + { + "Track ID": "7575", + "Name": "Hold Me While You Wait", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi, Jamie Hartman & Jamie N Commons", + "Album": "Divinely Uninspired To A Hellish Extent", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7300138", + "Total Time": "205687", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "12", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divinely Uninspired To A Hellish Extent", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Hold Me While You Wait", + "Persistent ID": "5FF75164C2F86064", + "Track Type": "Remote" + }, + { + "Track ID": "7577", + "Name": "Someone You Loved", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi, Sam Roman, Benjamin Kohn, Peter Kelleher & Tom Barnes", + "Album": "Divinely Uninspired To A Hellish Extent", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6591321", + "Total Time": "182161", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "12", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divinely Uninspired To A Hellish Extent", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Someone You Loved", + "Persistent ID": "70C4F614628146D3", + "Track Type": "Remote" + }, + { + "Track ID": "7581", + "Name": "Isn't Easy", + "Artist": "Yeyts. & Smuff Tha Quiz", + "Album Artist": "Smuff Tha Quiz & Yeyts.", + "Composer": "Igor Molchanov & Bohdan Butkaliuk", + "Album": "Sideshow - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4815086", + "Total Time": "129655", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sideshow - EP", + "Sort Artist": "Yeyts. & Smuff Tha Quiz", + "Sort Name": "Isn't Easy", + "Persistent ID": "8E25D26706AEB5B7", + "Track Type": "Remote" + }, + { + "Track ID": "7585", + "Name": "achoo", + "Artist": "Pistachio", + "Album Artist": "Pistachio", + "Composer": "Jacob Attwooll", + "Album": "achoo - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5165175", + "Total Time": "130208", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "achoo - Single", + "Sort Artist": "Pistachio", + "Sort Name": "achoo", + "Persistent ID": "84EE020D29623F8B", + "Track Type": "Remote" + }, + { + "Track ID": "7589", + "Name": "Gentlemen", + "Artist": "Felt Galaxy", + "Album Artist": "Felt Galaxy", + "Composer": "Felt Galaxy", + "Album": "Gentlemen - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6054144", + "Total Time": "165714", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Gentlemen - Single", + "Sort Artist": "Felt Galaxy", + "Sort Name": "Gentlemen", + "Persistent ID": "C3CFC0D857D7CEF6", + "Track Type": "Remote" + }, + { + "Track ID": "7593", + "Name": "Dreams", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "Dwayne Carter, Alexander Joseph Delicata, Timothy Sommers, Aaron Zuckerman, Ben Burgess & Jeremy Dussolliett", + "Album": "Funeral (Deluxe)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8154563", + "Total Time": "227680", + "Disc Number": "2", + "Disc Count": "2", + "Track Number": "5", + "Track Count": "24", + "Year": "2020", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Funeral (Deluxe)", + "Sort Artist": "Lil Wayne", + "Sort Name": "Dreams", + "Persistent ID": "FA3277E14EEF4A77", + "Track Type": "Remote" + }, + { + "Track ID": "7599", + "Name": "Whispers of the Shore", + "Artist": "Mama Aiuto & Dan Gregory", + "Album Artist": "Mama Aiuto & Dan Gregory", + "Composer": "Dan Gregory & Benjamin McCarthy", + "Album": "Whispers of the Shore - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5610724", + "Total Time": "158210", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Whispers of the Shore - Single", + "Sort Artist": "Mama Aiuto & Dan Gregory", + "Sort Name": "Whispers of the Shore", + "Persistent ID": "4236854E1B478EF9", + "Track Type": "Remote" + }, + { + "Track ID": "7601", + "Name": "Off Duty", + "Artist": "Blue Wednesday", + "Album Artist": "Blue Wednesday", + "Composer": "Gustav Joseph", + "Album": "Off Duty - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5565996", + "Total Time": "151331", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Off Duty - Single", + "Sort Artist": "Blue Wednesday", + "Sort Name": "Off Duty", + "Persistent ID": "BE30F6ACB0834C48", + "Track Type": "Remote" + }, + { + "Track ID": "7603", + "Name": "Clearing", + "Artist": "Red Licorice & inola", + "Album Artist": "Red Licorice & inola", + "Composer": "Judah Earl & Jared Logan", + "Album": "Space Between - EP", + "Genre": "Ambient", + "Kind": "Apple Music AAC audio file", + "Size": "5761870", + "Total Time": "157166", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Space Between - EP", + "Sort Artist": "Red Licorice & inola", + "Sort Name": "Clearing", + "Persistent ID": "1219C69AFF1BDA17", + "Track Type": "Remote" + }, + { + "Track ID": "7607", + "Name": "Khushi", + "Artist": "Natasha Ghosh & Angry Apple", + "Album Artist": "Natasha Ghosh", + "Composer": "Natasha Ghosh & Angry Apple", + "Album": "Yaatra - EP", + "Genre": "Lounge", + "Kind": "Apple Music AAC audio file", + "Size": "5226399", + "Total Time": "141852", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Yaatra - EP", + "Sort Artist": "Natasha Ghosh & Angry Apple", + "Sort Name": "Khushi", + "Persistent ID": "F8F4E43A27679577", + "Track Type": "Remote" + }, + { + "Track ID": "7619", + "Name": "&Run", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8312397", + "Total Time": "226587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "&Run", + "Persistent ID": "D7EA7E6A2F90B88C", + "Track Type": "Remote" + }, + { + "Track ID": "7621", + "Name": "Don't Cry (feat. XXXTENTACION)", + "Artist": "Lil Wayne", + "Album Artist": "Lil Wayne", + "Composer": "Lil Wayne, XXXTENTACION, Eugene Karavasilidis, Ben Diehl & Gamal \"LunchMoney\" Lewis", + "Album": "Tha Carter V", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8759770", + "Total Time": "249450", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "23", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tha Carter V", + "Sort Artist": "Lil Wayne", + "Sort Name": "Don't Cry (feat. XXXTENTACION)", + "Persistent ID": "F13BD9FAEABF1E72", + "Track Type": "Remote" + }, + { + "Track ID": "7623", + "Name": "Altar", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito, Hayden Coplen & Peter Yorke", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7871039", + "Total Time": "221649", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "Altar", + "Persistent ID": "3454599BA8790605", + "Track Type": "Remote" + }, + { + "Track ID": "7625", + "Name": "Backyard Memories", + "Artist": "akoYuno", + "Album Artist": "akoYuno", + "Composer": "Lukas Gro\u00dfmann & Daniel Treimer", + "Album": "Backyard Memories - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4377852", + "Total Time": "112308", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Backyard Memories - Single", + "Sort Artist": "akoYuno", + "Sort Name": "Backyard Memories", + "Persistent ID": "329F2D7C2C295CD5", + "Track Type": "Remote" + }, + { + "Track ID": "7627", + "Name": "Astronaut", + "Artist": "Sir Sly", + "Album Artist": "Sir Sly", + "Composer": "Landon Jacobs, Jason Suwito & Hayden Coplen", + "Album": "Don't You Worry, Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7971998", + "Total Time": "224382", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "10", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Don't You Worry, Honey", + "Sort Artist": "Sir Sly", + "Sort Name": "Astronaut", + "Persistent ID": "53395B308E715741", + "Track Type": "Remote" + }, + { + "Track ID": "7629", + "Name": "Subtle", + "Artist": "wielandwieland", + "Album Artist": "wielandwieland", + "Composer": "Franz-Wieland Filtz", + "Album": "Subtle - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5988732", + "Total Time": "164389", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Subtle - Single", + "Sort Artist": "wielandwieland", + "Sort Name": "Subtle", + "Persistent ID": "94C5BDF8F13BDA12", + "Track Type": "Remote" + }, + { + "Track ID": "7631", + "Name": "Ain't Life Sweet", + "Artist": "Hewie Lou", + "Album Artist": "Hewie Lou", + "Composer": "Jay Hewko", + "Album": "Mid90s", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4500072", + "Total Time": "120245", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mid90s", + "Sort Artist": "Hewie Lou", + "Sort Name": "Ain't Life Sweet", + "Persistent ID": "5E03BDDC5CFA35AB", + "Track Type": "Remote" + }, + { + "Track ID": "7633", + "Name": "Departures", + "Artist": "Mama Aiuto & Dan Gregory", + "Album Artist": "Mama Aiuto & Dan Gregory", + "Composer": "Dan Gregory & Benjamin McCarthy", + "Album": "Holiday Music (Deluxe) - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5043523", + "Total Time": "135659", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Holiday Music (Deluxe) - EP", + "Sort Artist": "Mama Aiuto & Dan Gregory", + "Sort Name": "Departures", + "Persistent ID": "5617761BEDC08209", + "Track Type": "Remote" + }, + { + "Track ID": "17744", + "Name": "Bad Business", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph & Joshua Luellen", + "Album": "Issa Album", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5846915", + "Total Time": "162253", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2023-11-02T13:49:54Z", + "Date Added": "2023-11-02T13:49:54Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3783598157", + "Play Date UTC": "2023-11-23T12:29:17Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-07-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Issa Album", + "Sort Artist": "21 Savage", + "Sort Name": "Bad Business", + "Persistent ID": "65B0270B7D0E5BAA", + "Track Type": "Remote" + }, + { + "Track ID": "17749", + "Name": "Numb", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph & Leland Wayne", + "Album": "Issa Album", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "9379499", + "Total Time": "271307", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2023-11-03T06:30:07Z", + "Date Added": "2023-11-03T06:30:07Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3783597995", + "Play Date UTC": "2023-11-23T12:26:35Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-07-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Issa Album", + "Sort Artist": "21 Savage", + "Sort Name": "Numb", + "Persistent ID": "5426253C9C975915", + "Track Type": "Remote" + }, + { + "Track ID": "17754", + "Name": "Special", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph & Wesley Glass", + "Album": "Issa Album", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7649641", + "Total Time": "217867", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2023-11-03T06:42:04Z", + "Date Added": "2023-11-03T06:42:04Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "19", + "Play Date": "3783754499", + "Play Date UTC": "2023-11-25T07:54:59Z", + "Skip Count": "1", + "Skip Date": "2023-11-05T03:15:38Z", + "Release Date": "2017-07-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Issa Album", + "Sort Artist": "21 Savage", + "Sort Name": "Special", + "Persistent ID": "D3E0D753D7C06827", + "Track Type": "Remote" + }, + { + "Track ID": "17759", + "Name": "7 Min Freestyle", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph & Leland Wayne", + "Album": "Issa Album", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "14777273", + "Total Time": "431587", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "14", + "Year": "2017", + "Date Modified": "2023-11-03T06:58:05Z", + "Date Added": "2023-11-03T06:58:05Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "15", + "Play Date": "3783777248", + "Play Date UTC": "2023-11-25T14:14:08Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2017-07-07T12:00:00Z", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Issa Album", + "Sort Artist": "21 Savage", + "Sort Name": "7 Min Freestyle", + "Persistent ID": "06E966482A8F0E57", + "Track Type": "Remote" + }, + { + "Track ID": "17764", + "Name": "No Flockin", + "Artist": "Kodak Black", + "Album Artist": "Kodak Black", + "Composer": "Kodak Black & Pan Rui Wen", + "Album": "No Flockin - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6115003", + "Total Time": "165291", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2014", + "Date Modified": "2023-11-03T08:43:18Z", + "Date Added": "2023-11-03T08:43:18Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "14", + "Play Date": "3783332384", + "Play Date UTC": "2023-11-20T10:39:44Z", + "Skip Count": "1", + "Skip Date": "2023-11-24T19:44:27Z", + "Release Date": "2014-07-25T07:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "No Flockin - Single", + "Sort Artist": "Kodak Black", + "Sort Name": "No Flockin", + "Persistent ID": "4B56EAF2A7733A4F", + "Track Type": "Remote" + }, + { + "Track ID": "17770", + "Name": "Fr\u00fchling in Paris", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9065328", + "Total Time": "248853", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3783097416", + "Play Date UTC": "2023-11-17T17:23:36Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Fr\u00fchling in Paris", + "Persistent ID": "5E60B12C79621F7D", + "Track Type": "Remote" + }, + { + "Track ID": "17776", + "Name": "Feuer und Wasser", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8509700", + "Total Time": "232893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3783097649", + "Play Date UTC": "2023-11-17T17:27:29Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Feuer und Wasser", + "Persistent ID": "7440B58FAFB526D3", + "Track Type": "Remote" + }, + { + "Track ID": "17781", + "Name": "Nebel", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "10147897", + "Total Time": "274253", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3783097924", + "Play Date UTC": "2023-11-17T17:32:04Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Nebel", + "Persistent ID": "019A042C61706626", + "Track Type": "Remote" + }, + { + "Track ID": "17786", + "Name": "Sonne", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8507884", + "Total Time": "233120", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "7", + "Play Date": "3783694580", + "Play Date UTC": "2023-11-24T15:16:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Sonne", + "Persistent ID": "5ABAEA8E0200FF77", + "Track Type": "Remote" + }, + { + "Track ID": "17791", + "Name": "Klavier", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9015970", + "Total Time": "243453", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783098403", + "Play Date UTC": "2023-11-17T17:40:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Klavier", + "Persistent ID": "130AADF1E5C9F4F4", + "Track Type": "Remote" + }, + { + "Track ID": "17796", + "Name": "Wilder Wein", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "7961805", + "Total Time": "211333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "5", + "Play Date": "3783098614", + "Play Date UTC": "2023-11-17T17:43:34Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Wilder Wein", + "Persistent ID": "9395361C85E1CF87", + "Track Type": "Remote" + }, + { + "Track ID": "17801", + "Name": "Ohne dich", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9580175", + "Total Time": "270933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783098885", + "Play Date UTC": "2023-11-17T17:48:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Ohne dich", + "Persistent ID": "58775F5FFF2D185E", + "Track Type": "Remote" + }, + { + "Track ID": "17806", + "Name": "Ein Lied", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8244020", + "Total Time": "221333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783099106", + "Play Date UTC": "2023-11-17T17:51:46Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Ein Lied", + "Persistent ID": "4AC582429601E3ED", + "Track Type": "Remote" + }, + { + "Track ID": "17811", + "Name": "Roter Sand", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "7198461", + "Total Time": "196107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783099303", + "Play Date UTC": "2023-11-17T17:55:03Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Roter Sand", + "Persistent ID": "4FF79522C8B02D16", + "Track Type": "Remote" + }, + { + "Track ID": "17816", + "Name": "Engel", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9199571", + "Total Time": "256107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783099559", + "Play Date UTC": "2023-11-17T17:59:19Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Engel", + "Persistent ID": "578074E40AE6E2CC", + "Track Type": "Remote" + }, + { + "Track ID": "17821", + "Name": "Seemann", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9672477", + "Total Time": "275027", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "4", + "Play Date": "3783715017", + "Play Date UTC": "2023-11-24T20:56:57Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Seemann", + "Persistent ID": "CC9201194ADA8FB2", + "Track Type": "Remote" + }, + { + "Track ID": "17826", + "Name": "Donaukinder", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8496087", + "Total Time": "233893", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783100068", + "Play Date UTC": "2023-11-17T18:07:48Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Donaukinder", + "Persistent ID": "E27C225E142252DC", + "Track Type": "Remote" + }, + { + "Track ID": "17831", + "Name": "Mein Herz brennt", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Doktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider", + "Album": "XXI - Klavier", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9418456", + "Total Time": "271907", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "13", + "Year": "2015", + "Date Modified": "2023-11-06T11:46:48Z", + "Date Added": "2023-11-06T11:46:48Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783100340", + "Play Date UTC": "2023-11-17T18:12:20Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2015-12-18T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "XXI - Klavier", + "Sort Artist": "Rammstein", + "Sort Name": "Mein Herz brennt", + "Persistent ID": "70AD39DABF3EA1BC", + "Track Type": "Remote" + }, + { + "Track ID": "17836", + "Name": "Ohne dich", + "Artist": "Rammstein", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "Heavy Metal", + "Kind": "MPEG-4 video file", + "Size": "76911784", + "Total Time": "340480", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "2004", + "Date Modified": "2023-11-06T11:57:38Z", + "Date Added": "2023-11-06T11:57:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "2", + "Play Date": "3782379945", + "Play Date UTC": "2023-11-09T10:05:45Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2004-11-22T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Rammstein", + "Sort Name": "Ohne dich", + "Persistent ID": "E20A5EAEF06D789A", + "Track Type": "Remote" + }, + { + "Track ID": "17841", + "Name": "Seemann", + "Artist": "Rammstein", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "Heavy Metal", + "Kind": "MPEG-4 video file", + "Size": "57905828", + "Total Time": "256360", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": "1996", + "Date Modified": "2023-11-06T12:03:44Z", + "Date Added": "2023-11-06T12:03:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "1", + "Play Date": "3782127924", + "Play Date UTC": "2023-11-06T12:05:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1996-01-08T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "undef", + "Sort Artist": "Rammstein", + "Sort Name": "Seemann", + "Persistent ID": "6E1D0F2A50C22D70", + "Track Type": "Remote" + }, + { + "Track ID": "17846", + "Name": "Mutter", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Till Lindemann, Paul Landers, Doktor Christian Lorenz, Christoph Doom Schneider, Oliver Riedel & Richard Z. Kruspe", + "Album": "Mutter", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9686115", + "Total Time": "268600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "11", + "Year": "2001", + "Date Modified": "2023-11-09T10:57:34Z", + "Date Added": "2023-11-09T10:57:34Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "11", + "Play Date": "3783097167", + "Play Date UTC": "2023-11-17T17:19:27Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2001-04-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mutter", + "Sort Artist": "Rammstein", + "Sort Name": "Mutter", + "Persistent ID": "E72FC1635CD8CED0", + "Track Type": "Remote" + }, + { + "Track ID": "17851", + "Name": "Feuer frei", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Till Lindemann, Paul Landers, Doktor Christian Lorenz, Christoph Doom Schneider, Oliver Riedel & Richard Z. Kruspe", + "Album": "Mutter", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "7277373", + "Total Time": "188600", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "11", + "Year": "2001", + "Date Modified": "2023-11-09T10:57:37Z", + "Date Added": "2023-11-09T10:57:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3783096899", + "Play Date UTC": "2023-11-17T17:14:59Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2001-04-02T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mutter", + "Sort Artist": "Rammstein", + "Sort Name": "Feuer frei", + "Persistent ID": "14F220BDC897869E", + "Track Type": "Remote" + }, + { + "Track ID": "17856", + "Name": "Engel", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Richard Z. Kruspe, Till Lindemann, Paul Landers, Doktor Christian Lorenz, Christoph Doom Schneider & Oliver Riedel", + "Album": "Sehnsucht", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9990362", + "Total Time": "264267", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "1997", + "Date Modified": "2023-11-09T11:38:44Z", + "Date Added": "2023-11-09T11:38:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783714358", + "Play Date UTC": "2023-11-24T20:45:58Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1997-04-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sehnsucht", + "Sort Artist": "Rammstein", + "Sort Name": "Engel", + "Persistent ID": "176A2BC8166341CE", + "Track Type": "Remote" + }, + { + "Track ID": "17862", + "Name": "Rosenrot", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Christoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel", + "Album": "Rosenrot", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8432959", + "Total Time": "234707", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2005", + "Date Modified": "2023-11-09T11:55:35Z", + "Date Added": "2023-11-09T11:55:35Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783096444", + "Play Date UTC": "2023-11-17T17:07:24Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2005-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Rosenrot", + "Sort Artist": "Rammstein", + "Sort Name": "Rosenrot", + "Persistent ID": "0FED5AA4799A2E27", + "Track Type": "Remote" + }, + { + "Track ID": "17867", + "Name": "Reise, Reise", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Christoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel", + "Album": "Reise, Reise", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9497398", + "Total Time": "251147", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "11", + "Year": "2004", + "Date Modified": "2023-11-09T11:59:27Z", + "Date Added": "2023-11-09T11:59:27Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3783096210", + "Play Date UTC": "2023-11-17T17:03:30Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2004-09-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reise, Reise", + "Sort Artist": "Rammstein", + "Sort Name": "Reise, Reise", + "Persistent ID": "541CBF6AC9449E15", + "Track Type": "Remote" + }, + { + "Track ID": "17873", + "Name": "Mein Teil", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Christoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel", + "Album": "Reise, Reise", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "10093236", + "Total Time": "272413", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "11", + "Year": "2004", + "Date Modified": "2023-11-09T12:20:21Z", + "Date Added": "2023-11-09T12:20:21Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "10", + "Play Date": "3783095958", + "Play Date UTC": "2023-11-17T16:59:18Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2004-07-26T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reise, Reise", + "Sort Artist": "Rammstein", + "Sort Name": "Mein Teil", + "Persistent ID": "4828DC2FF8958DF7", + "Track Type": "Remote" + }, + { + "Track ID": "17878", + "Name": "Ohne dich", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Christoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel", + "Album": "Reise, Reise", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "9794796", + "Total Time": "271173", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2004", + "Date Modified": "2023-11-09T12:32:23Z", + "Date Added": "2023-11-09T12:32:23Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "12", + "Play Date": "3783576134", + "Play Date UTC": "2023-11-23T06:22:14Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2004-09-27T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reise, Reise", + "Sort Artist": "Rammstein", + "Sort Name": "Ohne dich", + "Persistent ID": "AD13FEC396961B6B", + "Track Type": "Remote" + }, + { + "Track ID": "17883", + "Name": "Keine Lust", + "Artist": "Rammstein", + "Album Artist": "Rammstein", + "Composer": "Christoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel", + "Album": "Reise, Reise", + "Genre": "Metal", + "Kind": "Apple Music AAC audio file", + "Size": "8409521", + "Total Time": "222933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2004", + "Date Modified": "2023-11-09T12:51:38Z", + "Date Added": "2023-11-09T12:51:38Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "13", + "Play Date": "3783095415", + "Play Date UTC": "2023-11-17T16:50:15Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2004-01-01T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Reise, Reise", + "Sort Artist": "Rammstein", + "Sort Name": "Keine Lust", + "Persistent ID": "2309D0549526AD7A", + "Track Type": "Remote" + }, + { + "Track ID": "17888", + "Name": "ICONIC (feat. Jaden Smith)", + "Artist": "Logic", + "Album Artist": "Logic", + "Composer": "Sir Robert Bryson Hall II, Arjun Ivatury & Melvin CHAOS Lewis", + "Album": "YSIV", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "10530747", + "Total Time": "298136", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "13", + "Track Count": "14", + "Year": "2018", + "Date Modified": "2023-11-13T07:26:49Z", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2018-09-28T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "YSIV", + "Sort Artist": "Logic", + "Sort Name": "ICONIC (feat. Jaden Smith)", + "Persistent ID": "91CD0D0685E3B8A1", + "Track Type": "Remote" + }, + { + "Track ID": "17989", + "Name": "Celebrity", + "Artist": "Russ", + "Album Artist": "Russ", + "Composer": "undef", + "Album": "Brain Dead", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6225928", + "Total Time": "175125", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2014", + "Date Modified": "2023-11-13T07:26:49Z", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2014-03-23T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": true, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Brain Dead", + "Sort Artist": "Russ", + "Sort Name": "Celebrity", + "Persistent ID": "E64C65B7B89575D4", + "Track Type": "Remote" + }, + { + "Track ID": "18025", + "Name": "The Last Drop", + "Artist": "Fr\u00e4ulein", + "Album Artist": "Fr\u00e4ulein", + "Composer": "undef", + "Album": "The Last Drop - Single", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "5692418", + "Total Time": "155074", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "2023-11-17T07:53:24Z", + "Date Added": "2023-11-17T07:53:24Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "9", + "Play Date": "3783452188", + "Play Date UTC": "2023-11-21T19:56:28Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-10-11T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Last Drop - Single", + "Sort Artist": "Fr\u00e4ulein", + "Sort Name": "Last Drop", + "Persistent ID": "AED542953411860B", + "Track Type": "Remote" + }, + { + "Track ID": "18032", + "Name": "Throne of Amber", + "Artist": "Harp", + "Album Artist": "Harp", + "Composer": "Tim Smith & Kathi Zung", + "Album": "Albion", + "Genre": "Folk", + "Kind": "Apple Music AAC audio file", + "Size": "8967621", + "Total Time": "250604", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "12", + "Year": "2023", + "Date Modified": "2023-11-17T10:12:44Z", + "Date Added": "2023-11-17T10:12:44Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "8", + "Play Date": "3783401585", + "Play Date UTC": "2023-11-21T05:53:05Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2023-11-07T08:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Albion", + "Sort Artist": "Harp", + "Sort Name": "Throne of Amber", + "Persistent ID": "D44DC79C2F76AA34", + "Track Type": "Remote" + }, + { + "Track ID": "18039", + "Name": "Amigo", + "Artist": "Lil Tecca", + "Album Artist": "Lil Tecca", + "Composer": "Tomas Martinez PKA Manso Beats, Joel Abraham PKA Jo L\u2019Z, Taz Taylor & Lil Tecca", + "Album": "We Love You Tecca", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5569731", + "Total Time": "150092", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "17", + "Year": "2019", + "Date Modified": "2023-11-19T15:44:37Z", + "Date Added": "2023-11-19T15:44:37Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": "3", + "Play Date": "3783401335", + "Play Date UTC": "2023-11-21T05:48:55Z", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2019-08-30T12:00:00Z", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "We Love You Tecca", + "Sort Artist": "Lil Tecca", + "Sort Name": "Amigo", + "Persistent ID": "89FB1CA8F6C52D5F", + "Track Type": "Remote" + }, + { + "Track ID": "18347", + "Name": "Wants Vs. Needs", + "Artist": "wifisfuneral", + "Album Artist": "wifisfuneral", + "Composer": "Isaih Rivera", + "Album": "Black Heart Revenge 2", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4518502", + "Total Time": "120000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "12", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Black Heart Revenge 2", + "Sort Artist": "wifisfuneral", + "Sort Name": "Wants Vs. Needs", + "Persistent ID": "E96F5811C4877B88", + "Track Type": "Remote" + }, + { + "Track ID": "18353", + "Name": "Everything You Want", + "Artist": "Junior Prom", + "Album Artist": "Junior Prom", + "Composer": "undef", + "Album": "Everything You Want - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7681312", + "Total Time": "207800", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Everything You Want - Single", + "Sort Artist": "Junior Prom", + "Sort Name": "Everything You Want", + "Persistent ID": "2A9128AC31B8A9B7", + "Track Type": "Remote" + }, + { + "Track ID": "18360", + "Name": "Backwards", + "Artist": "bbno$ & lentra", + "Album Artist": "bbno$", + "Composer": "Alexander Gumuchian & Garrett Hartnell", + "Album": "Good Luck Have Fun", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5711001", + "Total Time": "156000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "13", + "Year": "2020", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Good Luck Have Fun", + "Sort Artist": "bbno$ & lentra", + "Sort Name": "Backwards", + "Persistent ID": "D7E653E159BFECE6", + "Track Type": "Remote" + }, + { + "Track ID": "18366", + "Name": "Ballerina Out of Control", + "Artist": "The Laughing Chimes", + "Album Artist": "The Laughing Chimes", + "Composer": "David Schelzel", + "Album": "A Promise To Keep - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8956102", + "Total Time": "230909", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Promise To Keep - Single", + "Sort Artist": "Laughing Chimes", + "Sort Name": "Laughing Chimes", + "Persistent ID": "Ballerina Out of Control", + "Track Type": "8646C953FD84BDA7" + }, + { + "Track ID": "18373", + "Name": "In\u00e9s", + "Artist": "Caifanes", + "Album Artist": "Caifanes", + "Composer": "Sa\u00fal Hern\u00e1ndez", + "Album": "In\u00e9s - Single", + "Genre": "Rock y Alternativo", + "Kind": "Apple Music AAC audio file", + "Size": "9230957", + "Total Time": "250372", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "In\u00e9s - Single", + "Sort Artist": "Caifanes", + "Sort Name": "In\u00e9s", + "Persistent ID": "9FD9D69DC09CBA39", + "Track Type": "Remote" + }, + { + "Track ID": "18380", + "Name": "Softly Spoken", + "Artist": "Glimlip, azayaka & Soul Food Horns", + "Album Artist": "Glimlip, azayaka & Soul Food Horns", + "Composer": "Thomas Philip Lieftinck, Louk Cox, No\u00e9 Mina & Jacob Henry Feingold", + "Album": "Softly Spoken - Single", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "5179480", + "Total Time": "138314", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Softly Spoken - Single", + "Sort Artist": "Glimlip, azayaka & Soul Food Horns", + "Sort Name": "Softly Spoken", + "Persistent ID": "D459F91E6B1F857B", + "Track Type": "Remote" + }, + { + "Track ID": "18387", + "Name": "Fold It Twice", + "Artist": "Yuri Yuri", + "Album Artist": "Yuri Yuri", + "Composer": "Yuri Yuri", + "Album": "Fold It Twice - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4830637", + "Total Time": "129083", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Fold It Twice - Single", + "Sort Artist": "Yuri Yuri", + "Sort Name": "Fold It Twice", + "Persistent ID": "5A97FB89204EEC56", + "Track Type": "Remote" + }, + { + "Track ID": "18394", + "Name": "need/give me", + "Artist": "cehryl", + "Album Artist": "cehryl", + "Composer": "Cheryl Cheuk Wing Chow", + "Album": "need/give me - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8130888", + "Total Time": "201533", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "need/give me - Single", + "Sort Artist": "cehryl", + "Sort Name": "need/give me", + "Persistent ID": "44955E3BA0ADCC2F", + "Track Type": "Remote" + }, + { + "Track ID": "18401", + "Name": "An Idea", + "Artist": "Saunder Jurriaans", + "Album Artist": "Saunder Jurriaans", + "Composer": "Alexander Jurriaans", + "Album": "Phantom Limb", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "10269748", + "Total Time": "289920", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Phantom Limb", + "Sort Artist": "Saunder Jurriaans", + "Sort Name": "Idea", + "Persistent ID": "8B0FA6499E2E2B47", + "Track Type": "Remote" + }, + { + "Track ID": "18408", + "Name": "Lost It To Trying", + "Artist": "Son Lux", + "Album Artist": "Son Lux", + "Composer": "Ryan Lott", + "Album": "Lanterns (Special Edition)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "10727816", + "Total Time": "282587", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "2", + "Track Count": "9", + "Year": "2013", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lanterns (Special Edition)", + "Sort Artist": "Son Lux", + "Sort Name": "Lost It To Trying", + "Persistent ID": "4AC075CDECAA517D", + "Track Type": "Remote" + }, + { + "Track ID": "18414", + "Name": "Wer sch\u00f6n sein will muss leiden", + "Artist": "OOMPH!", + "Album Artist": "OOMPH!", + "Composer": "Dero, CRAP & Flux", + "Album": "Monster", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "6899579", + "Total Time": "183973", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "14", + "Year": "2008", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Monster", + "Sort Artist": "OOMPH!", + "Sort Name": "Wer sch\u00f6n sein will muss leiden", + "Persistent ID": "84FCA3FCC5D1EB15", + "Track Type": "Remote" + }, + { + "Track ID": "18421", + "Name": "the hand that feeds", + "Artist": "abracadabra", + "Album Artist": "abracadabra", + "Composer": "undef", + "Album": "the hand that feeds / swim (extended dub mix) - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8133695", + "Total Time": "228138", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "hand that feeds / swim (extended dub mix) - Single", + "Sort Artist": "abracadabra", + "Sort Name": "hand that feeds", + "Persistent ID": "6192311F1FF601C9", + "Track Type": "Remote" + }, + { + "Track ID": "18428", + "Name": "Haunted", + "Artist": "Paklite", + "Album Artist": "Paklite", + "Composer": "Collin Wayne Stevic", + "Album": "After Dark - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "5070047", + "Total Time": "129882", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "After Dark - Single", + "Sort Artist": "Paklite", + "Sort Name": "Haunted", + "Persistent ID": "660676DAEE0B5256", + "Track Type": "Remote" + }, + { + "Track ID": "18435", + "Name": "We Are Here To Make You Feel", + "Artist": "SPARKLING", + "Album Artist": "SPARKLING", + "Composer": "Levin Krasel, Leon Krasel & Luca Sch\u00fcten", + "Album": "We Are Here To Make You Feel", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "7351749", + "Total Time": "200973", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "9", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "We Are Here To Make You Feel", + "Sort Artist": "SPARKLING", + "Sort Name": "We Are Here To Make You Feel", + "Persistent ID": "87E32C356261B784", + "Track Type": "Remote" + }, + { + "Track ID": "18442", + "Name": "Hfcs", + "Artist": "PACKS", + "Album Artist": "PACKS", + "Composer": "Madeline Link, Dexter Nash, Noah O'Neil & Shane Hooper", + "Album": "Melt the Honey", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5223573", + "Total Time": "142883", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "11", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Melt the Honey", + "Sort Artist": "PACKS", + "Sort Name": "Hfcs", + "Persistent ID": "3DF6EAEE4FEC835A", + "Track Type": "Remote" + }, + { + "Track ID": "18449", + "Name": "Subtle Act", + "Artist": "Dani Catal\u00e1, MrAnthony & Odd Panda", + "Album Artist": "Dani Catal\u00e1, MrAnthony & Odd Panda", + "Composer": "Dani Catal\u00e1, MrAnthony & Odd Panda", + "Album": "Subtle Act - Single", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "5214131", + "Total Time": "138924", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Subtle Act - Single", + "Sort Artist": "Dani Catal\u00e1, MrAnthony & Odd Panda", + "Sort Name": "Subtle Act", + "Persistent ID": "2E95FFB38986E57E", + "Track Type": "Remote" + }, + { + "Track ID": "18456", + "Name": "Juveniles (feat. YBN Nahmir)", + "Artist": "wifisfuneral", + "Album Artist": "wifisfuneral", + "Composer": "Isaih Rivera, Nick Simmons, Orlando Tucker, Dwayne Carter & Byron O Thomas", + "Album": "Ethernet", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5650894", + "Total Time": "158000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "12", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ethernet", + "Sort Artist": "wifisfuneral", + "Sort Name": "Juveniles (feat. YBN Nahmir)", + "Persistent ID": "7352FFB543F1B409", + "Track Type": "Remote" + }, + { + "Track ID": "18462", + "Name": "Country Girl", + "Artist": "Soupbox & Run Wallace", + "Album Artist": "Soupbox & Run Wallace", + "Composer": "Robert Funk & Valentin Keil", + "Album": "Highs, Lows & Antidotes", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5563155", + "Total Time": "151278", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "11", + "Track Count": "16", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Highs, Lows & Antidotes", + "Sort Artist": "Soupbox & Run Wallace", + "Sort Name": "Country Girl", + "Persistent ID": "FE5928013AFDB3F2", + "Track Type": "Remote" + }, + { + "Track ID": "18469", + "Name": "Easier", + "Artist": "Mansionair", + "Album Artist": "Various Artists", + "Composer": "Mansionair", + "Album": "More To Life, Vol. 1 by Sam Golbach", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9514120", + "Total Time": "272681", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "20", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "More To Life, Vol. 1 by Sam Golbach", + "Sort Artist": "Mansionair", + "Sort Name": "Easier", + "Persistent ID": "ACEBB66909E026F6", + "Track Type": "Remote" + }, + { + "Track ID": "18475", + "Name": "Mother Nature", + "Artist": "MGMT", + "Album Artist": "MGMT", + "Composer": "Ben Goldwasser & Brian Joseph Burton", + "Album": "Loss Of Life", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "9289143", + "Total Time": "236427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Loss Of Life", + "Sort Artist": "MGMT", + "Sort Name": "Mother Nature", + "Persistent ID": "7A6FBA79D89B5536", + "Track Type": "Remote" + }, + { + "Track ID": "18481", + "Name": "Indica", + "Artist": "Lazlow & Django Del Mar", + "Album Artist": "Lazlow & Django Del Mar", + "Composer": "Adam Laszlo & Johannes Weissschnur", + "Album": "Indica - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4722413", + "Total Time": "126234", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Indica - Single", + "Sort Artist": "Lazlow & Django Del Mar", + "Sort Name": "Indica", + "Persistent ID": "7DB61A5601866647", + "Track Type": "Remote" + }, + { + "Track ID": "18488", + "Name": "Baby Girl", + "Artist": "21 Savage", + "Album Artist": "21 Savage", + "Composer": "Shayaa Joseph & Pi\u2019erre Bourne", + "Album": "Issa Album", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6087004", + "Total Time": "169093", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Issa Album", + "Sort Artist": "21 Savage", + "Sort Name": "Baby Girl", + "Persistent ID": "1321E5860CCC7A7E", + "Track Type": "Remote" + }, + { + "Track ID": "18493", + "Name": "Shrimp Tempura", + "Artist": "Sharks Deli", + "Album Artist": "Sharks Deli", + "Composer": "andrew ho", + "Album": "Memories Point", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5124290", + "Total Time": "140471", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "8", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Memories Point", + "Sort Artist": "Sharks Deli", + "Sort Name": "Shrimp Tempura", + "Persistent ID": "504310FDD0B9A434", + "Track Type": "Remote" + }, + { + "Track ID": "18498", + "Name": "Grief", + "Artist": "Josh A", + "Album Artist": "Josh A", + "Composer": "undef", + "Album": "The Oldies", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7250069", + "Total Time": "202841", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "27", + "Track Count": "28", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Oldies", + "Sort Artist": "Josh A", + "Sort Name": "Grief", + "Persistent ID": "E9F890EFD9B71F72", + "Track Type": "Remote" + }, + { + "Track ID": "18504", + "Name": "Dockside Daydream", + "Artist": "Wide Open Skies", + "Album Artist": "Wide Open Skies", + "Composer": "Luc Veermeer & Greg Abrahams", + "Album": "The Grand Bay of Begonia - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4610771", + "Total Time": "121000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Grand Bay of Begonia - Single", + "Sort Artist": "Wide Open Skies", + "Sort Name": "Dockside Daydream", + "Persistent ID": "A361FD824A8A5D7B", + "Track Type": "Remote" + }, + { + "Track ID": "18511", + "Name": "Sunday Morning", + "Artist": "dennisivnvc & Hoffy Beats", + "Album Artist": "dennisivnvc & Hoffy Beats", + "Composer": "dennisivnvc & Hoffy Beats", + "Album": "Sunday Morning - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5360252", + "Total Time": "148052", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunday Morning - Single", + "Sort Artist": "dennisivnvc & Hoffy Beats", + "Sort Name": "Sunday Morning", + "Persistent ID": "B28C61DBED160DC5", + "Track Type": "Remote" + }, + { + "Track ID": "18518", + "Name": "Hotel Corazon", + "Artist": "Dog Days", + "Album Artist": "Dog Days", + "Composer": "Adam Redmond & Omri Dahan", + "Album": "Dog Days - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5459185", + "Total Time": "152229", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Dog Days - EP", + "Sort Artist": "Dog Days", + "Sort Name": "Hotel Corazon", + "Persistent ID": "6B66B4DA31BE1577", + "Track Type": "Remote" + }, + { + "Track ID": "18525", + "Name": "why dont we go", + "Artist": "UMI", + "Album Artist": "UMI", + "Composer": "UMI & Vron", + "Album": "why dont we go - Single", + "Genre": "R&B/Soul", + "Kind": "Apple Music AAC audio file", + "Size": "6132751", + "Total Time": "166509", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "why dont we go - Single", + "Sort Artist": "UMI", + "Sort Name": "why dont we go", + "Persistent ID": "06CD08CBF122EC72", + "Track Type": "Remote" + }, + { + "Track ID": "18532", + "Name": "let go", + "Artist": "Clap Cotton", + "Album Artist": "Clap Cotton", + "Composer": "Hans Sch\u00f6tz", + "Album": "let go - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5692339", + "Total Time": "154032", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "let go - Single", + "Sort Artist": "Clap Cotton", + "Sort Name": "let go", + "Persistent ID": "68D30D124B3E52A9", + "Track Type": "Remote" + }, + { + "Track ID": "18538", + "Name": "First Sip", + "Artist": "Delphinium", + "Album Artist": "Delphinium", + "Composer": "Lukas Nathan & Delphinium", + "Album": "First Sip - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "6341494", + "Total Time": "174336", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "First Sip - Single", + "Sort Artist": "Delphinium", + "Sort Name": "First Sip", + "Persistent ID": "02FD6C2C5218513A", + "Track Type": "Remote" + }, + { + "Track ID": "18545", + "Name": "Electric Blue", + "Artist": "Arcade Fire", + "Album Artist": "Arcade Fire", + "Composer": "Edwin Butler, Jeremy Gara, Regine Chassagne, Richard Reed Parry, Tim Kingsbury & William Butler", + "Album": "Everything Now", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8880173", + "Total Time": "242373", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "13", + "Year": "2017", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Everything Now", + "Sort Artist": "Arcade Fire", + "Sort Name": "Electric Blue", + "Persistent ID": "8E91DE7F623511F8", + "Track Type": "Remote" + }, + { + "Track ID": "18551", + "Name": "Downtown Jazz", + "Artist": "Worldtraveller", + "Album Artist": "Worldtraveller", + "Composer": "Ingolf Schapke", + "Album": "Downtown Jazz - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "3635084", + "Total Time": "92571", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Downtown Jazz - Single", + "Sort Artist": "Worldtraveller", + "Sort Name": "Downtown Jazz", + "Persistent ID": "10FF16B70F68FE5B", + "Track Type": "Remote" + }, + { + "Track ID": "18558", + "Name": "Ur Purple Eyes", + "Artist": "hey, nothing", + "Album Artist": "hey, nothing", + "Composer": "Tyler Mabry & Harlow Phillips", + "Album": "We're Starting to Look Like Each Other", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "12162628", + "Total Time": "349386", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "We're Starting to Look Like Each Other", + "Sort Artist": "hey, nothing", + "Sort Name": "Ur Purple Eyes", + "Persistent ID": "1AF4EEB19C724BFE", + "Track Type": "Remote" + }, + { + "Track ID": "18565", + "Name": "Left Hand Free", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Gus Unger-Hamilton, Joe Newman & Thom Green", + "Album": "This Is All Yours", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6551111", + "Total Time": "173631", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "14", + "Year": "2014", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": "100", + "Album Rating Computed": true, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "This Is All Yours", + "Sort Artist": "alt-J", + "Sort Name": "Left Hand Free", + "Persistent ID": "20E25E5BED1E0979", + "Track Type": "Remote" + }, + { + "Track ID": "18570", + "Name": "Ski Mask (feat. Los & Sahtyre)", + "Artist": "Atlantic Haze", + "Album Artist": "Atlantic Haze", + "Composer": "Benjamin Drees, Brian Moon, Cassidy Howell & Atlantic Haze", + "Album": "Ski Mask (feat. LOS MOONWALKER & Sahtyre) - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6026716", + "Total Time": "162500", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2016", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ski Mask (feat. LOS MOONWALKER & Sahtyre) - Single", + "Sort Artist": "Atlantic Haze", + "Sort Name": "Ski Mask (feat. Los & Sahtyre)", + "Persistent ID": "A4EB7C47CCCFA8D0", + "Track Type": "Remote" + }, + { + "Track ID": "18576", + "Name": "Undo Last Move", + "Artist": "State Artefact", + "Album Artist": "State Artefact", + "Composer": "Joe Knight & State Artefact", + "Album": "Undo Last Move - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5041771", + "Total Time": "132439", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Undo Last Move - Single", + "Sort Artist": "State Artefact", + "Sort Name": "Undo Last Move", + "Persistent ID": "8FF5D2CE3E583E75", + "Track Type": "Remote" + }, + { + "Track ID": "18583", + "Name": "aauuu!", + "Artist": "LOUSELV", + "Album Artist": "LOUSELV & Rhakim Ali", + "Composer": "Leevi Lamade", + "Album": "arctic monkeys / aauuu! - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4096348", + "Total Time": "106162", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "arctic monkeys / aauuu! - Single", + "Sort Artist": "LOUSELV", + "Sort Name": "aauuu!", + "Persistent ID": "BC645D34D6D27B19", + "Track Type": "Remote" + }, + { + "Track ID": "18590", + "Name": "Call It A Day", + "Artist": "DAVI JUNO", + "Album Artist": "DAVI JUNO", + "Composer": "Francesco Grieco & David LaFlamme", + "Album": "Double Dealer / Call It A Day - Single", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4361310", + "Total Time": "108300", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": -1, + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Double Dealer / Call It A Day - Single", + "Sort Artist": "DAVI JUNO", + "Sort Name": "Call It A Day", + "Persistent ID": "83A121E3B4404D26", + "Track Type": "Remote" + }, + { + "Track ID": "18596", + "Name": "Risk", + "Artist": "Deftones", + "Album Artist": "Deftones", + "Composer": "Abe Cunningham, Chino Moreno, Frank Delgado, Sergio Vega & Stephen Carpenter", + "Album": "Diamond Eyes (Deluxe Edition)", + "Genre": "Hard Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8299005", + "Total Time": "218827", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "14", + "Year": "2010", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Diamond Eyes (Deluxe Edition)", + "Sort Artist": "Deftones", + "Sort Name": "Risk", + "Persistent ID": "BFE2D800E3D8CA29", + "Track Type": "Remote" + }, + { + "Track ID": "18603", + "Name": "Really Hurts", + "Artist": "HATAMITSUNAMI", + "Album Artist": "HATAMITSUNAMI", + "Composer": "SIAMAK HATAMI", + "Album": "The Alchemist - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5319748", + "Total Time": "142674", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "4", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Alchemist - EP", + "Sort Artist": "HATAMITSUNAMI", + "Sort Name": "Really Hurts", + "Persistent ID": "D3BC2363773C0311", + "Track Type": "Remote" + }, + { + "Track ID": "18609", + "Name": "Bliss", + "Artist": "Naptunes & Ornithology", + "Album Artist": "Naptunes", + "Composer": "Ren\u00e9 Fl\u00e4chsenhaar, Shaan Chhadva & Christoph Bauss", + "Album": "Naptunes - EP", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "4899599", + "Total Time": "118549", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Naptunes - EP", + "Sort Artist": "Naptunes & Ornithology", + "Sort Name": "Bliss", + "Persistent ID": "D896945725F2C23E", + "Track Type": "Remote" + }, + { + "Track ID": "18616", + "Name": "demons are quiet", + "Artist": "Farhot", + "Album Artist": "Farhot", + "Composer": "Farhad Samadzada", + "Album": "demons are quiet - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4158195", + "Total Time": "107879", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "demons are quiet - Single", + "Sort Artist": "Farhot", + "Sort Name": "demons are quiet", + "Persistent ID": "E25427E1054F9FA5", + "Track Type": "Remote" + }, + { + "Track ID": "18622", + "Name": "Water Falls", + "Artist": "xander. & S\u00f8ren S\u00f8strom", + "Album Artist": "xander. & S\u00f8ren S\u00f8strom", + "Composer": "Alexander Papamitrou & Elijah Fox-Peck", + "Album": "All In Time - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "7580880", + "Total Time": "210732", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "All In Time - Single", + "Sort Artist": "xander. & S\u00f8ren S\u00f8strom", + "Sort Name": "Water Falls", + "Persistent ID": "E879DF7CCA56782E", + "Track Type": "Remote" + }, + { + "Track ID": "18628", + "Name": "Guava Tree", + "Artist": "sloh rou", + "Album Artist": "sloh rou", + "Composer": "Nikos Heidinger", + "Album": "Ocean Cove Estate - EP", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "5085001", + "Total Time": "138667", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ocean Cove Estate - EP", + "Sort Artist": "sloh rou", + "Sort Name": "Guava Tree", + "Persistent ID": "B7E9A6B0F9CD102A", + "Track Type": "Remote" + }, + { + "Track ID": "18634", + "Name": "Rise n Grind", + "Artist": "Younger Hunger", + "Album Artist": "Younger Hunger", + "Composer": "Tony Davia", + "Album": "Cyborg Tactics", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5853383", + "Total Time": "160000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "11", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Cyborg Tactics", + "Sort Artist": "Younger Hunger", + "Sort Name": "Rise n Grind", + "Persistent ID": "BAE135142CE308CB", + "Track Type": "Remote" + }, + { + "Track ID": "18641", + "Name": "Hurt", + "Artist": "Oliver Tree", + "Album Artist": "Oliver Tree", + "Composer": "Ethan Snoreck & Oliver Tree", + "Album": "Ugly is Beautiful: Shorter, Thicker & Uglier (Deluxe)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5409138", + "Total Time": "145559", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "19", + "Track Count": "21", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ugly is Beautiful: Shorter, Thicker & Uglier (Deluxe)", + "Sort Artist": "Oliver Tree", + "Sort Name": "Hurt", + "Persistent ID": "1B337FCF80CC7430", + "Track Type": "Remote" + }, + { + "Track ID": "18647", + "Name": "Sofa King", + "Artist": "Royel Otis", + "Album Artist": "Royel Otis", + "Composer": "Otis Pavlovic, Chris Collins & Royel Maddell", + "Album": "Sofa King - Single", + "Genre": "Indie Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7038825", + "Total Time": "196317", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sofa King - Single", + "Sort Artist": "Royel Otis", + "Sort Name": "Sofa King", + "Persistent ID": "29C346B17E46BAA0", + "Track Type": "Remote" + }, + { + "Track ID": "18654", + "Name": "Nightmare", + "Artist": "Halsey", + "Album Artist": "Halsey", + "Composer": "Halsey, benny blanco, Magnus August H\u00f8iberg, Happy Perez, Trevor Horn, Martin Kierszenbaum, Sergio Galoyan, Elena Kiper, Valerij Valentinovich Polienko & Ivan Nikolaevich Shapovalov", + "Album": "If I Can\u2019t Have Love, I Want Power (Extended)", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8267238", + "Total Time": "231999", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "14", + "Track Count": "16", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "If I Can\u2019t Have Love, I Want Power (Extended)", + "Sort Artist": "Halsey", + "Sort Name": "Nightmare", + "Persistent ID": "881C7AD79C0C3428", + "Track Type": "Remote" + }, + { + "Track ID": "18660", + "Name": "All My Thoughts (Loft Version)", + "Artist": "Free Range", + "Album Artist": "Free Range", + "Composer": "Sofia Jensen", + "Album": "Loft Sessions - EP", + "Genre": "Indie Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9460356", + "Total Time": "265525", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Loft Sessions - EP", + "Sort Artist": "Free Range", + "Sort Name": "All My Thoughts (Loft Version)", + "Persistent ID": "D8EBB9A8AE378324", + "Track Type": "Remote" + }, + { + "Track ID": "18667", + "Name": "Colibri", + "Artist": "G Mills", + "Album Artist": "G Mills", + "Composer": "Gabriel Millman", + "Album": "Colibri - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5746277", + "Total Time": "147573", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Colibri - Single", + "Sort Artist": "G Mills", + "Sort Name": "Colibri", + "Persistent ID": "2CDEA01535F0DC77", + "Track Type": "Remote" + }, + { + "Track ID": "18674", + "Name": "Green Cascade", + "Artist": "Jobii", + "Album Artist": "Jobii", + "Composer": "Gabriel Millman", + "Album": "Green Cascade - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5737092", + "Total Time": "155456", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "2", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Green Cascade - Single", + "Sort Artist": "Jobii", + "Sort Name": "Green Cascade", + "Persistent ID": "6E8F5B9E7D3E0A6D", + "Track Type": "Remote" + }, + { + "Track ID": "18680", + "Name": "Seasons", + "Artist": "M.I Hakone", + "Album Artist": "M.I Hakone", + "Composer": "Michaeli Marcus & M.I Hakone", + "Album": "Seasons - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4628343", + "Total Time": "124337", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": true, + "Artwork Count": "1", + "Sort Album": "Seasons - Single", + "Sort Artist": "M.I Hakone", + "Sort Name": "Seasons", + "Persistent ID": "F73C5A60AA0EC067", + "Track Type": "Remote" + }, + { + "Track ID": "18687", + "Name": "Girlfriend", + "Artist": "Canty", + "Album Artist": "Canty", + "Composer": "James Canty", + "Album": "Boyfriend / Girlfriend - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8032017", + "Total Time": "225088", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Boyfriend / Girlfriend - Single", + "Sort Artist": "Canty", + "Sort Name": "Girlfriend", + "Persistent ID": "77DD010AF4C3EE75", + "Track Type": "Remote" + }, + { + "Track ID": "18694", + "Name": "ALL THAT U WANT", + "Artist": "Unusual Demont", + "Album Artist": "Unusual Demont", + "Composer": "Unusual Demont, Dee Lilly & Jonah Feingold", + "Album": "ALL THAT U WANT - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "5275814", + "Total Time": "140241", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "ALL THAT U WANT - Single", + "Sort Artist": "Unusual Demont", + "Sort Name": "ALL THAT U WANT", + "Persistent ID": "FC5B698335588382", + "Track Type": "Remote" + }, + { + "Track ID": "18700", + "Name": "August", + "Artist": "Cindy", + "Album Artist": "Cindy", + "Composer": "Karina Gil", + "Album": "Standard Candle", + "Genre": "Singer/Songwriter", + "Kind": "Apple Music AAC audio file", + "Size": "5705139", + "Total Time": "157051", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "8", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Standard Candle", + "Sort Artist": "Cindy", + "Sort Name": "August", + "Persistent ID": "D82E1E569C55794F", + "Track Type": "Remote" + }, + { + "Track ID": "18707", + "Name": "Je pars", + "Artist": "VONFELT", + "Album Artist": "VONFELT", + "Composer": "undef", + "Album": "VONFELT", + "Genre": "French Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7476373", + "Total Time": "210000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "8", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "VONFELT", + "Sort Artist": "VONFELT", + "Sort Name": "Je pars", + "Persistent ID": "71F7B019B4F68932", + "Track Type": "Remote" + }, + { + "Track ID": "18714", + "Name": "Landmines", + "Artist": "Sum 41", + "Album Artist": "Sum 41", + "Composer": "Deryck Whibley", + "Album": "Landmines - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6404638", + "Total Time": "175768", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Landmines - Single", + "Sort Artist": "Sum 41", + "Sort Name": "Landmines", + "Persistent ID": "81AE4716ED77578D", + "Track Type": "Remote" + }, + { + "Track ID": "18721", + "Name": "Close-Up", + "Artist": "Mozzie", + "Album Artist": "Mozzie", + "Composer": "Arseny Troshin", + "Album": "Close-Up - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5876016", + "Total Time": "160000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Close-Up - Single", + "Sort Artist": "Mozzie", + "Sort Name": "Close-Up", + "Persistent ID": "DC4CDCC4B4A2A196", + "Track Type": "Remote" + }, + { + "Track ID": "18727", + "Name": "Stew", + "Artist": "Iona", + "Album Artist": "Iona", + "Composer": "Iona", + "Album": "Stew - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5456598", + "Total Time": "149333", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Stew - Single", + "Sort Artist": "Iona", + "Sort Name": "Stew", + "Persistent ID": "1EEF99B3EDFF6504", + "Track Type": "Remote" + }, + { + "Track ID": "18734", + "Name": "Paradiso", + "Artist": "Enluv, 9ICK & Soul Food Horns", + "Album Artist": "Enluv, 9ICK & Soul Food Horns", + "Composer": "Brandon Hartt, Nicolas Stephensen, Louk Cox & No\u00e9 Mina", + "Album": "Paradiso - Single", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "6153848", + "Total Time": "165714", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Paradiso - Single", + "Sort Artist": "Enluv, 9ICK & Soul Food Horns", + "Sort Name": "Paradiso", + "Persistent ID": "52F42F71E1BC2CB6", + "Track Type": "Remote" + }, + { + "Track ID": "18741", + "Name": "All My Friends", + "Artist": "Dylan Kelly", + "Album Artist": "Dylan Kelly", + "Composer": "Dylan Kelly", + "Album": "All My Friends - Single", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7040389", + "Total Time": "195933", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "All My Friends - Single", + "Sort Artist": "Dylan Kelly", + "Sort Name": "All My Friends", + "Persistent ID": "846F867E3C9AEF16", + "Track Type": "Remote" + }, + { + "Track ID": "18746", + "Name": "biking", + "Artist": "Loop Schrauber", + "Album Artist": "Loop Schrauber", + "Composer": "Maximilian Pauker", + "Album": "biking - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5231871", + "Total Time": "141818", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "biking - Single", + "Sort Artist": "Loop Schrauber", + "Sort Name": "biking", + "Persistent ID": "39AD245070866C75", + "Track Type": "Remote" + }, + { + "Track ID": "18752", + "Name": "MITTE", + "Artist": "KABEAUSH\u00c9", + "Album Artist": "KABEAUSH\u00c9", + "Composer": "Kabochi Gitau", + "Album": "HOLD ON TO DEER LIFE, THERE'S A BLCAK BOY BEHIND YOU!", + "Genre": "Electronic", + "Kind": "Apple Music AAC audio file", + "Size": "6212241", + "Total Time": "172087", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "HOLD ON TO DEER LIFE, THERE'S A BLCAK BOY BEHIND YOU!", + "Sort Artist": "KABEAUSH\u00c9", + "Sort Name": "MITTE", + "Persistent ID": "27C2D036D60C0549", + "Track Type": "Remote" + }, + { + "Track ID": "18759", + "Name": "The Seeds You Plant Today", + "Artist": "DYVN", + "Album Artist": "DYVN", + "Composer": "David Nilles", + "Album": "The Seeds You Plant Today - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4402716", + "Total Time": "106625", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Seeds You Plant Today - Single", + "Sort Artist": "DYVN", + "Sort Name": "Seeds You Plant Today", + "Persistent ID": "765ABC52535AECF2", + "Track Type": "Remote" + }, + { + "Track ID": "18765", + "Name": "AUSTRALIA", + "Artist": "Boobie Lootaveli", + "Album Artist": "Boobie Lootaveli", + "Composer": "Habib Suz", + "Album": "LOOTAVELI", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5270842", + "Total Time": "141429", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "10", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "LOOTAVELI", + "Sort Artist": "Boobie Lootaveli", + "Sort Name": "AUSTRALIA", + "Persistent ID": "0F4073611BBAF71B", + "Track Type": "Remote" + }, + { + "Track ID": "18772", + "Name": "Your Majesty", + "Artist": "Ben Jammin' Beats", + "Album Artist": "Ben Jammin' Beats", + "Composer": "Benjamin Kath", + "Album": "Your Majesty - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5254914", + "Total Time": "135789", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Your Majesty - Single", + "Sort Artist": "Ben Jammin' Beats", + "Sort Name": "Your Majesty", + "Persistent ID": "0AF042C1FD14608E", + "Track Type": "Remote" + }, + { + "Track ID": "18779", + "Name": "I'm Going (feat. Ben West)", + "Artist": "Fredo Santana", + "Album Artist": "Fredo Santana", + "Composer": "Fredo Santana", + "Album": "Ain't No Money Like Trap Money (Vol. 1)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "8692058", + "Total Time": "254545", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "15", + "Year": "2015", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ain't No Money Like Trap Money (Vol. 1)", + "Sort Artist": "Fredo Santana", + "Sort Name": "I'm Going (feat. Ben West)", + "Persistent ID": "4D6DFAC71E7AB948", + "Track Type": "Remote" + }, + { + "Track ID": "18785", + "Name": "About You", + "Artist": "The 1975", + "Album Artist": "The 1975", + "Composer": "Matthew Healy & George Daniel", + "Album": "Being Funny In a Foreign Language", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "12003086", + "Total Time": "326491", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "10", + "Track Count": "11", + "Year": "2022", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Being Funny In a Foreign Language", + "Sort Artist": "1975", + "Sort Name": "1975", + "Persistent ID": "About You", + "Track Type": "35580AD0DFAB88F8" + }, + { + "Track ID": "18792", + "Name": "Tashmere Anthill", + "Artist": "Graham Hunt", + "Album Artist": "Graham Hunt", + "Composer": "Graham Hunt", + "Album": "Tashmere Anthill - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8837348", + "Total Time": "246613", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Tashmere Anthill - Single", + "Sort Artist": "Graham Hunt", + "Sort Name": "Tashmere Anthill", + "Persistent ID": "C5F63710D7157577", + "Track Type": "Remote" + }, + { + "Track ID": "18799", + "Name": "January 18th", + "Artist": "Beirut", + "Album Artist": "Beirut", + "Composer": "Zachary F. Condon", + "Album": "Hadsel", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8460919", + "Total Time": "221981", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Hadsel", + "Sort Artist": "Beirut", + "Sort Name": "January 18th", + "Persistent ID": "716DB01F51D9B1E1", + "Track Type": "Remote" + }, + { + "Track ID": "18806", + "Name": "Jukebox", + "Artist": "Ad\u00e9", + "Album Artist": "Ad\u00e9", + "Composer": "Adelaide Chabannes", + "Album": "Et alors ???", + "Genre": "French Pop", + "Kind": "Apple Music AAC audio file", + "Size": "7079027", + "Total Time": "194427", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "17", + "Track Count": "18", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Et alors ???", + "Sort Artist": "Ad\u00e9", + "Sort Name": "Jukebox", + "Persistent ID": "FF5F6F9253D5B5E9", + "Track Type": "Remote" + }, + { + "Track ID": "18813", + "Name": "Breezeblocks", + "Artist": "alt-J", + "Album Artist": "alt-J", + "Composer": "Charlie Andrew, Gus Unger-Hamilton, Gwilym Sainsbury, Joe Newman & Thom Green", + "Album": "Breezeblocks - EP", + "Genre": "Rock", + "Kind": "Apple Music AAC audio file", + "Size": "8205388", + "Total Time": "227080", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "4", + "Year": "1975", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "1", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Breezeblocks - EP", + "Sort Artist": "alt-J", + "Sort Name": "Breezeblocks", + "Persistent ID": "2C9A5A301C8B1496", + "Track Type": "Remote" + }, + { + "Track ID": "18819", + "Name": "Things That Stop You Dreaming (Anniversary Edition)", + "Artist": "Passenger", + "Album Artist": "Passenger", + "Composer": "Michael Rosenberg", + "Album": "All the Little Lights (Anniversary Edition)", + "Genre": "Traditional Folk", + "Kind": "Apple Music AAC audio file", + "Size": "9244499", + "Total Time": "247880", + "Disc Number": "1", + "Disc Count": "2", + "Track Number": "1", + "Track Count": "11", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "All the Little Lights (Anniversary Edition)", + "Sort Artist": "Passenger", + "Sort Name": "Things That Stop You Dreaming (Anniversary Edition)", + "Persistent ID": "780D1B75D6F1D1AD", + "Track Type": "Remote" + }, + { + "Track ID": "18826", + "Name": "Como", + "Artist": "SamuW & Kimm\u00f8", + "Album Artist": "SamuW & Kimm\u00f8", + "Composer": "SamuW & Kimm\u00f8", + "Album": "Como - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4722337", + "Total Time": "125581", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Como - Single", + "Sort Artist": "SamuW & Kimm\u00f8", + "Sort Name": "Como", + "Persistent ID": "BEA4D160A7A438F2", + "Track Type": "Remote" + }, + { + "Track ID": "18833", + "Name": "The Return", + "Artist": "Hans Hu$tle", + "Album Artist": "Hans Hu$tle", + "Composer": "Hans Vincent Heusterberg", + "Album": "The Return - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4462178", + "Total Time": "116083", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Return - Single", + "Sort Artist": "Hans Hu$tle", + "Sort Name": "Return", + "Persistent ID": "E8E8C53CC2FD3484", + "Track Type": "Remote" + }, + { + "Track ID": "18839", + "Name": "Mars", + "Artist": "MF Eistee", + "Album Artist": "MF Eistee", + "Composer": "Benjamin Goss", + "Album": "Mars - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4533897", + "Total Time": "118519", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Mars - Single", + "Sort Artist": "MF Eistee", + "Sort Name": "Mars", + "Persistent ID": "03AE1AE393D518DA", + "Track Type": "Remote" + }, + { + "Track ID": "18846", + "Name": "Ize of the World", + "Artist": "The Strokes", + "Album Artist": "The Strokes", + "Composer": "Julian Casablancas", + "Album": "First Impressions of Earth", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "9506608", + "Total Time": "265773", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "14", + "Year": "2005", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "First Impressions of Earth", + "Sort Artist": "Strokes", + "Sort Name": "Strokes", + "Persistent ID": "Ize of the World", + "Track Type": "69770EA577AAF6AF" + }, + { + "Track ID": "18852", + "Name": "Park Ride", + "Artist": "\u00d8DYSSEE & Ruck P", + "Album Artist": "\u00d8DYSSEE & Ruck P", + "Composer": "Louis Le Clerc & Lucien Spielmann", + "Album": "Park Ride - Single", + "Genre": "Instrumental", + "Kind": "Apple Music AAC audio file", + "Size": "5854826", + "Total Time": "150774", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Park Ride - Single", + "Sort Artist": "\u00d8DYSSEE & Ruck P", + "Sort Name": "Park Ride", + "Persistent ID": "3EE55D5B2C7BB5B8", + "Track Type": "Remote" + }, + { + "Track ID": "18859", + "Name": "Street Life", + "Artist": "Belleo", + "Album Artist": "Belleo", + "Composer": "Anton H\u00e5rd af Segerstadt", + "Album": "Auras and Water / Street Life - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5127790", + "Total Time": "138000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": -1, + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Auras and Water / Street Life - Single", + "Sort Artist": "Belleo", + "Sort Name": "Street Life", + "Persistent ID": "AF45F02C435C837A", + "Track Type": "Remote" + }, + { + "Track ID": "18866", + "Name": "One", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi, Phil Cook & Tomas Mann", + "Album": "Divinely Uninspired To A Hellish Extent", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6520157", + "Total Time": "179908", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "7", + "Track Count": "12", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divinely Uninspired To A Hellish Extent", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "One", + "Persistent ID": "8070F3D9B6C1C0E9", + "Track Type": "Remote" + }, + { + "Track ID": "18871", + "Name": "Ambling", + "Artist": "Bobby Dreamz BIG", + "Album Artist": "Bobby Dreamz BIG", + "Composer": "Marc Lensing", + "Album": "Ambling - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5120367", + "Total Time": "141176", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Ambling - Single", + "Sort Artist": "Bobby Dreamz BIG", + "Sort Name": "Ambling", + "Persistent ID": "6927B154202AE302", + "Track Type": "Remote" + }, + { + "Track ID": "18877", + "Name": "Hollywood", + "Artist": "Lewis Capaldi", + "Album Artist": "Lewis Capaldi", + "Composer": "Lewis Capaldi, Philip Plested, John Stewart & Kane Parfitt", + "Album": "Divinely Uninspired To A Hellish Extent", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "6903780", + "Total Time": "191844", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "9", + "Track Count": "12", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Divinely Uninspired To A Hellish Extent", + "Sort Artist": "Lewis Capaldi", + "Sort Name": "Hollywood", + "Persistent ID": "FC5D982B31A8CBA6", + "Track Type": "Remote" + }, + { + "Track ID": "18882", + "Name": "Syphilis", + "Artist": "Juice WRLD", + "Album Artist": "Juice WRLD", + "Composer": "Jarad Higgins, Daveon Jackson & Ronald LaTour", + "Album": "Death Race For Love (Bonus Track Version)", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4986112", + "Total Time": "131761", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "12", + "Track Count": "23", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Death Race For Love (Bonus Track Version)", + "Sort Artist": "Juice WRLD", + "Sort Name": "Syphilis", + "Persistent ID": "C2ADAF1AB7AC6506", + "Track Type": "Remote" + }, + { + "Track ID": "18888", + "Name": "Lowfi Theory", + "Artist": "Goedi & Veezo", + "Album Artist": "Goedi & Veezo", + "Composer": "Diego Montinaro & Fabio Visocchi", + "Album": "Lowfi Theory - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4815444", + "Total Time": "128000", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Lowfi Theory - Single", + "Sort Artist": "Goedi & Veezo", + "Sort Name": "Lowfi Theory", + "Persistent ID": "1CE92CBE8DC8D31D", + "Track Type": "Remote" + }, + { + "Track ID": "18895", + "Name": "Rescue Me", + "Artist": "OneRepublic", + "Album Artist": "OneRepublic", + "Composer": "Brent Kutzle & Ryan Tedder", + "Album": "Human (Deluxe)", + "Genre": "Pop", + "Kind": "Apple Music AAC audio file", + "Size": "5831693", + "Total Time": "159650", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "5", + "Track Count": "16", + "Year": "2019", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Human (Deluxe)", + "Sort Artist": "OneRepublic", + "Sort Name": "Rescue Me", + "Persistent ID": "33A03D3A98A9DDB4", + "Track Type": "Remote" + }, + { + "Track ID": "18900", + "Name": "Black-Eyed", + "Artist": "Placebo", + "Album Artist": "Placebo", + "Composer": "undef", + "Album": "Black Market Music", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "8166391", + "Total Time": "228107", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "6", + "Track Count": "13", + "Year": "2000", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Black Market Music", + "Sort Artist": "Placebo", + "Sort Name": "Black-Eyed", + "Persistent ID": "91713BAB762586A6", + "Track Type": "Remote" + }, + { + "Track ID": "18907", + "Name": "Pure", + "Artist": "Alistair", + "Album Artist": "Alistair", + "Composer": "Alistair Atzori", + "Album": "Day Dreaming - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3785609", + "Total Time": "98462", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Day Dreaming - EP", + "Sort Artist": "Alistair", + "Sort Name": "Pure", + "Persistent ID": "379D6FF727585574", + "Track Type": "Remote" + }, + { + "Track ID": "18914", + "Name": "Complicated (feat. Xynothing)", + "Artist": "Alistair", + "Album Artist": "Alistair", + "Composer": "Machado Joseph & Alistair Atzori", + "Album": "Day Dreaming - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3440848", + "Total Time": "90353", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "3", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Day Dreaming - EP", + "Sort Artist": "Alistair", + "Sort Name": "Complicated (feat. Xynothing)", + "Persistent ID": "AC7B1D9B6BF648F4", + "Track Type": "Remote" + }, + { + "Track ID": "18919", + "Name": "Subconscious (feat. El Train)", + "Artist": "Alistair", + "Album Artist": "Alistair", + "Composer": "Luke Nyeke & Alistair Atzori", + "Album": "Day Dreaming - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4248152", + "Total Time": "110711", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "2", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Day Dreaming - EP", + "Sort Artist": "Alistair", + "Sort Name": "Subconscious (feat. El Train)", + "Persistent ID": "4DEA032D097C845D", + "Track Type": "Remote" + }, + { + "Track ID": "18924", + "Name": "Divine", + "Artist": "Alistair", + "Album Artist": "Alistair", + "Composer": "Alistair Atzori", + "Album": "Day Dreaming - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "3584697", + "Total Time": "94861", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "6", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Day Dreaming - EP", + "Sort Artist": "Alistair", + "Sort Name": "Divine", + "Persistent ID": "55905E77825E983D", + "Track Type": "Remote" + }, + { + "Track ID": "18929", + "Name": "Nuance", + "Artist": "Makzo & SYNC.EXE", + "Album Artist": "Makzo & SYNC.EXE", + "Composer": "Zachary Mortimer & David Price", + "Album": "Nuance - Single", + "Genre": "Jazz", + "Kind": "Apple Music AAC audio file", + "Size": "5430725", + "Total Time": "137708", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Nuance - Single", + "Sort Artist": "Makzo & SYNC.EXE", + "Sort Name": "Nuance", + "Persistent ID": "CF208E5AD6FF767C", + "Track Type": "Remote" + }, + { + "Track ID": "18936", + "Name": "Couldn't Be Me", + "Artist": "Harmless", + "Album Artist": "Harmless", + "Composer": "Ignacio Cano Sanchezbenitez", + "Album": "Couldn't Be Me - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7941404", + "Total Time": "225946", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Couldn't Be Me - Single", + "Sort Artist": "Harmless", + "Sort Name": "Couldn't Be Me", + "Persistent ID": "34E054EE608A19DD", + "Track Type": "Remote" + }, + { + "Track ID": "18943", + "Name": "Unfold You", + "Artist": "Psychic Shakes", + "Album Artist": "Psychic Shakes", + "Composer": "Max McLellan", + "Album": "Forever Now", + "Genre": "Indie Rock", + "Kind": "Apple Music AAC audio file", + "Size": "9352817", + "Total Time": "265657", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "8", + "Track Count": "9", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Forever Now", + "Sort Artist": "Psychic Shakes", + "Sort Name": "Unfold You", + "Persistent ID": "877E27A72953882E", + "Track Type": "Remote" + }, + { + "Track ID": "18950", + "Name": "So Too", + "Artist": "Fed Nance", + "Album Artist": "Fed Nance", + "Composer": "Federico Cavallini", + "Album": "So Too - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "4965265", + "Total Time": "134397", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "So Too - Single", + "Sort Artist": "Fed Nance", + "Sort Name": "So Too", + "Persistent ID": "730AC53899624DD4", + "Track Type": "Remote" + }, + { + "Track ID": "18957", + "Name": "It's All Good Man", + "Artist": "Felipe Gordon & Saib", + "Album Artist": "Felipe Gordon & Saib", + "Composer": "Luis Felipe Gordon Doncel & Hamza Saib", + "Album": "It's All Good Man - Single", + "Genre": "Alternative Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5247461", + "Total Time": "131472", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "It's All Good Man - Single", + "Sort Artist": "Felipe Gordon & Saib", + "Sort Name": "It's All Good Man", + "Persistent ID": "FAAE568FCE1F6F0A", + "Track Type": "Remote" + }, + { + "Track ID": "18964", + "Name": "Premonitions", + "Artist": "Isaac Delusion", + "Album Artist": "Isaac Delusion", + "Composer": "Lo\u00efc Fleury", + "Album": "Premonitions - Single", + "Genre": "Alternative", + "Kind": "Apple Music AAC audio file", + "Size": "7856072", + "Total Time": "221987", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "3", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Premonitions - Single", + "Sort Artist": "Isaac Delusion", + "Sort Name": "Premonitions", + "Persistent ID": "5C0A096048E39BF0", + "Track Type": "Remote" + }, + { + "Track ID": "18971", + "Name": "Exotic (feat. Starlito)", + "Artist": "Lil Baby", + "Album Artist": "Lil Baby", + "Composer": "Lil Baby, Brytavious Lakeith Chambers & Jermaine Shute", + "Album": "Harder Than Ever", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5958318", + "Total Time": "162230", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "4", + "Track Count": "17", + "Year": "2018", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": true, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Harder Than Ever", + "Sort Artist": "Lil Baby", + "Sort Name": "Exotic (feat. Starlito)", + "Persistent ID": "85A1DBE77FAE646C", + "Track Type": "Remote" + }, + { + "Track ID": "18977", + "Name": "Wallish Park", + "Artist": "Katashi Kait\u014d & Kim Kozy", + "Album Artist": "Katashi Kait\u014d & Kim Kozy", + "Composer": "Katashi Kait\u014d & Kim Kozy", + "Album": "Wallish Park - Single", + "Genre": "Hip-Hop", + "Kind": "Apple Music AAC audio file", + "Size": "6276245", + "Total Time": "171648", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Wallish Park - Single", + "Sort Artist": "Katashi Kait\u014d & Kim Kozy", + "Sort Name": "Wallish Park", + "Persistent ID": "78D1CF92009C3B5F", + "Track Type": "Remote" + }, + { + "Track ID": "18984", + "Name": "Sunset Serenade", + "Artist": "Ervin Sprinkles", + "Album Artist": "Ervin Sprinkles", + "Composer": "Konrad Birnbauer", + "Album": "Sunset Serenades - EP", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "4604540", + "Total Time": "122533", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "5", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Sunset Serenades - EP", + "Sort Artist": "Ervin Sprinkles", + "Sort Name": "Sunset Serenade", + "Persistent ID": "B6F2D50864ED5DA5", + "Track Type": "Remote" + }, + { + "Track ID": "18991", + "Name": "Made Up", + "Artist": "Tom Doolie", + "Album Artist": "Tom Doolie", + "Composer": "Tom Doolie", + "Album": "Made Up - Single", + "Genre": "Hip-Hop/Rap", + "Kind": "Apple Music AAC audio file", + "Size": "5113971", + "Total Time": "136744", + "Disc Number": "1", + "Disc Count": "1", + "Track Number": "1", + "Track Count": "1", + "Year": "2023", + "Date Modified": "undef", + "Date Added": "undef", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "2", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": "1", + "Sort Album": "Made Up - Single", + "Sort Artist": "Tom Doolie", + "Sort Name": "Made Up", + "Persistent ID": "6EB396954F8161A8", + "Track Type": "Remote" + }, + { + "Track ID": "19148", + "Name": "download", + "Artist": "undef", + "Album Artist": "undef", + "Composer": "undef", + "Album": "undef", + "Genre": "undef", + "Kind": "AAC audio file", + "Size": "9011329", + "Total Time": "253333", + "Disc Number": -1, + "Disc Count": -1, + "Track Number": -1, + "Track Count": -1, + "Year": -1, + "Date Modified": "2023-11-26T10:57:14Z", + "Date Added": "2023-11-26T11:03:59Z", + "Bit Rate": "256", + "Sample Rate": "44100", + "Play Count": -1, + "Play Date": -1, + "Play Date UTC": "undef", + "Skip Count": -1, + "Skip Date": "undef", + "Release Date": "undef", + "Album Rating": -1, + "Album Rating Computed": false, + "Loved": false, + "Album Loved": false, + "Explicit": false, + "Compilation": false, + "Artwork Count": -1, + "Sort Album": "undef", + "Sort Artist": "undef", + "Sort Name": "undef", + "Persistent ID": "EAAD55117CD1EA0D", + "Track Type": "File" + } +] \ No newline at end of file diff --git a/LibraryViewer/library/Library.xml b/LibraryViewer/library/Library.xml new file mode 100644 index 0000000..0316ae1 --- /dev/null +++ b/LibraryViewer/library/Library.xml @@ -0,0 +1,121340 @@ + + + + + Major Version1 + Minor Version1 + Date2023-11-26T11:16:16Z + Application Version12.13.0.9 + Features5 + Show Content Ratings + Music Folderfile://localhost/C:/Users/ilusha/Music/iTunes/iTunes%20Media/ + Library Persistent ID9C670467C6E45ACB + Tracks + + 2437 + + Track ID2437 + NameJumpsuit + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size8517353 + Total Time238568 + Disc Number1 + Disc Count1 + Track Number1 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3782893931 + Play Date UTC2023-11-15T08:52:11Z + Skip Count2 + Skip Date2019-02-03T12:00:02Z + Release Date2018-07-11T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameJumpsuit + Persistent IDBB06A210AE280D4C + Track TypeRemote + Apple Music + + 2439 + + Track ID2439 + NameLevitate + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size5398839 + Total Time145940 + Disc Number1 + Disc Count1 + Track Number2 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3783412119 + Play Date UTC2023-11-21T08:48:39Z + Skip Date2018-10-06T10:03:01Z + Release Date2018-08-08T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameLevitate + Persistent IDA192F8C5660C9B50 + Track TypeRemote + Apple Music + + 2441 + + Track ID2441 + NameMy Blood + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size8209613 + Total Time229127 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count59 + Play Date3783493588 + Play Date UTC2023-11-22T07:26:28Z + Skip Count2 + Skip Date2018-10-26T19:07:18Z + Release Date2018-08-27T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameMy Blood + Persistent IDD4FE709FA753EFEA + Track TypeRemote + Apple Music + + 2443 + + Track ID2443 + NameChlorine + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size11457356 + Total Time324470 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count62 + Play Date3773641575 + Play Date UTC2023-07-31T06:46:15Z + Skip Count6 + Skip Date2019-05-21T11:01:29Z + Release Date2018-10-05T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameChlorine + Persistent IDA5634966B447054B + Track TypeRemote + Apple Music + + 2445 + + Track ID2445 + NameSmithereens + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size6464647 + Total Time177040 + Disc Number1 + Disc Count1 + Track Number6 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3768408738 + Play Date UTC2023-05-31T17:12:18Z + Skip Count1 + Skip Date2018-10-26T19:07:40Z + Release Date2018-10-05T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameSmithereens + Persistent ID1AD1078C3AE662AF + Track TypeRemote + Apple Music + + 2447 + + Track ID2447 + NameNeon Gravestones + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size8548113 + Total Time240260 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781058201 + Play Date UTC2023-10-25T02:56:41Z + Skip Count1 + Skip Date2021-05-11T13:01:32Z + Release Date2018-10-05T12:00:00Z + Rating80 + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameNeon Gravestones + Persistent ID8422135664E9BAE7 + Track TypeRemote + Apple Music + + 2449 + + Track ID2449 + NameThe Hype + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size9325006 + Total Time265375 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781209424 + Play Date UTC2023-10-26T20:57:04Z + Skip Count1 + Skip Date2021-05-30T15:42:38Z + Release Date2018-10-05T12:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameHype + Persistent ID0A0B06987CB00AE8 + Track TypeRemote + Apple Music + + 2451 + + Track ID2451 + NameNico And The Niners + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size8072357 + Total Time225034 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3783847925 + Play Date UTC2023-11-26T09:52:05Z + Skip Count1 + Skip Date2018-10-26T19:05:34Z + Release Date2018-07-11T07:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameNico And The Niners + Persistent IDAA917CB6F02C7111 + Track TypeRemote + Apple Music + + 2453 + + Track ID2453 + NameCut My Lip + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size9976349 + Total Time282614 + Disc Number1 + Disc Count1 + Track Number10 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3759320938 + Play Date UTC2023-02-15T12:48:58Z + Skip Count2 + Skip Date2022-08-09T09:15:10Z + Release Date2018-10-05T12:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameCut My Lip + Persistent ID1CAF0FDD101BDABD + Track TypeRemote + Apple Music + + 2455 + + Track ID2455 + NameBandito + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size11579527 + Total Time330990 + Disc Number1 + Disc Count1 + Track Number11 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count57 + Play Date3772806111 + Play Date UTC2023-07-21T14:41:51Z + Skip Count2 + Skip Date2018-10-26T19:08:33Z + Release Date2018-10-05T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameBandito + Persistent IDCFB151C7C0DBC965 + Track TypeRemote + Apple Music + + 2457 + + Track ID2457 + NamePet Cheetah + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size7210349 + Total Time198362 + Disc Number1 + Disc Count1 + Track Number12 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count59 + Play Date3783491476 + Play Date UTC2023-11-22T06:51:16Z + Skip Count4 + Skip Date2018-10-26T19:07:03Z + Release Date2018-10-05T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NamePet Cheetah + Persistent ID3AB425D5BD03709C + Track TypeRemote + Apple Music + + 2459 + + Track ID2459 + NameLegend + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size6467672 + Total Time172562 + Disc Number1 + Disc Count1 + Track Number13 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3776321204 + Play Date UTC2023-08-31T07:06:44Z + Skip Count5 + Skip Date2022-08-04T10:52:46Z + Release Date2018-10-05T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameLegend + Persistent ID37ABC6594F827C2E + Track TypeRemote + Apple Music + + 2461 + + Track ID2461 + NameLeave the City + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumTrench + GenreAlternative + KindApple Music AAC audio file + Size10177485 + Total Time280471 + Disc Number1 + Disc Count1 + Track Number14 + Track Count14 + Year2018 + Date Modified2018-10-06T06:43:29Z + Date Added2018-10-06T06:43:29Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3760897798 + Play Date UTC2023-03-05T18:49:58Z + Skip Count3 + Skip Date2022-10-11T10:42:40Z + Release Date2018-10-05T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumTrench + Sort Artisttwenty one pilots + Sort NameLeave the City + Persistent ID221E9B4AC57AF497 + Track TypeRemote + Apple Music + + 2463 + + Track ID2463 + NameLife Itself + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumLife Itself - Single + GenreAlternative + KindApple Music AAC audio file + Size9827320 + Total Time280415 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3769881897 + Play Date UTC2023-06-17T18:24:57Z + Skip Count3 + Skip Date2021-12-10T07:27:41Z + Release Date2016-05-16T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumLife Itself - Single + Sort ArtistGlass Animals + Sort NameLife Itself + Persistent IDF4974BE6F0B1ACD7 + Track TypeRemote + Apple Music + + 2465 + + Track ID2465 + NameYouth + ArtistGlass Animals + Album ArtistVarious Artists + ComposerDave Bayley + AlbumAlt-Tronica + GenreAlternative + KindApple Music AAC audio file + Size8396915 + Total Time231680 + Disc Number1 + Disc Count1 + Track Number5 + Track Count22 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3759407249 + Play Date UTC2023-02-16T12:47:29Z + Skip Count2 + Skip Date2019-02-04T06:53:42Z + Release Date2016-05-18T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumAlt-Tronica + Sort ArtistGlass Animals + Sort NameYouth + Persistent IDCEF09AD0D85A5404 + Track TypeRemote + Apple Music + + 2467 + + Track ID2467 + NameSeason 2 Episode 3 + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size8563134 + Total Time243509 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3773536885 + Play Date UTC2023-07-30T01:41:25Z + Skip Count2 + Skip Date2022-11-25T20:27:19Z + Release Date2016-08-23T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NameSeason 2 Episode 3 + Persistent IDC291DD23BE500FAD + Track TypeRemote + Apple Music + + 2469 + + Track ID2469 + NamePork Soda + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size9200121 + Total Time253831 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3776343491 + Play Date UTC2023-08-31T13:18:11Z + Skip Count3 + Skip Date2019-02-04T06:53:38Z + Release Date2016-08-26T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Loved + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NamePork Soda + Persistent IDD155180DD5F078C8 + Explicit + Track TypeRemote + Apple Music + + 2471 + + Track ID2471 + NameMama's Gun + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size9506088 + Total Time266747 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count86 + Play Date3781059789 + Play Date UTC2023-10-25T03:23:09Z + Skip Count5 + Skip Date2022-07-16T11:31:34Z + Release Date2016-08-26T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Loved + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NameMama's Gun + Persistent ID20E407770E8C7F25 + Track TypeRemote + Apple Music + + 2473 + + Track ID2473 + NameCane Shuga + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size7244473 + Total Time196570 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3780759929 + Play Date UTC2023-10-21T16:05:29Z + Release Date2016-08-26T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NameCane Shuga + Persistent ID5821D3E7354B95F1 + Track TypeRemote + Apple Music + + 2475 + + Track ID2475 + Name[Premade Sandwiches] + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size1727390 + Total Time36254 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3781057640 + Play Date UTC2023-10-25T02:47:20Z + Skip Date2018-10-06T10:08:56Z + Release Date2016-08-26T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort Name[Premade Sandwiches] + Persistent ID7174F2BF5513A884 + Explicit + Track TypeRemote + Apple Music + + 2477 + + Track ID2477 + NameThe Other Side of Paradise + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size11439839 + Total Time320654 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781398404 + Play Date UTC2023-10-29T01:26:44Z + Release Date2016-08-26T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NameOther Side of Paradise + Persistent ID510FE7F249C544D4 + Explicit + Track TypeRemote + Apple Music + + 2479 + + Track ID2479 + NameTake a Slice + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size8355972 + Total Time229718 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781613590 + Play Date UTC2023-10-31T13:13:10Z + Skip Count2 + Skip Date2019-02-04T06:53:35Z + Release Date2016-08-26T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NameTake a Slice + Persistent ID12FFA4BFD8C4DF8D + Explicit + Track TypeRemote + Apple Music + + 2481 + + Track ID2481 + NamePoplar St. + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size9299926 + Total Time262540 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783666522 + Play Date UTC2023-11-24T07:28:42Z + Skip Count2 + Skip Date2018-10-27T07:17:19Z + Release Date2016-08-26T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NamePoplar St. + Persistent IDE0A4244C6F88AF0F + Track TypeRemote + Apple Music + + 2483 + + Track ID2483 + NameAgnes + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size9428874 + Total Time271673 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2016 + Date Modified2018-10-06T08:10:14Z + Date Added2018-10-06T08:10:14Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3773543084 + Play Date UTC2023-07-30T03:24:44Z + Skip Count1 + Skip Date2021-09-30T15:15:06Z + Release Date2016-08-26T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NameAgnes + Persistent ID8A775C388C50FF00 + Explicit + Track TypeRemote + Apple Music + + 2485 + + Track ID2485 + NameRenegades + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size7291410 + Total Time195200 + Disc Number1 + Disc Count1 + Track Number2 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3778766814 + Play Date UTC2023-09-28T14:26:54Z + Skip Count2 + Skip Date2018-11-23T05:47:54Z + Release Date2015-03-03T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameRenegades + Persistent IDBE79DDF1873CF29F + Track TypeRemote + Apple Music + + 2487 + + Track ID2487 + NameMoving Day (Interlude) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerRob Harris, Sam Harris, Margaret Wakeley & Casey Harris + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size1173393 + Total Time19067 + Disc Number1 + Disc Count1 + Track Number3 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783712663 + Play Date UTC2023-11-24T20:17:43Z + Skip Count1 + Skip Date2023-03-06T06:59:39Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameMoving Day (Interlude) + Persistent ID1D33F5A1E6205A10 + Track TypeRemote + Apple Music + + 2489 + + Track ID2489 + NameUnsteady + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size6954901 + Total Time193547 + Disc Number1 + Disc Count1 + Track Number4 + Track Count20 + Year2014 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count84 + Play Date3770489016 + Play Date UTC2023-06-24T19:03:36Z + Skip Count9 + Skip Date2021-05-10T22:54:22Z + Release Date2014-02-25T12:00:00Z + Rating100 + Album Rating100 + Loved + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameUnsteady + Persistent ID1307D65134F7CD72 + Track TypeRemote + Apple Music + + 2491 + + Track ID2491 + NameHang On + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size6427690 + Total Time180333 + Disc Number1 + Disc Count1 + Track Number5 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3776164547 + Play Date UTC2023-08-29T11:35:47Z + Skip Count7 + Skip Date2023-02-27T06:38:59Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameHang On + Persistent ID83D6223132DE06A4 + Track TypeRemote + Apple Music + + 2493 + + Track ID2493 + NameGorgeous + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size7039120 + Total Time197053 + Disc Number1 + Disc Count1 + Track Number6 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3769880992 + Play Date UTC2023-06-17T18:09:52Z + Skip Count1 + Skip Date2018-11-23T08:50:45Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameGorgeous + Persistent ID1441C7754AAAEA1C + Track TypeRemote + Apple Music + + 2495 + + Track ID2495 + NameFirst Show (Interlude) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh & Nicholas Farhi + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size935721 + Total Time11840 + Disc Number1 + Disc Count1 + Track Number7 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3776150468 + Play Date UTC2023-08-29T07:41:08Z + Skip Count2 + Skip Date2023-03-27T17:39:21Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameFirst Show (Interlude) + Persistent ID60E7FD529AE857D7 + Track TypeRemote + Apple Music + + 2497 + + Track ID2497 + NameFear (feat. Imagine Dragons) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerImagine Dragons, Alex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size5878361 + Total Time161587 + Disc Number1 + Disc Count1 + Track Number8 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3773534210 + Play Date UTC2023-07-30T00:56:50Z + Skip Count4 + Skip Date2023-10-26T16:13:12Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameFear (feat. Imagine Dragons) + Persistent ID0AB59EC0DEF152D1 + Track TypeRemote + Apple Music + + 2499 + + Track ID2499 + NameNervous + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size7557722 + Total Time213067 + Disc Number1 + Disc Count1 + Track Number10 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count59 + Play Date3783670322 + Play Date UTC2023-11-24T08:32:02Z + Skip Count2 + Skip Date2021-02-25T23:30:09Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Loved + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameNervous + Persistent IDA395AFAA8B6CF03E + Track TypeRemote + Apple Music + + 2501 + + Track ID2501 + NameLow Life (feat. Jamie N Commons) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerJamie N Commons, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris, Adam Levine & Jayson Dezuzio + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size10268090 + Total Time280800 + Disc Number1 + Disc Count1 + Track Number11 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3781383793 + Play Date UTC2023-10-28T21:23:13Z + Skip Count2 + Skip Date2021-03-21T09:55:01Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameLow Life (feat. Jamie N Commons) + Persistent IDA6EDC27B398A6DEB + Track TypeRemote + Apple Music + + 2503 + + Track ID2503 + NameAdam & Noah's Priorities (Interlude) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAdam Levin & Noah Feldshuh + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size1436102 + Total Time27027 + Disc Number1 + Disc Count1 + Track Number12 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783666076 + Play Date UTC2023-11-24T07:21:16Z + Skip Count1 + Skip Date2023-02-20T16:20:47Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameAdam & Noah's Priorities (Interlude) + Persistent ID4F26681C83DEDAB3 + Track TypeRemote + Apple Music + + 2505 + + Track ID2505 + NameB.I.G. + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size7450983 + Total Time209640 + Disc Number1 + Disc Count1 + Track Number13 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3781176740 + Play Date UTC2023-10-26T11:52:20Z + Skip Count3 + Skip Date2021-03-05T17:58:47Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameB.I.G. + Persistent ID7282A0613A51E19A + Track TypeRemote + Apple Music + + 2507 + + Track ID2507 + NameSuperpower + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerX Ambassadors, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size7105416 + Total Time192200 + Disc Number1 + Disc Count1 + Track Number15 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3783359346 + Play Date UTC2023-11-20T18:09:06Z + Skip Count2 + Skip Date2022-10-27T16:44:32Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameSuperpower + Persistent ID6385ABCCCC9A98EE + Explicit + Track TypeRemote + Apple Music + + 2509 + + Track ID2509 + NameLoveless + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerX Ambassadors, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size7179634 + Total Time199240 + Disc Number1 + Disc Count1 + Track Number16 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3781866586 + Play Date UTC2023-11-03T11:29:46Z + Skip Count1 + Skip Date2021-05-11T13:00:33Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameLoveless + Persistent ID5420168FF5123F25 + Track TypeRemote + Apple Music + + 2511 + + Track ID2511 + NameJungle (feat. Jamie N Commons) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerJamie N Commons, Alex Da Kid, Mike Del Rio, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size6810633 + Total Time189707 + Disc Number1 + Disc Count1 + Track Number17 + Track Count20 + Year2013 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3780905974 + Play Date UTC2023-10-23T08:39:34Z + Skip Count3 + Skip Date2023-10-13T16:14:42Z + Release Date2013-12-18T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameJungle (feat. Jamie N Commons) + Persistent ID684C58D9F83D0483 + Track TypeRemote + Apple Music + + 2513 + + Track ID2513 + NameGood News On the Remix (Interlude) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris & Alexander Grant + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size1825321 + Total Time51360 + Disc Number1 + Disc Count1 + Track Number18 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3775744902 + Play Date UTC2023-08-24T15:01:42Z + Skip Count1 + Skip Date2022-10-05T20:43:07Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameGood News On the Remix (Interlude) + Persistent ID8B0B017886A1B19A + Explicit + Track TypeRemote + Apple Music + + 2515 + + Track ID2515 + NameNaked + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerX Ambassadors, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size7443755 + Total Time201773 + Disc Number1 + Disc Count1 + Track Number19 + Track Count20 + Year2015 + Date Modified2018-10-06T08:29:06Z + Date Added2018-10-06T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3767092201 + Play Date UTC2023-05-16T11:30:01Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameNaked + Persistent IDC17FF91E33EAA73E + Track TypeRemote + Apple Music + + 2517 + + Track ID2517 + NameMy Way + ArtistCalvin Harris + Album ArtistCalvin Harris + ComposerCalvin Harris + AlbumMy Way - Single + GenreDance + KindApple Music AAC audio file + Size8181902 + Total Time219160 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2018-10-06T09:52:20Z + Date Added2018-10-06T09:52:20Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783356742 + Play Date UTC2023-11-20T17:25:42Z + Skip Count1 + Skip Date2018-10-10T15:50:02Z + Release Date2016-09-16T07:00:00Z + Artwork Count1 + Sort AlbumMy Way - Single + Sort ArtistCalvin Harris + Sort NameMy Way + Persistent ID9C9233361B3F5C20 + Track TypeRemote + Apple Music + + 2519 + + Track ID2519 + NameBreezeblocks + Artistalt-J + Album Artistalt-J + ComposerJoe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green/Charlie Andrew + AlbumAn Awesome Wave + GenreAlternative + KindApple Music AAC audio file + Size8108051 + Total Time226790 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2012 + Date Modified2018-10-06T10:54:20Z + Date Added2018-10-06T10:54:20Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count64 + Play Date3783074004 + Play Date UTC2023-11-17T10:53:24Z + Skip Count4 + Skip Date2021-09-17T19:34:18Z + Release Date1975-01-01T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Loved + Artwork Count1 + Sort AlbumAwesome Wave + Sort Artistalt-J + Sort NameBreezeblocks + Persistent ID657CF70E5069EB83 + Track TypeRemote + Apple Music + + 2521 + + Track ID2521 + NameLeft Hand Free + Artistalt-J + Album Artistalt-J + AlbumThis Is All Yours + GenreAlternative + KindApple Music AAC audio file + Size6224650 + Total Time171731 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2014 + Date Modified2018-10-06T11:39:15Z + Date Added2018-10-06T11:39:15Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count44 + Play Date3781768113 + Play Date UTC2023-11-02T08:08:33Z + Skip Count1 + Skip Date2021-05-05T20:22:15Z + Release Date2014-07-07T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumThis Is All Yours + Sort Artistalt-J + Sort NameLeft Hand Free + Persistent ID0106F741434E5FD2 + Track TypeRemote + Apple Music + + 2523 + + Track ID2523 + NameOverdose + Artistgrandson + Album Artistgrandson + ComposerJordan Benjamin & Kevin Hissink + AlbumOverdose - Single + GenreAlternative + KindApple Music AAC audio file + Size8400208 + Total Time233333 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-06T16:47:06Z + Date Added2018-10-06T16:47:06Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783780270 + Play Date UTC2023-11-25T15:04:30Z + Skip Count2 + Skip Date2020-06-18T08:23:41Z + Release Date2018-02-09T08:00:00Z + Loved + Artwork Count1 + Sort AlbumOverdose - Single + Sort Artistgrandson + Sort NameOverdose + Persistent ID0CBDB514454DD15B + Track TypeRemote + Apple Music + + 2525 + + Track ID2525 + NameBlood // Water + Artistgrandson + Album Artistgrandson + ComposerChester Krupa Carbone, Jordan Benjamin & Kevin Hissink + AlbumBlood // Water - Single + GenreAlternative + KindApple Music AAC audio file + Size7685051 + Total Time216721 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-10-06T16:48:50Z + Date Added2018-10-06T16:48:50Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3779241682 + Play Date UTC2023-10-04T02:21:22Z + Release Date2017-10-27T07:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumBlood // Water - Single + Sort Artistgrandson + Sort NameBlood // Water + Persistent IDAC0371F1C3DA43A0 + Track TypeRemote + Apple Music + + 2527 + + Track ID2527 + NameTorches + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Adam Levin & Casey Harris + AlbumTorches - Single + GenreAlternative + KindApple Music AAC audio file + Size7624223 + Total Time207373 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-10-06T16:55:53Z + Date Added2018-10-06T16:55:53Z + Bit Rate256 + Sample Rate44100 + Play Count85 + Play Date3779903047 + Play Date UTC2023-10-11T18:04:07Z + Skip Count2 + Skip Date2021-07-13T22:32:47Z + Release Date2017-04-28T07:00:00Z + Rating100 + Rating Computed + Album Rating100 + Loved + Artwork Count1 + Sort AlbumTorches - Single + Sort ArtistX Ambassadors + Sort NameTorches + Persistent ID9D6E0FC0DF8AE38E + Track TypeRemote + Apple Music + + 2529 + + Track ID2529 + NameFree & Lonely + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh, Adam Levin, Casey Harris & Alex Da Kid + AlbumThe Reason - EP + GenreAlternative + KindApple Music AAC audio file + Size8896185 + Total Time248478 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2014 + Date Modified2018-10-06T16:59:46Z + Date Added2018-10-06T16:59:46Z + Bit Rate256 + Sample Rate44100 + Play Count95 + Play Date3781318621 + Play Date UTC2023-10-28T03:17:01Z + Skip Count7 + Skip Date2022-10-28T02:18:09Z + Release Date2014-04-22T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumReason - EP + Sort ArtistX Ambassadors + Sort NameFree & Lonely + Persistent ID3C16BBCE88915F2F + Track TypeRemote + Apple Music + + 2531 + + Track ID2531 + NameWeak + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size7192848 + Total Time201159 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2016 + Date Modified2018-10-06T17:01:14Z + Date Added2018-10-06T17:01:14Z + Bit Rate256 + Sample Rate44100 + Play Count66 + Play Date3782983243 + Play Date UTC2023-11-16T09:40:43Z + Skip Count7 + Skip Date2022-05-16T20:58:43Z + Release Date2016-03-09T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameWeak + Persistent IDBF356F665AD6562E + Track TypeRemote + Apple Music + + 2533 + + Track ID2533 + NameFeather + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerX Ambassadors, Alex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine + AlbumVHS + GenreAlternative + KindApple Music AAC audio file + Size7083369 + Total Time197053 + Disc Number1 + Disc Count1 + Track Number14 + Track Count20 + Year2015 + Date Modified2018-10-07T18:16:35Z + Date Added2018-10-07T18:16:35Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3762966340 + Play Date UTC2023-03-29T17:25:40Z + Skip Count4 + Skip Date2022-07-24T13:26:15Z + Release Date2015-06-23T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Loved + Artwork Count1 + Sort AlbumVHS + Sort ArtistX Ambassadors + Sort NameFeather + Persistent ID193E9769A6585925 + Track TypeRemote + Apple Music + + 2535 + + Track ID2535 + NameSAD! + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJohn Cunningham & Jahseh Onfroy + Album? + GenrePop + KindApple Music AAC audio file + Size6020765 + Total Time166606 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2018 + Date Modified2018-10-07T18:44:09Z + Date Added2018-10-07T18:44:09Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3775647616 + Play Date UTC2023-08-23T12:00:16Z + Skip Count1 + Skip Date2022-03-15T18:06:14Z + Release Date2018-03-02T08:00:00Z + Rating100 + Rating Computed + Album Rating100 + Loved + Artwork Count1 + Sort Album? + Sort ArtistXXXTENTACION + Sort NameSAD! + Persistent ID1528612A03CE4FB6 + Explicit + Track TypeRemote + Apple Music + + 2537 + + Track ID2537 + NameNUMB + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJohn Cunningham, Robert Soukiasyan, Jahseh Onfroy & Oren Yoel + Album? + GenrePop + KindApple Music AAC audio file + Size6700017 + Total Time186268 + Disc Number1 + Disc Count1 + Track Number7 + Track Count18 + Year2018 + Date Modified2018-10-07T18:44:20Z + Date Added2018-10-07T18:44:20Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783784907 + Play Date UTC2023-11-25T16:21:47Z + Skip Count2 + Skip Date2021-06-26T23:56:23Z + Release Date2018-03-16T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort Album? + Sort ArtistXXXTENTACION + Sort NameNUMB + Persistent ID8168398BE5F441F2 + Track TypeRemote + Apple Music + + 2539 + + Track ID2539 + Nameinfinity (888) [feat. Joey Bada$$] + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJahseh Onfroy, Jo Vaughn Virginie, Brandon Mychael & Jameel Beazer + Album? + GenrePop + KindApple Music AAC audio file + Size6440427 + Total Time176591 + Disc Number1 + Disc Count1 + Track Number8 + Track Count18 + Year2018 + Date Modified2018-10-07T18:44:46Z + Date Added2018-10-07T18:44:46Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3783682847 + Play Date UTC2023-11-24T12:00:47Z + Skip Count3 + Skip Date2021-09-10T20:47:25Z + Release Date2018-03-16T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort Album? + Sort ArtistXXXTENTACION + Sort Nameinfinity (888) [feat. Joey Bada$$] + Persistent ID69EFC1D025915B14 + Explicit + Track TypeRemote + Apple Music + + 2541 + + Track ID2541 + Namethe remedy for a broken heart (why am I so in love) + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJohn Cunningham & Jahseh Onfroy + Album? + GenrePop + KindApple Music AAC audio file + Size5914792 + Total Time160184 + Disc Number1 + Disc Count1 + Track Number5 + Track Count18 + Year2018 + Date Modified2018-10-07T18:45:39Z + Date Added2018-10-07T18:45:39Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781789159 + Play Date UTC2023-11-02T13:59:19Z + Skip Count1 + Skip Date2020-12-01T14:26:06Z + Release Date2018-03-16T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort Album? + Sort ArtistXXXTENTACION + Sort Nameremedy for a broken heart (why am I so in love) + Persistent ID054D21C4031D7DD6 + Explicit + Track TypeRemote + Apple Music + + 2543 + + Track ID2543 + NameIt's Probably Me + ArtistSting & Eric Clapton + Album ArtistSting + ComposerSting, Eric Clapton & Michael Kamen + AlbumFields of Gold - The Best of Sting (1984-1994) [Remastered] + GenreRock + KindApple Music AAC audio file + Size10603975 + Total Time302027 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year1993 + Date Modified2018-10-07T18:47:17Z + Date Added2018-10-07T18:47:17Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781318923 + Play Date UTC2023-10-28T03:22:03Z + Release Date1994-01-01T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumFields of Gold - The Best of Sting (1984-1994) [Remastered] + Sort ArtistSting & Eric Clapton + Sort NameIt's Probably Me + Persistent ID5BD8BD1543E9A3BD + Track TypeRemote + Apple Music + + 2545 + + Track ID2545 + NameShape of My Heart + ArtistSting + Album ArtistSting + ComposerSting & Dominic Miller + AlbumTen Summoner's Tales + GenrePop + KindApple Music AAC audio file + Size9760937 + Total Time279227 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year1993 + Date Modified2018-10-07T18:47:29Z + Date Added2018-10-07T18:47:29Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3779903432 + Play Date UTC2023-10-11T18:10:32Z + Release Date1993-03-09T08:00:00Z + Artwork Count1 + Sort AlbumTen Summoner's Tales + Sort ArtistSting + Sort NameShape of My Heart + Persistent ID637EE077316F2BB0 + Track TypeRemote + Apple Music + + 2547 + + Track ID2547 + NameHoping + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Nelson Harris, Adam Levin, Casey Harris & Noah Feldshuh + AlbumHoping - Single + GenreAlternative + KindApple Music AAC audio file + Size6958132 + Total Time193567 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-10-07T18:51:47Z + Date Added2018-10-07T18:51:47Z + Bit Rate256 + Sample Rate44100 + Play Count71 + Play Date3766663000 + Play Date UTC2023-05-11T12:16:40Z + Skip Count4 + Skip Date2021-03-21T09:48:43Z + Release Date2017-03-10T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHoping - Single + Sort ArtistX Ambassadors + Sort NameHoping + Persistent ID00CF86ED17F4B823 + Track TypeRemote + Apple Music + + 2549 + + Track ID2549 + NameSupermassive Black Hole + ArtistMuse + Album ArtistMuse + ComposerMatthew Bellamy + AlbumSix Studio Albums + GroupingBlack Holes and Revelations + GenreAlternative + KindApple Music AAC audio file + Size8144672 + Total Time208852 + Disc Number4 + Disc Count6 + Track Number3 + Track Count11 + Year2006 + Date Modified2018-10-07T19:11:10Z + Date Added2018-10-07T19:11:10Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3779236494 + Play Date UTC2023-10-04T00:54:54Z + Skip Count7 + Skip Date2022-10-28T20:40:02Z + Release Date2006-06-19T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumSix Studio Albums + Sort ArtistMuse + Sort NameSupermassive Black Hole + Persistent ID580CA91017B4E3D3 + Track TypeRemote + Apple Music + + 2551 + + Track ID2551 + NameLove Songs Drug Songs + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin + AlbumLove Songs Drug Songs - EP + GenreAlternative + KindApple Music AAC audio file + Size8212444 + Total Time219760 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2013 + Date Modified2018-10-08T11:32:26Z + Date Added2018-10-08T11:32:26Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3781613810 + Play Date UTC2023-10-31T13:16:50Z + Skip Count1 + Skip Date2019-02-26T13:49:57Z + Release Date2013-05-07T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLove Songs Drug Songs - EP + Sort ArtistX Ambassadors + Sort NameLove Songs Drug Songs + Persistent ID961D2DF9CDBC9BAB + Track TypeRemote + Apple Music + + 2553 + + Track ID2553 + NameKerosene Dreams + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levin + AlbumVHS 2.0 + GenreAlternative + KindApple Music AAC audio file + Size8354695 + Total Time233013 + Disc Number1 + Disc Count1 + Track Number15 + Track Count18 + Year2016 + Date Modified2018-10-08T11:36:08Z + Date Added2018-10-08T11:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count154 + Play Date3780394308 + Play Date UTC2023-10-17T10:31:48Z + Skip Count2 + Skip Date2022-04-23T18:13:17Z + Release Date2016-06-10T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumVHS 2.0 + Sort ArtistX Ambassadors + Sort NameKerosene Dreams + Persistent ID5510A43F1BC579B4 + Track TypeRemote + Apple Music + + 2555 + + Track ID2555 + NameOnly Love + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8873741 + Total Time249173 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2011 + Date Modified2018-10-08T11:48:49Z + Date Added2018-10-08T11:48:49Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3760286995 + Play Date UTC2023-02-26T17:09:55Z + Skip Count2 + Skip Date2022-08-05T08:32:15Z + Release Date2011-09-30T07:00:00Z + Artwork Count1 + Sort AlbumEvery Kingdom + Sort ArtistBen Howard + Sort NameOnly Love + Persistent ID2BFC4039DCCD355A + Track TypeRemote + Apple Music + + 2557 + + Track ID2557 + NamePromise + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom (Deluxe Edition) + GenreSinger/Songwriter + KindApple Music AAC audio file + Size13297403 + Total Time384080 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2011 + Date Modified2018-10-08T12:17:00Z + Date Added2018-10-08T12:17:00Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3772538921 + Play Date UTC2023-07-18T12:28:41Z + Skip Count1 + Skip Date2022-06-18T17:11:15Z + Release Date2011-09-30T07:00:00Z + Rating40 + Rating Computed + Album Rating40 + Artwork Count1 + Sort AlbumEvery Kingdom (Deluxe Edition) + Sort ArtistBen Howard + Sort NamePromise + Persistent ID90630F8654193942 + Track TypeRemote + Apple Music + + 2559 + + Track ID2559 + NameKeep Your Head Up + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom + GenreSinger/Songwriter + KindApple Music AAC audio file + Size9437532 + Total Time264547 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2011 + Date Modified2018-10-08T12:17:52Z + Date Added2018-10-08T12:17:52Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3783455127 + Play Date UTC2023-11-21T20:45:27Z + Skip Count3 + Skip Date2021-10-13T08:49:41Z + Release Date2011-01-01T12:00:00Z + Artwork Count1 + Sort AlbumEvery Kingdom + Sort ArtistBen Howard + Sort NameKeep Your Head Up + Persistent IDB608C3BE0AC40083 + Track TypeRemote + Apple Music + + 2561 + + Track ID2561 + NameTurning Out + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size9296407 + Total Time260961 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2016 + Date Modified2018-10-08T16:32:14Z + Date Added2018-10-08T16:32:14Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3773546686 + Play Date UTC2023-07-30T04:24:46Z + Skip Count5 + Skip Date2020-05-12T20:05:28Z + Release Date2016-09-16T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameTurning Out + Persistent ID158113695D73C0F3 + Track TypeRemote + Apple Music + + 2563 + + Track ID2563 + NameNo Grass Today + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size9252779 + Total Time259115 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2016 + Date Modified2018-10-08T18:03:45Z + Date Added2018-10-08T18:03:45Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3752616882 + Play Date UTC2022-11-29T22:34:42Z + Skip Count7 + Skip Date2022-11-15T16:27:33Z + Release Date2016-09-16T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameNo Grass Today + Persistent IDA9FB9F95CC67898E + Track TypeRemote + Apple Music + + 2565 + + Track ID2565 + NameThree-Thirty + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size7696145 + Total Time210284 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2017 + Date Modified2018-10-08T18:10:16Z + Date Added2018-10-08T18:10:16Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3780775024 + Play Date UTC2023-10-21T20:17:04Z + Skip Count11 + Skip Date2023-06-20T08:41:51Z + Release Date2017-06-02T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameThree-Thirty + Persistent IDF5F93C606C7BDC3C + Track TypeRemote + Apple Music + + 2567 + + Track ID2567 + NameCall My Dad + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size4976197 + Total Time135694 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2017 + Date Modified2018-10-08T18:17:19Z + Date Added2018-10-08T18:17:19Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3783709643 + Play Date UTC2023-11-24T19:27:23Z + Skip Count2 + Skip Date2022-10-01T09:49:55Z + Release Date2017-06-02T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameCall My Dad + Persistent ID25EDA2653D413E7B + Explicit + Track TypeRemote + Apple Music + + 2569 + + Track ID2569 + NamePsycho (feat. Ty Dolla $ign) + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post & Tyrone Griffin Jr + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7942383 + Total Time221446 + Disc Number1 + Disc Count1 + Track Number8 + Track Count18 + Year2018 + Date Modified2018-10-09T10:36:23Z + Date Added2018-10-09T10:36:23Z + Bit Rate256 + Sample Rate44100 + Play Count170 + Play Date3783011146 + Play Date UTC2023-11-16T17:25:46Z + Skip Count7 + Skip Date2023-03-15T18:53:28Z + Release Date2018-02-23T08:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NamePsycho (feat. Ty Dolla $ign) + Persistent ID46542C9F30FB6973 + Explicit + Track TypeRemote + Apple Music + + 2571 + + Track ID2571 + NameBetter Now + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post, Billy Walsh & Adam Feeney + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8282088 + Total Time231261 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2018 + Date Modified2018-10-09T10:39:56Z + Date Added2018-10-09T10:39:56Z + Bit Rate256 + Sample Rate44100 + Play Count74 + Play Date3783056653 + Play Date UTC2023-11-17T06:04:13Z + Skip Count6 + Skip Date2022-11-07T05:25:48Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameBetter Now + Persistent IDE74E071840FB274D + Clean + Track TypeRemote + Apple Music + + 2573 + + Track ID2573 + Namerockstar (feat. 21 Savage) + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post, Olufunmibi Awoshiley, Jo-Vaughn Virginie, Shayaa Bin Abraham-Joseph & Carl Austin Rosen + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8118172 + Total Time218146 + Disc Number1 + Disc Count1 + Track Number6 + Track Count18 + Year2017 + Date Modified2018-10-09T10:42:17Z + Date Added2018-10-09T10:42:17Z + Bit Rate256 + Sample Rate44100 + Play Count114 + Play Date3783004704 + Play Date UTC2023-11-16T15:38:24Z + Skip Count7 + Skip Date2021-08-13T13:14:18Z + Release Date2017-09-15T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort Namerockstar (feat. 21 Savage) + Persistent IDB0C5C831F517B6EB + Explicit + Track TypeRemote + Apple Music + + 2575 + + Track ID2575 + NameBank Account + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph + AlbumIssa Album + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7824007 + Total Time220307 + Disc Number1 + Disc Count1 + Track Number2 + Track Count14 + Year2017 + Date Modified2018-10-09T10:43:22Z + Date Added2018-10-09T10:43:22Z + Bit Rate256 + Sample Rate44100 + Play Count232 + Play Date3783711521 + Play Date UTC2023-11-24T19:58:41Z + Skip Count9 + Skip Date2021-05-19T19:55:58Z + Release Date2017-07-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization1358 + Artwork Count1 + Sort AlbumIssa Album + Sort Artist21 Savage + Sort NameBank Account + Persistent IDB8D364A21A80B570 + Explicit + Track TypeRemote + Apple Music + + 2577 + + Track ID2577 + NameFor the Damaged Coda + ArtistBlonde Redhead + Album ArtistBlonde Redhead + AlbumMelody of Certain Damaged Lemons + GenreAlternative + KindApple Music AAC audio file + Size5799967 + Total Time157000 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2000 + Date Modified2018-10-09T11:38:22Z + Date Added2018-10-09T11:38:22Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3783410284 + Play Date UTC2023-11-21T08:18:04Z + Skip Count2 + Skip Date2021-07-25T08:37:49Z + Release Date2000-06-06T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMelody of Certain Damaged Lemons + Sort ArtistBlonde Redhead + Sort NameFor the Damaged Coda + Persistent IDC554B4E74148F36A + Track TypeRemote + Apple Music + + 2579 + + Track ID2579 + Name23 + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerAmedeo Pace, Kazu Makino & Simone Pace + Album23 + GenreAlternative + KindApple Music AAC audio file + Size11273151 + Total Time318800 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2007 + Date Modified2018-10-09T12:39:42Z + Date Added2018-10-09T12:39:42Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3783355076 + Play Date UTC2023-11-20T16:57:56Z + Skip Count2 + Skip Date2019-02-02T21:48:49Z + Release Date2007-03-23T12:00:00Z + Loved + Artwork Count1 + Sort Album23 + Sort ArtistBlonde Redhead + Sort Name23 + Persistent ID1E58C44C78084624 + Track TypeRemote + Apple Music + + 2581 + + Track ID2581 + NameFor the Damaged + ArtistBlonde Redhead + Album ArtistBlonde Redhead + AlbumMelody of Certain Damaged Lemons + GenreAlternative + KindApple Music AAC audio file + Size6426789 + Total Time182267 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2000 + Date Modified2018-10-09T12:39:48Z + Date Added2018-10-09T12:39:48Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3773842460 + Play Date UTC2023-08-02T14:34:20Z + Skip Count4 + Skip Date2022-07-08T12:31:44Z + Release Date2000-06-06T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMelody of Certain Damaged Lemons + Sort ArtistBlonde Redhead + Sort NameFor the Damaged + Persistent ID335FC287CAB6944B + Track TypeRemote + Apple Music + + 2583 + + Track ID2583 + NameDripping + ArtistBlonde Redhead + Album ArtistBlonde Redhead + AlbumBarragán + GenreAlternative + KindApple Music AAC audio file + Size7855573 + Total Time220613 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2014 + Date Modified2018-10-09T12:39:49Z + Date Added2018-10-09T12:39:49Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count41 + Play Date3778597514 + Play Date UTC2023-09-26T15:25:14Z + Release Date2014-09-02T07:00:00Z + Loved + Artwork Count1 + Sort AlbumBarragán + Sort ArtistBlonde Redhead + Sort NameDripping + Persistent ID61C9347E0D284F27 + Track TypeRemote + Apple Music + + 2585 + + Track ID2585 + NameThe Hills + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerAbel Tesfaye, Ahmad Balshe, Emmanuel Nickerson & Carlo Montagnese + AlbumBeauty Behind the Madness + GenreR&B/Soul + KindApple Music AAC audio file + Size8584650 + Total Time242291 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2015 + Date Modified2018-10-09T12:40:26Z + Date Added2018-10-09T12:40:26Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3781155235 + Play Date UTC2023-10-26T05:53:55Z + Release Date2015-05-27T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBeauty Behind the Madness + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort NameHills + Persistent ID6F7F177A8823943D + Explicit + Track TypeRemote + Apple Music + + 2587 + + Track ID2587 + NameButterflies and Hurricanes + ArtistMuse + Album ArtistMuse + ComposerChris Wolstenholme, Dominic Howard & Matthew Bellamy + AlbumAbsolution + GenreAlternative + KindApple Music AAC audio file + Size10919753 + Total Time302213 + Disc Number1 + Disc Count1 + Track Number10 + Track Count15 + Year2003 + Date Modified2018-10-09T13:31:11Z + Date Added2018-10-09T13:31:11Z + Bit Rate256 + Sample Rate44100 + Play Count63 + Play Date3781203174 + Play Date UTC2023-10-26T19:12:54Z + Skip Count2 + Skip Date2021-02-01T20:48:45Z + Release Date2003-09-15T07:00:00Z + Loved + Artwork Count1 + Sort AlbumAbsolution + Sort ArtistMuse + Sort NameButterflies and Hurricanes + Persistent ID4A01A343DECAF922 + Track TypeRemote + Apple Music + + 2589 + + Track ID2589 + NameCall Out My Name + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerAbel Tesfaye, Adam Feeney & Nicolas Jaar + AlbumMy Dear Melancholy, + GenreR&B/Soul + KindApple Music AAC audio file + Size8279935 + Total Time228382 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2018 + Date Modified2018-10-10T18:01:48Z + Date Added2018-10-10T18:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3781448901 + Play Date UTC2023-10-29T15:28:21Z + Release Date2018-03-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMy Dear Melancholy, + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort NameCall Out My Name + Persistent ID1F5445CF1BDED0C6 + Track TypeRemote + Apple Music + + 2591 + + Track ID2591 + NameAnother Friday Night + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumAnother Friday Night / Hot Heavy Summer / Sister - Single + GenreAlternative + KindApple Music AAC audio file + Size9548296 + Total Time276971 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2018 + Date Modified2018-10-10T19:10:32Z + Date Added2018-10-10T19:10:32Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3766851792 + Play Date UTC2023-05-13T16:43:12Z + Skip Count3 + Skip Date2022-06-28T21:12:35Z + Release Date2018-09-14T12:00:00Z + Artwork Count1 + Sort AlbumAnother Friday Night / Hot Heavy Summer / Sister - Single + Sort ArtistBen Howard + Sort NameAnother Friday Night + Persistent IDD238A1EBA794B17F + Track TypeRemote + Apple Music + + 2593 + + Track ID2593 + NameHot Heavy Summer (feat. Sylvan Esso) + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumAnother Friday Night / Hot Heavy Summer / Sister - Single + GenreAlternative + KindApple Music AAC audio file + Size7962748 + Total Time229292 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2018 + Date Modified2018-10-10T19:10:32Z + Date Added2018-10-10T19:10:32Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3768299192 + Play Date UTC2023-05-30T10:46:32Z + Skip Count1 + Skip Date2023-01-15T13:38:22Z + Release Date2018-09-14T12:00:00Z + Artwork Count1 + Sort AlbumAnother Friday Night / Hot Heavy Summer / Sister - Single + Sort ArtistBen Howard + Sort NameHot Heavy Summer (feat. Sylvan Esso) + Persistent ID33B47EE8C7D7951F + Track TypeRemote + Apple Music + + 2595 + + Track ID2595 + NameSister + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumAnother Friday Night / Hot Heavy Summer / Sister - Single + GenreAlternative + KindApple Music AAC audio file + Size4451092 + Total Time116948 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2018 + Date Modified2018-10-10T19:10:32Z + Date Added2018-10-10T19:10:32Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3773526069 + Play Date UTC2023-07-29T22:41:09Z + Skip Count2 + Skip Date2021-04-27T13:15:07Z + Release Date2018-09-14T12:00:00Z + Artwork Count1 + Sort AlbumAnother Friday Night / Hot Heavy Summer / Sister - Single + Sort ArtistBen Howard + Sort NameSister + Persistent IDD70CB05D5C3748C8 + Track TypeRemote + Apple Music + + 2597 + + Track ID2597 + NameOats In the Water + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumThe Burgh Island EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size10423033 + Total Time299382 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2012 + Date Modified2018-10-10T19:29:17Z + Date Added2018-10-10T19:29:17Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3781156643 + Play Date UTC2023-10-26T06:17:23Z + Skip Count3 + Skip Date2022-12-09T16:05:50Z + Release Date2012-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBurgh Island EP + Sort ArtistBen Howard + Sort NameOats In the Water + Persistent ID5BE7222042E103F5 + Track TypeRemote + Apple Music + + 2599 + + Track ID2599 + NameWaiting to Breathe + ArtistAlexis Ffrench, Tall Heights, The City of Prague Philharmonic Orchestra & Adam Klemans + Album ArtistAlexis Ffrench + ComposerAlexis Ffrench + AlbumEvolution + WorkWaiting to Breathe + Movement NameWaiting to Breathe + GenreClassical Crossover + KindApple Music AAC audio file + Size6620189 + Total Time189737 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2018 + Date Modified2018-10-11T11:41:56Z + Date Added2018-10-11T11:41:56Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3782987608 + Play Date UTC2023-11-16T10:53:28Z + Skip Count2 + Skip Date2022-12-14T14:24:44Z + Release Date2018-08-31T12:00:00Z + Loved + Artwork Count1 + Sort AlbumEvolution + Sort ArtistAlexis Ffrench, Tall Heights, The City of Prague Philharmonic Orchestra & Adam Klemans + Sort NameWaiting to Breathe + Persistent IDFA854ECAD1A69717 + Track TypeRemote + Apple Music + + 2601 + + Track ID2601 + NameEvergreen + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumI Forget Where We Were + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8469598 + Total Time244951 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2014 + Date Modified2018-10-11T15:08:21Z + Date Added2018-10-11T15:08:21Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3762327346 + Play Date UTC2023-03-22T07:55:46Z + Skip Count5 + Skip Date2022-07-05T14:55:04Z + Release Date2014-10-20T12:00:00Z + Artwork Count1 + Sort AlbumI Forget Where We Were + Sort ArtistBen Howard + Sort NameEvergreen + Persistent ID5504E416071E60EC + Track TypeRemote + Apple Music + + 2603 + + Track ID2603 + NameSmall Things + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumI Forget Where We Were + GenreSinger/Songwriter + KindApple Music AAC audio file + Size11887289 + Total Time343776 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2014 + Date Modified2018-10-11T15:09:29Z + Date Added2018-10-11T15:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3783668619 + Play Date UTC2023-11-24T08:03:39Z + Release Date2014-10-20T12:00:00Z + Artwork Count1 + Sort AlbumI Forget Where We Were + Sort ArtistBen Howard + Sort NameSmall Things + Persistent ID6315E0096E6EABD2 + Track TypeRemote + Apple Music + + 2605 + + Track ID2605 + NameI Forget Where We Were + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumI Forget Where We Were + GenreSinger/Songwriter + KindApple Music AAC audio file + Size9786511 + Total Time281206 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2014 + Date Modified2018-10-11T15:09:47Z + Date Added2018-10-11T15:09:47Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3779917432 + Play Date UTC2023-10-11T22:03:52Z + Skip Count3 + Skip Date2023-02-23T12:35:01Z + Release Date2014-08-19T12:00:00Z + Artwork Count1 + Sort AlbumI Forget Where We Were + Sort ArtistBen Howard + Sort NameI Forget Where We Were + Persistent ID78796A1D5AD547D7 + Track TypeRemote + Apple Music + + 2607 + + Track ID2607 + NameIn Dreams + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumI Forget Where We Were + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7615387 + Total Time213439 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2014 + Date Modified2018-10-11T15:13:32Z + Date Added2018-10-11T15:13:32Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3759832925 + Play Date UTC2023-02-21T11:02:05Z + Release Date2014-10-20T12:00:00Z + Normalization1181 + Artwork Count1 + Sort AlbumI Forget Where We Were + Sort ArtistBen Howard + Sort NameIn Dreams + Persistent ID55C161C97094FCF5 + Track TypeRemote + Apple Music + + 2609 + + Track ID2609 + NameShe Treats Me Well + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumI Forget Where We Were + GenreSinger/Songwriter + KindApple Music AAC audio file + Size10911607 + Total Time317935 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2014 + Date Modified2018-10-11T15:14:59Z + Date Added2018-10-11T15:14:59Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3768298028 + Play Date UTC2023-05-30T10:27:08Z + Skip Count3 + Skip Date2021-08-27T19:36:27Z + Release Date2014-10-20T12:00:00Z + Artwork Count1 + Sort AlbumI Forget Where We Were + Sort ArtistBen Howard + Sort NameShe Treats Me Well + Persistent IDA6537FDDD98815E1 + Track TypeRemote + Apple Music + + 2611 + + Track ID2611 + NameConrad + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumI Forget Where We Were + GenreSinger/Songwriter + KindApple Music AAC audio file + Size12503126 + Total Time368125 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2014 + Date Modified2018-10-11T15:27:32Z + Date Added2018-10-11T15:27:32Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3768311790 + Play Date UTC2023-05-30T14:16:30Z + Skip Count1 + Skip Date2018-10-23T08:34:44Z + Release Date2014-10-20T12:00:00Z + Artwork Count1 + Sort AlbumI Forget Where We Were + Sort ArtistBen Howard + Sort NameConrad + Persistent ID509EF61DD3CBA969 + Track TypeRemote + Apple Music + + 2613 + + Track ID2613 + NameDaylight + ArtistBlue October + Album ArtistBlue October + ComposerJustin S Furstenfeld, William Matthew Noveskey, Dwight A & Baker + AlbumI Hope You're Happy + GenreAlternative + KindAAC audio file + Size8105900 + Total Time219517 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2018 + Date Modified2018-10-13T16:15:12Z + Date Added2018-10-13T16:15:12Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3759911409 + Play Date UTC2023-02-22T08:50:09Z + Skip Count7 + Skip Date2022-09-20T11:44:35Z + Release Date2018-08-17T12:00:00Z + Loved + Sort AlbumI Hope You're Happy + Sort ArtistBlue October + Sort NameDaylight + Persistent IDA335183A2EAEAE77 + Track TypeRemote + + 2615 + + Track ID2615 + NameTiimmy Turner + ArtistDesiigner + Album ArtistDesiigner + ComposerSidney Selby & MIKE DEAN + AlbumTiimmy Turner - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8599940 + Total Time239851 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2018-10-14T15:35:16Z + Date Added2018-10-14T15:35:16Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3773849115 + Play Date UTC2023-08-02T16:25:15Z + Skip Date2018-10-24T19:53:32Z + Release Date2016-07-22T07:00:00Z + Loved + Artwork Count1 + Sort AlbumTiimmy Turner - Single + Sort ArtistDesiigner + Sort NameTiimmy Turner + Persistent IDFCDA8F400BF22D39 + Explicit + Track TypeRemote + Apple Music + + 2617 + + Track ID2617 + NameRapture + ArtistTom Walker + Album ArtistTom Walker + ComposerTom Walker, Tim Deal & Fiona Bevan + AlbumBlessings - EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size6679437 + Total Time186067 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2017 + Date Modified2018-10-15T18:05:08Z + Date Added2018-10-15T18:05:08Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3767770510 + Play Date UTC2023-05-24T07:55:10Z + Skip Count1 + Skip Date2018-10-16T08:22:35Z + Release Date2017-05-19T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBlessings - EP + Sort ArtistTom Walker + Sort NameRapture + Persistent ID021A994694B73C79 + Explicit + Track TypeRemote + Apple Music + + 2619 + + Track ID2619 + NameKarma + ArtistTom Walker + Album ArtistTom Walker + ComposerTom Walker, Tim Deal & Samuel Preston + AlbumBlessings - EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size6609255 + Total Time183773 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2017 + Date Modified2018-10-15T18:10:18Z + Date Added2018-10-15T18:10:18Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3764666356 + Play Date UTC2023-04-18T09:39:16Z + Skip Count1 + Skip Date2018-10-21T16:03:18Z + Release Date2017-05-19T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBlessings - EP + Sort ArtistTom Walker + Sort NameKarma + Persistent ID0011183DFFF76192 + Explicit + Track TypeRemote + Apple Music + + 2621 + + Track ID2621 + NameMy Way + ArtistTom Walker + Album ArtistTom Walker + ComposerTom Walker, Tim Deal & Fiona Bevan + AlbumMy Way - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8532920 + Total Time236249 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-15T18:16:17Z + Date Added2018-10-15T18:16:17Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3767689937 + Play Date UTC2023-05-23T09:32:17Z + Skip Count3 + Skip Date2018-10-31T19:51:46Z + Release Date2018-06-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMy Way - Single + Sort ArtistTom Walker + Sort NameMy Way + Persistent IDA8C91D03104DC9A6 + Track TypeRemote + Apple Music + + 2623 + + Track ID2623 + NameSlow Loud & Bangin + ArtistChamillionaire + Album ArtistChamillionaire + AlbumElevate + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9043107 + Total Time254653 + Disc Number1 + Disc Count1 + Track Number3 + Track Count7 + Year2013 + Date Modified2018-10-15T18:52:46Z + Date Added2018-10-15T18:52:46Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3763660448 + Play Date UTC2023-04-06T18:14:08Z + Skip Count4 + Skip Date2022-10-28T09:51:19Z + Release Date2013-02-12T12:00:00Z + Loved + Normalization2758 + Artwork Count1 + Sort AlbumElevate + Sort ArtistChamillionaire + Sort NameSlow Loud & Bangin + Persistent ID1E32D9B43D041A38 + Track TypeRemote + Apple Music + + 2625 + + Track ID2625 + NameHandyman + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumHere Come the Runts + GenreAlternative + KindAAC audio file + Size7299669 + Total Time202032 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2018 + Date Modified2018-10-16T03:59:34Z + Date Added2018-10-16T03:59:34Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3731139473 + Play Date UTC2022-03-26T08:37:53Z + Skip Count2 + Skip Date2020-05-16T15:52:53Z + Release Date2018-01-18T12:00:00Z + Sort AlbumHere Come the Runts + Sort ArtistAWOLNATION + Sort NameHandyman + Persistent ID2C467B797CD629FB + Track TypeRemote + + 2627 + + Track ID2627 + NameWalk On Water + ArtistThirty Seconds to Mars + Album ArtistThirty Seconds to Mars + ComposerJared Leto + AlbumAMERICA + GenreAlternative + KindApple Music AAC audio file + Size6874003 + Total Time185467 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2017 + Date Modified2018-10-16T04:01:22Z + Date Added2018-10-16T04:01:22Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3768284520 + Play Date UTC2023-05-30T06:42:00Z + Release Date2017-08-22T07:00:00Z + Loved + Artwork Count1 + Sort AlbumAMERICA + Sort ArtistThirty Seconds to Mars + Sort NameWalk On Water + Persistent ID8BF60516F2E031CB + Track TypeRemote + Apple Music + + 2629 + + Track ID2629 + NameBlack Flies + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom (Deluxe Edition) + GenreSinger/Songwriter + KindApple Music AAC audio file + Size13558006 + Total Time381507 + Disc Number1 + Disc Count1 + Track Number8 + Track Count17 + Year2011 + Date Modified2018-10-16T15:32:59Z + Date Added2018-10-16T15:32:59Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3773757141 + Play Date UTC2023-08-01T14:52:21Z + Skip Count7 + Skip Date2022-07-25T17:55:44Z + Release Date2011-01-01T12:00:00Z + Rating40 + Rating Computed + Album Rating40 + Loved + Artwork Count1 + Sort AlbumEvery Kingdom (Deluxe Edition) + Sort ArtistBen Howard + Sort NameBlack Flies + Persistent ID7369DE9BA15DA501 + Track TypeRemote + Apple Music + + 2631 + + Track ID2631 + NameStarlight + ArtistMuse + Album ArtistMuse + ComposerMuse, Mathew Bellamy & Matthew Bellamy + AlbumSix Studio Albums + GroupingBlack Holes and Revelations + GenreAlternative + KindApple Music AAC audio file + Size8687951 + Total Time239916 + Disc Number4 + Disc Count6 + Track Number2 + Track Count11 + Year2006 + Date Modified2018-10-21T04:35:34Z + Date Added2018-10-21T04:35:34Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3779918199 + Play Date UTC2023-10-11T22:16:39Z + Release Date2006-06-19T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumSix Studio Albums + Sort ArtistMuse + Sort NameStarlight + Persistent IDA22A1A38773D8768 + Track TypeRemote + Apple Music + + 2633 + + Track ID2633 + NameFeeling Good + ArtistMuse + Album ArtistMuse + ComposerBricusse, Newley, Anthony Newley & Leslie Bricusse + AlbumOrigin of Symmetry + GenreAlternative + KindApple Music AAC audio file + Size7195701 + Total Time199760 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2001 + Date Modified2018-10-21T04:42:32Z + Date Added2018-10-21T04:42:32Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3773120037 + Play Date UTC2023-07-25T05:53:57Z + Release Date2001-07-17T07:00:00Z + Loved + Artwork Count1 + Sort AlbumOrigin of Symmetry + Sort ArtistMuse + Sort NameFeeling Good + Persistent IDE73CA8668EB78CB6 + Track TypeRemote + Apple Music + + 2635 + + Track ID2635 + NameInto Me + ArtistGarrickson & Qole + Album ArtistGarrickson & Qole + AlbumWith You - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size8336334 + Total Time237422 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2016 + Date Modified2018-10-21T06:21:51Z + Date Added2018-10-21T06:21:51Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3777366079 + Play Date UTC2023-09-12T09:21:19Z + Skip Count1 + Skip Date2021-02-25T23:30:57Z + Release Date2016-05-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWith You - EP + Sort ArtistGarrickson & Qole + Sort NameInto Me + Persistent ID2C4380A7E5295662 + Explicit + Track TypeRemote + Apple Music + + 2637 + + Track ID2637 + NameStoned on You + ArtistJaymes Young + Album ArtistJaymes Young + ComposerJaymes Young + AlbumFeel Something + GenreAlternative + KindApple Music AAC audio file + Size7302477 + Total Time204344 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2017 + Date Modified2018-10-21T06:51:17Z + Date Added2018-10-21T06:51:17Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3779899308 + Play Date UTC2023-10-11T17:01:48Z + Skip Count5 + Skip Date2018-12-04T20:53:39Z + Release Date2017-04-07T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumFeel Something + Sort ArtistJaymes Young + Sort NameStoned on You + Persistent IDDBCACE1C5E5AE388 + Track TypeRemote + Apple Music + + 2639 + + Track ID2639 + NameSuper Colossal + ArtistJoe Satriani + Album ArtistJoe Satriani + ComposerJoe Satriani + AlbumSuper Colossal + GenreRock + KindApple Music AAC audio file + Size8916127 + Total Time254635 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2006 + Date Modified2018-10-21T09:06:33Z + Date Added2018-10-21T09:06:33Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3766662225 + Play Date UTC2023-05-11T12:03:45Z + Skip Count7 + Skip Date2022-07-17T13:09:23Z + Release Date2006-03-14T12:00:00Z + Artwork Count1 + Sort AlbumSuper Colossal + Sort ArtistJoe Satriani + Sort NameSuper Colossal + Persistent ID37DFFD2ADADDE07A + Track TypeRemote + Apple Music + + 2641 + + Track ID2641 + NameTen Words + ArtistJoe Satriani + Album ArtistJoe Satriani + ComposerJoe Satriani + AlbumSuper Colossal + GenreRock + KindApple Music AAC audio file + Size7883357 + Total Time208585 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2006 + Date Modified2018-10-21T09:08:39Z + Date Added2018-10-21T09:08:39Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780480507 + Play Date UTC2023-10-18T10:28:27Z + Release Date2006-03-14T12:00:00Z + Artwork Count1 + Sort AlbumSuper Colossal + Sort ArtistJoe Satriani + Sort NameTen Words + Persistent ID984CA1A775379CB6 + Track TypeRemote + Apple Music + + 2643 + + Track ID2643 + NameMade of Tears + ArtistJoe Satriani + Album ArtistJoe Satriani + ComposerJoe Satriani + AlbumSuper Colossal + GenreRock + KindApple Music AAC audio file + Size12041686 + Total Time332845 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2006 + Date Modified2018-10-21T09:09:09Z + Date Added2018-10-21T09:09:09Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3760095779 + Play Date UTC2023-02-24T12:02:59Z + Skip Count1 + Skip Date2023-05-12T19:16:09Z + Release Date2006-03-14T12:00:00Z + Loved + Normalization2026 + Artwork Count1 + Sort AlbumSuper Colossal + Sort ArtistJoe Satriani + Sort NameMade of Tears + Persistent IDCB55CEEE75DF4B97 + Track TypeRemote + Apple Music + + 2645 + + Track ID2645 + NameRadio Lust + ArtistThe Blancos + Album ArtistThe Blancos + AlbumBroken Kids + GenreAlternative + KindAAC audio file + Size8130185 + Total Time230290 + Disc Number1 + Disc Count1 + Track Number5 + Track Count7 + Year2016 + Date Modified2018-10-21T20:12:21Z + Date Added2018-10-21T20:12:21Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3663134223 + Play Date UTC2020-01-29T06:17:03Z + Skip Count2 + Skip Date2018-10-29T08:50:46Z + Release Date2016-06-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBroken Kids + Sort Album ArtistBlancos + Sort ArtistBlancos + Sort NameRadio Lust + Persistent IDA088B2C6DD4D1FEC + Explicit + Track TypeRemote + + 2647 + + Track ID2647 + NameEase Me + ArtistPageant Boys + Album ArtistPageant Boys + AlbumShadowboxing - EP + GenreIndie Rock + KindApple Music AAC audio file + Size8238486 + Total Time227273 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2017 + Date Modified2018-10-21T20:18:11Z + Date Added2018-10-21T20:18:11Z + Bit Rate256 + Sample Rate44100 + Play Count64 + Play Date3760086533 + Play Date UTC2023-02-24T09:28:53Z + Skip Count8 + Skip Date2022-07-14T14:48:57Z + Release Date2017-05-19T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumShadowboxing - EP + Sort ArtistPageant Boys + Sort NameEase Me + Persistent ID05DB74B41FD54586 + Track TypeRemote + Apple Music + + 2649 + + Track ID2649 + NameJuvenescence + ArtistVerzache + Album ArtistVerzache + ComposerZachary Farache + AlbumJuvenescence - Single + GenreAlternative + KindApple Music AAC audio file + Size5473849 + Total Time150168 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-10-21T20:22:07Z + Date Added2018-10-21T20:22:07Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3783586861 + Play Date UTC2023-11-23T09:21:01Z + Skip Count1 + Skip Date2022-04-16T22:48:14Z + Release Date2017-03-09T12:00:00Z + Loved + Artwork Count1 + Sort AlbumJuvenescence - Single + Sort ArtistVerzache + Sort NameJuvenescence + Persistent ID824E558B7464C01E + Track TypeRemote + Apple Music + + 2651 + + Track ID2651 + NameInyn + ArtistOkay(K) + Album ArtistOkay(K) + AlbumLucy Wrap(s) - EP + GenreAlternative + KindAAC audio file + Size13932972 + Total Time408110 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2017 + Date Modified2018-10-21T20:31:33Z + Date Added2018-10-21T20:31:33Z + Bit Rate256 + Sample Rate44100 + Play Count66 + Play Date3771745340 + Play Date UTC2023-07-09T08:02:20Z + Skip Count6 + Skip Date2022-10-31T18:03:25Z + Release Date2017-02-08T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLucy Wrap(s) - EP + Sort ArtistOkay(K) + Sort NameInyn + Persistent IDEE19B9579E3A0738 + Track TypeRemote + + 2653 + + Track ID2653 + NameKnow My Name + ArtistThe Blancos + Album ArtistThe Blancos + ComposerCory Hueston, Jayson Robbins & Mike Green + AlbumKnow My Name - Single + GenreAlternative + KindApple Music AAC audio file + Size6946696 + Total Time192289 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-22T04:39:01Z + Date Added2018-10-22T04:39:01Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3766852148 + Play Date UTC2023-05-13T16:49:08Z + Skip Count6 + Skip Date2019-02-04T06:58:53Z + Release Date2018-05-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumKnow My Name - Single + Sort Album ArtistBlancos + Sort ArtistBlancos + Sort NameKnow My Name + Persistent ID2A80135B2067950C + Clean + Track TypeRemote + Apple Music + + 2655 + + Track ID2655 + NameHeartbreak + ArtistUs The Duo + Album ArtistUs The Duo + ComposerMichael Alvarado & Carissa Alvarado + AlbumNo Matter Where You Are + GenrePop + KindApple Music AAC audio file + Size10215875 + Total Time296547 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2014 + Date Modified2018-10-22T20:00:25Z + Date Added2018-10-22T20:00:25Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3770277006 + Play Date UTC2023-06-22T08:10:06Z + Skip Count1 + Skip Date2022-11-17T06:49:24Z + Release Date2014-05-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNo Matter Where You Are + Sort ArtistUs The Duo + Sort NameHeartbreak + Persistent ID16B3D23CE1EBBCCB + Track TypeRemote + Apple Music + + 2657 + + Track ID2657 + NameLeave Me Alone.Sad + ArtistCall Me Karizma + Album ArtistCall Me Karizma + AlbumLeave Me Alone.Sad - Single + GenrePop + KindApple Music AAC audio file + Size8755976 + Total Time247925 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-10-23T03:54:56Z + Date Added2018-10-23T03:54:56Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3775804942 + Play Date UTC2023-08-25T07:42:22Z + Skip Count1 + Skip Date2018-10-23T20:34:02Z + Release Date2017-04-14T12:00:00Z + Artwork Count1 + Sort AlbumLeave Me Alone.Sad - Single + Sort ArtistCall Me Karizma + Sort NameLeave Me Alone.Sad + Persistent ID5969C8BBE06A0F84 + Track TypeRemote + Apple Music + + 2659 + + Track ID2659 + NameMad About You + ArtistSting + Album ArtistSting + ComposerSting + AlbumFields of Gold - The Best of Sting (1984-1994) [Remastered] + GenreRock + KindApple Music AAC audio file + Size8733024 + Total Time233667 + Disc Number1 + Disc Count1 + Track Number6 + Track Count17 + Year1991 + Date Modified2018-10-23T07:38:17Z + Date Added2018-10-23T07:38:17Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3780844353 + Play Date UTC2023-10-22T15:32:33Z + Skip Count1 + Skip Date2022-10-25T16:37:57Z + Release Date1991-01-17T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumFields of Gold - The Best of Sting (1984-1994) [Remastered] + Sort ArtistSting + Sort NameMad About You + Persistent ID1FD234776EAFE533 + Track TypeRemote + Apple Music + + 2661 + + Track ID2661 + NameF U Till I F U (feat. Cass) + ArtistCall Me Karizma + Album ArtistCall Me Karizma + AlbumEmo: Everybody Moves On - EP + GenreAlternative + KindApple Music AAC audio file + Size8237674 + Total Time234162 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2016 + Date Modified2018-10-23T11:48:50Z + Date Added2018-10-23T11:48:50Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3760423595 + Play Date UTC2023-02-28T07:06:35Z + Skip Count1 + Skip Date2022-08-19T16:08:17Z + Release Date2016-04-20T12:00:00Z + Artwork Count1 + Sort AlbumEmo: Everybody Moves On - EP + Sort ArtistCall Me Karizma + Sort NameF U Till I F U (feat. Cass) + Persistent IDD112289BEEC2E1FE + Explicit + Track TypeRemote + Apple Music + + 2663 + + Track ID2663 + NameHell Froze Over + ArtistKodaline + Album ArtistKodaline + ComposerStephen Garrigan, Johnny McDaid, Mark Prendergast, Max Marlow, Vincent May, Jr. & Jason Boland + AlbumPolitics of Living + GenreAlternative + KindApple Music AAC audio file + Size7990658 + Total Time225573 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2018 + Date Modified2018-10-23T17:52:28Z + Date Added2018-10-23T17:52:28Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3776178552 + Play Date UTC2023-08-29T15:29:12Z + Skip Count1 + Skip Date2018-10-25T18:25:48Z + Release Date2018-09-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPolitics of Living + Sort ArtistKodaline + Sort NameHell Froze Over + Persistent ID771D30B11D6A1C11 + Track TypeRemote + Apple Music + + 2665 + + Track ID2665 + NameAll I Want + ArtistKodaline + Album ArtistKodaline + ComposerSteve Garrigan, Mark Prendergast, James Flannigan & Vincent May + AlbumIn a Perfect World + GenreAlternative + KindApple Music AAC audio file + Size10854886 + Total Time305747 + Disc Number1 + Disc Count1 + Track Number2 + Track Count15 + Year2012 + Date Modified2018-10-23T19:41:34Z + Date Added2018-10-23T19:41:34Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3776432885 + Play Date UTC2023-09-01T14:08:05Z + Skip Count4 + Skip Date2022-12-12T06:07:43Z + Release Date2012-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumIn a Perfect World + Sort ArtistKodaline + Sort NameAll I Want + Persistent IDA707126A7CAAD16E + Track TypeRemote + Apple Music + + 2667 + + Track ID2667 + NameFeels Like Summer + ArtistWeezer + Album ArtistWeezer + ComposerDan Goldberger, David Dahlquist, J.R. Rotem, Johnny Coffer, Patrick Morrissey & Rivers Cuomo + AlbumPacific Daydream + GenreAlternative + KindApple Music AAC audio file + Size7030996 + Total Time196031 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2017 + Date Modified2018-10-24T17:36:12Z + Date Added2018-10-24T17:36:12Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3783410908 + Play Date UTC2023-11-21T08:28:28Z + Skip Count8 + Skip Date2022-10-24T13:51:25Z + Release Date2017-03-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPacific Daydream + Sort ArtistWeezer + Sort NameFeels Like Summer + Persistent IDACE64DCE57CAE448 + Track TypeRemote + Apple Music + + 2669 + + Track ID2669 + NameAny Friend of Diane’s + ArtistWeezer + Album ArtistWeezer + ComposerRivers Cuomo + AlbumPacific Daydream + GenreAlternative + KindApple Music AAC audio file + Size7767967 + Total Time214772 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2017 + Date Modified2018-10-24T18:11:18Z + Date Added2018-10-24T18:11:18Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3767186209 + Play Date UTC2023-05-17T13:36:49Z + Skip Count4 + Skip Date2018-10-26T18:33:05Z + Release Date2017-10-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPacific Daydream + Sort ArtistWeezer + Sort NameAny Friend of Diane’s + Persistent IDA88B128E65C7D4F7 + Track TypeRemote + Apple Music + + 2671 + + Track ID2671 + NameLa Mancha Screwjob + ArtistWeezer + Album ArtistWeezer + ComposerJosh Alexander & Rivers Cuomo + AlbumPacific Daydream + GenreAlternative + KindApple Music AAC audio file + Size7964612 + Total Time207685 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2017 + Date Modified2018-10-24T18:15:16Z + Date Added2018-10-24T18:15:16Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3772790606 + Play Date UTC2023-07-21T10:23:26Z + Skip Count8 + Skip Date2022-10-24T13:36:29Z + Release Date2017-10-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPacific Daydream + Sort ArtistWeezer + Sort NameLa Mancha Screwjob + Persistent IDA05929D20EFFB714 + Track TypeRemote + Apple Music + + 2673 + + Track ID2673 + NameLte + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumYUNGDEATHLILLIFE + GenreHip-Hop + KindAAC audio file + Size4918247 + Total Time133747 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2015 + Date Modified2018-10-25T11:54:17Z + Date Added2018-10-25T11:54:17Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3767516761 + Play Date UTC2023-05-21T09:26:01Z + Skip Count4 + Skip Date2022-11-25T23:24:23Z + Release Date2015-05-08T12:00:00Z + Loved + Artwork Count1 + Sort AlbumYUNGDEATHLILLIFE + Sort Artist$uicideboy$ + Sort NameLte + Persistent ID97822EC0F0BCF2C5 + Explicit + Track TypeRemote + + 2675 + + Track ID2675 + NameI Mean It (feat. Remo) + ArtistG-Eazy + Album ArtistG-Eazy + ComposerGerald Gillum, Christoph Andersson & Remo Green + AlbumThese Things Happen + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8449877 + Total Time236480 + Disc Number1 + Disc Count1 + Track Number3 + Track Count16 + Year2014 + Date Modified2018-10-25T17:34:15Z + Date Added2018-10-25T17:34:15Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3783593304 + Play Date UTC2023-11-23T11:08:24Z + Release Date2014-05-13T07:00:00Z + Artwork Count1 + Sort AlbumThese Things Happen + Sort ArtistG-Eazy + Sort NameI Mean It (feat. Remo) + Persistent IDC3C1E22AE036509D + Explicit + Track TypeRemote + Apple Music + + 2677 + + Track ID2677 + NameRewind (feat. Anthony Russo) + ArtistG-Eazy + Album ArtistG-Eazy + ComposerAnthony Russo, Gerald Gillum, Christian "Hitmaka" Ward, Kenneth Coby, Floyd A1 Bentley & Andrew Neely + AlbumRewind (feat. Anthony Russo) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7073397 + Total Time200411 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-25T17:34:46Z + Date Added2018-10-25T17:34:46Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3781177566 + Play Date UTC2023-10-26T12:06:06Z + Release Date2018-09-12T07:00:00Z + Artwork Count1 + Sort AlbumRewind (feat. Anthony Russo) - Single + Sort ArtistG-Eazy + Sort NameRewind (feat. Anthony Russo) + Persistent ID37858DDD9E5C1D79 + Explicit + Track TypeRemote + Apple Music + + 2679 + + Track ID2679 + NameCry Alone + ArtistLil Peep + Album ArtistLil Peep + ComposerGustav Ahr, Dylan Mullen & IIVI + AlbumCome Over When You're Sober, Pt. 2 (Bonus) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6134176 + Total Time167107 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2018 + Date Modified2018-10-25T17:37:12Z + Date Added2018-10-25T17:37:12Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3773535554 + Play Date UTC2023-07-30T01:19:14Z + Skip Count3 + Skip Date2022-07-15T17:59:35Z + Release Date2018-11-09T12:00:00Z + Artwork Count1 + Sort AlbumCome Over When You're Sober, Pt. 2 (Bonus) + Sort ArtistLil Peep + Sort NameCry Alone + Persistent IDA24A0515784CB0B6 + Explicit + Track TypeRemote + Apple Music + + 2681 + + Track ID2681 + NameLoser + ArtistJagwar Twin + Album ArtistJagwar Twin + ComposerMatthew Pauling & Roy English + AlbumSubject To Flooding + GenreAlternative + KindApple Music AAC audio file + Size6443306 + Total Time175466 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2019 + Date Modified2018-10-26T08:15:52Z + Date Added2018-10-26T08:15:52Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3780832346 + Play Date UTC2023-10-22T12:12:26Z + Skip Count3 + Skip Date2021-12-06T20:27:36Z + Release Date2018-09-21T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSubject To Flooding + Sort ArtistJagwar Twin + Sort NameLoser + Persistent IDC20F92BA9CA85025 + Track TypeRemote + Apple Music + + 2683 + + Track ID2683 + NameBells + ArtistThe Unlikely Candidates + Album ArtistThe Unlikely Candidates + ComposerKyle Morris, Brenton Carney, Dave Bassett, Jaren Hornbeek, Kevin Goddard & Cole Male + AlbumBells - Single + GenreRock + KindApple Music AAC audio file + Size7195464 + Total Time190520 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-26T09:20:12Z + Date Added2018-10-26T09:20:12Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3783678793 + Play Date UTC2023-11-24T10:53:13Z + Skip Count7 + Skip Date2023-10-03T09:28:33Z + Release Date2018-10-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBells - Single + Sort Album ArtistUnlikely Candidates + Sort ArtistUnlikely Candidates + Sort NameBells + Persistent IDB7FC7800A5197150 + Track TypeRemote + Apple Music + + 2685 + + Track ID2685 + NameBkcbd + ArtistThe Blancos + Album ArtistThe Blancos + AlbumBkcbd - Single + GenreAlternative + KindAAC audio file + Size7889599 + Total Time223116 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2018-10-26T14:30:20Z + Date Added2018-10-26T14:30:20Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3730534013 + Play Date UTC2022-03-19T08:26:53Z + Skip Count5 + Skip Date2021-12-08T17:35:38Z + Release Date2016-02-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization2802 + Artwork Count1 + Sort AlbumBkcbd - Single + Sort Album ArtistBlancos + Sort ArtistBlancos + Sort NameBkcbd + Persistent IDC816A73A0D9CC06C + Explicit + Track TypeRemote + + 2687 + + Track ID2687 + NameLet's Fall in Love for the Night + ArtistFINNEAS + Album ArtistFINNEAS + ComposerFINNEAS + AlbumLet's Fall in Love for the Night - Single + GenreAlternative + KindApple Music AAC audio file + Size6823276 + Total Time190348 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-26T17:44:18Z + Date Added2018-10-26T17:44:18Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3783355266 + Play Date UTC2023-11-20T17:01:06Z + Skip Count4 + Skip Date2022-06-28T21:13:35Z + Release Date2018-10-19T12:00:00Z + Artwork Count1 + Sort AlbumLet's Fall in Love for the Night - Single + Sort ArtistFINNEAS + Sort NameLet's Fall in Love for the Night + Persistent ID00BE9037A2DE9F12 + Explicit + Track TypeRemote + Apple Music + + 2689 + + Track ID2689 + NameCome True + Artistkhai dreams & Forest + Album Artistkhai dreams & Forest + ComposerForrest Frank & Khai Duong + AlbumCome True - Single + GenreAlternative + KindApple Music AAC audio file + Size7224762 + Total Time203520 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-26T17:47:11Z + Date Added2018-10-26T17:47:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3759949063 + Play Date UTC2023-02-22T19:17:43Z + Skip Count2 + Skip Date2019-01-17T09:46:32Z + Release Date2018-09-20T12:00:00Z + Artwork Count1 + Sort AlbumCome True - Single + Sort Artistkhai dreams & Forest + Sort NameCome True + Persistent IDD44C8B421AC71D5B + Track TypeRemote + Apple Music + + 2691 + + Track ID2691 + NameStronger + ArtistThe Score + Album ArtistThe Score + ComposerEdan Dover, Eddie Ramirez, Jason Merris Bell & Jordan Rand Miller + AlbumPressure - EP + GenreAlternative + KindApple Music AAC audio file + Size6912729 + Total Time190987 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2020 + Date Modified2018-10-26T17:49:25Z + Date Added2018-10-26T17:49:25Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3767101391 + Play Date UTC2023-05-16T14:03:11Z + Skip Count4 + Skip Date2023-01-03T16:21:18Z + Release Date2018-09-07T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPressure - EP + Sort Album ArtistScore + Sort ArtistScore + Sort NameStronger + Persistent IDD09A3D07080A6FDF + Track TypeRemote + Apple Music + + 2693 + + Track ID2693 + NameClean Eyes + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumSYML + GenreAlternative + KindApple Music AAC audio file + Size6782019 + Total Time184093 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2018 + Date Modified2018-10-26T17:54:35Z + Date Added2018-10-26T17:54:35Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3767804299 + Play Date UTC2023-05-24T17:18:19Z + Skip Count3 + Skip Date2023-05-30T14:54:08Z + Release Date2018-09-21T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSYML + Sort ArtistSYML + Sort NameClean Eyes + Persistent IDAF2BBD604EE58F3C + Track TypeRemote + Apple Music + + 2695 + + Track ID2695 + NameHazey + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDavid Bayley + AlbumZABA + GenreAlternative + KindApple Music AAC audio file + Size9974717 + Total Time265893 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2014 + Date Modified2018-10-26T18:27:48Z + Date Added2018-10-26T18:27:48Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783356232 + Play Date UTC2023-11-20T17:17:12Z + Release Date2014-06-06T07:00:00Z + Artwork Count1 + Sort AlbumZABA + Sort ArtistGlass Animals + Sort NameHazey + Persistent ID5FB794616A938FE2 + Explicit + Track TypeRemote + Apple Music + + 2697 + + Track ID2697 + NameHappy Hour + ArtistWeezer + Album ArtistWeezer + ComposerChris Sernel, Rivers Cuomo & Sean Bowe + AlbumPacific Daydream + GenreAlternative + KindApple Music AAC audio file + Size6427177 + Total Time177140 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2017 + Date Modified2018-10-26T18:53:34Z + Date Added2018-10-26T18:53:34Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3781176359 + Play Date UTC2023-10-26T11:45:59Z + Skip Count2 + Skip Date2022-05-15T15:04:18Z + Release Date2017-10-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPacific Daydream + Sort ArtistWeezer + Sort NameHappy Hour + Persistent ID062B8F6DB966E9AE + Track TypeRemote + Apple Music + + 2699 + + Track ID2699 + NameKarma Police + ArtistRadiohead + Album ArtistRadiohead + ComposerColin Greenwood, Ed O'Brien, Jonny Greenwood, Phil Selway & Thom Yorke + AlbumOK Computer + GenreAlternative + KindApple Music AAC audio file + Size9458868 + Total Time264067 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year1997 + Date Modified2018-10-27T07:30:14Z + Date Added2018-10-27T07:30:14Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3766238144 + Play Date UTC2023-05-06T14:15:44Z + Release Date1997-05-21T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumOK Computer + Sort ArtistRadiohead + Sort NameKarma Police + Persistent IDEF5F0E8BE1F903A3 + Track TypeRemote + Apple Music + + 2701 + + Track ID2701 + NameNo Surprises + ArtistRadiohead + Album ArtistRadiohead + ComposerColin Greenwood, Ed O'Brien, Jonny Greenwood, Phil Selway & Thom Yorke + AlbumOK Computer + GenreAlternative + KindApple Music AAC audio file + Size8635585 + Total Time229120 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year1997 + Date Modified2018-10-27T07:35:22Z + Date Added2018-10-27T07:35:22Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3781768548 + Play Date UTC2023-11-02T08:15:48Z + Release Date1997-05-21T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumOK Computer + Sort ArtistRadiohead + Sort NameNo Surprises + Persistent ID484BF208734AA120 + Track TypeRemote + Apple Music + + 2703 + + Track ID2703 + NameThe Sky Is a Neighborhood + ArtistFoo Fighters + Album ArtistFoo Fighters + ComposerFoo Fighters + AlbumConcrete and Gold + GenreAlternative + KindApple Music AAC audio file + Size8943666 + Total Time244570 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2017 + Date Modified2018-10-27T07:37:15Z + Date Added2018-10-27T07:37:15Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3766775086 + Play Date UTC2023-05-12T19:24:46Z + Skip Count1 + Skip Date2018-10-28T20:10:36Z + Release Date2017-08-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumConcrete and Gold + Sort ArtistFoo Fighters + Sort NameSky Is a Neighborhood + Persistent ID76E1D7D17C27BD7D + Track TypeRemote + Apple Music + + 2705 + + Track ID2705 + NameGold + ArtistChet Faker + Album ArtistChet Faker + ComposerNick Murphy + AlbumBuilt on Glass + GenreElectronic + KindApple Music AAC audio file + Size9946534 + Total Time285256 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2014 + Date Modified2018-10-27T07:49:27Z + Date Added2018-10-27T07:49:27Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count38 + Play Date3763575625 + Play Date UTC2023-04-05T18:40:25Z + Skip Date2022-03-26T13:37:14Z + Release Date2014-04-01T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBuilt on Glass + Sort ArtistChet Faker + Sort NameGold + Persistent IDD41B99687AD1A8FA + Track TypeRemote + Apple Music + + 2707 + + Track ID2707 + NameI Got You + ArtistAmy Shark + Album ArtistAmy Shark + ComposerAmy Louise Billings + AlbumLove Monster + GenreAlternative + KindApple Music AAC audio file + Size6345778 + Total Time178307 + Disc Number1 + Disc Count1 + Track Number1 + Track Count14 + Year2018 + Date Modified2018-10-27T07:50:47Z + Date Added2018-10-27T07:50:47Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3761643527 + Play Date UTC2023-03-14T09:58:47Z + Skip Count1 + Skip Date2018-11-04T20:59:01Z + Release Date2018-07-13T12:00:00Z + Artwork Count1 + Sort AlbumLove Monster + Sort ArtistAmy Shark + Sort NameI Got You + Persistent IDDFC839A762C39921 + Track TypeRemote + Apple Music + + 2709 + + Track ID2709 + NameGiants + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh, Adam Levin, Casey Harris & Alex Da Kid + AlbumThe Reason - EP + GenreAlternative + KindApple Music AAC audio file + Size8359209 + Total Time236855 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2014 + Date Modified2018-10-27T07:51:30Z + Date Added2018-10-27T07:51:30Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3759397349 + Play Date UTC2023-02-16T10:02:29Z + Release Date2014-04-22T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumReason - EP + Sort ArtistX Ambassadors + Sort NameGiants + Persistent ID898253FB627A8B15 + Track TypeRemote + Apple Music + + 2711 + + Track ID2711 + NameJungle + ArtistX Ambassadors & Jamie N Commons + Album ArtistX Ambassadors + ComposerJamie N Commons, X Ambassadors, Alex Da Kid & Mike Del Rio + AlbumThe Reason - EP + GenreAlternative + KindApple Music AAC audio file + Size6807523 + Total Time189307 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2014 + Date Modified2018-10-27T07:51:46Z + Date Added2018-10-27T07:51:46Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3767778303 + Play Date UTC2023-05-24T10:05:03Z + Skip Count1 + Skip Date2019-06-08T11:14:43Z + Release Date2014-04-22T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumReason - EP + Sort ArtistX Ambassadors & Jamie N Commons + Sort NameJungle + Persistent IDC6B03529BDE1C5DE + Track TypeRemote + Apple Music + + 2713 + + Track ID2713 + NameNo Diggity + ArtistChet Faker + Album ArtistVarious Artists + ComposerA. Young, C. Hannibal, T. Riley, W. Stewart, L.Walters, R. Vick & Bill Withers + AlbumDigging the Blogosphere + GenreElectronic + KindApple Music AAC audio file + Size7977301 + Total Time225000 + Disc Number1 + Disc Count1 + Track Number6 + Track Count14 + Year2012 + Date Modified2018-10-27T07:52:00Z + Date Added2018-10-27T07:52:00Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3780498410 + Play Date UTC2023-10-18T15:26:50Z + Skip Count3 + Skip Date2022-07-13T18:34:07Z + Release Date2012-03-09T08:00:00Z + Compilation + Artwork Count1 + Sort AlbumDigging the Blogosphere + Sort ArtistChet Faker + Sort NameNo Diggity + Persistent IDB2D82B295A78C8C8 + Track TypeRemote + Apple Music + + 2715 + + Track ID2715 + NameDeep Water + ArtistAmerican Authors + Album ArtistAmerican Authors + ComposerZachary Barnett, Matt Sanchez, Trent Dabbs, Cason Cooley, James Shelley & David Rublin + AlbumSeasons + GenreAlternative + KindApple Music AAC audio file + Size7022269 + Total Time198090 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2018 + Date Modified2018-10-27T19:01:49Z + Date Added2018-10-27T19:01:49Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3781382803 + Play Date UTC2023-10-28T21:06:43Z + Skip Count1 + Skip Date2021-12-10T13:56:13Z + Release Date2018-05-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSeasons + Sort ArtistAmerican Authors + Sort NameDeep Water + Persistent ID2D7567F102D783B9 + Track TypeRemote + Apple Music + + 2717 + + Track ID2717 + NameHigh + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size8288103 + Total Time231897 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2017 + Date Modified2018-10-27T19:10:52Z + Date Added2018-10-27T19:10:52Z + Bit Rate256 + Sample Rate44100 + Play Count88 + Play Date3779697689 + Play Date UTC2023-10-09T09:01:29Z + Skip Count2 + Skip Date2021-07-31T00:01:48Z + Release Date2017-03-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort NameHigh + Persistent IDA5B58A2FD99182B8 + Track TypeRemote + Apple Music + + 2719 + + Track ID2719 + Name&Run + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size8313100 + Total Time226587 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2017 + Date Modified2018-10-27T19:15:32Z + Date Added2018-10-27T19:15:32Z + Bit Rate256 + Sample Rate44100 + Play Count82 + Play Date3781791159 + Play Date UTC2023-11-02T14:32:39Z + Skip Count6 + Skip Date2020-09-29T21:22:27Z + Release Date2017-06-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort Name&Run + Persistent IDFD7F9E5FFD649760 + Track TypeRemote + Apple Music + + 2721 + + Track ID2721 + NameOne Foot + ArtistWALK THE MOON + Album ArtistWALK THE MOON + ComposerEli Maiman, Kevin Ray, Nicholas Petricca, Sean Waugaman, Ryan McMahon, Ryan Rabin & Benjamin Berger + AlbumWhat If Nothing + GenreAlternative + KindApple Music AAC audio file + Size9186057 + Total Time261372 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2017 + Date Modified2018-10-27T19:43:21Z + Date Added2018-10-27T19:43:21Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3782989374 + Play Date UTC2023-11-16T11:22:54Z + Skip Count1 + Skip Date2022-08-06T07:37:27Z + Release Date2017-09-22T07:00:00Z + Artwork Count1 + Sort AlbumWhat If Nothing + Sort ArtistWALK THE MOON + Sort NameOne Foot + Persistent ID52119CCBDB59725B + Track TypeRemote + Apple Music + + 2723 + + Track ID2723 + Name&Run (K.Flay Remix) + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + Album&Run (K.Flay Remix) - Single + GenreAlternative + KindApple Music AAC audio file + Size7648944 + Total Time216532 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-27T19:55:54Z + Date Added2018-10-27T19:55:54Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780917827 + Play Date UTC2023-10-23T11:57:07Z + Skip Count1 + Skip Date2018-10-29T18:48:58Z + Release Date2018-01-19T12:00:00Z + Album Loved + Artwork Count1 + Sort Album&Run (K.Flay Remix) - Single + Sort ArtistSir Sly + Sort Name&Run (K.Flay Remix) + Persistent ID2205774B1D616ECA + Track TypeRemote + Apple Music + + 2725 + + Track ID2725 + NameNature Springs + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size7152816 + Total Time190027 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2007 + Date Modified2018-10-27T21:46:14Z + Date Added2018-10-27T21:46:14Z + Bit Rate256 + Sample Rate44100 + Play Count78 + Play Date3765966940 + Play Date UTC2023-05-03T10:55:40Z + Skip Count3 + Skip Date2019-01-28T17:50:09Z + Release Date2007-01-22T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameNature Springs + Persistent ID698B4352F97497EE + Track TypeRemote + Apple Music + + 2727 + + Track ID2727 + NameTomato Can + ArtistThe Arcs + Album ArtistThe Arcs + ComposerDan Auerbach & Leon Michels + AlbumTomato Can - Single + GenreAlternative + KindApple Music AAC audio file + Size9115528 + Total Time260109 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2018-10-27T21:58:03Z + Date Added2018-10-27T21:58:03Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3779202438 + Play Date UTC2023-10-03T15:27:18Z + Skip Count4 + Skip Date2023-03-24T20:54:15Z + Release Date2015-10-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTomato Can - Single + Sort Album ArtistArcs + Sort ArtistArcs + Sort NameTomato Can + Persistent ID58AEF29C5639AA2C + Track TypeRemote + Apple Music + + 2729 + + Track ID2729 + Name2 Am + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size7451573 + Total Time212514 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2017 + Date Modified2018-10-28T20:11:43Z + Date Added2018-10-28T20:11:43Z + Bit Rate256 + Sample Rate44100 + Play Count83 + Play Date3783712454 + Play Date UTC2023-11-24T20:14:14Z + Skip Count5 + Skip Date2020-03-27T08:32:23Z + Release Date2017-06-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort Name2 Am + Persistent ID6C0450EB17DC8233 + Explicit + Track TypeRemote + Apple Music + + 2731 + + Track ID2731 + NameAltar + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito, Hayden Coplen & Peter Yorke + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size7871935 + Total Time221649 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2017 + Date Modified2018-10-28T20:16:24Z + Date Added2018-10-28T20:16:24Z + Bit Rate256 + Sample Rate44100 + Play Count104 + Play Date3764066691 + Play Date UTC2023-04-11T11:04:51Z + Skip Count4 + Skip Date2023-01-15T20:30:27Z + Release Date2017-06-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort NameAltar + Persistent IDCB437869040C87E0 + Track TypeRemote + Apple Music + + 2733 + + Track ID2733 + NameGold + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumGold - EP + GenreAlternative + KindApple Music AAC audio file + Size8166470 + Total Time231415 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2013 + Date Modified2018-10-28T21:16:59Z + Date Added2018-10-28T21:16:59Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3781524274 + Play Date UTC2023-10-30T12:24:34Z + Skip Count2 + Skip Date2022-06-01T09:35:51Z + Release Date2013-01-01T12:00:00Z + Artwork Count1 + Sort AlbumGold - EP + Sort ArtistSir Sly + Sort NameGold + Persistent ID3ADD5C91C234A1CA + Track TypeRemote + Apple Music + + 2735 + + Track ID2735 + NameAstronaut + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size7972945 + Total Time224382 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2017 + Date Modified2018-10-28T21:17:09Z + Date Added2018-10-28T21:17:09Z + Bit Rate256 + Sample Rate44100 + Play Count90 + Play Date3780499318 + Play Date UTC2023-10-18T15:41:58Z + Skip Count7 + Skip Date2022-09-01T09:29:22Z + Release Date2017-01-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort NameAstronaut + Persistent IDDC5736AEF5AB5A15 + Track TypeRemote + Apple Music + + 2737 + + Track ID2737 + NameGhost + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumYou Haunt Me + GenreAlternative + KindApple Music AAC audio file + Size8152183 + Total Time217765 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2014 + Date Modified2018-10-29T13:13:57Z + Date Added2018-10-29T13:13:57Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3780907362 + Play Date UTC2023-10-23T09:02:42Z + Release Date2014-09-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumYou Haunt Me + Sort ArtistSir Sly + Sort NameGhost + Persistent IDAE1DDCFCEA033F75 + Track TypeRemote + Apple Music + + 2739 + + Track ID2739 + NameIt's a Trip! + ArtistJoywave + Album ArtistJoywave + ComposerDaniel Armbruster, Sean Donnelly, Paul Brenner, Joseph Morinelli & Benjamin Bailey + AlbumContent + GenreAlternative + KindApple Music AAC audio file + Size7258413 + Total Time183520 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2017 + Date Modified2018-10-29T19:14:08Z + Date Added2018-10-29T19:14:08Z + Bit Rate256 + Sample Rate44100 + Play Count60 + Play Date3783664680 + Play Date UTC2023-11-24T06:58:00Z + Skip Count5 + Skip Date2022-03-16T16:00:39Z + Release Date2017-05-05T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumContent + Sort ArtistJoywave + Sort NameIt's a Trip! + Persistent IDA217CDC13B03CAE6 + Track TypeRemote + Apple Music + + 2741 + + Track ID2741 + NameGood Morning + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, David William Embree, Michael Fitzpatrick & Tanner Underwood + AlbumGood Morning - Single + GenreAlternative + KindApple Music AAC audio file + Size5670819 + Total Time154107 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-10-29T19:46:35Z + Date Added2018-10-29T19:46:35Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3783592864 + Play Date UTC2023-11-23T11:01:04Z + Skip Count2 + Skip Date2022-12-05T20:10:03Z + Release Date2018-02-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGood Morning - Single + Sort ArtistMax Frost + Sort NameGood Morning + Persistent ID06F7A8C87F209814 + Track TypeRemote + Apple Music + + 2743 + + Track ID2743 + NameLet Me Down Easy + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Ali Tamposi & Francois Tetaz + AlbumIntoxication - EP + GenreAlternative + KindApple Music AAC audio file + Size8481053 + Total Time237507 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2015 + Date Modified2018-10-29T19:52:28Z + Date Added2018-10-29T19:52:28Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3776239609 + Play Date UTC2023-08-30T08:26:49Z + Skip Count1 + Skip Date2018-11-02T18:53:01Z + Release Date2015-02-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumIntoxication - EP + Sort ArtistMax Frost + Sort NameLet Me Down Easy + Persistent ID480AC9CB13172C9D + Track TypeRemote + Apple Music + + 2745 + + Track ID2745 + NameHigh All Day + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost & Michael Fitzpatrick + AlbumHigh All Day - Single + GenreAlternative + KindApple Music AAC audio file + Size6555630 + Total Time175800 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-10-29T20:00:05Z + Date Added2018-10-29T20:00:05Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3759924392 + Play Date UTC2023-02-22T12:26:32Z + Skip Count4 + Skip Date2023-05-31T15:47:35Z + Release Date2017-08-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHigh All Day - Single + Sort ArtistMax Frost + Sort NameHigh All Day + Persistent ID43B37D5A3316CD43 + Track TypeRemote + Apple Music + + 2747 + + Track ID2747 + NameWhite Lies + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost + AlbumLow High Low - EP + GenreAlternative + KindApple Music AAC audio file + Size6936575 + Total Time179171 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2013 + Date Modified2018-10-30T11:59:47Z + Date Added2018-10-30T11:59:47Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3762326808 + Play Date UTC2023-03-22T07:46:48Z + Release Date2013-04-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLow High Low - EP + Sort ArtistMax Frost + Sort NameWhite Lies + Persistent IDF404FF73502EDA85 + Track TypeRemote + Apple Music + + 2749 + + Track ID2749 + NameNew Confessional + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Diederik van Elsas & Parrish Warrington + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size7912148 + Total Time219283 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3779311814 + Play Date UTC2023-10-04T21:50:14Z + Skip Count2 + Skip Date2023-05-11T21:11:52Z + Release Date2018-10-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NameNew Confessional + Persistent ID3B1DD2EB4E6474BD + Track TypeRemote + Apple Music + + 2751 + + Track ID2751 + NameSlow Jamz + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Mick Schultz, Patrick James Bolster & Tori Zietsch + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size5879165 + Total Time158982 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3783752909 + Play Date UTC2023-11-25T07:28:29Z + Skip Count2 + Skip Date2018-10-30T17:19:03Z + Release Date2018-10-05T12:00:00Z + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NameSlow Jamz + Persistent IDA836B9A64434F7C2 + Track TypeRemote + Apple Music + + 2753 + + Track ID2753 + NameMoney Problems + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Clea Shimoa Pratt, Mick Schultz & Taka Perry + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size6327514 + Total Time169326 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3781176529 + Play Date UTC2023-10-26T11:48:49Z + Skip Count2 + Skip Date2023-06-09T16:32:54Z + Release Date2018-10-05T12:00:00Z + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NameMoney Problems + Persistent IDCD358FBCF15DE39E + Track TypeRemote + Apple Music + + 2755 + + Track ID2755 + NamePut It on Me + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Michael Fitzpatrick & Mick Schultz + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size8318259 + Total Time228316 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3776151237 + Play Date UTC2023-08-29T07:53:57Z + Skip Count3 + Skip Date2019-06-15T13:21:34Z + Release Date2018-10-05T12:00:00Z + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NamePut It on Me + Persistent IDF025DE4FDF16FB4D + Track TypeRemote + Apple Music + + 2757 + + Track ID2757 + NameA$$hole (No Apologies) + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, J.R. Rotem & Marty James + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size6945586 + Total Time184454 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3758871719 + Play Date UTC2023-02-10T08:01:59Z + Skip Count3 + Skip Date2022-08-06T10:26:17Z + Release Date2018-10-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NameA$$hole (No Apologies) + Persistent IDAD370BE00723D27F + Explicit + Track TypeRemote + Apple Music + + 2759 + + Track ID2759 + NameEleven Days + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Ruxley & Thomas Slinger + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size8302759 + Total Time227200 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3783693108 + Play Date UTC2023-11-24T14:51:48Z + Skip Count1 + Skip Date2023-02-14T19:42:17Z + Release Date2018-10-05T12:00:00Z + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NameEleven Days + Persistent ID70D211ED5B8A67E0 + Explicit + Track TypeRemote + Apple Music + + 2761 + + Track ID2761 + NameAnxious + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Mark Landon & Nick Long + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size5662596 + Total Time152672 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3782886113 + Play Date UTC2023-11-15T06:41:53Z + Skip Count1 + Skip Date2018-11-02T18:48:07Z + Release Date2018-10-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NameAnxious + Persistent IDDFA5D5A44C66A1C0 + Explicit + Track TypeRemote + Apple Music + + 2763 + + Track ID2763 + NameStranger to Me Now + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Mick Schultz & Scott Harris + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size6646998 + Total Time180651 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783666259 + Play Date UTC2023-11-24T07:24:19Z + Release Date2018-10-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NameStranger to Me Now + Persistent ID17A15DBA526917E2 + Track TypeRemote + Apple Music + + 2765 + + Track ID2765 + NameSometimes + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, David William Embree & Tanner Underwood + AlbumGold Rush + GenreAlternative + KindApple Music AAC audio file + Size6817696 + Total Time184285 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2018 + Date Modified2018-10-30T12:16:48Z + Date Added2018-10-30T12:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781530394 + Play Date UTC2023-10-30T14:06:34Z + Skip Count4 + Skip Date2023-06-07T15:13:47Z + Release Date2018-10-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGold Rush + Sort ArtistMax Frost + Sort NameSometimes + Persistent ID1D83B7897281009F + Track TypeRemote + Apple Music + + 2767 + + Track ID2767 + NameDie Young + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Francois Tetaz & Matt Morris + AlbumIntoxication - EP + GenreAlternative + KindApple Music AAC audio file + Size6882469 + Total Time187852 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2015 + Date Modified2018-10-30T16:32:09Z + Date Added2018-10-30T16:32:09Z + Bit Rate256 + Sample Rate44100 + Play Count60 + Play Date3781868506 + Play Date UTC2023-11-03T12:01:46Z + Skip Count6 + Skip Date2023-06-07T15:13:43Z + Release Date2015-09-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumIntoxication - EP + Sort ArtistMax Frost + Sort NameDie Young + Persistent ID9344EB2FD62DC4CB + Track TypeRemote + Apple Music + + 2769 + + Track ID2769 + NameNice and Slow + ArtistMax Frost + Album ArtistMax Frost + ComposerJoshua Moore & Max Frost + AlbumLow High Low - EP + GenreAlternative + KindApple Music AAC audio file + Size8201030 + Total Time230635 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2013 + Date Modified2018-10-30T16:32:39Z + Date Added2018-10-30T16:32:39Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3780248320 + Play Date UTC2023-10-15T17:58:40Z + Skip Count1 + Skip Date2021-12-14T07:49:18Z + Release Date2013-10-08T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLow High Low - EP + Sort ArtistMax Frost + Sort NameNice and Slow + Persistent ID5848A3C3265F01E9 + Track TypeRemote + Apple Music + + 2771 + + Track ID2771 + NameAdderall + ArtistMax Frost + Album ArtistMax Frost + ComposerMatthew Frost, Ross Golan, Shiben Bhattacharya & Will Lobban-Bean + AlbumAdderall - Single + GenreAlternative + KindApple Music AAC audio file + Size8187739 + Total Time218027 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2018-10-30T16:32:45Z + Date Added2018-10-30T16:32:45Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3780686268 + Play Date UTC2023-10-20T19:37:48Z + Skip Count1 + Skip Date2023-01-03T18:01:26Z + Release Date2016-10-14T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAdderall - Single + Sort ArtistMax Frost + Sort NameAdderall + Persistent ID3BC64339CB527C83 + Track TypeRemote + Apple Music + + 2773 + + Track ID2773 + NameWithdrawal + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost, Ammar Malik, Benjamin Levin & Dan Omelio + AlbumIntoxication - EP + GenreAlternative + KindApple Music AAC audio file + Size6575665 + Total Time180320 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2015 + Date Modified2018-10-30T16:33:00Z + Date Added2018-10-30T16:33:00Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3782883528 + Play Date UTC2023-11-15T05:58:48Z + Skip Count1 + Skip Date2023-03-27T06:06:50Z + Release Date2015-09-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumIntoxication - EP + Sort ArtistMax Frost + Sort NameWithdrawal + Persistent IDECD999EC170FAE63 + Track TypeRemote + Apple Music + + 2775 + + Track ID2775 + NameLoverman + ArtistMetallica + Album ArtistMetallica + ComposerNicholas Edwards Cave + AlbumGarage Inc. + GenreMetal + KindApple Music AAC audio file + Size16205881 + Total Time472800 + Disc Number1 + Disc Count2 + Track Number6 + Track Count11 + Year1998 + Date Modified2018-11-01T18:49:40Z + Date Added2018-11-01T18:49:40Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3782904422 + Play Date UTC2023-11-15T11:47:02Z + Skip Count4 + Skip Date2022-08-04T10:34:36Z + Release Date1998-11-23T08:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumGarage Inc. + Sort ArtistMetallica + Sort NameLoverman + Persistent IDBAD5E3076E5B79FB + Explicit + Track TypeRemote + Apple Music + + 2777 + + Track ID2777 + NameChainsmoking + ArtistJacob Banks + Album ArtistJacob Banks + ComposerJacob Banks, JP Saxe & Ajay Bhattacharya + AlbumThe Boy Who Cried Freedom - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size6926415 + Total Time195133 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2017 + Date Modified2018-11-02T07:44:40Z + Date Added2018-11-02T07:44:40Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3776334696 + Play Date UTC2023-08-31T10:51:36Z + Skip Count1 + Skip Date2022-10-09T16:15:21Z + Release Date2017-03-22T12:00:00Z + Artwork Count1 + Sort AlbumBoy Who Cried Freedom - EP + Sort ArtistJacob Banks + Sort NameChainsmoking + Persistent IDE5B92E62AA3DB2FE + Track TypeRemote + Apple Music + + 2779 + + Track ID2779 + NameBurn the House Down + ArtistAJR + Album ArtistAJR + ComposerRyan Met, Jack Met & Adam Met + AlbumBurn the House Down - Single + GenrePop + KindApple Music AAC audio file + Size7755977 + Total Time212374 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-11-02T18:19:01Z + Date Added2018-11-02T18:19:01Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781381839 + Play Date UTC2023-10-28T20:50:39Z + Skip Count2 + Skip Date2023-01-13T14:05:03Z + Release Date2017-06-09T12:00:00Z + Artwork Count1 + Sort AlbumBurn the House Down - Single + Sort ArtistAJR + Sort NameBurn the House Down + Persistent IDE571A4E40A72C98A + Explicit + Track TypeRemote + Apple Music + + 2781 + + Track ID2781 + NameFree + Artist6LACK + Album Artist6LACK + ComposerRicardo Valentine & Nova + AlbumFREE 6LACK (Bonus Track Version) + GenreR&B/Soul + KindApple Music AAC audio file + Size9145890 + Total Time263013 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2016 + Date Modified2018-11-04T20:30:01Z + Date Added2018-11-04T21:48:28Z + Bit Rate256 + Sample Rate44100 + Play Count62 + Play Date3780192462 + Play Date UTC2023-10-15T02:27:42Z + Skip Count3 + Skip Date2022-10-17T14:11:01Z + Release Date2016-11-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFREE 6LACK (Bonus Track Version) + Sort Artist6LACK + Sort NameFree + Persistent IDC556A482C387533A + Explicit + Track TypeRemote + Apple Music + + 2783 + + Track ID2783 + NameTested & Tried + ArtistAll The Luck In The World + Album ArtistAll The Luck In The World + ComposerNeil Foot, Kelvin Barr & Ben Connolly + AlbumTested & Tried - Single + GenreAlternative + KindApple Music AAC audio file + Size8603421 + Total Time244036 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-11-04T20:35:28Z + Date Added2018-11-04T21:48:35Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3763657126 + Play Date UTC2023-04-06T17:18:46Z + Skip Count3 + Skip Date2018-12-04T20:51:25Z + Release Date2018-10-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTested & Tried - Single + Sort ArtistAll The Luck In The World + Sort NameTested & Tried + Persistent ID8CF02E135E156024 + Track TypeRemote + Apple Music + + 2785 + + Track ID2785 + NameFire + ArtistFolly & the Hunter + Album ArtistFolly & the Hunter + ComposerNick Vallee & Laurie Torres + AlbumRemains + GenreAlternative + KindApple Music AAC audio file + Size9159089 + Total Time259738 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2018 + Date Modified2018-11-04T20:36:12Z + Date Added2018-11-04T21:48:36Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3761722465 + Play Date UTC2023-03-15T07:54:25Z + Skip Date2019-02-07T21:20:37Z + Release Date2018-10-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRemains + Sort ArtistFolly & the Hunter + Sort NameFire + Persistent IDBFE2A1A79695D3ED + Track TypeRemote + Apple Music + + 2787 + + Track ID2787 + NameSweater Weather + ArtistJames Harris + Album ArtistJames Harris + ComposerJeremy Allen Freedman, Jesse & Zach Shane Abels + AlbumSweater Weather - Single + GenreElectronic + KindApple Music AAC audio file + Size7651643 + Total Time216916 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2018-11-05T08:48:33Z + Date Added2018-11-05T18:46:35Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3775211273 + Play Date UTC2023-08-18T10:47:53Z + Skip Count1 + Skip Date2022-03-25T13:57:56Z + Release Date2015-01-13T12:00:00Z + Artwork Count1 + Sort AlbumSweater Weather - Single + Sort ArtistJames Harris + Sort NameSweater Weather + Persistent IDE5EAC97FDF67196D + Track TypeRemote + Apple Music + + 2789 + + Track ID2789 + NameHelp Me Out + ArtistAlicks + Album ArtistAlicks + AlbumHelp Me Out + GenreElectronic + KindApple Music AAC audio file + Size8061067 + Total Time227736 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2015 + Date Modified2018-11-05T14:24:20Z + Date Added2018-11-05T18:46:39Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3769952354 + Play Date UTC2023-06-18T13:59:14Z + Release Date2015-03-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHelp Me Out + Sort ArtistAlicks + Sort NameHelp Me Out + Persistent ID8BFB39A29505E7CA + Track TypeRemote + Apple Music + + 2791 + + Track ID2791 + NameOh My My + ArtistTRACE + Album ArtistTRACE + AlbumOh My My - Single + GenrePop + KindApple Music AAC audio file + Size7846055 + Total Time221170 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-11-05T15:56:27Z + Date Added2018-11-05T18:46:40Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783692197 + Play Date UTC2023-11-24T14:36:37Z + Release Date2017-05-09T12:00:00Z + Artwork Count1 + Sort AlbumOh My My - Single + Sort ArtistTRACE + Sort NameOh My My + Persistent ID5E938ECD0B9E8B3A + Track TypeRemote + Apple Music + + 2793 + + Track ID2793 + NameCan't Feel My Face + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerAbel Tesfaye, Max Martin, Savan Kotecha, Peter Svensson & Ali Payami + AlbumBeauty Behind the Madness + GenreR&B/Soul + KindApple Music AAC audio file + Size7679131 + Total Time213525 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2015 + Date Modified2018-11-05T20:14:38Z + Date Added2018-11-05T20:14:38Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3780852605 + Play Date UTC2023-10-22T17:50:05Z + Skip Count1 + Skip Date2021-09-15T19:34:41Z + Release Date2015-03-02T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBeauty Behind the Madness + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort NameCan't Feel My Face + Persistent ID7C0B31A2E0920D4B + Track TypeRemote + Apple Music + + 2795 + + Track ID2795 + NameLeave a Light On + ArtistTom Walker + Album ArtistTom Walker + ComposerTom Walker & Steve Mac + AlbumWhat a Time To Be Alive + GenreSinger/Songwriter + KindApple Music AAC audio file + Size6618053 + Total Time185863 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2017 + Date Modified2018-11-07T07:25:15Z + Date Added2018-11-07T07:25:15Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3783493358 + Play Date UTC2023-11-22T07:22:38Z + Skip Count3 + Skip Date2022-10-17T13:03:11Z + Release Date2017-10-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWhat a Time To Be Alive + Sort ArtistTom Walker + Sort NameLeave a Light On + Persistent IDF837A9C5A4C6F6E7 + Track TypeRemote + Apple Music + + 2797 + + Track ID2797 + NameAmerican Money + ArtistBØRNS + Album ArtistBØRNS + ComposerGarret Borns, Tommy English & Irena Lysiuk + AlbumDopamine + GenreAlternative + KindApple Music AAC audio file + Size9103047 + Total Time260997 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2015 + Date Modified2018-11-07T07:32:47Z + Date Added2018-11-10T08:26:38Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3773126421 + Play Date UTC2023-07-25T07:40:21Z + Skip Count1 + Skip Date2023-10-26T13:19:26Z + Release Date2015-10-16T12:00:00Z + Artwork Count1 + Sort AlbumDopamine + Sort ArtistBØRNS + Sort NameAmerican Money + Persistent ID524F1A5752532BC9 + Track TypeRemote + Apple Music + + 2799 + + Track ID2799 + NameLet My Love Pull You In + ArtistPhillip LaRue + Album ArtistPhillip LaRue + AlbumLet My Love Pull You In - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7353279 + Total Time207440 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-11-09T09:32:22Z + Date Added2018-11-10T08:26:43Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3772720458 + Play Date UTC2023-07-20T14:54:18Z + Skip Count1 + Skip Date2022-04-23T18:10:27Z + Release Date2018-11-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLet My Love Pull You In - Single + Sort ArtistPhillip LaRue + Sort NameLet My Love Pull You In + Persistent ID9C3BD2F09B29502D + Track TypeRemote + Apple Music + + 2801 + + Track ID2801 + NameSoul Meets Body + ArtistDeath Cab for Cutie + Album ArtistDeath Cab for Cutie + ComposerBenjamin Gibbard + AlbumPlans + GenreAlternative + KindApple Music AAC audio file + Size8353506 + Total Time230905 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2005 + Date Modified2018-11-09T12:57:31Z + Date Added2018-11-09T12:57:31Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3774510914 + Play Date UTC2023-08-10T08:15:14Z + Release Date2005-08-30T07:00:00Z + Artwork Count1 + Sort AlbumPlans + Sort ArtistDeath Cab for Cutie + Sort NameSoul Meets Body + Persistent ID9488F2AD447D6EBD + Track TypeRemote + Apple Music + + 2803 + + Track ID2803 + NameBlack Mambo + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDavid Bayley + AlbumZABA + GenreAlternative + KindApple Music AAC audio file + Size9105318 + Total Time248920 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2014 + Date Modified2018-11-11T09:27:42Z + Date Added2018-11-11T09:27:42Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3783766230 + Play Date UTC2023-11-25T11:10:30Z + Skip Count2 + Skip Date2021-06-12T08:17:43Z + Release Date2014-06-06T07:00:00Z + Loved + Artwork Count1 + Sort AlbumZABA + Sort ArtistGlass Animals + Sort NameBlack Mambo + Persistent ID7D5504EE54623701 + Track TypeRemote + Apple Music + + 2805 + + Track ID2805 + NameWashed Away + ArtistEyes on the Shore + Album ArtistEyes on the Shore + AlbumMaestranza - EP + GenreRock + KindApple Music AAC audio file + Size8266225 + Total Time225789 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2015 + Date Modified2018-11-11T09:42:05Z + Date Added2018-11-11T20:36:44Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3783587200 + Play Date UTC2023-11-23T09:26:40Z + Skip Count3 + Skip Date2022-09-20T11:40:42Z + Release Date2015-11-10T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMaestranza - EP + Sort ArtistEyes on the Shore + Sort NameWashed Away + Persistent ID2B6501B951346962 + Track TypeRemote + Apple Music + + 2807 + + Track ID2807 + NameDo You Have To? + ArtistDan Croll + Album ArtistDan Croll + ComposerDan Croll + AlbumEmerging Adulthood + GenreAlternative + KindApple Music AAC audio file + Size7514890 + Total Time204147 + Disc Number1 + Disc Count1 + Track Number9 + Track Count9 + Year2017 + Date Modified2018-11-11T09:59:32Z + Date Added2018-11-11T09:59:32Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3781155642 + Play Date UTC2023-10-26T06:00:42Z + Skip Count2 + Skip Date2022-10-27T14:56:10Z + Release Date2017-07-21T12:00:00Z + Loved + Artwork Count1 + Sort AlbumEmerging Adulthood + Sort ArtistDan Croll + Sort NameDo You Have To? + Persistent IDE0EFA20F511CB742 + Track TypeRemote + Apple Music + + 2809 + + Track ID2809 + NameDon't Waste My Time + ArtistThe Palms + Album ArtistThe Palms + AlbumMulholland Dr. + GenreAlternative + KindApple Music AAC audio file + Size6989902 + Total Time198160 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2017 + Date Modified2018-11-11T10:00:47Z + Date Added2018-11-11T20:36:34Z + Bit Rate256 + Sample Rate44100 + Play Count101 + Play Date3779196083 + Play Date UTC2023-10-03T13:41:23Z + Skip Count1 + Skip Date2022-08-02T16:58:52Z + Release Date2017-01-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMulholland Dr. + Sort Album ArtistPalms + Sort ArtistPalms + Sort NameDon't Waste My Time + Persistent ID001597A22195B7AE + Track TypeRemote + Apple Music + + 2811 + + Track ID2811 + NameMedusa in Chains + ArtistThe Fratellis + Album ArtistThe Fratellis + Composer0 + AlbumEyes Wide, Tongue Tied + GenreAlternative + KindAAC audio file + Size6805935 + Total Time193359 + Disc Number1 + Disc Count1 + Track Number13 + Track Count26 + Year2015 + Date Modified2018-11-11T10:43:17Z + Date Added2018-11-11T20:36:51Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3762710655 + Play Date UTC2023-03-26T18:24:15Z + Skip Count1 + Skip Date2022-10-10T13:54:42Z + Release Date2015-08-19T12:00:00Z + Artwork Count1 + Sort AlbumEyes Wide, Tongue Tied + Sort Album ArtistFratellis + Sort ArtistFratellis + Sort NameMedusa in Chains + Persistent IDE73221273220BE2F + Track TypeRemote + + 2813 + + Track ID2813 + NameAll My Friends + ArtistDylan Kelly + Album ArtistDylan Kelly + ComposerDylan Kelly + AlbumAll My Friends - Single + GenrePop + KindApple Music AAC audio file + Size7042111 + Total Time195933 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2018-11-11T10:47:29Z + Date Added2018-11-11T20:36:30Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780913230 + Play Date UTC2023-10-23T10:40:30Z + Skip Count6 + Skip Date2022-04-18T13:34:20Z + Release Date2015-01-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAll My Friends - Single + Sort ArtistDylan Kelly + Sort NameAll My Friends + Persistent IDFF1F4958F27F3523 + Track TypeRemote + Apple Music + + 2815 + + Track ID2815 + NameKing Tide + ArtistIn The Valley Below + Album ArtistIn The Valley Below + AlbumThe Belt + GenreAlternative + KindApple Music AAC audio file + Size8817587 + Total Time245107 + Disc Number1 + Disc Count1 + Track Number10 + Year2013 + Date Modified2018-11-11T11:02:30Z + Date Added2018-11-11T20:36:43Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781522050 + Play Date UTC2023-10-30T11:47:30Z + Skip Count4 + Skip Date2023-05-31T08:52:23Z + Release Date2013-08-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBelt + Sort ArtistIn The Valley Below + Sort NameKing Tide + Persistent IDD71B45467A85813E + Track TypeRemote + Apple Music + + 2817 + + Track ID2817 + NameDon't Wanna Breathe + ArtistKodak Black + Album ArtistKodak Black + ComposerKodak Black, London On Da Track & Rex Kudo + AlbumProject Baby 2: All Grown Up (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6952486 + Total Time196672 + Disc Number1 + Disc Count1 + Track Number5 + Track Count27 + Year2017 + Date Modified2018-11-15T11:54:51Z + Date Added2018-11-15T11:54:51Z + Bit Rate256 + Sample Rate44100 + Play Count55 + Play Date3780392176 + Play Date UTC2023-10-17T09:56:16Z + Skip Count2 + Skip Date2022-04-16T23:03:10Z + Release Date2017-08-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumProject Baby 2: All Grown Up (Deluxe) + Sort ArtistKodak Black + Sort NameDon't Wanna Breathe + Persistent ID16EDF9F28951F8CF + Explicit + Track TypeRemote + Apple Music + + 2819 + + Track ID2819 + NameCodeine Dreaming (feat. Lil Wayne) + ArtistKodak Black + Album ArtistKodak Black + ComposerBen Billions, DJ Infamous, Kodak Black, Lil Wayne & Schife Karbeen + AlbumProject Baby 2: All Grown Up (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9370319 + Total Time264532 + Disc Number1 + Disc Count1 + Track Number20 + Track Count27 + Year2017 + Date Modified2018-11-15T12:55:19Z + Date Added2018-11-15T12:55:19Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3781052385 + Play Date UTC2023-10-25T01:19:45Z + Skip Count3 + Skip Date2020-06-18T08:20:15Z + Release Date2017-11-24T08:00:00Z + Loved + Artwork Count1 + Sort AlbumProject Baby 2: All Grown Up (Deluxe) + Sort ArtistKodak Black + Sort NameCodeine Dreaming (feat. Lil Wayne) + Persistent ID51A46EAEB1056939 + Explicit + Track TypeRemote + Apple Music + + 2821 + + Track ID2821 + NameBartier Cardi (feat. 21 Savage) + ArtistCardi B + Album ArtistCardi B + ComposerBelcalis Almanzar, Darryl McCorkell, Jacquez Lowe, L. Jae, Samuel Gloade & Shayaa Bin Abraham-Joseph + AlbumBartier Cardi (feat. 21 Savage) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8049954 + Total Time224613 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-11-17T11:13:16Z + Date Added2018-11-17T11:13:16Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3773543943 + Play Date UTC2023-07-30T03:39:03Z + Release Date2017-12-22T08:00:00Z + Artwork Count1 + Sort AlbumBartier Cardi (feat. 21 Savage) - Single + Sort ArtistCardi B + Sort NameBartier Cardi (feat. 21 Savage) + Persistent ID02DE1D1AA5AC57F1 + Explicit + Track TypeRemote + Apple Music + + 2823 + + Track ID2823 + NameLook At Me! + ArtistXXXTENTACION + Album ArtistXXXTENTACION + AlbumLook At Me! - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4696729 + Total Time126346 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2018-11-18T12:02:47Z + Date Added2018-11-18T12:02:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count92 + Play Date3781397004 + Play Date UTC2023-10-29T01:03:24Z + Skip Count6 + Skip Date2022-08-06T11:20:49Z + Release Date2015-12-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLook At Me! - Single + Sort ArtistXXXTENTACION + Sort NameLook At Me! + Persistent ID3FE24516D2D1958C + Explicit + Track TypeRemote + Apple Music + + 2825 + + Track ID2825 + NameDon't Cry (feat. XXXTENTACION) + ArtistLil Wayne + Album ArtistLil Wayne + ComposerDwayne Carter, Jahseh Onfroy, Eugene Karavasilidis, Ben Diehl & Gamal "LunchMoney" Lewis + AlbumTha Carter V + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8759770 + Total Time249450 + Disc Number1 + Disc Count1 + Track Number2 + Track Count23 + Year2018 + Date Modified2018-11-18T19:28:48Z + Date Added2018-11-18T19:28:48Z + Bit Rate256 + Sample Rate44100 + Play Count65 + Play Date3780988448 + Play Date UTC2023-10-24T07:34:08Z + Skip Count3 + Skip Date2021-01-22T17:32:07Z + Release Date2018-09-28T07:00:00Z + Loved + Artwork Count1 + Sort AlbumTha Carter V + Sort ArtistLil Wayne + Sort NameDon't Cry (feat. XXXTENTACION) + Persistent IDBF297ECD6A09B722 + Explicit + Track TypeRemote + Apple Music + + 2827 + + Track ID2827 + NameDrop the World (feat. Eminem) + ArtistLil Wayne + Album ArtistLil Wayne + ComposerD. Carter, J. Woodard, M. Mathers, L. Resto & M. Strange + AlbumRebirth (Bonus Track Version) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8175620 + Total Time229227 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2010 + Date Modified2018-11-18T19:34:17Z + Date Added2018-11-18T19:34:17Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3780493570 + Play Date UTC2023-10-18T14:06:10Z + Skip Count1 + Skip Date2021-01-09T20:46:37Z + Release Date2009-01-01T12:00:00Z + Artwork Count1 + Sort AlbumRebirth (Bonus Track Version) + Sort ArtistLil Wayne + Sort NameDrop the World (feat. Eminem) + Persistent ID1D451FD34AF7627E + Explicit + Track TypeRemote + Apple Music + + 2829 + + Track ID2829 + NameVenom (Music From The Motion Picture) + ArtistEminem + Album ArtistEminem + ComposerLuis Resto, Roger Troutman & Marshall Mathers + AlbumKamikaze + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9345780 + Total Time269573 + Disc Number1 + Disc Count1 + Track Number13 + Track Count13 + Year2018 + Date Modified2018-11-18T19:35:07Z + Date Added2018-11-18T19:35:07Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3760956720 + Play Date UTC2023-03-06T11:12:00Z + Skip Count3 + Skip Date2023-05-23T06:05:21Z + Release Date2018-08-31T12:00:00Z + Artwork Count1 + Sort AlbumKamikaze + Sort ArtistEminem + Sort NameVenom (Music From The Motion Picture) + Persistent ID13F229C32685C66E + Explicit + Track TypeRemote + Apple Music + + 2831 + + Track ID2831 + NameShark + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size6733672 + Total Time187424 + Disc Number1 + Disc Count1 + Track Number13 + Track Count15 + Year2015 + Date Modified2018-11-19T19:44:22Z + Date Added2018-11-19T19:44:22Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3760902400 + Play Date UTC2023-03-05T20:06:40Z + Skip Count2 + Skip Date2022-04-01T12:53:42Z + Release Date2015-09-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameShark + Persistent ID0D196F72F7988B2A + Track TypeRemote + Apple Music + + 2833 + + Track ID2833 + NameAll We Do + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size7467860 + Total Time214174 + Disc Number1 + Disc Count1 + Track Number11 + Track Count15 + Year2014 + Date Modified2018-11-20T04:41:34Z + Date Added2018-11-20T04:41:34Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3772088021 + Play Date UTC2023-07-13T07:13:41Z + Skip Count4 + Skip Date2022-04-30T07:19:56Z + Release Date2014-12-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameAll We Do + Persistent ID98892C6719ACFB0D + Track TypeRemote + Apple Music + + 2835 + + Track ID2835 + NameLose It + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size8101229 + Total Time229935 + Disc Number1 + Disc Count1 + Track Number5 + Track Count15 + Year2015 + Date Modified2018-11-21T17:41:04Z + Date Added2018-11-25T06:05:26Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3779181535 + Play Date UTC2023-10-03T09:38:55Z + Skip Count5 + Skip Date2022-08-19T16:11:13Z + Release Date2015-02-01T12:00:00Z + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameLose It + Persistent ID9C6CC849678A9ADF + Track TypeRemote + Apple Music + + 2837 + + Track ID2837 + NameTechnicolour Beat + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size6424701 + Total Time180120 + Disc Number1 + Disc Count1 + Track Number3 + Track Count15 + Year2015 + Date Modified2018-11-21T17:53:20Z + Date Added2018-11-21T17:53:20Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3783355668 + Play Date UTC2023-11-20T17:07:48Z + Skip Count1 + Skip Date2018-11-23T04:47:45Z + Release Date2015-03-01T12:00:00Z + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameTechnicolour Beat + Persistent ID540DC3F6BA49C1F4 + Track TypeRemote + Apple Music + + 2839 + + Track ID2839 + NameWhite Blood + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size8918394 + Total Time257427 + Disc Number1 + Disc Count1 + Track Number7 + Track Count15 + Year2015 + Date Modified2018-11-21T19:56:59Z + Date Added2018-11-21T19:56:59Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3773844060 + Play Date UTC2023-08-02T15:01:00Z + Release Date2015-06-02T12:00:00Z + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameWhite Blood + Persistent IDE52D36A448C2BFCA + Track TypeRemote + Apple Music + + 2841 + + Track ID2841 + NameNever Told + ArtistJ. Cole + Album ArtistJ. Cole + ComposerJermaine Cole, Ernest Wilson, Kevin Randolph & Steve Wyreman + AlbumCole World: The Sideline Story + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7569668 + Total Time211520 + Disc Number1 + Disc Count1 + Track Number12 + Track Count18 + Year2011 + Date Modified2018-11-21T20:01:04Z + Date Added2018-11-21T20:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3772875270 + Play Date UTC2023-07-22T09:54:30Z + Release Date2011-09-27T12:00:00Z + Artwork Count1 + Sort AlbumCole World: The Sideline Story + Sort ArtistJ. Cole + Sort NameNever Told + Persistent IDFFB22E531BEC293C + Explicit + Track TypeRemote + Apple Music + + 2843 + + Track ID2843 + NameEveryday + ArtistLogic & Marshmello + Album ArtistLogic + ComposerMarshmello & Sir Robert Bryson Hall II + AlbumBobby Tarantino II + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7383232 + Total Time204744 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2018 + Date Modified2018-11-21T20:02:41Z + Date Added2018-11-21T20:02:41Z + Bit Rate256 + Sample Rate44100 + Play Count182 + Play Date3772172916 + Play Date UTC2023-07-14T06:48:36Z + Release Date2018-03-02T08:00:00Z + Loved + Artwork Count1 + Sort AlbumBobby Tarantino II + Sort ArtistLogic & Marshmello + Sort NameEveryday + Persistent ID830CB2AB2FC05A0C + Explicit + Track TypeRemote + Apple Music + + 2845 + + Track ID2845 + NameSay Amen (feat. Billy Raffoul) + ArtistAmerican Authors + Album ArtistAmerican Authors + ComposerBilly Raffoul, Zachary Barnett, James Adam Shelley, Matt Sanchez, David Rublin & Cason Cooley + AlbumSeasons + GenreAlternative + KindApple Music AAC audio file + Size7966307 + Total Time222589 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2018 + Date Modified2018-11-25T06:02:08Z + Date Added2018-11-25T06:02:08Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3783780888 + Play Date UTC2023-11-25T15:14:48Z + Skip Count1 + Skip Date2021-09-20T19:18:57Z + Release Date2018-11-16T12:00:00Z + Artwork Count1 + Sort AlbumSeasons + Sort ArtistAmerican Authors + Sort NameSay Amen (feat. Billy Raffoul) + Persistent ID47DDDF73775E2954 + Track TypeRemote + Apple Music + + 2847 + + Track ID2847 + NameMistake 3 + ArtistSean McVerry + Album ArtistSean McVerry + ComposerSean McVerry + AlbumMistake 3 - Single + GenreNeo-Soul + KindApple Music AAC audio file + Size7537685 + Total Time217638 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-11-25T06:07:12Z + Date Added2018-11-25T06:07:12Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3783453617 + Play Date UTC2023-11-21T20:20:17Z + Skip Count3 + Skip Date2021-10-24T11:11:24Z + Release Date2018-10-26T12:00:00Z + Artwork Count1 + Sort AlbumMistake 3 - Single + Sort ArtistSean McVerry + Sort NameMistake 3 + Persistent ID76335B5B5C73B59F + Track TypeRemote + Apple Music + + 2849 + + Track ID2849 + NamePoor Boy + ArtistThe Regrettes + Album ArtistThe Regrettes + ComposerAndrew Thomsen, Genessa Gariano & Lydia Night + AlbumPoor Boy - Single + GenreAlternative + KindApple Music AAC audio file + Size6925575 + Total Time195722 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-11-25T06:24:40Z + Date Added2018-11-25T06:24:40Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3783776253 + Play Date UTC2023-11-25T13:57:33Z + Skip Count4 + Skip Date2022-04-22T09:48:41Z + Release Date2018-11-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPoor Boy - Single + Sort Album ArtistRegrettes + Sort ArtistRegrettes + Sort NamePoor Boy + Persistent ID9954F7A2CC650C3E + Track TypeRemote + Apple Music + + 2851 + + Track ID2851 + NameMona Lisa (feat. Kendrick Lamar) + ArtistLil Wayne + Album ArtistLil Wayne + ComposerKendrick Lamar, Angel Aponte, Dwayne Carter & Marco Rodriguez + AlbumTha Carter V + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11376758 + Total Time324189 + Disc Number1 + Disc Count1 + Track Number8 + Track Count23 + Year2018 + Date Modified2018-11-25T10:31:18Z + Date Added2018-11-25T10:31:18Z + Bit Rate256 + Sample Rate44100 + Play Count74 + Play Date3780774412 + Play Date UTC2023-10-21T20:06:52Z + Skip Count1 + Skip Date2021-09-12T19:29:23Z + Release Date2018-09-28T07:00:00Z + Loved + Artwork Count1 + Sort AlbumTha Carter V + Sort ArtistLil Wayne + Sort NameMona Lisa (feat. Kendrick Lamar) + Persistent ID4348D4866861E5C0 + Explicit + Track TypeRemote + Apple Music + + 2853 + + Track ID2853 + NameKillshot + ArtistEminem + Album ArtistEminem + ComposerM. Mathers & R. Fraser + AlbumKillshot - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8891702 + Total Time253580 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-11-25T10:37:53Z + Date Added2018-11-25T10:37:53Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3773238996 + Play Date UTC2023-07-26T14:56:36Z + Skip Count2 + Skip Date2022-03-18T14:39:44Z + Release Date2018-09-14T07:00:00Z + Artwork Count1 + Sort AlbumKillshot - Single + Sort ArtistEminem + Sort NameKillshot + Persistent IDB8EA54745C969B24 + Explicit + Track TypeRemote + Apple Music + + 2855 + + Track ID2855 + NameCrave + ArtistRuth B. + Album ArtistRuth B. + ComposerRuth Berhe & Dernst Emile II + AlbumCrave - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7825975 + Total Time220907 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-11-25T11:44:31Z + Date Added2018-11-25T11:44:31Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3783770924 + Play Date UTC2023-11-25T12:28:44Z + Skip Count1 + Skip Date2018-11-26T18:04:03Z + Release Date2018-11-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCrave - Single + Sort ArtistRuth B. + Sort NameCrave + Persistent IDDC2CD8CDB155BE9B + Track TypeRemote + Apple Music + + 2857 + + Track ID2857 + NameFor Me, It's You + ArtistLo Moon + Album ArtistLo Moon + ComposerMatt Lowell & Daniel Nigro + AlbumFor Me, It's You - Single + GenreAlternative + KindApple Music AAC audio file + Size8448794 + Total Time240027 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-11-25T13:46:03Z + Date Added2018-11-25T13:46:03Z + Bit Rate256 + Sample Rate44100 + Play Count91 + Play Date3779310979 + Play Date UTC2023-10-04T21:36:19Z + Release Date2018-11-16T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFor Me, It's You - Single + Sort ArtistLo Moon + Sort NameFor Me, It's You + Persistent ID349D31485DFF4717 + Track TypeRemote + Apple Music + + 2859 + + Track ID2859 + NameDon't Wait for Me + ArtistJosh Garrels + Album ArtistJosh Garrels + ComposerJosh Garrels + AlbumJacaranda + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7881179 + Total Time220333 + Disc Number1 + Disc Count1 + Track Number2 + Track Count15 + Year2008 + Date Modified2018-11-25T20:09:39Z + Date Added2018-11-25T20:09:39Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3779984540 + Play Date UTC2023-10-12T16:42:20Z + Skip Count2 + Skip Date2022-07-14T15:20:33Z + Release Date2008-09-03T12:00:00Z + Artwork Count1 + Sort AlbumJacaranda + Sort ArtistJosh Garrels + Sort NameDon't Wait for Me + Persistent ID6E65AF6A3D02782A + Track TypeRemote + Apple Music + + 2861 + + Track ID2861 + NameHidden Camera + ArtistColeman Hell + Album ArtistColeman Hell + ComposerColeman Hell & Robert Benvegnu + AlbumSummerland + GenreAlternative + KindApple Music AAC audio file + Size9201993 + Total Time264566 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2016 + Date Modified2018-11-26T11:08:02Z + Date Added2018-11-26T11:08:02Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3781623832 + Play Date UTC2023-10-31T16:03:52Z + Release Date2016-10-14T12:00:00Z + Artwork Count1 + Sort AlbumSummerland + Sort ArtistColeman Hell + Sort NameHidden Camera + Persistent IDB95F987CDDC23D21 + Track TypeRemote + Apple Music + + 2863 + + Track ID2863 + NameFound You Out + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumYou Haunt Me + GenreAlternative + KindApple Music AAC audio file + Size8016677 + Total Time217323 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2013 + Date Modified2018-11-27T06:47:20Z + Date Added2018-11-27T06:47:20Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3775571416 + Play Date UTC2023-08-22T14:50:16Z + Release Date2013-01-01T12:00:00Z + Artwork Count1 + Sort AlbumYou Haunt Me + Sort ArtistSir Sly + Sort NameFound You Out + Persistent ID09ACAEFF964D3174 + Track TypeRemote + Apple Music + + 2865 + + Track ID2865 + NameCameras + ArtistThe Blancos + Album ArtistThe Blancos + AlbumCameras - Single + GenreAlternative + KindAAC audio file + Size8271864 + Total Time234377 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2018-11-27T06:59:45Z + Date Added2018-11-27T06:59:45Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3663133992 + Play Date UTC2020-01-29T06:13:12Z + Skip Count1 + Skip Date2018-11-30T14:17:27Z + Release Date2016-03-02T12:00:00Z + Artwork Count1 + Sort AlbumCameras - Single + Sort Album ArtistBlancos + Sort ArtistBlancos + Sort NameCameras + Persistent IDC3FC8602B5AA42D7 + Explicit + Track TypeRemote + + 2867 + + Track ID2867 + NameUsed 2 + ArtistLil Wayne + Album ArtistLil Wayne + ComposerDwayne Carter, Leland Wayne, Marco Rodriguez & Rhars Mejdi + AlbumTha Carter V + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8604972 + Total Time240199 + Disc Number1 + Disc Count1 + Track Number22 + Track Count23 + Year2018 + Date Modified2018-11-28T14:28:43Z + Date Added2018-11-28T14:28:43Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3764668113 + Play Date UTC2023-04-18T10:08:33Z + Skip Count4 + Skip Date2022-04-23T18:10:44Z + Release Date2018-09-28T07:00:00Z + Loved + Artwork Count1 + Sort AlbumTha Carter V + Sort ArtistLil Wayne + Sort NameUsed 2 + Persistent ID30919C5CBA471B6F + Explicit + Track TypeRemote + Apple Music + + 2869 + + Track ID2869 + NameMoonlight + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJohn Cunningham & Jahseh Onfroy + Album? + GenrePop + KindApple Music AAC audio file + Size5071938 + Total Time135090 + Disc Number1 + Disc Count1 + Track Number3 + Track Count18 + Year2018 + Date Modified2018-11-30T14:37:48Z + Date Added2018-11-30T14:37:48Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783359689 + Play Date UTC2023-11-20T18:14:49Z + Skip Count2 + Skip Date2020-12-05T22:55:44Z + Release Date2018-03-16T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort Album? + Sort ArtistXXXTENTACION + Sort NameMoonlight + Persistent ID2835C7B748F3F81F + Explicit + Track TypeRemote + Apple Music + + 2871 + + Track ID2871 + NameRevenge + ArtistXXXTENTACION + Album ArtistXXXTENTACION + AlbumRevenge - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4523737 + Total Time120059 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-11-30T14:40:34Z + Date Added2018-11-30T14:40:34Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3781397339 + Play Date UTC2023-10-29T01:08:59Z + Release Date2017-05-18T07:00:00Z + Artwork Count1 + Sort AlbumRevenge - Single + Sort ArtistXXXTENTACION + Sort NameRevenge + Persistent IDDDA8A49521539EFB + Explicit + Track TypeRemote + Apple Music + + 2873 + + Track ID2873 + NameRider + ArtistThirty Seconds to Mars + Album ArtistThirty Seconds to Mars + ComposerJared Leto + AlbumAMERICA + GenreAlternative + KindApple Music AAC audio file + Size6470074 + Total Time177979 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2018 + Date Modified2018-11-30T14:53:12Z + Date Added2018-11-30T14:53:12Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3770536723 + Play Date UTC2023-06-25T08:18:43Z + Release Date2018-04-06T12:00:00Z + Artwork Count1 + Sort AlbumAMERICA + Sort ArtistThirty Seconds to Mars + Sort NameRider + Persistent ID3B58D545AAEF6A0A + Track TypeRemote + Apple Music + + 2875 + + Track ID2875 + NameCrown of Love + ArtistArcade Fire + Album ArtistArcade Fire + ComposerEdwin Butler, Regine Chassagne, Tim Kingsbury, Richard Parry & William Butler + AlbumFuneral + GenreAlternative + KindApple Music AAC audio file + Size9820030 + Total Time282333 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2004 + Date Modified2018-11-30T14:56:34Z + Date Added2018-11-30T14:56:34Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3776335780 + Play Date UTC2023-08-31T11:09:40Z + Skip Count1 + Skip Date2023-05-14T20:52:50Z + Release Date2004-09-14T12:00:00Z + Artwork Count1 + Sort AlbumFuneral + Sort ArtistArcade Fire + Sort NameCrown of Love + Persistent ID7003E3F804DCC45F + Track TypeRemote + Apple Music + + 2877 + + Track ID2877 + NameSay Something (feat. Chris Stapleton) + ArtistJustin Timberlake + Album ArtistJustin Timberlake + ComposerN/A + AlbumMan of the Woods + GenrePop + KindApple Music AAC audio file + Size9970790 + Total Time278896 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2018 + Date Modified2018-11-30T14:59:03Z + Date Added2018-11-30T14:59:03Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3773755745 + Play Date UTC2023-08-01T14:29:05Z + Release Date2018-01-25T08:00:00Z + Artwork Count1 + Sort AlbumMan of the Woods + Sort ArtistJustin Timberlake + Sort NameSay Something (feat. Chris Stapleton) + Persistent ID433FDFAFBD460D7F + Track TypeRemote + Apple Music + + 2879 + + Track ID2879 + NameMovement + ArtistHozier + Album ArtistHozier + ComposerAndrew Hozier-Byrne + AlbumWasteland, Baby! + GenreAlternative + KindApple Music AAC audio file + Size8442505 + Total Time237800 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2018 + Date Modified2018-11-30T15:17:49Z + Date Added2018-12-02T13:10:08Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3761644131 + Play Date UTC2023-03-14T10:08:51Z + Skip Count2 + Skip Date2021-09-26T21:59:25Z + Release Date2018-11-14T12:00:00Z + Artwork Count1 + Sort AlbumWasteland, Baby! + Sort ArtistHozier + Sort NameMovement + Persistent ID0BE522DCF4692212 + Track TypeRemote + Apple Music + + 2881 + + Track ID2881 + NameAyo Technology (feat. Justin Timberlake) + Artist50 Cent + Album Artist50 Cent + ComposerJustin Timberlake, Curtis Jackson, T. Mosley & N. Hills + AlbumCurtis + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8900457 + Total Time247947 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year2007 + Date Modified2018-11-30T15:21:29Z + Date Added2018-11-30T15:21:29Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3768304196 + Play Date UTC2023-05-30T12:09:56Z + Skip Count2 + Skip Date2023-02-08T19:48:13Z + Release Date2007-01-01T12:00:00Z + Artwork Count1 + Sort AlbumCurtis + Sort Artist50 Cent + Sort NameAyo Technology (feat. Justin Timberlake) + Persistent ID99BEA298DAE8DE65 + Explicit + Track TypeRemote + Apple Music + + 2883 + + Track ID2883 + NameIn da Club + Artist50 Cent + Album Artist50 Cent + ComposerCurtis Jackson, Andre R. Young & Mike Elizondo + AlbumGet Rich or Die Tryin' + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6905189 + Total Time193467 + Disc Number1 + Disc Count1 + Track Number5 + Track Count19 + Year2003 + Date Modified2018-11-30T15:33:43Z + Date Added2018-11-30T15:33:43Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783710611 + Play Date UTC2023-11-24T19:43:31Z + Release Date2003-01-07T08:00:00Z + Compilation + Artwork Count1 + Sort AlbumGet Rich or Die Tryin' + Sort Artist50 Cent + Sort NameIn da Club + Persistent ID9556A91C01FBD960 + Explicit + Track TypeRemote + Apple Music + + 2885 + + Track ID2885 + NameTowing the Line + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard & Mickey Smith + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8101043 + Total Time235653 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3766403084 + Play Date UTC2023-05-08T12:04:44Z + Skip Count2 + Skip Date2022-03-06T08:41:40Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameTowing the Line + Persistent IDE9DED25B2B16E0D7 + Track TypeRemote + Apple Music + + 2887 + + Track ID2887 + NameA Boat To an Island On the Wall + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size14705314 + Total Time430307 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3781320531 + Play Date UTC2023-10-28T03:48:51Z + Release Date2018-04-04T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameBoat To an Island On the Wall + Persistent ID23DFD2399A4B43EC + Track TypeRemote + Apple Music + + 2889 + + Track ID2889 + NameWhat the Moon Does + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size11160703 + Total Time320933 + Disc Number1 + Disc Count1 + Track Number4 + Track Count9 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781572694 + Play Date UTC2023-10-31T01:51:34Z + Skip Count2 + Skip Date2022-08-06T11:03:03Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameWhat the Moon Does + Persistent ID60AFAAD083A153C6 + Track TypeRemote + Apple Music + + 2891 + + Track ID2891 + NameSomeone In the Doorway + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard, Nathan Wason & India Bourne + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size10409202 + Total Time296293 + Disc Number1 + Disc Count1 + Track Number5 + Track Count9 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3780192199 + Play Date UTC2023-10-15T02:23:19Z + Skip Count1 + Skip Date2022-12-08T14:38:19Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameSomeone In the Doorway + Persistent ID5A448244FCE5615D + Track TypeRemote + Apple Music + + 2893 + + Track ID2893 + NameAll Down the Mines (Interlude) + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size2124536 + Total Time46880 + Disc Number1 + Disc Count1 + Track Number6 + Track Count9 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3773118506 + Play Date UTC2023-07-25T05:28:26Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameAll Down the Mines (Interlude) + Persistent ID4F8F432A0F28D262 + Track TypeRemote + Apple Music + + 2895 + + Track ID2895 + NameThe Defeat + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard, Mickey Smith, Kyle Keegan, Richard Thomas, Nathan Wason & India Bourne + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size12300113 + Total Time353280 + Disc Number1 + Disc Count1 + Track Number7 + Track Count9 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3764667360 + Play Date UTC2023-04-18T09:56:00Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameDefeat + Persistent ID42FC42351F2E97E4 + Explicit + Track TypeRemote + Apple Music + + 2897 + + Track ID2897 + NameA Boat To an Island, Pt. 2 / Agatha's Song + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size10038058 + Total Time293747 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3759657382 + Play Date UTC2023-02-19T10:16:22Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameBoat To an Island, Pt. 2 / Agatha's Song + Persistent ID35F96ED91F5B6989 + Track TypeRemote + Apple Music + + 2899 + + Track ID2899 + NameThere's Your Man + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard & Mickey Smith + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size9580932 + Total Time278573 + Disc Number1 + Disc Count1 + Track Number9 + Track Count9 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3767083152 + Play Date UTC2023-05-16T08:59:12Z + Skip Count1 + Skip Date2022-07-12T16:07:44Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameThere's Your Man + Persistent ID7D9C45F67987C9ED + Track TypeRemote + Apple Music + + 2901 + + Track ID2901 + NameMurmurations + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard & Mickey Smith + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size12436619 + Total Time375614 + Disc Number1 + Disc Count1 + Track Number10 + Year2018 + Date Modified2018-11-30T16:54:50Z + Date Added2018-11-30T16:54:50Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3779194088 + Play Date UTC2023-10-03T13:08:08Z + Skip Count1 + Skip Date2021-08-30T15:00:53Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameMurmurations + Persistent ID1EBF7268789AEC3B + Explicit + Track TypeRemote + Apple Music + + 2903 + + Track ID2903 + NameWaves + Artistglibs + Album Artistglibs + ComposerMatthew Ryan Bagnall + AlbumJust a Kid + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6827556 + Total Time190263 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2016 + Date Modified2018-12-02T08:23:19Z + Date Added2018-12-02T13:10:12Z + Bit Rate256 + Sample Rate44100 + Play Count58 + Play Date3765965888 + Play Date UTC2023-05-03T10:38:08Z + Release Date2016-10-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumJust a Kid + Sort Artistglibs + Sort NameWaves + Persistent IDA375F02A24F88A1C + Track TypeRemote + Apple Music + + 2905 + + Track ID2905 + NameI'm Sorry + ArtistAmeer Vann + Album ArtistAmeer Vann + AlbumI'm Sorry - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6382397 + Total Time177000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2018-12-02T12:40:02Z + Date Added2018-12-02T13:10:13Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count50 + Play Date3775827736 + Play Date UTC2023-08-25T14:02:16Z + Skip Count4 + Skip Date2022-11-16T20:34:17Z + Release Date2016-12-02T12:00:00Z + Artwork Count1 + Sort AlbumI'm Sorry - Single + Sort ArtistAmeer Vann + Sort NameI'm Sorry + Persistent IDDC5094AC53DA69A9 + Explicit + Track TypeRemote + Apple Music + + 2907 + + Track ID2907 + NameKilla (feat. Bells) + ArtistCHRIS YONGE + Album ArtistCHRIS YONGE + ComposerChris Stiliadis + AlbumKilla (feat. Bells) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7211633 + Total Time202067 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-12-02T13:15:21Z + Date Added2018-12-04T10:27:42Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3771828671 + Play Date UTC2023-07-10T07:11:11Z + Skip Count2 + Skip Date2021-09-26T22:14:50Z + Release Date2017-02-28T12:00:00Z + Artwork Count1 + Sort AlbumKilla (feat. Bells) - Single + Sort ArtistCHRIS YONGE + Sort NameKilla (feat. Bells) + Persistent ID3B6BF3EB54B4B5D6 + Explicit + Track TypeRemote + Apple Music + + 2909 + + Track ID2909 + NameNo, The Moon + ArtistTeen Suicide + Album ArtistTeen Suicide + ComposerTeen Suicide + AlbumI Will Be My Own Hell Because There Is a Devil Inside My Body + GenreAlternative + KindApple Music AAC audio file + Size5560672 + Total Time152170 + Disc Number1 + Disc Count1 + Track Number13 + Track Count18 + Year2015 + Date Modified2018-12-02T14:12:44Z + Date Added2018-12-02T14:12:44Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3781267465 + Play Date UTC2023-10-27T13:04:25Z + Skip Count1 + Skip Date2023-02-24T07:24:55Z + Release Date2015-10-07T12:00:00Z + Artwork Count1 + Sort AlbumI Will Be My Own Hell Because There Is a Devil Inside My Body + Sort ArtistTeen Suicide + Sort NameNo, The Moon + Persistent ID088E76479AB3A2AC + Track TypeRemote + Apple Music + + 2911 + + Track ID2911 + NameWoof, Pt. 1 + ArtistPanthurr + Album ArtistPanthurr + AlbumI Love U + GenreHip-Hop/Rap + KindAAC audio file + Size3352783 + Total Time84156 + Disc Number1 + Disc Count1 + Track Number12 + Track Count15 + Year2017 + Date Modified2018-12-02T18:12:07Z + Date Added2018-12-04T10:27:41Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3711481728 + Play Date UTC2021-08-10T20:08:48Z + Skip Count1 + Skip Date2021-02-26T20:35:30Z + Release Date2017-01-16T12:00:00Z + Artwork Count1 + Sort AlbumI Love U + Sort ArtistPanthurr + Sort NameWoof, Pt. 1 + Persistent ID94E4C734CB3CAB3E + Track TypeRemote + + 2913 + + Track ID2913 + NameMedicine + Artistkhai dreams + Album Artistkhai dreams + ComposerKhai Duong + AlbumMedicine - Single + GenreAlternative + KindApple Music AAC audio file + Size4276350 + Total Time121500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-12-03T14:58:50Z + Date Added2018-12-03T14:58:50Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count52 + Play Date3772635078 + Play Date UTC2023-07-19T15:11:18Z + Skip Count3 + Skip Date2022-10-09T16:05:35Z + Release Date2017-01-24T12:00:00Z + Artwork Count1 + Sort AlbumMedicine - Single + Sort Artistkhai dreams + Sort NameMedicine + Persistent IDD4D55F815E9AA4FE + Track TypeRemote + Apple Music + + 2915 + + Track ID2915 + NameSophomore Year Was Rough + ArtistNetherfriends + Album ArtistNetherfriends + ComposerNetherfriends + AlbumShawn Jon (An Album About High School) + GenrePop + KindApple Music AAC audio file + Size4353714 + Total Time119286 + Disc Number1 + Disc Count1 + Track Number4 + Track Count9 + Year2017 + Date Modified2018-12-04T04:16:02Z + Date Added2018-12-04T10:27:36Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3780135020 + Play Date UTC2023-10-14T10:30:20Z + Skip Count2 + Skip Date2021-04-02T22:28:49Z + Release Date2017-03-24T12:00:00Z + Artwork Count1 + Sort AlbumShawn Jon (An Album About High School) + Sort ArtistNetherfriends + Sort NameSophomore Year Was Rough + Persistent ID44708DCB7DB2EE8B + Track TypeRemote + Apple Music + + 2917 + + Track ID2917 + NameMagic + Artistglibs + Album Artistglibs + ComposerMatthew Ryan Bagnall + AlbumJust a Kid + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4997004 + Total Time136369 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2016 + Date Modified2018-12-04T11:19:47Z + Date Added2018-12-04T18:14:35Z + Bit Rate256 + Sample Rate44100 + Play Count92 + Play Date3767799127 + Play Date UTC2023-05-24T15:52:07Z + Skip Count4 + Skip Date2023-09-03T17:51:46Z + Release Date2016-10-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumJust a Kid + Sort Artistglibs + Sort NameMagic + Persistent ID670FF9BDD0D64E08 + Explicit + Track TypeRemote + Apple Music + + 2919 + + Track ID2919 + NameSame Old Shit + Artistglibs + Album Artistglibs + ComposerMatthew Ryan Bagnall + AlbumJust a Kid + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6332204 + Total Time176749 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2016 + Date Modified2018-12-04T12:20:06Z + Date Added2018-12-04T12:20:06Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3781624007 + Play Date UTC2023-10-31T16:06:47Z + Skip Count2 + Skip Date2023-09-03T17:39:26Z + Release Date2016-10-13T12:00:00Z + Artwork Count1 + Sort AlbumJust a Kid + Sort Artistglibs + Sort NameSame Old Shit + Persistent ID259E313F5D088E43 + Explicit + Track TypeRemote + Apple Music + + 2921 + + Track ID2921 + NameMood Swings + Artistglibs + Album Artistglibs + ComposerMatthew Ryan Bagnall + AlbumSweet Dreams + GenreR&B/Soul + KindApple Music AAC audio file + Size6062553 + Total Time168761 + Disc Number1 + Disc Count1 + Track Number13 + Track Count15 + Year2017 + Date Modified2018-12-04T12:26:27Z + Date Added2018-12-04T18:14:31Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3776237024 + Play Date UTC2023-08-30T07:43:44Z + Skip Count2 + Skip Date2021-10-24T12:40:00Z + Release Date2017-05-18T12:00:00Z + Artwork Count1 + Sort AlbumSweet Dreams + Sort Artistglibs + Sort NameMood Swings + Persistent IDA4DA68D5AF54B19C + Explicit + Track TypeRemote + Apple Music + + 2923 + + Track ID2923 + NameTime to Go + Artistglibs + Album Artistglibs + ComposerMatthew Ryan Bagnall + AlbumJust a Kid + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6373453 + Total Time174566 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2016 + Date Modified2018-12-04T13:37:14Z + Date Added2018-12-04T13:37:14Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3783679346 + Play Date UTC2023-11-24T11:02:26Z + Skip Count1 + Skip Date2018-12-04T20:33:04Z + Release Date2016-10-13T12:00:00Z + Artwork Count1 + Sort AlbumJust a Kid + Sort Artistglibs + Sort NameTime to Go + Persistent ID260B3E143C4D00C0 + Explicit + Track TypeRemote + Apple Music + + 2925 + + Track ID2925 + NameStay Awhile (feat. Glibs) + ArtistCjayQ + Album ArtistCjayQ + ComposerCjayQ + AlbumStay Awhile (feat. Glibs) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8164766 + Total Time230243 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2018-12-04T14:00:43Z + Date Added2018-12-04T14:00:43Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3783411754 + Play Date UTC2023-11-21T08:42:34Z + Skip Count3 + Skip Date2023-08-30T05:49:00Z + Release Date2017-04-21T12:00:00Z + Artwork Count1 + Sort AlbumStay Awhile (feat. Glibs) - Single + Sort ArtistCjayQ + Sort NameStay Awhile (feat. Glibs) + Persistent IDAA998FDFABDEA978 + Explicit + Track TypeRemote + Apple Music + + 2927 + + Track ID2927 + NameFor You (feat. Felly) + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5613852 + Total Time160967 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2016 + Date Modified2018-12-04T16:29:59Z + Date Added2018-12-04T16:29:59Z + Bit Rate256 + Sample Rate44100 + Play Count57 + Play Date3780845475 + Play Date UTC2023-10-22T15:51:15Z + Skip Count3 + Skip Date2018-12-06T04:06:48Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameFor You (feat. Felly) + Persistent ID1F5CB3517BAD26A0 + Explicit + Track TypeRemote + Apple Music + + 2929 + + Track ID2929 + NameA Ok (feat. Cjayq) + Artistglibs + Album Artistglibs + ComposerMatthew Bagnall & Conner Quinn + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size9024160 + Total Time259000 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2018 + Date Modified2018-12-04T16:36:13Z + Date Added2018-12-04T20:56:23Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3767691604 + Play Date UTC2023-05-23T10:00:04Z + Skip Count7 + Skip Date2023-09-03T17:58:10Z + Release Date2018-09-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameOk (feat. Cjayq) + Persistent ID55B2BB18BAF73DB2 + Explicit + Track TypeRemote + Apple Music + + 2931 + + Track ID2931 + NameLast Dime + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7057712 + Total Time203572 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2016 + Date Modified2018-12-06T05:08:55Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781766468 + Play Date UTC2023-11-02T07:41:08Z + Skip Date2022-09-17T05:37:04Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameLast Dime + Persistent IDBC3CD2E67C9BBC50 + Explicit + Track TypeRemote + Apple Music + + 2933 + + Track ID2933 + NameSunday Morning + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6687096 + Total Time188578 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3780179811 + Play Date UTC2023-10-14T22:56:51Z + Skip Count1 + Skip Date2022-07-07T14:22:29Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameSunday Morning + Persistent IDC1E32E45A7237A6C + Explicit + Track TypeRemote + Apple Music + + 2935 + + Track ID2935 + NameA.M. Wakin + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3964521 + Total Time104072 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3770301008 + Play Date UTC2023-06-22T14:50:08Z + Skip Count4 + Skip Date2022-06-20T10:51:31Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameA.M. Wakin + Persistent ID4D1F0EE2F14C8929 + Explicit + Track TypeRemote + Apple Music + + 2937 + + Track ID2937 + NameCabana + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6269755 + Total Time177500 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3779702119 + Play Date UTC2023-10-09T10:15:19Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameCabana + Persistent ID09F0B28C2F0030D6 + Explicit + Track TypeRemote + Apple Music + + 2939 + + Track ID2939 + NameLove4u + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5686564 + Total Time157388 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3783667810 + Play Date UTC2023-11-24T07:50:10Z + Skip Count2 + Skip Date2023-10-29T00:11:51Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameLove4u + Persistent IDD93748FD6A0280F3 + Explicit + Track TypeRemote + Apple Music + + 2941 + + Track ID2941 + NameR.I.P. + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5332468 + Total Time145894 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3779915078 + Play Date UTC2023-10-11T21:24:38Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameR.I.P. + Persistent IDEB1C026C864E9872 + Explicit + Track TypeRemote + Apple Music + + 2943 + + Track ID2943 + NameAll Bidness + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5814975 + Total Time161567 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3775800853 + Play Date UTC2023-08-25T06:34:13Z + Skip Count3 + Skip Date2022-10-06T15:30:54Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameAll Bidness + Persistent ID252B4E6C456BB742 + Explicit + Track TypeRemote + Apple Music + + 2945 + + Track ID2945 + NameOptions + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7651768 + Total Time214021 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3776337253 + Play Date UTC2023-08-31T11:34:13Z + Skip Count3 + Skip Date2023-03-02T13:22:07Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameOptions + Persistent IDCB0E8390DA480483 + Explicit + Track TypeRemote + Apple Music + + 2947 + + Track ID2947 + NameGrowing Up + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4222243 + Total Time113058 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3781447547 + Play Date UTC2023-10-29T15:05:47Z + Skip Date2022-12-08T05:32:18Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameGrowing Up + Persistent IDFDBCD0E73328C05F + Explicit + Track TypeRemote + Apple Music + + 2949 + + Track ID2949 + NameNever Comin Home (feat. Peter $Un) + ArtistCjayQ + Album ArtistCjayQ + AlbumSunday Morning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8416962 + Total Time239569 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2016 + Date Modified2018-12-06T14:37:34Z + Date Added2018-12-06T14:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3776344309 + Play Date UTC2023-08-31T13:31:49Z + Release Date2016-08-31T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning + Sort ArtistCjayQ + Sort NameNever Comin Home (feat. Peter $Un) + Persistent ID085A4A58EEB3E09E + Explicit + Track TypeRemote + Apple Music + + 2951 + + Track ID2951 + NameWhatchu Say + Artistglibs + Album Artistglibs + ComposerMatthew Bagnall + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size7411322 + Total Time207750 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3773213096 + Play Date UTC2023-07-26T07:44:56Z + Skip Count1 + Skip Date2022-07-08T12:52:04Z + Release Date2018-09-28T12:00:00Z + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameWhatchu Say + Persistent ID9EF3D60D11F4B1C8 + Track TypeRemote + Apple Music + + 2953 + + Track ID2953 + NameJuice + Artistglibs + Album Artistglibs + Composerglibs + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size6086536 + Total Time169250 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3775740660 + Play Date UTC2023-08-24T13:51:00Z + Release Date2018-09-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameJuice + Persistent IDFF19DBD256F28D2E + Track TypeRemote + Apple Music + + 2955 + + Track ID2955 + NameHypnotic (feat. Daylan Hill) + Artistglibs + Album Artistglibs + Composerglibs + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size9652799 + Total Time275125 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3762335900 + Play Date UTC2023-03-22T10:18:20Z + Skip Count1 + Skip Date2022-05-16T20:58:49Z + Release Date2018-09-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameHypnotic (feat. Daylan Hill) + Persistent IDD717C10D3395A4B3 + Explicit + Track TypeRemote + Apple Music + + 2957 + + Track ID2957 + NameTough + Artistglibs + Album Artistglibs + Composerglibs + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size5206121 + Total Time143571 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3772806937 + Play Date UTC2023-07-21T14:55:37Z + Skip Count1 + Skip Date2022-08-06T10:15:54Z + Release Date2018-09-28T12:00:00Z + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameTough + Persistent IDA9F5A747B5BEF788 + Explicit + Track TypeRemote + Apple Music + + 2959 + + Track ID2959 + NameLarissa + Artistglibs + Album Artistglibs + Composerglibs + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size3035016 + Total Time75508 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3776238266 + Play Date UTC2023-08-30T08:04:26Z + Release Date2018-09-28T12:00:00Z + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameLarissa + Persistent ID09DEDF4B3BC75DFD + Track TypeRemote + Apple Music + + 2961 + + Track ID2961 + NameExodus + Artistglibs + Album Artistglibs + Composerglibs + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size7635245 + Total Time218182 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3779192303 + Play Date UTC2023-10-03T12:38:23Z + Release Date2018-03-12T12:00:00Z + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameExodus + Persistent IDC8CA9F52CCA4BDC9 + Explicit + Track TypeRemote + Apple Music + + 2963 + + Track ID2963 + NameZero + Artistglibs + Album Artistglibs + Composerglibs + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size10032810 + Total Time295263 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3767521470 + Play Date UTC2023-05-21T10:44:30Z + Skip Count2 + Skip Date2023-11-05T01:56:04Z + Release Date2018-09-28T12:00:00Z + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameZero + Persistent IDF6E917DA06558FA4 + Explicit + Track TypeRemote + Apple Music + + 2965 + + Track ID2965 + NameMan on a Mission (Space Bound) + Artistglibs + Album Artistglibs + ComposerMatthew Bagnall + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size4790100 + Total Time130000 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3781057770 + Play Date UTC2023-10-25T02:49:30Z + Release Date2018-08-10T12:00:00Z + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameMan on a Mission (Space Bound) + Persistent ID1FE1A391FEF951AC + Track TypeRemote + Apple Music + + 2967 + + Track ID2967 + NameSynopsis + Artistglibs + Album Artistglibs + Composerglibs + AlbumNeptune + GenreR&B/Soul + KindApple Music AAC audio file + Size4506819 + Total Time127573 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2018 + Date Modified2018-12-06T20:37:09Z + Date Added2018-12-06T20:37:09Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3783756138 + Play Date UTC2023-11-25T08:22:18Z + Skip Count1 + Skip Date2022-07-12T19:32:43Z + Release Date2018-09-28T12:00:00Z + Artwork Count1 + Sort AlbumNeptune + Sort Artistglibs + Sort NameSynopsis + Persistent IDF521FE24EA6CD888 + Explicit + Track TypeRemote + Apple Music + + 2969 + + Track ID2969 + NameCalifornia Girls + ArtistNoMBe + Album ArtistNoMBe + AlbumCalifornia Girls - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size7782060 + Total Time216923 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2018-12-09T16:10:51Z + Date Added2018-12-09T16:10:51Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3779948733 + Play Date UTC2023-10-12T06:45:33Z + Skip Date2022-10-23T08:19:40Z + Release Date2015-03-15T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCalifornia Girls - Single + Sort ArtistNoMBe + Sort NameCalifornia Girls + Persistent ID0B4E80424FABF57C + Track TypeRemote + Apple Music + + 2971 + + Track ID2971 + NameHigher + ArtistThe Score + Album ArtistThe Score + ComposerEdan Dover & Eddie Anthony + AlbumATLAS + GenreAlternative + KindApple Music AAC audio file + Size7782299 + Total Time214613 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2017 + Date Modified2018-12-10T18:43:33Z + Date Added2018-12-10T18:43:33Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3778573589 + Play Date UTC2023-09-26T08:46:29Z + Skip Count3 + Skip Date2023-02-13T16:34:56Z + Release Date2017-04-14T12:00:00Z + Artwork Count1 + Sort AlbumATLAS + Sort Album ArtistScore + Sort ArtistScore + Sort NameHigher + Persistent IDF95AAE07E73177F3 + Track TypeRemote + Apple Music + + 2973 + + Track ID2973 + NameNuvole Bianche + ArtistLudovico Einaudi + Album ArtistLudovico Einaudi + ComposerLudovico Einaudi + AlbumUna Mattina + WorkNuvole Bianche + Movement NameNuvole Bianche + GenreClassical + KindApple Music AAC audio file + Size14109487 + Total Time357707 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2004 + Date Modified2018-12-15T04:47:27Z + Date Added2018-12-16T13:45:16Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3783754856 + Play Date UTC2023-11-25T08:00:56Z + Skip Count2 + Skip Date2022-11-24T11:15:41Z + Release Date2004-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumUna Mattina + Sort ArtistLudovico Einaudi + Sort NameNuvole Bianche + Persistent ID290F2B7F385368CA + Track TypeRemote + Apple Music + + 2975 + + Track ID2975 + NameIn Cold Blood + Artistalt-J + Album Artistalt-J + AlbumRELAXER + GenreAlternative + KindAAC audio file + Size7423578 + Total Time206853 + Disc Number1 + Disc Count1 + Track Number2 + Track Count8 + Year2017 + Date Modified2018-12-15T04:55:22Z + Date Added2018-12-15T04:55:22Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3733241924 + Play Date UTC2022-04-19T16:38:44Z + Skip Count1 + Skip Date2022-03-26T08:56:50Z + Release Date2017-03-29T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRELAXER + Sort Artistalt-J + Sort NameIn Cold Blood + Persistent ID0B289E9CB8285297 + Explicit + Track TypeRemote + Apple Music + + 2977 + + Track ID2977 + NameIntro + Artistalt-J + Album Artistalt-J + ComposerJoe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green + AlbumAn Awesome Wave + GenreAlternative + KindAAC audio file + Size5912338 + Total Time157813 + Disc Number1 + Disc Count1 + Track Number1 + Track Count14 + Year2012 + Date Modified2018-12-15T04:55:27Z + Date Added2018-12-15T04:55:27Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count48 + Play Date3733421914 + Play Date UTC2022-04-21T18:38:34Z + Skip Count4 + Skip Date2021-10-06T21:53:38Z + Release Date2012-05-25T12:00:00Z + Rating80 + Album Rating100 + Artwork Count1 + Sort AlbumAwesome Wave + Sort Artistalt-J + Sort NameIntro + Persistent ID819924DF353E5327 + Track TypeRemote + Apple Music + + 2979 + + Track ID2979 + NameUp There + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, Louis Bell & Pharrell Williams + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6991387 + Total Time194831 + Disc Number1 + Disc Count1 + Track Number13 + Track Count18 + Year2016 + Date Modified2018-12-16T06:52:07Z + Date Added2018-12-16T06:52:07Z + Bit Rate256 + Sample Rate44100 + Play Count231 + Play Date3783057273 + Play Date UTC2023-11-17T06:14:33Z + Skip Count6 + Skip Date2022-10-27T17:48:57Z + Release Date2016-12-09T08:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameUp There + Persistent IDF03EAAA9F298CC06 + Explicit + Track TypeRemote + Apple Music + + 2981 + + Track ID2981 + NameBroken Whiskey Glass + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, T. Markous Roberts & Rex Kudo + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8253921 + Total Time233805 + Disc Number1 + Disc Count1 + Track Number1 + Track Count18 + Year2016 + Date Modified2018-12-16T13:45:12Z + Date Added2018-12-16T13:45:12Z + Bit Rate256 + Sample Rate44100 + Play Count264 + Play Date3783004026 + Play Date UTC2023-11-16T15:27:06Z + Skip Count23 + Skip Date2022-01-13T18:07:45Z + Release Date2016-12-09T08:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization5074 + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameBroken Whiskey Glass + Persistent IDF72868271B910B9B + Explicit + Track TypeRemote + Apple Music + + 2983 + + Track ID2983 + NameLeave + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, Charlie Handsome & Rex Kudo + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11364885 + Total Time324854 + Disc Number1 + Disc Count1 + Track Number15 + Track Count18 + Year2016 + Date Modified2018-12-17T15:15:20Z + Date Added2018-12-17T15:15:20Z + Bit Rate256 + Sample Rate44100 + Play Count174 + Play Date3783012895 + Play Date UTC2023-11-16T17:54:55Z + Skip Count10 + Skip Date2022-12-06T18:24:15Z + Release Date2016-12-09T08:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameLeave + Persistent IDCEC47F9082DBDA9C + Explicit + Track TypeRemote + Apple Music + + 2985 + + Track ID2985 + NameJonestown (Interlude) + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post, Te Whiti Warbrick, Nicholas Audino & Lewis Hughes + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4378391 + Total Time112008 + Disc Number1 + Disc Count1 + Track Number15 + Track Count18 + Year2018 + Date Modified2018-12-19T06:27:27Z + Date Added2018-12-19T06:27:27Z + Bit Rate256 + Sample Rate44100 + Play Count185 + Play Date3783005908 + Play Date UTC2023-11-16T15:58:28Z + Skip Count5 + Skip Date2021-08-16T21:13:39Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization3527 + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameJonestown (Interlude) + Persistent ID753771635F526BB2 + Track TypeRemote + Apple Music + + 2987 + + Track ID2987 + NameParis + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumNow the Moon's Rising + GenreHip-Hop + KindApple Music AAC audio file + Size4122095 + Total Time111020 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2015 + Date Modified2018-12-19T17:03:17Z + Date Added2018-12-19T17:03:17Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3765221099 + Play Date UTC2023-04-24T19:44:59Z + Skip Count2 + Skip Date2023-02-08T19:48:08Z + Release Date2015-11-20T12:00:00Z + Artwork Count1 + Sort AlbumNow the Moon's Rising + Sort Artist$uicideboy$ + Sort NameParis + Persistent IDCE7486F9C27A2ABD + Explicit + Track TypeRemote + Apple Music + + 2989 + + Track ID2989 + NameMask Off + ArtistFuture + Album ArtistFuture + ComposerNayvadius Wilburn, Leland Wayne & Tommy Butler + AlbumFUTURE + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7311187 + Total Time204600 + Disc Number1 + Disc Count1 + Track Number7 + Track Count20 + Year2017 + Date Modified2018-12-19T18:50:58Z + Date Added2018-12-19T18:50:58Z + Bit Rate256 + Sample Rate44100 + Play Count137 + Play Date3773239883 + Play Date UTC2023-07-26T15:11:23Z + Skip Count4 + Skip Date2021-06-11T05:41:29Z + Release Date2017-02-17T08:00:00Z + Loved + Artwork Count1 + Sort AlbumFUTURE + Sort ArtistFuture + Sort NameMask Off + Persistent IDDE935492C53B9894 + Explicit + Track TypeRemote + Apple Music + + 2991 + + Track ID2991 + Name122 Days + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerAristos Petrou & Scott Arceneaux Jr. + AlbumI Want to Die in New Orleans + GenreHip-Hop + KindApple Music AAC audio file + Size6813033 + Total Time184324 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2018 + Date Modified2018-12-19T19:05:14Z + Date Added2018-12-19T19:05:14Z + Bit Rate256 + Sample Rate44100 + Play Count271 + Play Date3782048816 + Play Date UTC2023-11-05T14:06:56Z + Skip Count6 + Skip Date2022-05-15T10:48:34Z + Release Date2018-09-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumI Want to Die in New Orleans + Sort Artist$uicideboy$ + Sort Name122 Days + Persistent ID0FFD176E9BE8F40B + Explicit + Track TypeRemote + Apple Music + + 2993 + + Track ID2993 + NameLeviathan (feat. Sam Martin) [Hippie Sabotage Remix] + ArtistG-Eazy + Album ArtistG-Eazy + ComposerSam Martin, Gerald Gillum, Michael Keenan, Dakarai Gwitira, Nicolas Scapa, Michael Aljadeff & Edgar Machuca + AlbumThe Beautiful & Damned (Remixes) - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8764074 + Total Time254475 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2018 + Date Modified2018-12-19T19:08:42Z + Date Added2018-12-19T19:08:42Z + Bit Rate256 + Sample Rate44100 + Play Count90 + Play Date3766395635 + Play Date UTC2023-05-08T10:00:35Z + Skip Count6 + Skip Date2023-01-15T20:08:06Z + Release Date2018-12-14T12:00:00Z + Artwork Count1 + Sort AlbumBeautiful & Damned (Remixes) - EP + Sort ArtistG-Eazy + Sort NameLeviathan (feat. Sam Martin) [Hippie Sabotage Remix] + Persistent ID7D4AA6C67C22B812 + Explicit + Track TypeRemote + Apple Music + + 2995 + + Track ID2995 + NameCandy Paint + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell & Austin Post + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7888280 + Total Time227537 + Disc Number1 + Disc Count1 + Track Number17 + Track Count18 + Year2017 + Date Modified2018-12-22T19:14:37Z + Date Added2018-12-29T18:53:14Z + Bit Rate256 + Sample Rate44100 + Volume Adjustment255 + Play Count257 + Play Date3783061161 + Play Date UTC2023-11-17T07:19:21Z + Skip Count4 + Skip Date2021-02-18T12:50:23Z + Release Date2017-04-14T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization3605 + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameCandy Paint + Persistent ID051CCAD7D9B88498 + Explicit + Track TypeRemote + Apple Music + + 2997 + + Track ID2997 + NameNo Good + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size8914059 + Total Time235227 + Disc Number1 + Disc Count1 + Track Number1 + Track Count9 + Year2016 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3776151973 + Play Date UTC2023-08-29T08:06:13Z + Skip Count3 + Skip Date2022-03-18T14:36:32Z + Release Date2016-02-15T08:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameNo Good + Persistent ID6E9D429463D3C57F + Track TypeRemote + Apple Music + + 2999 + + Track ID2999 + NameWay Down We Go + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size7910639 + Total Time219560 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2015 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count64 + Play Date3781205303 + Play Date UTC2023-10-26T19:48:23Z + Skip Count1 + Skip Date2022-10-17T07:21:25Z + Release Date2015-08-15T07:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameWay Down We Go + Persistent ID44DBE16A0B94F777 + Track TypeRemote + Apple Music + + 3001 + + Track ID3001 + NameBroken Bones + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson & Rubin Pollock + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size8713608 + Total Time245960 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2016 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3780847202 + Play Date UTC2023-10-22T16:20:02Z + Skip Count1 + Skip Date2021-05-20T10:08:14Z + Release Date2016-06-10T07:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameBroken Bones + Persistent ID171C07473116EC1A + Track TypeRemote + Apple Music + + 3003 + + Track ID3003 + NameGlass House + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size9237041 + Total Time241547 + Disc Number1 + Disc Count1 + Track Number4 + Track Count9 + Year2013 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3780134469 + Play Date UTC2023-10-14T10:21:09Z + Skip Count3 + Skip Date2022-07-06T10:06:42Z + Release Date2013-11-15T08:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameGlass House + Persistent IDA870C465000E9562 + Track TypeRemote + Apple Music + + 3005 + + Track ID3005 + NameHot Blood + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size8138355 + Total Time218600 + Disc Number1 + Disc Count1 + Track Number5 + Track Count9 + Year2016 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3773759833 + Play Date UTC2023-08-01T15:37:13Z + Skip Count3 + Skip Date2022-11-18T20:11:32Z + Release Date2016-06-10T07:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameHot Blood + Persistent ID82A5334155511E37 + Track TypeRemote + Apple Music + + 3007 + + Track ID3007 + NameAll the Pretty Girls + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size9475239 + Total Time269893 + Disc Number1 + Disc Count1 + Track Number6 + Track Count9 + Year2016 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781435785 + Play Date UTC2023-10-29T11:49:45Z + Skip Count1 + Skip Date2022-12-09T08:50:49Z + Release Date2016-06-10T12:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameAll the Pretty Girls + Persistent ID74D98F7093752594 + Track TypeRemote + Apple Music + + 3009 + + Track ID3009 + NameAutomobile + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size6776742 + Total Time186907 + Disc Number1 + Disc Count1 + Track Number7 + Track Count9 + Year2016 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783494797 + Play Date UTC2023-11-22T07:46:37Z + Skip Count1 + Skip Date2022-08-12T08:19:04Z + Release Date2016-06-10T07:00:00Z + Loved + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameAutomobile + Persistent IDF6B90675A6298E14 + Track TypeRemote + Apple Music + + 3011 + + Track ID3011 + NameVor í Vaglaskógi + ArtistKALEO + Album ArtistKALEO + ComposerJonas Jonasson & Kristján frá Djúpalæk + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size9658672 + Total Time277267 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2016 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3758764406 + Play Date UTC2023-02-09T02:13:26Z + Skip Count1 + Skip Date2022-12-08T15:15:28Z + Release Date2016-06-10T07:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameVor í Vaglaskógi + Persistent ID7B9A506A8015DBD0 + Track TypeRemote + Apple Music + + 3013 + + Track ID3013 + NameSave Yourself + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size9794165 + Total Time273880 + Disc Number1 + Disc Count1 + Track Number9 + Track Count9 + Year2016 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783491750 + Play Date UTC2023-11-22T06:55:50Z + Release Date2016-06-10T07:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameSave Yourself + Persistent IDFEA136FA48D46A1A + Track TypeRemote + Apple Music + + 3015 + + Track ID3015 + NameI Can't Go On Without You + ArtistKALEO + Album ArtistKALEO + ComposerJökull Júlíusson + AlbumA / B + GenreAlternative + KindApple Music AAC audio file + Size13486937 + Total Time374840 + Disc Number1 + Disc Count1 + Track Number10 + Year2016 + Date Modified2018-12-24T14:16:16Z + Date Added2018-12-24T14:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count55 + Play Date3767203207 + Play Date UTC2023-05-17T18:20:07Z + Skip Count1 + Skip Date2021-11-02T15:33:13Z + Release Date2016-06-10T07:00:00Z + Artwork Count1 + Sort Album/ B + Sort ArtistKALEO + Sort NameI Can't Go On Without You + Persistent ID7A8F0EDAA3247778 + Track TypeRemote + Apple Music + + 3017 + + Track ID3017 + Namenobody's home + ArtistGarrett Nash + Album ArtistGarrett Nash + ComposerGarrett Nash, Jimmy Robbins & Scott Harris + Albumnobody's home - Single + GenreAlternative + KindApple Music AAC audio file + Size6911889 + Total Time192508 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2018-12-28T19:33:43Z + Date Added2018-12-28T19:33:43Z + Bit Rate256 + Sample Rate44100 + Play Count66 + Play Date3781354443 + Play Date UTC2023-10-28T13:14:03Z + Skip Count6 + Skip Date2023-06-30T12:47:25Z + Release Date2018-11-01T12:00:00Z + Loved + Artwork Count1 + Sort Albumnobody's home - Single + Sort ArtistGarrett Nash + Sort Namenobody's home + Persistent ID1105A4D9D7730271 + Track TypeRemote + Apple Music + + 3019 + + Track ID3019 + NameFor Your Sins + ArtistNgahere Wafer + Album ArtistNgahere Wafer + ComposerThom Williams & Ngahere Wafer + AlbumBlue Dark + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6605157 + Total Time184248 + Disc Number1 + Disc Count1 + Track Number5 + Track Count9 + Year2018 + Date Modified2018-12-28T19:49:28Z + Date Added2018-12-29T18:53:20Z + Bit Rate256 + Sample Rate44100 + Play Count137 + Play Date3779631548 + Play Date UTC2023-10-08T14:39:08Z + Skip Count1 + Skip Date2018-12-29T18:53:14Z + Release Date2018-12-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBlue Dark + Sort ArtistNgahere Wafer + Sort NameFor Your Sins + Persistent ID97DE93D6C3E48E96 + Explicit + Track TypeRemote + Apple Music + + 3021 + + Track ID3021 + NameFragile + Artistbbno$ & So Loki + Album Artistbbno$ & So Loki + ComposerAlexander Gumuchian & Khalil Frederick, Geoffrey Millar + AlbumWhatever + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6959865 + Total Time195556 + Disc Number1 + Disc Count1 + Track Number3 + Track Count7 + Year2018 + Date Modified2018-12-28T19:59:44Z + Date Added2018-12-29T18:53:19Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count129 + Play Date3781242682 + Play Date UTC2023-10-27T06:11:22Z + Skip Count3 + Skip Date2022-08-04T10:37:22Z + Release Date2018-10-26T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWhatever + Sort Artistbbno$ & So Loki + Sort NameFragile + Persistent ID263374E8826F8F35 + Explicit + Track TypeRemote + Apple Music + + 3023 + + Track ID3023 + NameDead People + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph & Joshua Luellen + AlbumIssa Album + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5324285 + Total Time147427 + Disc Number1 + Disc Count1 + Track Number10 + Track Count14 + Year2017 + Date Modified2019-01-01T06:51:36Z + Date Added2019-01-01T06:51:36Z + Bit Rate256 + Sample Rate44100 + Play Count244 + Play Date3781848964 + Play Date UTC2023-11-03T06:36:04Z + Skip Count8 + Skip Date2022-08-19T16:02:56Z + Release Date2017-07-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization1259 + Artwork Count1 + Sort AlbumIssa Album + Sort Artist21 Savage + Sort NameDead People + Persistent IDC6106E2CB67BC69E + Explicit + Track TypeRemote + Apple Music + + 3025 + + Track ID3025 + NameBAD! + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJohn Cunningham, Robert Soukiasyan & Jahseh Onfroy + AlbumSKINS + GenrePop + KindApple Music AAC audio file + Size3670426 + Total Time94246 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2018 + Date Modified2019-01-04T06:50:06Z + Date Added2019-01-04T06:50:06Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count151 + Play Date3768408833 + Play Date UTC2023-05-31T17:13:53Z + Skip Count6 + Skip Date2021-02-18T14:30:09Z + Release Date2018-11-09T08:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSKINS + Sort ArtistXXXTENTACION + Sort NameBAD! + Persistent IDB01D9299DDBCF834 + Track TypeRemote + Apple Music + + 3027 + + Track ID3027 + NameI don’t let go + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJ. Onfroy, J. Cunningham, T. Gomringer & K. Gomringer + AlbumSKINS + GenrePop + KindApple Music AAC audio file + Size4563262 + Total Time121630 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2018 + Date Modified2019-01-04T06:50:14Z + Date Added2019-01-04T06:50:14Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count174 + Play Date3783265302 + Play Date UTC2023-11-19T16:01:42Z + Skip Count6 + Skip Date2022-10-27T15:19:49Z + Release Date2018-12-07T08:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSKINS + Sort ArtistXXXTENTACION + Sort NameI don’t let go + Persistent IDFD552B0D2B68AA21 + Explicit + Track TypeRemote + Apple Music + + 3029 + + Track ID3029 + NameHard Working Friend + ArtistNetherfriends + Album ArtistNetherfriends + ComposerNetherfriends + AlbumFriend + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4745489 + Total Time125902 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2018 + Date Modified2019-01-04T07:13:41Z + Date Added2019-01-04T07:13:41Z + Bit Rate256 + Sample Rate44100 + Play Count73 + Play Date3756669691 + Play Date UTC2023-01-15T20:21:31Z + Skip Count2 + Skip Date2021-12-10T17:32:20Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumFriend + Sort ArtistNetherfriends + Sort NameHard Working Friend + Persistent ID882D087142550D4D + Explicit + Track TypeRemote + Apple Music + + 3031 + + Track ID3031 + NameVenus Flytrap + ArtistFeng Suave + Album ArtistFeng Suave + ComposerDaniel Leonard Elvis Schoemaker, Daniel Thomas de Jong, Ivar Otten, Adura Sulaiman & Jim Wood + AlbumVenus Flytrap - Single + GenreAlternative + KindApple Music AAC audio file + Size7858198 + Total Time222122 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-04T07:23:30Z + Date Added2019-01-04T07:23:30Z + Bit Rate256 + Sample Rate44100 + Play Count81 + Play Date3781446565 + Play Date UTC2023-10-29T14:49:25Z + Skip Count3 + Skip Date2021-02-01T21:31:21Z + Release Date2018-11-30T12:00:00Z + Artwork Count1 + Sort AlbumVenus Flytrap - Single + Sort ArtistFeng Suave + Sort NameVenus Flytrap + Persistent IDA4891ACEC48C1AF4 + Track TypeRemote + Apple Music + + 3033 + + Track ID3033 + NameJocelyn Flores + ArtistXXXTENTACION + Album ArtistXXXTENTACION + Album17 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4504370 + Total Time119133 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2017 + Date Modified2019-01-04T15:21:56Z + Date Added2019-01-04T15:21:56Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count113 + Play Date3776343236 + Play Date UTC2023-08-31T13:13:56Z + Skip Count11 + Skip Date2022-04-16T22:47:05Z + Release Date2017-08-25T12:00:00Z + Loved + Normalization1319 + Artwork Count1 + Sort Album17 + Sort ArtistXXXTENTACION + Sort NameJocelyn Flores + Persistent IDFA7AF906F53534AE + Explicit + Track TypeRemote + Apple Music + + 3035 + + Track ID3035 + NameEmpathy + ArtistAlicks + Album ArtistAlicks + ComposerAlicks + AlbumEverything Is So Beautiful + GenreDowntempo + KindApple Music AAC audio file + Size8885388 + Total Time253492 + Disc Number1 + Disc Count1 + Track Number14 + Track Count18 + Year2017 + Date Modified2019-01-06T23:23:18Z + Date Added2019-01-06T23:23:18Z + Bit Rate256 + Sample Rate44100 + Play Count94 + Play Date3773230491 + Play Date UTC2023-07-26T12:34:51Z + Skip Count2 + Skip Date2022-09-17T05:41:26Z + Release Date2017-03-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumEverything Is So Beautiful + Sort ArtistAlicks + Sort NameEmpathy + Persistent ID9C83242CA6D940A5 + Track TypeRemote + Apple Music + + 3037 + + Track ID3037 + NameGalileo + ArtistDerek Pope + Album ArtistDerek Pope + AlbumGalileo - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10153293 + Total Time296978 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-01-06T23:31:17Z + Date Added2019-01-06T23:31:17Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count262 + Play Date3782884364 + Play Date UTC2023-11-15T06:12:44Z + Skip Count10 + Skip Date2022-03-15T17:18:04Z + Release Date2017-04-06T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumGalileo - Single + Sort ArtistDerek Pope + Sort NameGalileo + Persistent ID46010F10419A61E5 + Explicit + Track TypeRemote + Apple Music + + 3039 + + Track ID3039 + NameLove You + ArtistRoy Woods + Album ArtistRoy Woods + ComposerDeshawn Levy-George, FrancisGotHeat, Roy Woods & Sunny Khokhar + AlbumNocturnal - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size7072430 + Total Time197721 + Disc Number1 + Disc Count1 + Track Number6 + Track Count7 + Year2016 + Date Modified2019-01-07T10:58:09Z + Date Added2019-01-07T10:58:09Z + Bit Rate256 + Sample Rate44100 + Play Count236 + Play Date3781621879 + Play Date UTC2023-10-31T15:31:19Z + Skip Count4 + Skip Date2022-09-16T07:19:53Z + Release Date2016-12-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNocturnal - EP + Sort ArtistRoy Woods + Sort NameLove You + Persistent ID70394392889EC687 + Explicit + Track TypeRemote + Apple Music + + 3041 + + Track ID3041 + NameHim.Her. + ArtistJames Gillespie + Album ArtistJames Gillespie + ComposerJames Gillespie + AlbumLost - EP + GenreAlternative + KindApple Music AAC audio file + Size8707717 + Total Time247853 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2018 + Date Modified2019-01-11T10:29:21Z + Date Added2019-01-11T10:29:21Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count43 + Play Date3779201652 + Play Date UTC2023-10-03T15:14:12Z + Skip Count2 + Skip Date2022-01-29T18:10:45Z + Release Date2018-11-21T12:00:00Z + Artwork Count1 + Sort AlbumLost - EP + Sort ArtistJames Gillespie + Sort NameHim.Her. + Persistent ID02E2C24F8E55CC9B + Track TypeRemote + Apple Music + + 3043 + + Track ID3043 + NameThe Only Time I'm Home + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumThe Only Time I'm Home - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7119046 + Total Time200547 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-11T10:29:22Z + Date Added2019-01-11T10:29:22Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3773843055 + Play Date UTC2023-08-02T14:44:15Z + Skip Count4 + Skip Date2023-02-02T06:23:43Z + Release Date2018-11-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumOnly Time I'm Home - Single + Sort ArtistTom Rosenthal + Sort NameOnly Time I'm Home + Persistent ID88B5EE7CC16FC133 + Track TypeRemote + Apple Music + + 3045 + + Track ID3045 + NameSpiritual Man + ArtistLANKS + Album ArtistLANKS + ComposerWill Cuming, Emma Sameth & Andrei Eremin + AlbumInoue - Single + GenreAlternative + KindApple Music AAC audio file + Size6497633 + Total Time180991 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2018 + Date Modified2019-01-11T10:29:24Z + Date Added2019-01-11T10:29:24Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3767078675 + Play Date UTC2023-05-16T07:44:35Z + Skip Count1 + Skip Date2021-04-27T13:11:24Z + Release Date2018-11-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumInoue - Single + Sort ArtistLANKS + Sort NameSpiritual Man + Persistent ID8B7E135B1A855DF6 + Track TypeRemote + Apple Music + + 3047 + + Track ID3047 + NameNot Today + ArtistAlessia Cara + Album ArtistAlessia Cara + ComposerAlessia Caracciolo + AlbumThe Pains of Growing + GenrePop + KindApple Music AAC audio file + Size5781134 + Total Time156527 + Disc Number1 + Disc Count1 + Track Number2 + Track Count15 + Year2018 + Date Modified2019-01-11T10:29:34Z + Date Added2019-01-11T10:29:34Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3781384258 + Play Date UTC2023-10-28T21:30:58Z + Skip Count2 + Skip Date2022-01-29T18:10:50Z + Release Date2018-11-30T12:00:00Z + Artwork Count1 + Sort AlbumPains of Growing + Sort ArtistAlessia Cara + Sort NameNot Today + Persistent ID8D94FCC84F9FA9F5 + Track TypeRemote + Apple Music + + 3049 + + Track ID3049 + Name25 in Barcelona + ArtistJP Saxe + Album ArtistJP Saxe + ComposerJonathan Percy Starker Saxe, Ryan Marrone & Khris Riddick-Tynes + AlbumHold It Together - EP + GenrePop + KindApple Music AAC audio file + Size7435934 + Total Time193467 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2018 + Date Modified2019-01-11T10:29:35Z + Date Added2019-01-11T10:29:35Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3758470717 + Play Date UTC2023-02-05T16:38:37Z + Skip Count1 + Skip Date2022-08-12T08:31:03Z + Release Date2018-11-08T12:00:00Z + Artwork Count1 + Sort AlbumHold It Together - EP + Sort ArtistJP Saxe + Sort Name25 in Barcelona + Persistent IDC19A20FDB0878BB7 + Explicit + Track TypeRemote + Apple Music + + 3051 + + Track ID3051 + NameSoldier + ArtistJames TW + Album ArtistJames TW + ComposerJames Taylor-Watts + AlbumChapters + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7973708 + Total Time224720 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2018 + Date Modified2019-01-11T10:29:37Z + Date Added2019-01-11T10:29:37Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3771743710 + Play Date UTC2023-07-09T07:35:10Z + Release Date2018-11-09T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChapters + Sort ArtistJames TW + Sort NameSoldier + Persistent IDC2F87D2AEC63FA38 + Track TypeRemote + Apple Music + + 3053 + + Track ID3053 + NameOlder + ArtistSasha Alex Sloan + Album ArtistSasha Alex Sloan + ComposerAlexandra Yatchenko, Henry Agincourt Allen & Daniel Silberstein + AlbumOlder - Single + GenrePop + KindApple Music AAC audio file + Size6795516 + Total Time191002 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-11T10:29:39Z + Date Added2019-01-11T10:29:39Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781619534 + Play Date UTC2023-10-31T14:52:14Z + Release Date2018-11-09T12:00:00Z + Artwork Count1 + Sort AlbumOlder - Single + Sort ArtistSasha Alex Sloan + Sort NameOlder + Persistent ID9E3E054E346E83FD + Track TypeRemote + Apple Music + + 3055 + + Track ID3055 + NameSue Me + ArtistSabrina Carpenter + Album ArtistSabrina Carpenter + ComposerSabrina Carpenter, Warren "Oak" Felder, Steph Jones, Trevor Brown & William Zaire Simmons + AlbumSingular Act I + GenrePop + KindApple Music AAC audio file + Size6523924 + Total Time179227 + Disc Number1 + Disc Count1 + Track Number4 + Track Count8 + Year2018 + Date Modified2019-01-11T10:29:41Z + Date Added2019-01-11T10:29:41Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3766228986 + Play Date UTC2023-05-06T11:43:06Z + Skip Count3 + Skip Date2023-06-20T08:41:55Z + Release Date2018-11-09T12:00:00Z + Artwork Count1 + Sort AlbumSingular Act I + Sort ArtistSabrina Carpenter + Sort NameSue Me + Persistent IDF8601CB807825F70 + Track TypeRemote + Apple Music + + 3057 + + Track ID3057 + NameIn Betweenin' + ArtistAUSTN + Album ArtistAUSTN + ComposerAlex Sacco & Daniel Henig + AlbumChapter 1: In Betweenin' + GenrePop + KindApple Music AAC audio file + Size6982334 + Total Time192046 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2018 + Date Modified2019-01-11T10:29:43Z + Date Added2019-01-11T10:29:43Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3780128254 + Play Date UTC2023-10-14T08:37:34Z + Skip Count1 + Skip Date2022-06-21T05:06:28Z + Release Date2018-11-09T12:00:00Z + Artwork Count1 + Sort AlbumChapter 1: In Betweenin' + Sort ArtistAUSTN + Sort NameIn Betweenin' + Persistent ID08D259EE2DD281B7 + Track TypeRemote + Apple Music + + 3059 + + Track ID3059 + NameSomeone You Loved + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi, Sam Roman, Benjamin Kohn, Pete Kelleher & Tom Barnes + AlbumBreach - EP + GenreAlternative + KindApple Music AAC audio file + Size6591289 + Total Time182161 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2018 + Date Modified2019-01-11T10:29:44Z + Date Added2019-01-11T10:29:44Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3780193495 + Play Date UTC2023-10-15T02:44:55Z + Skip Count1 + Skip Date2022-11-26T14:52:04Z + Release Date2018-11-08T12:00:00Z + Artwork Count1 + Sort AlbumBreach - EP + Sort ArtistLewis Capaldi + Sort NameSomeone You Loved + Persistent IDEBE2A5C33832D253 + Track TypeRemote + Apple Music + + 3061 + + Track ID3061 + NameThunder + Artistduendita + Album Artistduendita + Albumdirect line to My Creator + GenreR&B/Soul + KindApple Music AAC audio file + Size8334507 + Total Time235271 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2018 + Date Modified2019-01-11T10:29:46Z + Date Added2019-01-11T10:29:46Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3783708358 + Play Date UTC2023-11-24T19:05:58Z + Release Date2018-11-09T12:00:00Z + Artwork Count1 + Sort Albumdirect line to My Creator + Sort Artistduendita + Sort NameThunder + Persistent ID4A9D191500A81EC7 + Track TypeRemote + Apple Music + + 3063 + + Track ID3063 + NameMia Wallace + ArtistilyTOMMY + Album ArtistilyTOMMY + AlbumMia Wallace - Single + GenreR&B/Soul + KindAAC audio file + Size5272588 + Total Time143683 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-11T10:29:49Z + Date Added2019-01-11T10:29:49Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3770534546 + Play Date UTC2023-06-25T07:42:26Z + Skip Count5 + Skip Date2023-07-21T07:33:10Z + Release Date2018-11-08T12:00:00Z + Artwork Count1 + Sort AlbumMia Wallace - Single + Sort ArtistilyTOMMY + Sort NameMia Wallace + Persistent ID2BA46CB458F48875 + Track TypeRemote + Apple Music + + 3065 + + Track ID3065 + NameDown + ArtistNoah North + Album ArtistNoah North + ComposerNoah Aossey, Daniel Gonzalez, Philip Payne & Sergio Romero + AlbumDown - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size7055225 + Total Time201518 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-11T10:29:52Z + Date Added2019-01-11T10:29:52Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3763618649 + Play Date UTC2023-04-06T06:37:29Z + Skip Count2 + Skip Date2023-10-25T09:19:00Z + Release Date2018-10-26T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumDown - Single + Sort ArtistNoah North + Sort NameDown + Persistent IDEC14EE340ED975AE + Explicit + Track TypeRemote + Apple Music + + 3067 + + Track ID3067 + NameRomeo + ArtistAmir Obè + Album ArtistAmir Obè + ComposerAmir Obeid Ahmed & El-Madhi Ahmed + AlbumCan't Be A ____Here: Chapter 2 - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7841366 + Total Time220717 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2018 + Date Modified2019-01-11T10:29:53Z + Date Added2019-01-11T10:29:53Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3783355487 + Play Date UTC2023-11-20T17:04:47Z + Skip Count4 + Skip Date2023-01-08T22:59:43Z + Release Date2018-10-12T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumCan't Be A ____Here: Chapter 2 - Single + Sort ArtistAmir Obè + Sort NameRomeo + Persistent ID43DB6EBAEFB1A1FF + Explicit + Track TypeRemote + Apple Music + + 3069 + + Track ID3069 + NameSpace Cadet (feat. Gunna) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerAllen Ritter, Leland Wayne, Sergio Kitchens & Wesley Glass + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7302048 + Total Time203267 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2018 + Date Modified2019-01-11T10:29:55Z + Date Added2019-01-11T10:29:55Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3779314173 + Play Date UTC2023-10-04T22:29:33Z + Skip Count10 + Skip Date2023-01-08T22:59:35Z + Release Date2018-11-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameSpace Cadet (feat. Gunna) + Persistent ID24F4CAC9AC550216 + Explicit + Track TypeRemote + Apple Music + + 3071 + + Track ID3071 + NameAlone As A Facetat + Artistwifisfuneral + Album Artistwifisfuneral + ComposerHenry Daher & Isaih Rivera + AlbumLeave Me The Fuck Alone - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5759860 + Total Time157303 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2018 + Date Modified2019-01-11T10:29:56Z + Date Added2019-01-11T10:29:56Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3783681189 + Play Date UTC2023-11-24T11:33:09Z + Skip Count1 + Skip Date2022-11-17T06:34:18Z + Release Date2018-11-07T12:00:00Z + Rating20 + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumLeave Me The Fuck Alone - EP + Sort Artistwifisfuneral + Sort NameAlone As A Facetat + Persistent ID86BC0187544DEE5C + Explicit + Track TypeRemote + Apple Music + + 3073 + + Track ID3073 + NameCasper + ArtistTakeoff + Album ArtistTakeoff + ComposerKirsnick Ball & Gary Fountaine + AlbumThe Last Rocket + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7130869 + Total Time197079 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2018 + Date Modified2019-01-11T10:29:59Z + Date Added2019-01-11T10:29:59Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3779310739 + Play Date UTC2023-10-04T21:32:19Z + Skip Count2 + Skip Date2023-01-08T22:59:29Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumLast Rocket + Sort ArtistTakeoff + Sort NameCasper + Persistent ID784120B105AC5568 + Explicit + Track TypeRemote + Apple Music + + 3075 + + Track ID3075 + NameKnow Me + ArtistNAV + Album ArtistNAV + ComposerNavraj Goraya, AMIR ESMAILIAN, Andrew Kenneth Franklin & Austin Schindler + AlbumKnow Me - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5659412 + Total Time155493 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-11T10:30:00Z + Date Added2019-01-11T10:30:00Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3782802508 + Play Date UTC2023-11-14T07:28:28Z + Skip Count2 + Skip Date2023-01-08T22:59:19Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumKnow Me - Single + Sort ArtistNAV + Sort NameKnow Me + Persistent ID01178AB769321F03 + Explicit + Track TypeRemote + Apple Music + + 3077 + + Track ID3077 + NameSpoonful + ArtistGrizfolk + Album ArtistGrizfolk + ComposerAdam Roth, Allen Blickle, Brendan James, Fredrik Eriksson, Sebastian Fritze & William Delia + AlbumRarest of Birds + GenreAlternative + KindApple Music AAC audio file + Size6704757 + Total Time188773 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2019 + Date Modified2019-01-19T09:20:41Z + Date Added2019-01-19T09:20:41Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3779323176 + Play Date UTC2023-10-05T00:59:36Z + Release Date2019-01-04T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRarest of Birds + Sort ArtistGrizfolk + Sort NameSpoonful + Persistent ID51B49959EFC08912 + Track TypeRemote + Apple Music + + 3079 + + Track ID3079 + NameHurt + ArtistOliver Tree + Album ArtistOliver Tree + ComposerEthan Snoreck & Oliver Tree + AlbumHurt - Single + GenreAlternative + KindApple Music AAC audio file + Size5357619 + Total Time145558 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-19T09:28:20Z + Date Added2019-01-19T09:28:20Z + Bit Rate256 + Sample Rate44100 + Play Count76 + Play Date3780908263 + Play Date UTC2023-10-23T09:17:43Z + Skip Count2 + Skip Date2022-05-13T10:55:25Z + Release Date2018-12-07T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHurt - Single + Sort ArtistOliver Tree + Sort NameHurt + Persistent IDFDABE56332C2D73E + Explicit + Track TypeRemote + Apple Music + + 3081 + + Track ID3081 + NameApache + Artisthooligan chase + Album Artisthooligan chase + AlbumApache - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5447037 + Total Time152500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-19T09:29:47Z + Date Added2019-01-19T09:29:47Z + Bit Rate256 + Sample Rate44100 + Play Count87 + Play Date3781206274 + Play Date UTC2023-10-26T20:04:34Z + Skip Count6 + Skip Date2023-02-05T14:40:37Z + Release Date2018-12-04T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumApache - Single + Sort Artisthooligan chase + Sort NameApache + Persistent ID1EB0EBA49362FD1E + Explicit + Track TypeRemote + Apple Music + + 3083 + + Track ID3083 + NameHow Could You Babe + ArtistTobias Jesso Jr. + Album ArtistTobias Jesso Jr. + ComposerTobias Jesso Jr. + AlbumGoon + GenreAlternative + KindApple Music AAC audio file + Size8182457 + Total Time232440 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2015 + Date Modified2019-01-19T09:33:10Z + Date Added2019-01-19T09:33:10Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3779191919 + Play Date UTC2023-10-03T12:31:59Z + Skip Count5 + Skip Date2019-01-24T10:13:22Z + Release Date2015-01-01T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumGoon + Sort ArtistTobias Jesso Jr. + Sort NameHow Could You Babe + Persistent ID46095C3D53DEB46C + Track TypeRemote + Apple Music + + 3085 + + Track ID3085 + NameWithout You + ArtistTobias Jesso Jr. + Album ArtistTobias Jesso Jr. + ComposerTobias Jesso Jr. + AlbumGoon + GenreAlternative + KindApple Music AAC audio file + Size10775556 + Total Time309240 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2015 + Date Modified2019-01-19T09:37:34Z + Date Added2019-01-19T09:37:34Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3770045311 + Play Date UTC2023-06-19T15:48:31Z + Release Date2015-01-01T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumGoon + Sort ArtistTobias Jesso Jr. + Sort NameWithout You + Persistent ID600A3B0160CA0996 + Track TypeRemote + Apple Music + + 3087 + + Track ID3087 + NameCan't Stop Thinking About You + ArtistTobias Jesso Jr. + Album ArtistTobias Jesso Jr. + ComposerTobias Jesso Jr. + AlbumGoon + GenreAlternative + KindApple Music AAC audio file + Size8331327 + Total Time233707 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2015 + Date Modified2019-01-19T09:48:29Z + Date Added2019-01-19T09:48:29Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3783687935 + Play Date UTC2023-11-24T13:25:35Z + Skip Count2 + Skip Date2023-11-25T14:14:11Z + Release Date2015-01-01T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumGoon + Sort ArtistTobias Jesso Jr. + Sort NameCan't Stop Thinking About You + Persistent ID1F2624F6AA373350 + Track TypeRemote + Apple Music + + 3089 + + Track ID3089 + NameWhite Iverson + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post & Trocon Markous Roberts + AlbumStoney + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9019658 + Total Time256532 + Disc Number1 + Disc Count1 + Track Number6 + Track Count14 + Year2015 + Date Modified2019-01-20T12:22:03Z + Date Added2019-01-20T12:22:03Z + Bit Rate256 + Sample Rate44100 + Play Count121 + Play Date3783057076 + Play Date UTC2023-11-17T06:11:16Z + Skip Count2 + Skip Date2021-09-02T18:22:21Z + Release Date2015-08-14T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney + Sort ArtistPost Malone + Sort NameWhite Iverson + Persistent IDBA34A9FA293BFAD0 + Explicit + Track TypeRemote + Apple Music + + 3091 + + Track ID3091 + NameI Fall Apart + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, Carlo Montagnese & Billy Walsh + AlbumStoney + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7915998 + Total Time223350 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2016 + Date Modified2019-01-20T12:28:11Z + Date Added2019-01-20T12:28:11Z + Bit Rate256 + Sample Rate44100 + Play Count128 + Play Date3783009176 + Play Date UTC2023-11-16T16:52:56Z + Skip Count2 + Skip Date2021-09-28T07:35:40Z + Release Date2016-12-09T08:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney + Sort ArtistPost Malone + Sort NameI Fall Apart + Persistent ID029F439B4458FBA3 + Explicit + Track TypeRemote + Apple Music + + 3093 + + Track ID3093 + Namea lot + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph, Jermaine Cole, Dacoury Natche, Anthony White & Shelia Young + Albumi am > i was (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10074889 + Total Time288624 + Disc Number1 + Disc Count1 + Track Number1 + Track Count16 + Year2018 + Date Modified2019-01-21T08:18:56Z + Date Added2019-01-21T08:18:56Z + Bit Rate256 + Sample Rate44100 + Play Count127 + Play Date3768474663 + Play Date UTC2023-06-01T11:31:03Z + Skip Count5 + Skip Date2021-05-19T19:55:54Z + Release Date2018-12-21T08:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization1813 + Artwork Count1 + Sort Albumi am > i was (Deluxe) + Sort Artist21 Savage + Sort Namelot + Persistent ID36E0F3B5EB9654CA + Explicit + Track TypeRemote + Apple Music + + 3095 + + Track ID3095 + NameJourney + ArtistLAKEY INSPIRED + Album ArtistLAKEY INSPIRED + ComposerJordan Richard Allen Reddington III + AlbumJourney - Single + GenreAmbient + KindApple Music AAC audio file + Size6398649 + Total Time180000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2019-01-25T08:13:59Z + Date Added2019-01-25T08:13:59Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3783762251 + Play Date UTC2023-11-25T10:04:11Z + Skip Date2019-01-27T11:05:45Z + Release Date2015-12-09T12:00:00Z + Artwork Count1 + Sort AlbumJourney - Single + Sort ArtistLAKEY INSPIRED + Sort NameJourney + Persistent ID10436A2335FD1F24 + Track TypeRemote + Apple Music + + 3097 + + Track ID3097 + NameI Found Me + ArtistLAKEY INSPIRED + Album ArtistLAKEY INSPIRED + ComposerJordan Reddington & LAKEY INSPIRED + AlbumI Found Me - Single + GenreInstrumental + KindApple Music AAC audio file + Size6521316 + Total Time181603 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-01-25T10:42:42Z + Date Added2019-01-25T10:42:42Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3762833425 + Play Date UTC2023-03-28T04:30:25Z + Skip Count2 + Skip Date2022-11-02T05:13:26Z + Release Date2017-11-04T12:00:00Z + Artwork Count1 + Sort AlbumI Found Me - Single + Sort ArtistLAKEY INSPIRED + Sort NameI Found Me + Persistent ID57D556CA71449CDD + Track TypeRemote + Apple Music + + 3099 + + Track ID3099 + NameSaydee + ArtistLAKEY INSPIRED + Album ArtistVarious Artists + ComposerJordan Reddington & Chillhop Music + AlbumChillhop Essentials Summer 2018 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5489464 + Total Time149375 + Disc Number1 + Disc Count1 + Track Number19 + Track Count23 + Year2018 + Date Modified2019-01-25T10:46:45Z + Date Added2019-01-25T10:46:45Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3775208978 + Play Date UTC2023-08-18T10:09:38Z + Release Date2018-06-20T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Summer 2018 + Sort ArtistLAKEY INSPIRED + Sort NameSaydee + Persistent ID9054C2C0F5D1F774 + Track TypeRemote + Apple Music + + 3101 + + Track ID3101 + NameGood Morning + ArtistLAKEY INSPIRED + Album ArtistLAKEY INSPIRED + ComposerJordan Reddington & LAKEY INSPIRED + AlbumGood Morning - Single + GenreInstrumental + KindApple Music AAC audio file + Size5047290 + Total Time136856 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-01-25T10:55:07Z + Date Added2019-01-25T10:55:07Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3782980489 + Play Date UTC2023-11-16T08:54:49Z + Skip Count1 + Skip Date2022-11-02T05:13:34Z + Release Date2017-03-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGood Morning - Single + Sort ArtistLAKEY INSPIRED + Sort NameGood Morning + Persistent ID0E3A0BC56E554405 + Track TypeRemote + Apple Music + + 3103 + + Track ID3103 + NameElevate + ArtistLAKEY INSPIRED + Album ArtistLAKEY INSPIRED + ComposerJordan Reddington & LAKEY INSPIRED + AlbumElevate - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8335523 + Total Time236931 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-01-25T10:58:16Z + Date Added2019-01-25T10:58:16Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3772792101 + Play Date UTC2023-07-21T10:48:21Z + Skip Count1 + Skip Date2019-01-31T19:50:53Z + Release Date2017-07-13T12:00:00Z + Artwork Count1 + Sort AlbumElevate - Single + Sort ArtistLAKEY INSPIRED + Sort NameElevate + Persistent ID129BCAF9C2CC9A53 + Track TypeRemote + Apple Music + + 3105 + + Track ID3105 + NameSummertime Love + ArtistLAKEY INSPIRED + Album ArtistLAKEY INSPIRED + ComposerJordan Reddington & LAKEY INSPIRED + AlbumSummertime Love - Single + GenreInstrumental + KindApple Music AAC audio file + Size5345324 + Total Time145371 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-01-25T16:49:38Z + Date Added2019-01-25T16:49:38Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3758465125 + Play Date UTC2023-02-05T15:05:25Z + Skip Count1 + Skip Date2022-11-10T13:15:00Z + Release Date2017-04-22T12:00:00Z + Artwork Count1 + Sort AlbumSummertime Love - Single + Sort ArtistLAKEY INSPIRED + Sort NameSummertime Love + Persistent IDDDB4FD481134830D + Track TypeRemote + Apple Music + + 3107 + + Track ID3107 + NameHeave Ho + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard, Mickey Smith, Kyle Keegan, Richie Thomas & Nathan Watson + AlbumHeave Ho - Single + GenreAlternative + KindApple Music AAC audio file + Size13471206 + Total Time378739 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-01-25T17:01:43Z + Date Added2019-01-25T17:01:43Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3783679172 + Play Date UTC2023-11-24T10:59:32Z + Skip Count4 + Skip Date2023-02-04T15:41:55Z + Release Date2019-01-18T12:00:00Z + Artwork Count1 + Sort AlbumHeave Ho - Single + Sort ArtistBen Howard + Sort NameHeave Ho + Persistent ID9A7A60C9AD3DB3F8 + Track TypeRemote + Apple Music + + 3109 + + Track ID3109 + NameFeels Natural (feat. Agung Mango) + ArtistRINI + Album ArtistRINI + ComposerJusterini Sandoval & Jordan Wardana + AlbumFeels Natural (feat. Agung Mango) - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size7792181 + Total Time219057 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-01-25T17:27:55Z + Date Added2019-01-25T17:27:55Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3781573401 + Play Date UTC2023-10-31T02:03:21Z + Skip Count2 + Skip Date2022-09-30T07:28:23Z + Release Date2019-01-07T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFeels Natural (feat. Agung Mango) - Single + Sort ArtistRINI + Sort NameFeels Natural (feat. Agung Mango) + Persistent ID8F0B441C0134A1E2 + Track TypeRemote + Apple Music + + 3111 + + Track ID3111 + NameBirds + ArtistImagine Dragons + Album ArtistImagine Dragons + ComposerJoel Little, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman + AlbumOrigins (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size7962810 + Total Time219435 + Disc Number1 + Disc Count1 + Track Number13 + Track Count15 + Year2018 + Date Modified2019-01-25T19:46:14Z + Date Added2019-01-25T19:46:14Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783688399 + Play Date UTC2023-11-24T13:33:19Z + Skip Count1 + Skip Date2019-06-06T20:24:07Z + Release Date2018-11-09T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumOrigins (Deluxe) + Sort ArtistImagine Dragons + Sort NameBirds + Persistent IDB8FDF321620E06EE + Track TypeRemote + Apple Music + + 3113 + + Track ID3113 + NamePhony + ArtistKROWNS + Album ArtistKROWNS + ComposerKyle McKearney, Stephen Kozmeniuk & Todd Clark + AlbumFake It - EP + GenreAlternative + KindApple Music AAC audio file + Size6931271 + Total Time191753 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2019 + Date Modified2019-01-25T19:48:10Z + Date Added2019-01-25T19:48:10Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3783670108 + Play Date UTC2023-11-24T08:28:28Z + Skip Count3 + Skip Date2023-02-05T14:40:42Z + Release Date2019-01-18T12:00:00Z + Rating40 + Album Rating40 + Album Rating Computed + Artwork Count1 + Sort AlbumFake It - EP + Sort ArtistKROWNS + Sort NamePhony + Persistent IDA319D7FD9B2A9001 + Track TypeRemote + Apple Music + + 3115 + + Track ID3115 + NameWho Cares + ArtistShrimp + Album ArtistShrimp + ComposerThomas Garrett Lloyd + AlbumWho Cares - Single + GenreAlternative + KindApple Music AAC audio file + Size5614881 + Total Time153443 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-25T19:55:47Z + Date Added2019-01-25T19:55:47Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783451814 + Play Date UTC2023-11-21T19:50:14Z + Skip Date2022-10-09T16:19:17Z + Release Date2018-12-05T12:00:00Z + Artwork Count1 + Sort AlbumWho Cares - Single + Sort ArtistShrimp + Sort NameWho Cares + Persistent IDF0591BC21818B525 + Track TypeRemote + Apple Music + + 3117 + + Track ID3117 + NameCandy + ArtistLxst + Album ArtistLxst + Composermalcolm devon mathews + AlbumCandy - Single + GenreHip-Hop/Rap + KindAAC audio file + Size5016227 + Total Time132259 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-25T20:07:47Z + Date Added2019-01-25T20:07:47Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3633350246 + Play Date UTC2019-02-18T12:57:26Z + Skip Count2 + Skip Date2019-01-28T17:56:27Z + Release Date2018-11-26T12:00:00Z + Artwork Count1 + Sort AlbumCandy - Single + Sort ArtistLxst + Sort NameCandy + Persistent ID6AEC0CA583BF0E80 + Explicit + Track TypeRemote + + 3119 + + Track ID3119 + NameSuperman Is Dead + ArtistPouya + Album ArtistPouya + ComposerKevin Pouya + AlbumSUPERMAN IS DEAD - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6947592 + Total Time196766 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2019 + Date Modified2019-01-25T20:24:17Z + Date Added2019-01-25T20:24:17Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3766756993 + Play Date UTC2023-05-12T14:23:13Z + Skip Count6 + Skip Date2022-06-23T09:36:24Z + Release Date2019-01-18T12:00:00Z + Artwork Count1 + Sort AlbumSUPERMAN IS DEAD - Single + Sort ArtistPouya + Sort NameSuperman Is Dead + Persistent ID63F2A6D32B5CCD94 + Explicit + Track TypeRemote + Apple Music + + 3121 + + Track ID3121 + NameKilling Games (feat. Mishaal) + ArtistDante Rapper + Album ArtistDante Rapper + ComposerDante Rapper + AlbumKilling Games (feat. Mishaal) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4786431 + Total Time129000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-01-25T21:15:12Z + Date Added2019-01-25T21:15:12Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3782980157 + Play Date UTC2023-11-16T08:49:17Z + Release Date2018-12-24T12:00:00Z + Artwork Count1 + Sort AlbumKilling Games (feat. Mishaal) - Single + Sort ArtistDante Rapper + Sort NameKilling Games (feat. Mishaal) + Persistent IDD912EB2B5D4D2894 + Explicit + Track TypeRemote + Apple Music + + 3123 + + Track ID3123 + NameLife Is Changing (feat. Raynadayz & Kinshii) + ArtistPowfu + Album ArtistPowfu + ComposerIsaiah jehoshaphat Faber + AlbumSome Boring, Love Stories - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7873551 + Total Time231000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2018 + Date Modified2019-01-25T21:24:12Z + Date Added2019-01-25T21:24:12Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3775035621 + Play Date UTC2023-08-16T10:00:21Z + Skip Count4 + Skip Date2022-04-30T07:23:52Z + Release Date2018-12-12T12:00:00Z + Artwork Count1 + Sort AlbumSome Boring, Love Stories - EP + Sort ArtistPowfu + Sort NameLife Is Changing (feat. Raynadayz & Kinshii) + Persistent IDF39B16673CB1356B + Explicit + Track TypeRemote + Apple Music + + 3125 + + Track ID3125 + NameCarrollton + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerAristos Petrou & Scott Arceneaux Jr. + AlbumI Want to Die in New Orleans + GenreHip-Hop + KindApple Music AAC audio file + Size7287645 + Total Time203897 + Disc Number1 + Disc Count1 + Track Number12 + Track Count14 + Year2018 + Date Modified2019-01-30T12:53:54Z + Date Added2019-01-30T12:53:54Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3768905096 + Play Date UTC2023-06-06T11:04:56Z + Skip Count1 + Skip Date2019-02-09T05:05:14Z + Release Date2018-08-01T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumI Want to Die in New Orleans + Sort Artist$uicideboy$ + Sort NameCarrollton + Persistent ID4A8D4C875EDA7D31 + Explicit + Track TypeRemote + Apple Music + + 3127 + + Track ID3127 + NameBOOM + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSamuel Harris, Casey Harris, Adam Levin, Eric Frederic, Tom Peyton & Thomas Eriksen + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size5958968 + Total Time164587 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2019 + Date Modified2019-01-31T18:44:32Z + Date Added2019-01-31T18:44:32Z + Bit Rate256 + Sample Rate44100 + Play Count62 + Play Date3767037297 + Play Date UTC2023-05-15T20:14:57Z + Skip Count1 + Skip Date2021-10-25T13:52:57Z + Release Date2019-01-25T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameBOOM + Persistent ID87E2F8FCD438B82F + Track TypeRemote + Apple Music + + 3129 + + Track ID3129 + NameMeet Again + ArtistMaxo Kream + Album ArtistMaxo Kream + ComposerEmekwanem Ogugua Biosah & Afolabi Osinulu + AlbumMeet Again - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11141283 + Total Time320615 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-01T09:39:42Z + Date Added2019-02-01T09:39:42Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3774950959 + Play Date UTC2023-08-15T10:29:19Z + Skip Count1 + Skip Date2022-10-10T08:38:08Z + Release Date2019-01-25T12:00:00Z + Rating60 + Album Rating60 + Album Rating Computed + Artwork Count1 + Sort AlbumMeet Again - Single + Sort ArtistMaxo Kream + Sort NameMeet Again + Persistent IDD9ED7399CAA4B497 + Explicit + Track TypeRemote + Apple Music + + 3131 + + Track ID3131 + NameKeanu Reeves + ArtistLogic + Album ArtistLogic + ComposerSir Robert Bryson Hall II, Arjun Ivatury & Aaron Gomez + AlbumConfessions of a Dangerous Mind + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8025881 + Total Time225939 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2019 + Date Modified2019-02-02T19:09:22Z + Date Added2019-02-02T19:09:22Z + Bit Rate256 + Sample Rate44100 + Play Count95 + Play Date3780498858 + Play Date UTC2023-10-18T15:34:18Z + Skip Count4 + Skip Date2022-05-12T10:51:33Z + Release Date2019-01-18T08:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumConfessions of a Dangerous Mind + Sort ArtistLogic + Sort NameKeanu Reeves + Persistent IDD8E0C81E77922C00 + Explicit + Track TypeRemote + Apple Music + + 3133 + + Track ID3133 + NameYSIV + ArtistLogic + Album ArtistLogic + ComposerSir Robert Bryson Hall II, Arjun Ivatury, Thomas Wlodaryck, Melvin Dinkins, Kier Gist, Anthony S. Cruz, Nasir Jones, Oliver A. Scott, Ronnie James Wilson & Olu Dara + AlbumYSIV + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12912216 + Total Time369231 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2018 + Date Modified2019-02-02T19:11:52Z + Date Added2019-02-02T19:11:52Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3781523436 + Play Date UTC2023-10-30T12:10:36Z + Skip Count5 + Skip Date2023-02-22T15:04:23Z + Release Date2018-09-28T12:00:00Z + Artwork Count1 + Sort AlbumYSIV + Sort ArtistLogic + Sort NameYSIV + Persistent IDBBC2E402115FDB5F + Explicit + Track TypeRemote + Apple Music + + 3135 + + Track ID3135 + NameI Love You + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid & Ambroise Willaume + AlbumThe Golden Age + GenreAlternative + KindApple Music AAC audio file + Size8478873 + Total Time229707 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2013 + Date Modified2019-02-02T21:49:42Z + Date Added2019-02-02T21:49:42Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3775209664 + Play Date UTC2023-08-18T10:21:04Z + Skip Date2019-02-06T06:15:55Z + Release Date2013-01-01T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameI Love You + Persistent IDADCA5003FE312802 + Track TypeRemote + Apple Music + + 3137 + + Track ID3137 + NameIron + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size7749139 + Total Time201693 + Disc Number1 + Disc Count1 + Track Number13 + Track Count14 + Year2011 + Date Modified2019-02-02T21:49:56Z + Date Added2019-02-02T21:49:56Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3748367696 + Play Date UTC2022-10-11T18:14:56Z + Skip Count1 + Skip Date2021-06-21T15:49:19Z + Release Date2011-03-28T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameIron + Persistent ID85E18AD96508AE2D + Track TypeRemote + + 3139 + + Track ID3139 + NameThe Golden Age + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size8055050 + Total Time224720 + Disc Number1 + Disc Count1 + Track Number1 + Track Count14 + Year2013 + Date Modified2019-02-02T21:51:03Z + Date Added2019-02-02T21:51:03Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3751814808 + Play Date UTC2022-11-20T15:46:48Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameGolden Age + Persistent IDC25515F1E05CBFA1 + Track TypeRemote + + 3141 + + Track ID3141 + NameNever Let You Down (feat. Lykke Li) [From The "Insurgent" Soundtrack] + ArtistWoodkid + Album ArtistVarious Artists + ComposerYoann Lemoine, Lykke Li Zachrisson & Jeff Bhasker + AlbumInsurgent (Original Motion Picture Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size9441342 + Total Time272662 + Disc Number1 + Disc Count1 + Track Number3 + Track Count8 + Year2015 + Date Modified2019-02-02T21:51:25Z + Date Added2019-02-02T21:51:25Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3768053248 + Play Date UTC2023-05-27T14:27:28Z + Skip Count1 + Skip Date2022-08-16T15:11:35Z + Release Date2015-03-09T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumInsurgent (Original Motion Picture Soundtrack) + Sort ArtistWoodkid + Sort NameNever Let You Down (feat. Lykke Li) [From The "Insurgent" Soundtrack] + Persistent IDFC1726973E1A9700 + Track TypeRemote + Apple Music + + 3143 + + Track ID3143 + NameRun Boy Run + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid & Ambroise Willaume + AlbumThe Golden Age + GenreAlternative + KindApple Music AAC audio file + Size7945848 + Total Time212627 + Disc Number1 + Disc Count1 + Track Number2 + Track Count14 + Year2012 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3781200348 + Play Date UTC2023-10-26T18:25:48Z + Skip Count1 + Skip Date2022-04-27T09:25:20Z + Release Date2012-05-21T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameRun Boy Run + Persistent IDF71C4C2B7AD65927 + Track TypeRemote + Apple Music + + 3145 + + Track ID3145 + NameThe Great Escape + ArtistWoodkid + Album ArtistWoodkid + ComposerGuillaume Briere + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size7168758 + Total Time195000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3755123573 + Play Date UTC2022-12-28T22:52:53Z + Skip Count2 + Skip Date2023-01-18T10:00:41Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameGreat Escape + Persistent ID350EBDB0FAB938E5 + Track TypeRemote + + 3147 + + Track ID3147 + NameBoat Song + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid & Mitchell Yoshida + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size9450225 + Total Time270107 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3757285666 + Play Date UTC2023-01-22T23:27:46Z + Skip Date2019-02-05T20:20:45Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameBoat Song + Persistent IDF46698912E602D05 + Track TypeRemote + + 3149 + + Track ID3149 + NameThe Shore + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size8908816 + Total Time253533 + Disc Number1 + Disc Count1 + Track Number6 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3755003054 + Play Date UTC2022-12-27T13:24:14Z + Skip Count2 + Skip Date2021-01-22T21:56:07Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameShore + Persistent ID0264B6FD94BF212A + Track TypeRemote + + 3151 + + Track ID3151 + NameGhost Lights + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size7959842 + Total Time220213 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3758264089 + Play Date UTC2023-02-03T07:14:49Z + Skip Count1 + Skip Date2021-02-12T12:39:19Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameGhost Lights + Persistent ID499EFD991EC0B1B6 + Track TypeRemote + + 3153 + + Track ID3153 + NameShadows + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size4777964 + Total Time124827 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3757246290 + Play Date UTC2023-01-22T12:31:30Z + Skip Count1 + Skip Date2022-12-05T21:31:53Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameShadows + Persistent ID61AF1C84D39CFC0C + Track TypeRemote + + 3155 + + Track ID3155 + NameStabat Mater + ArtistWoodkid + Album ArtistWoodkid + ComposerSebastian + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size6398267 + Total Time169187 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3757274786 + Play Date UTC2023-01-22T20:26:26Z + Skip Count1 + Skip Date2022-12-08T12:55:11Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameStabat Mater + Persistent ID20AEF6BD564D6343 + Track TypeRemote + + 3157 + + Track ID3157 + NameConquest of Spaces + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size9681385 + Total Time269880 + Disc Number1 + Disc Count1 + Track Number10 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3753306665 + Play Date UTC2022-12-07T22:11:05Z + Skip Count2 + Skip Date2022-12-28T07:44:06Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameConquest of Spaces + Persistent IDED91600FB80D08BE + Track TypeRemote + + 3159 + + Track ID3159 + NameFalling + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size1947603 + Total Time43200 + Disc Number1 + Disc Count1 + Track Number11 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3753789044 + Play Date UTC2022-12-13T12:10:44Z + Skip Count1 + Skip Date2022-06-21T05:37:57Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameFalling + Persistent IDE5EB0AF30CA2574C + Track TypeRemote + + 3161 + + Track ID3161 + NameWhere I Live + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size9336590 + Total Time264920 + Disc Number1 + Disc Count1 + Track Number12 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3758713734 + Play Date UTC2023-02-08T12:08:54Z + Skip Count2 + Skip Date2021-06-11T05:24:47Z + Release Date2013-03-18T07:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameWhere I Live + Persistent ID2426A3AAB8BEA35C + Track TypeRemote + + 3163 + + Track ID3163 + NameThe Other Side + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumThe Golden Age + GenreAlternative + KindAAC audio file + Size8031224 + Total Time221973 + Disc Number1 + Disc Count1 + Track Number14 + Track Count14 + Year2013 + Date Modified2019-02-05T07:34:37Z + Date Added2019-02-05T07:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3756834830 + Play Date UTC2023-01-17T18:13:50Z + Skip Count1 + Skip Date2022-08-11T12:52:43Z + Release Date2013-03-18T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumGolden Age + Sort ArtistWoodkid + Sort NameOther Side + Persistent ID9736B831BD500814 + Track TypeRemote + + 3165 + + Track ID3165 + NameL'aérogramme de Los Angeles + ArtistWoodkid & Louis Garrel + Album ArtistWoodkid & Louis Garrel + ComposerYves Simon + AlbumL'aérogramme de Los Angeles - Single + GenreAlternative + KindApple Music AAC audio file + Size7740312 + Total Time210667 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-02-05T18:20:11Z + Date Added2019-02-05T18:20:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count36 + Play Date3780848770 + Play Date UTC2023-10-22T16:46:10Z + Skip Count2 + Skip Date2021-10-25T07:56:22Z + Release Date2018-03-30T12:00:00Z + Artwork Count1 + Sort AlbumL'aérogramme de Los Angeles - Single + Sort ArtistWoodkid & Louis Garrel + Sort NameL'aérogramme de Los Angeles + Persistent IDEF8522C5CEF2C7C1 + Track TypeRemote + Apple Music + + 3167 + + Track ID3167 + NameLand Of All + ArtistWoodkid + Album ArtistWoodkid + ComposerYoann Lemoine + AlbumDesierto (Original Motion Picture Score) + GenreSoundtrack + KindApple Music AAC audio file + Size10987298 + Total Time316840 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2016 + Date Modified2019-02-05T20:18:42Z + Date Added2019-02-05T20:18:42Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3783357527 + Play Date UTC2023-11-20T17:38:47Z + Skip Count1 + Skip Date2021-05-11T13:20:37Z + Release Date2016-04-01T12:00:00Z + Artwork Count1 + Sort AlbumDesierto (Original Motion Picture Score) + Sort ArtistWoodkid + Sort NameLand Of All + Persistent ID6DAA2CDEAE394AE2 + Track TypeRemote + Apple Music + + 3169 + + Track ID3169 + NameWake Up in the Sky + ArtistGucci Mane, Bruno Mars & Kodak Black + Album ArtistGucci Mane, Bruno Mars & Kodak Black + ComposerBill K. Kapri, Chance Youngblood, Dieuson Octave, Dwan Avery, Jeff LaCroix, Peter Hernandez & Radric Davis + AlbumWake Up in the Sky - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7364455 + Total Time204665 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-02-07T18:13:09Z + Date Added2019-02-07T18:13:09Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3758184931 + Play Date UTC2023-02-02T09:15:31Z + Skip Count2 + Skip Date2022-11-18T19:40:20Z + Release Date2018-09-14T12:00:00Z + Artwork Count1 + Sort AlbumWake Up in the Sky - Single + Sort ArtistGucci Mane, Bruno Mars & Kodak Black + Sort NameWake Up in the Sky + Persistent ID02C80F182EB204F3 + Explicit + Track TypeRemote + Apple Music + + 3171 + + Track ID3171 + NameRoll in Peace (feat. XXXTENTACION) + ArtistKodak Black + Album ArtistKodak Black + ComposerKevin Gomringer, Kodak Black, London Holmes & XXXTENTACION + AlbumProject Baby 2: All Grown Up (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7565873 + Total Time213132 + Disc Number1 + Disc Count1 + Track Number3 + Track Count27 + Year2017 + Date Modified2019-02-07T18:39:06Z + Date Added2019-02-07T18:39:06Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3783264904 + Play Date UTC2023-11-19T15:55:04Z + Release Date2017-08-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumProject Baby 2: All Grown Up (Deluxe) + Sort ArtistKodak Black + Sort NameRoll in Peace (feat. XXXTENTACION) + Persistent ID5A6B1198D6A2C9F7 + Explicit + Track TypeRemote + Apple Music + + 3173 + + Track ID3173 + NameMillion + ArtistTommy Newport + Album ArtistTommy Newport + ComposerOliver Milmine & 4th Pyramid + AlbumMillion - Single + GenreIndie Rock + KindApple Music AAC audio file + Size6795054 + Total Time190688 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-07T21:09:17Z + Date Added2019-02-07T21:09:17Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3781465846 + Play Date UTC2023-10-29T20:10:46Z + Skip Count3 + Skip Date2022-10-17T05:43:33Z + Release Date2019-02-01T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMillion - Single + Sort ArtistTommy Newport + Sort NameMillion + Persistent ID46352E2BFD20CFE9 + Track TypeRemote + Apple Music + + 3175 + + Track ID3175 + NameHabit + ArtistStill Woozy + Album ArtistStill Woozy + ComposerMalik T Keith & Sven Eric Gamsky + AlbumLately - EP + GenrePop + KindApple Music AAC audio file + Size5661233 + Total Time153872 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2018 + Date Modified2019-02-07T21:14:03Z + Date Added2019-02-07T21:14:03Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3783714513 + Play Date UTC2023-11-24T20:48:33Z + Skip Date2019-02-10T11:09:42Z + Release Date2018-12-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLately - EP + Sort ArtistStill Woozy + Sort NameHabit + Persistent IDE685F5F3A7A55497 + Explicit + Track TypeRemote + Apple Music + + 3177 + + Track ID3177 + NameThese Words + ArtistRaz Simone + Album ArtistRaz Simone + AlbumCognitive Dissonance, Pt. 2 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9672669 + Total Time279458 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2015 + Date Modified2019-02-09T22:21:27Z + Date Added2019-02-09T22:21:27Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3775566426 + Play Date UTC2023-08-22T13:27:06Z + Release Date2015-01-29T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCognitive Dissonance, Pt. 2 + Sort ArtistRaz Simone + Sort NameThese Words + Persistent IDE14E82922465A9E3 + Explicit + Track TypeRemote + Apple Music + + 3179 + + Track ID3179 + NameBaby Jesus + ArtistRaz Simone + Album ArtistRaz Simone + AlbumBaby Jesus - EP + GenreХип-хоп/рэп + KindApple Music AAC audio file + Size8788806 + Total Time251376 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2015 + Date Modified2019-02-09T22:26:24Z + Date Added2019-02-09T22:26:24Z + Bit Rate256 + Sample Rate44100 + Play Count84 + Play Date3783770274 + Play Date UTC2023-11-25T12:17:54Z + Skip Count3 + Skip Date2019-02-17T16:17:06Z + Release Date2015-04-07T12:00:00Z + Album Rating60 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBaby Jesus - EP + Sort ArtistRaz Simone + Sort NameBaby Jesus + Persistent IDD0F784016046DE3F + Explicit + Track TypeRemote + Apple Music + + 3181 + + Track ID3181 + NameAll in My Mind + ArtistRaz Simone + Album ArtistRaz Simone + AlbumBaby Jesus - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9700090 + Total Time276741 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2015 + Date Modified2019-02-09T22:28:51Z + Date Added2019-02-09T22:28:51Z + Bit Rate256 + Sample Rate44100 + Play Count78 + Play Date3783667020 + Play Date UTC2023-11-24T07:37:00Z + Skip Count2 + Skip Date2022-04-24T10:25:43Z + Release Date2015-04-07T12:00:00Z + Album Rating60 + Album Rating Computed + Artwork Count1 + Sort AlbumBaby Jesus - EP + Sort ArtistRaz Simone + Sort NameAll in My Mind + Persistent ID15150AA8459C95BA + Explicit + Track TypeRemote + Apple Music + + 3183 + + Track ID3183 + NameLight of the Seven + ArtistRamin Djawadi + Album ArtistRamin Djawadi + ComposerRamin Djawadi + AlbumGame of Thrones: Season 6 (Music from the HBO® Series) + GenreSoundtrack + KindApple Music AAC audio file + Size20079124 + Total Time589095 + Disc Number1 + Disc Count1 + Track Number3 + Track Count26 + Year2016 + Date Modified2019-02-09T22:46:55Z + Date Added2019-02-09T22:46:55Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3772525833 + Play Date UTC2023-07-18T08:50:33Z + Skip Count3 + Skip Date2022-07-20T14:45:17Z + Release Date2016-06-24T12:00:00Z + Artwork Count1 + Sort AlbumGame of Thrones: Season 6 (Music from the HBO® Series) + Sort ArtistRamin Djawadi + Sort NameLight of the Seven + Persistent IDCF12B2C1D8E89DD7 + Track TypeRemote + Apple Music + + 3185 + + Track ID3185 + NameBlood of My Blood + ArtistRamin Djawadi + Album ArtistRamin Djawadi + ComposerRamin Djawadi + AlbumGame of Thrones: Season 6 (Music from the HBO® Series) + GenreSoundtrack + KindApple Music AAC audio file + Size7919857 + Total Time215262 + Disc Number1 + Disc Count1 + Track Number2 + Track Count26 + Year2016 + Date Modified2019-02-09T22:47:53Z + Date Added2019-02-09T22:47:53Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3778584252 + Play Date UTC2023-09-26T11:44:12Z + Skip Date2022-10-09T16:14:59Z + Release Date2016-06-24T12:00:00Z + Artwork Count1 + Sort AlbumGame of Thrones: Season 6 (Music from the HBO® Series) + Sort ArtistRamin Djawadi + Sort NameBlood of My Blood + Persistent ID6DD7BBFAF60B550F + Track TypeRemote + Apple Music + + 3187 + + Track ID3187 + NameJuke Jam (feat. Justin Bieber & Towkio) + ArtistChance the Rapper + Album ArtistChance the Rapper + ComposerChance the Rapper, Justin Bieber, Mount Kimbie, Peter CottonTale, Rascal & Towkio + AlbumColoring Book + GenreХип-хоп/рэп + KindApple Music AAC audio file + Size7636522 + Total Time219683 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2016 + Date Modified2019-02-09T22:59:09Z + Date Added2019-02-09T22:59:09Z + Bit Rate256 + Sample Rate44100 + Play Count81 + Play Date3783677605 + Play Date UTC2023-11-24T10:33:25Z + Skip Count6 + Skip Date2022-10-24T14:09:18Z + Release Date2016-05-13T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumColoring Book + Sort ArtistChance the Rapper + Sort NameJuke Jam (feat. Justin Bieber & Towkio) + Persistent IDA1772119BA405B64 + Explicit + Track TypeRemote + Apple Music + + 3189 + + Track ID3189 + NameRare + ArtistRaz Simone + Album ArtistRaz Simone + ComposerRaz Simone + AlbumCloser + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12902604 + Total Time372000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count8 + Year2017 + Date Modified2019-02-10T19:29:05Z + Date Added2019-02-10T19:29:05Z + Bit Rate256 + Sample Rate44100 + Play Count62 + Play Date3773206166 + Play Date UTC2023-07-26T05:49:26Z + Skip Count4 + Skip Date2022-08-19T16:07:48Z + Release Date2017-07-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCloser + Sort ArtistRaz Simone + Sort NameRare + Persistent IDDEF42C9447CA6445 + Explicit + Track TypeRemote + Apple Music + + 3191 + + Track ID3191 + NameOutta Bounds (feat. Jay Park) + ArtistRaz Simone + Album ArtistRaz Simone + ComposerRaz Simone + AlbumCloser + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9951633 + Total Time287742 + Disc Number1 + Disc Count1 + Track Number8 + Track Count8 + Year2018 + Date Modified2019-02-10T20:33:56Z + Date Added2019-02-10T20:33:56Z + Bit Rate256 + Sample Rate44100 + Play Count60 + Play Date3772623443 + Play Date UTC2023-07-19T11:57:23Z + Release Date2018-05-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCloser + Sort ArtistRaz Simone + Sort NameOutta Bounds (feat. Jay Park) + Persistent ID484961ED67A30291 + Explicit + Track TypeRemote + Apple Music + + 3193 + + Track ID3193 + NameHallelujah + ArtistRaz Simone + Album ArtistRaz Simone + AlbumBaby Jesus - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10407902 + Total Time299337 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2015 + Date Modified2019-02-11T06:49:24Z + Date Added2019-02-11T06:49:24Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3781157856 + Play Date UTC2023-10-26T06:37:36Z + Skip Count1 + Skip Date2020-01-21T15:43:33Z + Release Date2015-04-07T12:00:00Z + Rating60 + Album Rating60 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBaby Jesus - EP + Sort ArtistRaz Simone + Sort NameHallelujah + Persistent ID9D646340133A3665 + Explicit + Track TypeRemote + Apple Music + + 3195 + + Track ID3195 + NameAltered Carbon Main Titles + ArtistJeff Russo + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size3738662 + Total Time99747 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2018 + Date Modified2019-02-12T13:56:49Z + Date Added2019-02-12T13:56:49Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3772784900 + Play Date UTC2023-07-21T08:48:20Z + Skip Count4 + Skip Date2021-05-10T23:00:28Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameAltered Carbon Main Titles + Persistent IDB2B9891764ED89D8 + Track TypeRemote + Apple Music + + 3197 + + Track ID3197 + NameLet My Baby Ride + ArtistSune Rose Wagner + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size8168246 + Total Time226760 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2018 + Date Modified2019-02-12T14:50:53Z + Date Added2019-02-12T14:50:53Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3778583543 + Play Date UTC2023-09-26T11:32:23Z + Skip Count1 + Skip Date2020-01-01T10:46:10Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistSune Rose Wagner + Sort NameLet My Baby Ride + Persistent IDDCE95A531E45BB0C + Track TypeRemote + Apple Music + + 3199 + + Track ID3199 + NameAin’t No Grave + ArtistRenée Elise Goldsberry + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size6211886 + Total Time168933 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2018 + Date Modified2019-02-12T14:56:06Z + Date Added2019-02-12T14:56:06Z + Bit Rate256 + Sample Rate44100 + Play Count68 + Play Date3781449770 + Play Date UTC2023-10-29T15:42:50Z + Skip Count2 + Skip Date2021-05-11T13:22:39Z + Release Date2018-02-09T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistRenée Elise Goldsberry + Sort NameAin’t No Grave + Persistent ID3169A2D38E151A7E + Track TypeRemote + Apple Music + + 3201 + + Track ID3201 + NameBest Friends + Artistgrandson + Album Artistgrandson + ComposerJordan Benjamin, Kevin Hissink & Michael Abundes + AlbumBest Friends - Single + GenreAlternative + KindApple Music AAC audio file + Size6417342 + Total Time179840 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-02-13T12:07:46Z + Date Added2019-02-13T12:07:46Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3781573855 + Play Date UTC2023-10-31T02:10:55Z + Skip Date2022-03-26T11:41:13Z + Release Date2017-04-12T12:00:00Z + Rating60 + Album Rating60 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBest Friends - Single + Sort Artistgrandson + Sort NameBest Friends + Persistent IDD4015788E690C8A4 + Explicit + Track TypeRemote + Apple Music + + 3203 + + Track ID3203 + NameKiss Bang + Artistgrandson + Album Artistgrandson + ComposerJordan Benjamin, Kevin Hissink & Michael Abundes + AlbumKiss Bang - Single + GenreAlternative + KindApple Music AAC audio file + Size6255434 + Total Time172941 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-02-13T17:03:32Z + Date Added2019-02-13T17:03:32Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3760866872 + Play Date UTC2023-03-05T10:14:32Z + Skip Count2 + Skip Date2022-07-12T16:07:56Z + Release Date2017-03-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumKiss Bang - Single + Sort Artistgrandson + Sort NameKiss Bang + Persistent IDAE6ECC6077C7F140 + Track TypeRemote + Apple Music + + 3205 + + Track ID3205 + Namewhat are you so afraid of + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJ. Onfroy, J. Cunningham & R. Soukiasyan + AlbumSKINS + GenrePop + KindApple Music AAC audio file + Size5421213 + Total Time150769 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2018 + Date Modified2019-02-15T18:07:56Z + Date Added2019-02-15T18:07:56Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count26 + Play Date3778860275 + Play Date UTC2023-09-29T16:24:35Z + Skip Count4 + Skip Date2022-10-04T10:45:49Z + Release Date2018-12-07T08:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSKINS + Sort ArtistXXXTENTACION + Sort Namewhat are you so afraid of + Persistent ID73A4954816A7C28D + Track TypeRemote + Apple Music + + 3207 + + Track ID3207 + NameWorth It + ArtistRoy Woods + Album ArtistRoy Woods + ComposerDenzel Spencer & Jeffrey Offe + AlbumWorth It - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6811265 + Total Time192632 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-15T18:10:36Z + Date Added2019-02-15T18:10:36Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3767704029 + Play Date UTC2023-05-23T13:27:09Z + Skip Count3 + Skip Date2022-10-23T10:22:37Z + Release Date2019-02-08T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWorth It - Single + Sort ArtistRoy Woods + Sort NameWorth It + Persistent ID5613CAA83B0D2E09 + Explicit + Track TypeRemote + Apple Music + + 3209 + + Track ID3209 + NameIn Over My Head II + ArtistLUWTEN + Album ArtistLUWTEN + ComposerT. Douwstra & F. Wienk + AlbumIn Over My Head II - Single + GenreAlternative + KindAAC audio file + Size7104915 + Total Time187617 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-15T18:32:33Z + Date Added2019-02-15T18:32:33Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count44 + Play Date3741347415 + Play Date UTC2022-07-22T12:10:15Z + Release Date2019-01-28T12:00:00Z + Rating60 + Album Rating60 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumIn Over My Head II - Single + Sort ArtistLUWTEN + Sort NameIn Over My Head II + Persistent IDE13E952D6D21925A + Track TypeRemote + + 3211 + + Track ID3211 + NameLove Me Please (Acoustic) + ArtistOCTAVIO the Dweeb + Album ArtistOCTAVIO the Dweeb + ComposerOctavio Herrera, SE Berrios & Danny Berrios + AlbumDweeb Tapes + GenrePop + KindApple Music AAC audio file + Size8279042 + Total Time233393 + Disc Number1 + Disc Count1 + Track Number9 + Track Count9 + Year2020 + Date Modified2019-02-16T08:21:33Z + Date Added2019-02-16T08:21:33Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780500548 + Play Date UTC2023-10-18T16:02:28Z + Skip Count1 + Skip Date2022-10-29T09:18:15Z + Release Date2020-02-10T12:00:00Z + Artwork Count1 + Sort AlbumDweeb Tapes + Sort ArtistOCTAVIO the Dweeb + Sort NameLove Me Please (Acoustic) + Persistent ID2AC9885543651388 + Explicit + Track TypeRemote + Apple Music + + 3213 + + Track ID3213 + NameNight Crawler + ArtistReo Cragun + Album ArtistReo Cragun + ComposerReo Cragun, Angel Brizuela, Jeffery Owusu Offe & Onassis Morris + AlbumGrowing Pains + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7321228 + Total Time205984 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2017 + Date Modified2019-02-16T21:01:04Z + Date Added2019-02-16T21:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3780849204 + Play Date UTC2023-10-22T16:53:24Z + Release Date2017-07-07T12:00:00Z + Rating60 + Album Rating60 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumGrowing Pains + Sort ArtistReo Cragun + Sort NameNight Crawler + Persistent IDE5BE399FFDB23032 + Explicit + Track TypeRemote + Apple Music + + 3215 + + Track ID3215 + NameSweet Ride (feat. Nasty Mars) + ArtistRINI + Album ArtistRINI + AlbumRini + GenreR&B/Soul + KindApple Music AAC audio file + Size6590318 + Total Time186667 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2017 + Date Modified2019-02-17T11:17:40Z + Date Added2019-02-17T11:17:40Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3764066125 + Play Date UTC2023-04-11T10:55:25Z + Skip Count1 + Skip Date2019-02-25T20:13:57Z + Release Date2017-05-25T12:00:00Z + Rating60 + Album Rating60 + Album Rating Computed + Artwork Count1 + Sort AlbumRini + Sort ArtistRINI + Sort NameSweet Ride (feat. Nasty Mars) + Persistent ID3CE198B0CA9E2E96 + Explicit + Track TypeRemote + Apple Music + + 3217 + + Track ID3217 + NameHeldAGhost + ArtistSurrenderDorothy + Album ArtistSurrenderDorothy + AlbumWeNeverAskedForThis - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6466108 + Total Time179373 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2017 + Date Modified2019-02-18T15:10:17Z + Date Added2019-02-18T15:10:17Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3781198316 + Play Date UTC2023-10-26T17:51:56Z + Skip Count4 + Skip Date2022-03-18T19:50:27Z + Release Date2017-03-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWeNeverAskedForThis - EP + Sort ArtistSurrenderDorothy + Sort NameHeldAGhost + Persistent IDE3EEB0824EFFD282 + Track TypeRemote + Apple Music + + 3219 + + Track ID3219 + NameLust + ArtistLil Skies + Album ArtistLil Skies + ComposerAlex Petit & Kimetrius Foose + AlbumLife of a Dark Rose + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5778961 + Total Time156000 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2017 + Date Modified2019-02-18T15:21:50Z + Date Added2019-02-18T15:21:50Z + Bit Rate256 + Sample Rate44100 + Play Count102 + Play Date3779240320 + Play Date UTC2023-10-04T01:58:40Z + Skip Count9 + Skip Date2022-06-18T17:02:03Z + Release Date2017-12-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLife of a Dark Rose + Sort ArtistLil Skies + Sort NameLust + Persistent ID32B7FEF77058B04F + Explicit + Track TypeRemote + Apple Music + + 3221 + + Track ID3221 + NameMy Computer Was Stolen in Atlanta + ArtistNetherfriends + Album ArtistNetherfriends + ComposerNetherfriends + AlbumNocomputer + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7269521 + Total Time204772 + Disc Number1 + Disc Count1 + Track Number1 + Track Count9 + Year2016 + Date Modified2019-02-18T16:57:17Z + Date Added2019-02-18T16:57:17Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3783765772 + Play Date UTC2023-11-25T11:02:52Z + Skip Count1 + Skip Date2019-02-19T15:16:07Z + Release Date2016-01-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNocomputer + Sort ArtistNetherfriends + Sort NameMy Computer Was Stolen in Atlanta + Persistent IDE376505A55759868 + Track TypeRemote + Apple Music + + 3223 + + Track ID3223 + NameAway from the Noise + ArtistNoah Kittinger + Album ArtistNoah Kittinger + ComposerNoah Kittinger + AlbumBloom + GenreAlternative + KindApple Music AAC audio file + Size7381404 + Total Time207162 + Disc Number1 + Disc Count1 + Track Number4 + Track Count7 + Year2016 + Date Modified2019-02-20T10:40:27Z + Date Added2019-02-20T10:40:27Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count34 + Play Date3773540126 + Play Date UTC2023-07-30T02:35:26Z + Skip Count3 + Skip Date2022-03-11T09:03:02Z + Release Date2016-11-04T12:00:00Z + Artwork Count1 + Sort AlbumBloom + Sort ArtistNoah Kittinger + Sort NameAway from the Noise + Persistent ID6EEE71124B726468 + Track TypeRemote + Apple Music + + 3225 + + Track ID3225 + Name100 Bad Days + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size7563261 + Total Time210992 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2019 + Date Modified2019-02-20T20:43:23Z + Date Added2019-02-20T20:43:23Z + Bit Rate256 + Sample Rate44100 + Play Count55 + Play Date3760857439 + Play Date UTC2023-03-05T07:37:19Z + Skip Count2 + Skip Date2022-09-20T11:02:13Z + Release Date2019-01-29T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort Name100 Bad Days + Persistent ID64FA79CD709173EB + Track TypeRemote + Apple Music + + 3227 + + Track ID3227 + NameSober Up (feat. Rivers Cuomo) + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size7834942 + Total Time218763 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2017 + Date Modified2019-02-20T20:46:55Z + Date Added2019-02-20T20:46:55Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3773526288 + Play Date UTC2023-07-29T22:44:48Z + Release Date2017-06-02T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameSober Up (feat. Rivers Cuomo) + Persistent IDED44F44EAD438889 + Track TypeRemote + Apple Music + + 3229 + + Track ID3229 + NameThe Good Part + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size8106365 + Total Time227267 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2017 + Date Modified2019-02-20T20:47:08Z + Date Added2019-02-20T20:47:08Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3770288925 + Play Date UTC2023-06-22T11:28:45Z + Skip Count1 + Skip Date2023-06-15T12:53:14Z + Release Date2017-06-02T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameGood Part + Persistent IDAB627B6378381F46 + Track TypeRemote + Apple Music + + 3231 + + Track ID3231 + NameBleed Out + ArtistBlue October + Album ArtistBlue October + ComposerNot Documented + AlbumSway + GenreAlternative + KindApple Music AAC audio file + Size8772525 + Total Time232840 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2013 + Date Modified2019-02-20T20:57:15Z + Date Added2019-02-20T20:57:15Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3767032844 + Play Date UTC2023-05-15T19:00:44Z + Skip Count1 + Skip Date2022-05-24T11:17:21Z + Release Date2013-06-25T12:00:00Z + Artwork Count1 + Sort AlbumSway + Sort ArtistBlue October + Sort NameBleed Out + Persistent ID1ECC03A7B4659DB3 + Track TypeRemote + Apple Music + + 3233 + + Track ID3233 + NameCheck + ArtistYoung Thug + Album ArtistYoung Thug + ComposerJeffery Williams & London Holmes + AlbumBarter 6 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8157196 + Total Time230693 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2015 + Date Modified2019-02-20T21:00:03Z + Date Added2019-02-20T21:00:03Z + Bit Rate256 + Sample Rate44100 + Play Count124 + Play Date3773643881 + Play Date UTC2023-07-31T07:24:41Z + Skip Count1 + Skip Date2020-12-01T20:04:36Z + Release Date2015-04-01T07:00:00Z + Normalization2130 + Artwork Count1 + Sort AlbumBarter 6 + Sort ArtistYoung Thug + Sort NameCheck + Persistent ID0A91FDE0006C0609 + Explicit + Track TypeRemote + Apple Music + + 3235 + + Track ID3235 + NameNever Go Back + ArtistDennis Lloyd + Album ArtistDennis Lloyd + ComposerNir Tibor + AlbumNever Go Back - Single + GenreAlternative + KindApple Music AAC audio file + Size6290686 + Total Time175424 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-20T21:08:43Z + Date Added2019-02-20T21:08:43Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3770988742 + Play Date UTC2023-06-30T13:52:22Z + Skip Count1 + Skip Date2019-02-21T05:40:10Z + Release Date2019-02-15T12:00:00Z + Artwork Count1 + Sort AlbumNever Go Back - Single + Sort ArtistDennis Lloyd + Sort NameNever Go Back + Persistent ID0FC6926105DC015A + Track TypeRemote + Apple Music + + 3237 + + Track ID3237 + Namebury a friend + ArtistBillie Eilish + Album ArtistBillie Eilish + ComposerFINNEAS & Billie Eilish + AlbumWHEN WE ALL FALL ASLEEP, WHERE DO WE GO? + GenreAlternative + KindApple Music AAC audio file + Size7091327 + Total Time193149 + Disc Number1 + Disc Count1 + Track Number10 + Track Count14 + Year2019 + Date Modified2019-02-20T21:10:32Z + Date Added2019-02-20T21:10:32Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3777373876 + Play Date UTC2023-09-12T11:31:16Z + Skip Count5 + Skip Date2023-08-15T10:37:09Z + Release Date2019-01-29T08:00:00Z + Artwork Count1 + Sort AlbumWHEN WE ALL FALL ASLEEP, WHERE DO WE GO? + Sort ArtistBillie Eilish + Sort Namebury a friend + Persistent IDEDC3CDA37EDA549E + Track TypeRemote + Apple Music + + 3239 + + Track ID3239 + NameLeftovers + ArtistDennis Lloyd + Album ArtistDennis Lloyd + ComposerDennis Lloyd + AlbumLeftovers - Single + GenreEasy Listening + KindApple Music AAC audio file + Size6928981 + Total Time192628 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-02-21T06:13:42Z + Date Added2019-02-21T06:13:42Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3781705822 + Play Date UTC2023-11-01T14:50:22Z + Skip Count2 + Skip Date2022-09-04T16:01:48Z + Release Date2017-01-15T12:00:00Z + Artwork Count1 + Sort AlbumLeftovers - Single + Sort ArtistDennis Lloyd + Sort NameLeftovers + Persistent ID680F682800CF3862 + Explicit + Track TypeRemote + Apple Music + + 3241 + + Track ID3241 + NameThink About It + ArtistDennis Lloyd + Album ArtistDennis Lloyd + ComposerDennis Lloyd + AlbumThink About It - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size6920039 + Total Time191688 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2019-02-21T06:17:07Z + Date Added2019-02-21T06:17:07Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3781321143 + Play Date UTC2023-10-28T03:59:03Z + Release Date2016-11-16T12:00:00Z + Artwork Count1 + Sort AlbumThink About It - Single + Sort ArtistDennis Lloyd + Sort NameThink About It + Persistent ID542D43A46EEA8DF0 + Explicit + Track TypeRemote + Apple Music + + 3243 + + Track ID3243 + NameMoral of the Story + ArtistAshe + Album ArtistAshe + AlbumMoral of the Story - Single + GenreAlternative + KindApple Music AAC audio file + Size7381918 + Total Time201084 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2019-02-23T13:09:22Z + Date Added2019-02-23T13:09:22Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3783592091 + Play Date UTC2023-11-23T10:48:11Z + Skip Count4 + Skip Date2022-09-27T07:49:25Z + Release Date2019-02-14T12:00:00Z + Artwork Count1 + Sort AlbumMoral of the Story - Single + Sort ArtistAshe + Sort NameMoral of the Story + Persistent ID617BCE79B119C07E + Explicit + Track TypeRemote + Apple Music + + 3245 + + Track ID3245 + NameRacks on Racks + ArtistLil Pump + Album ArtistLil Pump + ComposerChristian Dold, Gazzy Garcia & Sebastian Baldeon + AlbumRacks on Racks - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4923194 + Total Time129778 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-23T13:56:00Z + Date Added2019-02-23T13:56:00Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783410711 + Play Date UTC2023-11-21T08:25:11Z + Skip Count2 + Skip Date2022-12-26T13:18:31Z + Release Date2019-01-31T12:00:00Z + Artwork Count1 + Sort AlbumRacks on Racks - Single + Sort ArtistLil Pump + Sort NameRacks on Racks + Persistent IDA01804C7FDA3BE0E + Explicit + Track TypeRemote + Apple Music + + 3247 + + Track ID3247 + NameGold Veins + ArtistGlints + Album ArtistGlints + ComposerJens Paeyeneersg Yello, Jan Lemmens & Ennio Morricone + AlbumGold Veins - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8084648 + Total Time231150 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-23T14:46:45Z + Date Added2019-02-23T14:46:45Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3783357759 + Play Date UTC2023-11-20T17:42:39Z + Skip Count8 + Skip Date2023-05-26T20:02:12Z + Release Date2019-02-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGold Veins - Single + Sort ArtistGlints + Sort NameGold Veins + Persistent ID39B07DCDC4AA1FA3 + Track TypeRemote + Apple Music + + 3249 + + Track ID3249 + NameBag Bwe (feat. Sir Michael Rocks) + ArtistSupa Bwe + Album ArtistSupa Bwe + AlbumBag Bwe (feat. Sir Michael Rocks) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7520860 + Total Time210732 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-23T15:24:12Z + Date Added2019-02-23T15:24:12Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count34 + Play Date3775744026 + Play Date UTC2023-08-24T14:47:06Z + Skip Count4 + Skip Date2022-11-16T20:06:27Z + Release Date2019-01-30T12:00:00Z + Artwork Count1 + Sort AlbumBag Bwe (feat. Sir Michael Rocks) - Single + Sort ArtistSupa Bwe + Sort NameBag Bwe (feat. Sir Michael Rocks) + Persistent IDBB5CB76436EE430D + Explicit + Track TypeRemote + Apple Music + + 3251 + + Track ID3251 + NameSay Less + ArtistP. Wright + Album ArtistP. Wright + AlbumSay Less - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size5874036 + Total Time161693 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-02-24T05:17:45Z + Date Added2019-02-24T05:17:45Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3780833835 + Play Date UTC2023-10-22T12:37:15Z + Skip Count1 + Skip Date2019-02-24T10:28:03Z + Release Date2019-02-12T12:00:00Z + Artwork Count1 + Sort AlbumSay Less - Single + Sort ArtistP. Wright + Sort NameSay Less + Persistent ID39D38B00EA423EE9 + Track TypeRemote + Apple Music + + 3253 + + Track ID3253 + Namedisappear + Artisteli. + Album Artisteli. + ComposerEli Lucas + Albumthe way we used to love. + GenreR&B/Soul + KindApple Music AAC audio file + Size7939147 + Total Time225600 + Disc Number1 + Disc Count1 + Track Number12 + Track Count17 + Year2019 + Date Modified2019-02-25T08:41:40Z + Date Added2019-02-25T08:41:40Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3779917958 + Play Date UTC2023-10-11T22:12:38Z + Skip Count2 + Skip Date2019-05-07T05:54:46Z + Release Date2019-02-22T12:00:00Z + Artwork Count1 + Sort Albumway we used to love. + Sort Artisteli. + Sort Namedisappear + Persistent IDCB3FF115A3D2517B + Track TypeRemote + Apple Music + + 3255 + + Track ID3255 + NameWhat's Up Danger + ArtistBlackway & Black Caviar + Album ArtistVarious Artists + ComposerJared Piccone & Yaw Sintim-misa + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size7703180 + Total Time222316 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count90 + Play Date3783688621 + Play Date UTC2023-11-24T13:37:01Z + Skip Count6 + Skip Date2020-11-07T14:29:16Z + Release Date2018-11-01T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization2918 + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistBlackway & Black Caviar + Sort NameWhat's Up Danger + Persistent IDE9582A1B2D7003EC + Track TypeRemote + Apple Music + + 3257 + + Track ID3257 + NameSunflower (Spider-Man: Into the Spider-Verse) + ArtistPost Malone & Swae Lee + Album ArtistVarious Artists + ComposerCarter Lang, Khalif Malik Ibin Shaman Brown, Louis Russel Bell, Austin Richard Post, William Walsh & Carl Rosen + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5858597 + Total Time158040 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count123 + Play Date3781522384 + Play Date UTC2023-10-30T11:53:04Z + Skip Count5 + Skip Date2021-06-11T12:31:40Z + Release Date2018-10-19T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization4546 + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistPost Malone & Swae Lee + Sort NameSunflower (Spider-Man: Into the Spider-Verse) + Persistent IDB15715F85FC44F68 + Track TypeRemote + Apple Music + + 3259 + + Track ID3259 + NameWay Up + ArtistJaden + Album ArtistVarious Artists + ComposerJaden, Omarr Rambert & Tremaine Winfrey + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size5644955 + Total Time153774 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count71 + Play Date3780773249 + Play Date UTC2023-10-21T19:47:29Z + Skip Count8 + Skip Date2022-07-30T12:42:52Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistJaden + Sort NameWay Up + Persistent ID1C43F0C11B03C963 + Track TypeRemote + Apple Music + + 3261 + + Track ID3261 + NameFamilia (feat. Bantu) [Spider-Man: Into the Spider-Verse] + ArtistNicki Minaj & Anuel AA + Album ArtistVarious Artists + ComposerPhilip 'Pip' Kembo, Onika Tanya Maraj, Tinashe Sibanda, Emmanuel Gazmey Santiago & Carlos A. Suárez + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size6374673 + Total Time174884 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3759844324 + Play Date UTC2023-02-21T14:12:04Z + Skip Count1 + Skip Date2022-02-23T22:53:00Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistNicki Minaj & Anuel AA + Sort NameFamilia (feat. Bantu) [Spider-Man: Into the Spider-Verse] + Persistent ID57295A55F52129B8 + Track TypeRemote + Apple Music + + 3263 + + Track ID3263 + NameInvincible + ArtistAminé + Album ArtistVarious Artists + ComposerOm'Mas Keith, Dylan Meek & Adam Aminé Daniel + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size7028826 + Total Time196398 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count76 + Play Date3772721743 + Play Date UTC2023-07-20T15:15:43Z + Skip Count4 + Skip Date2022-08-11T12:52:17Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistAminé + Sort NameInvincible + Persistent ID70F1441169316604 + Track TypeRemote + Apple Music + + 3265 + + Track ID3265 + NameHide (feat. Seezyn) + ArtistJuice WRLD + Album ArtistVarious Artists + ComposerJarad Higgins, Carl Chaney & George Dickinson + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size7281558 + Total Time205793 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count102 + Play Date3781242889 + Play Date UTC2023-10-27T06:14:49Z + Skip Count1 + Skip Date2019-12-29T08:14:43Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization4540 + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistJuice WRLD + Sort NameHide (feat. Seezyn) + Persistent ID987AF36410622461 + Track TypeRemote + Apple Music + + 3267 + + Track ID3267 + NameMemories + ArtistThutmose + Album ArtistVarious Artists + ComposerUmar Ibrahim & Vincent Van den Ende + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size7205565 + Total Time199149 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3781165767 + Play Date UTC2023-10-26T08:49:27Z + Skip Date2020-10-09T18:15:56Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistThutmose + Sort NameMemories + Persistent ID3F540803DCADC284 + Track TypeRemote + Apple Music + + 3269 + + Track ID3269 + NameSave the Day (feat. Coi Leray & lougotcash) + ArtistSki Mask the Slump God & Jacquees + Album ArtistVarious Artists + ComposerRaymond Arroyo, Rodriquez Broadnax, Stokeley Clevon Goulbourne, Coi Collins & Rahlou Ruth + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size6484016 + Total Time178714 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3759518121 + Play Date UTC2023-02-17T19:35:21Z + Skip Count1 + Skip Date2020-10-09T18:16:01Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistSki Mask the Slump God & Jacquees + Sort NameSave the Day (feat. Coi Leray & lougotcash) + Persistent ID4EF5F4EC8D3E0EF8 + Track TypeRemote + Apple Music + + 3271 + + Track ID3271 + NameLet Go + ArtistBeau Young Prince + Album ArtistVarious Artists + ComposerBeau Young & Jaimy Lageweg + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6365782 + Total Time177660 + Disc Number1 + Disc Count1 + Track Number10 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3776336805 + Play Date UTC2023-08-31T11:26:45Z + Skip Count1 + Skip Date2020-10-12T09:26:15Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistBeau Young Prince + Sort NameLet Go + Persistent ID6D70B0E70CACBE68 + Track TypeRemote + Apple Music + + 3273 + + Track ID3273 + NameScared of the Dark (feat. XXXTENTACION) + ArtistLil Wayne & Ty Dolla $ign + Album ArtistVarious Artists + ComposerDwayne Michael Carter, Jr., Samuel Denison Martin, Jahseh Dwayne Onfroy & Marco Antonio Rodriguez-Diaz, Jr. + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size8368229 + Total Time232999 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count174 + Play Date3781395307 + Play Date UTC2023-10-29T00:35:07Z + Skip Count8 + Skip Date2021-07-13T22:24:59Z + Release Date2018-12-14T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization4394 + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistLil Wayne & Ty Dolla $ign + Sort NameScared of the Dark (feat. XXXTENTACION) + Persistent ID8B5BB866F8A2FC40 + Track TypeRemote + Apple Music + + 3275 + + Track ID3275 + NameElevate (feat. Denzel Curry, YBN Cordae, SwaVay & Trevor Rich) + ArtistDJ Khalil + Album ArtistVarious Artists + ComposerDenzel Curry, Trevor Rich, Didier Cohen, Daniel Seeff, Khalil Abdul-Rahman, Cordae Dunston & Andre Jones + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size7846005 + Total Time219396 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count119 + Play Date3782894918 + Play Date UTC2023-11-15T09:08:38Z + Skip Count9 + Skip Date2022-09-09T10:54:09Z + Release Date2018-12-14T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization6635 + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistDJ Khalil + Sort NameElevate (feat. Denzel Curry, YBN Cordae, SwaVay & Trevor Rich) + Persistent ID2AE93549DC2394F1 + Track TypeRemote + Apple Music + + 3277 + + Track ID3277 + NameHome + ArtistVince Staples + Album ArtistVarious Artists + ComposerDavid Biral, Denzel Baptiste & Vincent Staples + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7744584 + Total Time211321 + Disc Number1 + Disc Count1 + Track Number13 + Track Count13 + Year2018 + Date Modified2019-02-25T13:46:19Z + Date Added2019-02-25T13:46:19Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3760548388 + Play Date UTC2023-03-01T17:46:28Z + Skip Count1 + Skip Date2020-12-12T21:45:16Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistVince Staples + Sort NameHome + Persistent ID69899706DF090D6D + Track TypeRemote + Apple Music + + 3279 + + Track ID3279 + Nameattached + Artisteli. + Album Artisteli. + ComposerEli Lucas + Albumthe way we used to love. + GenreR&B/Soul + KindApple Music AAC audio file + Size7666897 + Total Time220000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count17 + Year2018 + Date Modified2019-02-26T11:52:56Z + Date Added2019-02-26T11:52:56Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3773210637 + Play Date UTC2023-07-26T07:03:57Z + Skip Count2 + Skip Date2022-04-21T12:32:08Z + Release Date2018-08-03T12:00:00Z + Artwork Count1 + Sort Albumway we used to love. + Sort Artisteli. + Sort Nameattached + Persistent ID4DA66D1D0F1AFC2B + Track TypeRemote + Apple Music + + 3281 + + Track ID3281 + NameMeditate (feat. J.I.D.) + ArtistEARTHGANG + Album ArtistEARTHGANG + AlbumRags - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9730643 + Total Time278084 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2017 + Date Modified2019-02-27T19:36:44Z + Date Added2019-02-27T19:36:44Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count42 + Play Date3766230223 + Play Date UTC2023-05-06T12:03:43Z + Release Date2017-09-01T12:00:00Z + Artwork Count1 + Sort AlbumRags - EP + Sort ArtistEARTHGANG + Sort NameMeditate (feat. J.I.D.) + Persistent IDA1917967326321D8 + Explicit + Track TypeRemote + Apple Music + + 3283 + + Track ID3283 + NameTable for One (feat. Elohim) + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumTable for One (feat. Elohim) - Single + GenreAlternative + KindApple Music AAC audio file + Size9771926 + Total Time278868 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-03-01T06:54:32Z + Date Added2019-03-01T06:54:32Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3783595865 + Play Date UTC2023-11-23T11:51:05Z + Skip Count1 + Skip Date2021-06-24T15:42:25Z + Release Date2018-10-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTable for One (feat. Elohim) - Single + Sort ArtistAWOLNATION + Sort NameTable for One (feat. Elohim) + Persistent IDED315836147BE02F + Track TypeRemote + Apple Music + + 3285 + + Track ID3285 + NameJailbreak + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumRun + GenreAlternative + KindAAC audio file + Size10036487 + Total Time281115 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2015 + Date Modified2019-03-01T06:57:15Z + Date Added2019-03-01T06:57:15Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3734121109 + Play Date UTC2022-04-29T20:51:49Z + Skip Count1 + Skip Date2020-11-26T23:01:59Z + Release Date2015-03-17T07:00:00Z + Sort AlbumRun + Sort ArtistAWOLNATION + Sort NameJailbreak + Persistent IDA4631BA5095EBB0C + Track TypeRemote + + 3287 + + Track ID3287 + NameWindows + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumRun + GenreAlternative + KindAAC audio file + Size7798722 + Total Time217206 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2015 + Date Modified2019-03-01T06:57:19Z + Date Added2019-03-01T06:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3733744385 + Play Date UTC2022-04-25T12:13:05Z + Release Date2015-03-17T07:00:00Z + Loved + Sort AlbumRun + Sort ArtistAWOLNATION + Sort NameWindows + Persistent ID2E5470BE059321B0 + Track TypeRemote + + 3289 + + Track ID3289 + NameI Am + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumRun + GenreAlternative + KindAAC audio file + Size9900452 + Total Time274323 + Disc Number1 + Disc Count1 + Track Number6 + Track Count14 + Year2015 + Date Modified2019-03-01T06:57:27Z + Date Added2019-03-01T06:57:27Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3733854093 + Play Date UTC2022-04-26T18:41:33Z + Skip Count1 + Skip Date2021-01-30T18:44:06Z + Release Date2015-03-17T07:00:00Z + Sort AlbumRun + Sort ArtistAWOLNATION + Sort NameI Am + Persistent ID494F6FF5FC03C486 + Track TypeRemote + + 3291 + + Track ID3291 + NameWoman Woman + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumRun + GenreAlternative + KindAAC audio file + Size7937721 + Total Time217995 + Disc Number1 + Disc Count1 + Track Number11 + Track Count14 + Year2015 + Date Modified2019-03-01T06:57:30Z + Date Added2019-03-01T06:57:30Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3730113691 + Play Date UTC2022-03-14T11:41:31Z + Release Date2015-03-17T07:00:00Z + Sort AlbumRun + Sort ArtistAWOLNATION + Sort NameWoman Woman + Persistent ID336532B2BDC978F1 + Track TypeRemote + + 3293 + + Track ID3293 + NameLie Love Live Love + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumRun + GenreAlternative + KindAAC audio file + Size10224940 + Total Time281081 + Disc Number1 + Disc Count1 + Track Number12 + Track Count14 + Year2015 + Date Modified2019-03-01T08:12:56Z + Date Added2019-03-01T08:12:56Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3731241930 + Play Date UTC2022-03-27T13:05:30Z + Release Date2015-03-17T07:00:00Z + Sort AlbumRun + Sort ArtistAWOLNATION + Sort NameLie Love Live Love + Persistent IDF6BF413E4ACD3D67 + Track TypeRemote + + 3295 + + Track ID3295 + Namehappysad + ArtistJosh Golden + Album ArtistJosh Golden + ComposerJosh Golden, London Glorfield, Jacob Chatelain, Sean Myer & Mick Coogan + Albumhappysad - Single + GenrePop + KindApple Music AAC audio file + Size6558402 + Total Time174038 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-03-02T16:59:44Z + Date Added2019-03-02T16:59:44Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count58 + Play Date3766850273 + Play Date UTC2023-05-13T16:17:53Z + Skip Count6 + Skip Date2020-12-05T05:45:09Z + Release Date2019-01-25T12:00:00Z + Artwork Count1 + Sort Albumhappysad - Single + Sort ArtistJosh Golden + Sort Namehappysad + Persistent ID39D9696204872A86 + Explicit + Track TypeRemote + + 3297 + + Track ID3297 + Namelove me blind + ArtistJosh Golden + Album ArtistJosh Golden + ComposerJosh Golden, Martin Coogan, Dave Burris & Sean Myer + Albumlove me blind - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7562403 + Total Time209736 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-03-04T13:01:20Z + Date Added2019-03-04T13:01:20Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count157 + Play Date3780906186 + Play Date UTC2023-10-23T08:43:06Z + Skip Count11 + Skip Date2021-05-17T09:39:42Z + Release Date2018-07-20T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumlove me blind - Single + Sort ArtistJosh Golden + Sort Namelove me blind + Persistent ID76125F6269908E6D + Explicit + Track TypeRemote + + 3299 + + Track ID3299 + Nameheartbreak drugs + ArtistJosh Golden + Album ArtistJosh Golden + ComposerJosh Golden, Sean Myer & Mick Coogan + Albumhappysad + GenrePop + KindAAC audio file + Size6306337 + Total Time172058 + Disc Number1 + Disc Count1 + Track Number6 + Track Count8 + Year2018 + Date Modified2019-03-04T13:07:51Z + Date Added2019-03-04T13:07:51Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count2 + Play Date3696927695 + Play Date UTC2021-02-23T09:21:35Z + Release Date2018-11-16T12:00:00Z + Artwork Count1 + Sort Albumhappysad + Sort ArtistJosh Golden + Sort Nameheartbreak drugs + Persistent IDED1B3DD81D002B4F + Track TypeRemote + + 3301 + + Track ID3301 + NameFade Away + ArtistTom Walker + Album ArtistTom Walker + ComposerTom Walker + AlbumWhat a Time To Be Alive + GenreSinger/Songwriter + KindApple Music AAC audio file + Size9836757 + Total Time283989 + Disc Number1 + Disc Count1 + Track Number10 + Track Count13 + Year2019 + Date Modified2019-03-07T07:58:52Z + Date Added2019-03-07T07:58:52Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3760963353 + Play Date UTC2023-03-06T13:02:33Z + Skip Count3 + Skip Date2022-06-21T05:05:57Z + Release Date2019-03-01T12:00:00Z + Artwork Count1 + Sort AlbumWhat a Time To Be Alive + Sort ArtistTom Walker + Sort NameFade Away + Persistent ID83C17FF8657EB1F0 + Track TypeRemote + Apple Music + + 3303 + + Track ID3303 + NamePain + ArtistJosh A + Album ArtistJosh A + ComposerJosh A + AlbumFearless + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6604141 + Total Time188042 + Disc Number1 + Disc Count1 + Track Number10 + Track Count15 + Year2019 + Date Modified2019-03-08T14:43:49Z + Date Added2019-03-08T14:43:49Z + Bit Rate256 + Sample Rate44100 + Play Count79 + Play Date3780394721 + Play Date UTC2023-10-17T10:38:41Z + Skip Count3 + Skip Date2021-05-05T08:02:56Z + Release Date2019-01-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFearless + Sort ArtistJosh A + Sort NamePain + Persistent IDFD5B45D153255686 + Explicit + Track TypeRemote + Apple Music + + 3305 + + Track ID3305 + NameEndlessly + ArtistMuse + Album ArtistMuse + ComposerChris Wolstenholme, Dominic Howard & Matthew Bellamy + AlbumAbsolution + GenreAlternative + KindApple Music AAC audio file + Size8420965 + Total Time229302 + Disc Number1 + Disc Count1 + Track Number12 + Track Count15 + Year2003 + Date Modified2019-03-10T13:42:46Z + Date Added2019-03-10T13:42:46Z + Bit Rate256 + Sample Rate44100 + Play Count88 + Play Date3773844782 + Play Date UTC2023-08-02T15:13:02Z + Release Date2003-09-15T07:00:00Z + Artwork Count1 + Sort AlbumAbsolution + Sort ArtistMuse + Sort NameEndlessly + Persistent ID3312191455109948 + Track TypeRemote + Apple Music + + 3307 + + Track ID3307 + NameInvest + ArtistBig Scary + Album ArtistBig Scary + AlbumNot Art + GenreAlternative + KindApple Music AAC audio file + Size9461901 + Total Time270707 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2013 + Date Modified2019-03-11T04:39:04Z + Date Added2019-03-11T04:39:04Z + Bit Rate256 + Sample Rate44100 + Play Count110 + Play Date3781199756 + Play Date UTC2023-10-26T18:15:56Z + Skip Count2 + Skip Date2022-05-18T09:25:38Z + Release Date2013-06-28T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNot Art + Sort ArtistBig Scary + Sort NameInvest + Persistent IDEA0DE163CADA550E + Track TypeRemote + Apple Music + + 3309 + + Track ID3309 + NameBoris + ArtistLo-Fang + Album ArtistLo-Fang + ComposerValeska Anna Steiner & Adrian Stern + AlbumBlue Film + GenreAlternative + KindApple Music AAC audio file + Size7631494 + Total Time217840 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2013 + Date Modified2019-03-11T04:51:26Z + Date Added2019-03-11T04:51:26Z + Bit Rate256 + Sample Rate44100 + Play Count107 + Play Date3783755347 + Play Date UTC2023-11-25T08:09:07Z + Skip Count1 + Skip Date2019-03-28T21:35:54Z + Release Date2013-08-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBlue Film + Sort ArtistLo-Fang + Sort NameBoris + Persistent ID01313C13C89510E3 + Track TypeRemote + Apple Music + + 3311 + + Track ID3311 + NameHeimförin + ArtistÁsgeir + Album ArtistÁsgeir + ComposerAsgeir Einarsson & Einar Einarsson + AlbumDýrð Í Dauðaþögn + GenreAlternative + KindApple Music AAC audio file + Size10150792 + Total Time292053 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2012 + Date Modified2019-03-11T05:00:27Z + Date Added2019-03-11T05:00:27Z + Bit Rate256 + Sample Rate44100 + Play Count70 + Play Date3765359633 + Play Date UTC2023-04-26T10:13:53Z + Release Date2012-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDýrð Í Dauðaþögn + Sort ArtistÁsgeir + Sort NameHeimförin + Persistent IDC30F244AB1F602BC + Track TypeRemote + Apple Music + + 3313 + + Track ID3313 + NameBetray + ArtistSon Lux + Album ArtistSon Lux + AlbumAt War With Walls & Mazes + GenreElectronic + KindApple Music AAC audio file + Size11539409 + Total Time305293 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2008 + Date Modified2019-03-11T08:16:22Z + Date Added2019-03-11T08:16:22Z + Bit Rate256 + Sample Rate44100 + Play Count75 + Play Date3760088532 + Play Date UTC2023-02-24T10:02:12Z + Skip Count2 + Skip Date2022-11-04T10:18:31Z + Release Date2008-02-26T12:00:00Z + Artwork Count1 + Sort AlbumAt War With Walls & Mazes + Sort ArtistSon Lux + Sort NameBetray + Persistent ID0EA28E1888690A27 + Track TypeRemote + Apple Music + + 3315 + + Track ID3315 + NameNext Up Forever + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size9186191 + Total Time256547 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-03-12T13:22:35Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3761049732 + Play Date UTC2023-03-07T13:02:12Z + Release Date2019-04-26T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameNext Up Forever + Persistent IDADD1026B69202014 + Explicit + Track TypeRemote + Apple Music + + 3317 + + Track ID3317 + NameBirthday Party + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met, Ryan Met, David Lynch & Peter Ivers + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size7934791 + Total Time223948 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-03-12T13:22:35Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781176964 + Play Date UTC2023-10-26T11:56:04Z + Skip Count1 + Skip Date2023-03-15T08:58:16Z + Release Date2019-03-12T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameBirthday Party + Persistent IDA05D42B5ADF26D8D + Track TypeRemote + Apple Music + + 3319 + + Track ID3319 + NameDon't Throw out My Legos + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size9037797 + Total Time250839 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-03-12T13:22:35Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3767807947 + Play Date UTC2023-05-24T18:19:07Z + Release Date2019-04-26T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameDon't Throw out My Legos + Persistent ID3B9FA14526E54C95 + Track TypeRemote + Apple Music + + 3321 + + Track ID3321 + NameBreak My Face + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size8056782 + Total Time226336 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-03-12T13:22:35Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3773531430 + Play Date UTC2023-07-30T00:10:30Z + Skip Count1 + Skip Date2022-08-10T18:37:10Z + Release Date2019-04-26T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameBreak My Face + Persistent IDED49DF0FB2F819E8 + Track TypeRemote + Apple Music + + 3323 + + Track ID3323 + NameThe Entertainment's Here + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size6775234 + Total Time187263 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-03-12T13:22:35Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3777375077 + Play Date UTC2023-09-12T11:51:17Z + Skip Count4 + Skip Date2023-10-17T09:56:19Z + Release Date2019-04-26T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameEntertainment's Here + Persistent ID6C80CE653379F408 + Track TypeRemote + Apple Music + + 3325 + + Track ID3325 + NameKarma + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size8685173 + Total Time245270 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-03-12T13:22:35Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3783713796 + Play Date UTC2023-11-24T20:36:36Z + Skip Count2 + Skip Date2023-02-04T16:17:20Z + Release Date2019-04-26T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameKarma + Persistent ID5262CCF064D9C23A + Track TypeRemote + Apple Music + + 3327 + + Track ID3327 + NameBeats + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size7281935 + Total Time198572 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-03-12T13:22:35Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3766398464 + Play Date UTC2023-05-08T10:47:44Z + Release Date2019-04-26T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameBeats + Persistent IDA4754CD720EE2B7E + Track TypeRemote + Apple Music + + 3329 + + Track ID3329 + NameDear Winter + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size6126855 + Total Time168126 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-04-04T21:02:32Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3782885565 + Play Date UTC2023-11-15T06:32:45Z + Skip Count5 + Skip Date2023-07-01T05:11:22Z + Release Date2019-04-05T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameDear Winter + Persistent ID4F3DEE127164D0C0 + Explicit + Track TypeRemote + Apple Music + + 3331 + + Track ID3331 + NameFinale (Can't Wait to See What You Do Next) + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumNeotheater + GenrePop + KindApple Music AAC audio file + Size9730903 + Total Time277718 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2019 + Date Modified2019-03-12T13:22:35Z + Date Added2019-03-12T13:22:35Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3767784596 + Play Date UTC2023-05-24T11:49:56Z + Release Date2019-04-26T12:00:00Z + Artwork Count1 + Sort AlbumNeotheater + Sort ArtistAJR + Sort NameFinale (Can't Wait to See What You Do Next) + Persistent ID9427E3DA101685D7 + Explicit + Track TypeRemote + Apple Music + + 3333 + + Track ID3333 + NameThe Blanket of Night + ArtistElbow + Album ArtistElbow + ComposerGuy Garvey, Craig Potter, Mark Potter, Richard Jupp & Pete Turner + AlbumThe Take Off and Landing of Everything + GenreAlternative + KindApple Music AAC audio file + Size9432733 + Total Time262446 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2014 + Date Modified2019-03-13T21:09:29Z + Date Added2019-03-13T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count63 + Play Date3783769542 + Play Date UTC2023-11-25T12:05:42Z + Skip Count3 + Skip Date2020-03-17T04:41:45Z + Release Date2014-03-10T07:00:00Z + Artwork Count1 + Sort AlbumTake Off and Landing of Everything + Sort ArtistElbow + Sort NameBlanket of Night + Persistent ID73247B22410AB9B6 + Track TypeRemote + Apple Music + + 3335 + + Track ID3335 + Name21 Gun Salute + ArtistHalf Moon Run + Album ArtistHalf Moon Run + ComposerHalf Moon Run, Devon Portielje, Conner Molander & Dylan Phillips + AlbumDark Eyes + GenreAlternative + KindApple Music AAC audio file + Size10640201 + Total Time292409 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2012 + Date Modified2019-03-15T04:53:05Z + Date Added2019-03-15T04:53:05Z + Bit Rate256 + Sample Rate44100 + Play Count79 + Play Date3782476012 + Play Date UTC2023-11-10T12:46:52Z + Skip Count1 + Skip Date2022-10-09T16:04:15Z + Release Date2012-03-27T12:00:00Z + Artwork Count1 + Sort AlbumDark Eyes + Sort ArtistHalf Moon Run + Sort Name21 Gun Salute + Persistent IDABAB99F8D964C42A + Explicit + Track TypeRemote + Apple Music + + 3337 + + Track ID3337 + NameCali + ArtistLay Coast + Album ArtistLay Coast + AlbumCali - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7135630 + Total Time203632 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3780845174 + Play Date UTC2023-10-22T15:46:14Z + Skip Count1 + Skip Date2022-10-09T16:15:30Z + Release Date2016-02-16T12:00:00Z + Artwork Count1 + Sort AlbumCali - Single + Sort ArtistLay Coast + Sort NameCali + Persistent IDEAB2E8B71F77E30E + Explicit + Track TypeRemote + Apple Music + + 3339 + + Track ID3339 + NameThe Adventures of Larry and Tina + ArtistWax and EOM + Album ArtistWax and EOM + AlbumLiquid Courage + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10387467 + Total Time300480 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2008 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3783753850 + Play Date UTC2023-11-25T07:44:10Z + Skip Count2 + Skip Date2019-04-02T04:30:05Z + Release Date2008-11-25T12:00:00Z + Artwork Count1 + Sort AlbumLiquid Courage + Sort ArtistWax and EOM + Sort NameAdventures of Larry and Tina + Persistent ID4D6C5E673D78CE97 + Track TypeRemote + Apple Music + + 3341 + + Track ID3341 + NameGreen + ArtistEventide + Album ArtistEventide + AlbumSwells EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7035782 + Total Time197042 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2014 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3770985279 + Play Date UTC2023-06-30T12:54:39Z + Skip Count1 + Skip Date2022-03-15T05:26:38Z + Release Date2014-06-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSwells EP + Sort ArtistEventide + Sort NameGreen + Persistent IDA169A3D38FA0C9B8 + Explicit + Track TypeRemote + Apple Music + + 3343 + + Track ID3343 + Nameain't trippin + Artistblackbear + Album Artistblackbear + ComposerNic-Nac + Albumdeadroses + GenreR&B/Soul + KindApple Music AAC audio file + Size6645748 + Total Time185556 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2015 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3782885960 + Play Date UTC2023-11-15T06:39:20Z + Skip Count1 + Skip Date2019-03-21T07:35:17Z + Release Date2015-02-14T08:00:00Z + Artwork Count1 + Sort Albumdeadroses + Sort Artistblackbear + Sort Nameain't trippin + Persistent ID7E3FB0F01E64C384 + Explicit + Track TypeRemote + Apple Music + + 3345 + + Track ID3345 + NameYa Know (feat. The Internet) + ArtistOdd Future + Album ArtistOdd Future + ComposerHal Williams, Matthew Martin & Sydney Bennett + AlbumThe OF Tape, Vol. 2 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8969297 + Total Time240733 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2012 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3760000055 + Play Date UTC2023-02-23T09:27:35Z + Skip Count2 + Skip Date2022-04-23T20:29:33Z + Release Date2012-03-16T12:00:00Z + Artwork Count1 + Sort AlbumOF Tape, Vol. 2 + Sort ArtistOdd Future + Sort NameYa Know (feat. The Internet) + Persistent IDCDD1F34F95F5059E + Explicit + Track TypeRemote + Apple Music + + 3347 + + Track ID3347 + NameIt's Pretty When You Cry + ArtistAnthro Beats + Album ArtistAnthro Beats + AlbumIf Tomorrow Never Comes + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8025820 + Total Time226250 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2014 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3767701794 + Play Date UTC2023-05-23T12:49:54Z + Skip Count1 + Skip Date2019-03-26T09:43:48Z + Release Date2014-12-12T12:00:00Z + Artwork Count1 + Sort AlbumIf Tomorrow Never Comes + Sort ArtistAnthro Beats + Sort NameIt's Pretty When You Cry + Persistent ID1433E57379AD44ED + Track TypeRemote + Apple Music + + 3349 + + Track ID3349 + NameNo Help Needed + ArtistHippie Sabotage + Album ArtistHippie Sabotage + Composer0 + AlbumVacants (Deluxe Edition) + GenreElectronic + KindApple Music AAC audio file + Size7234405 + Total Time202475 + Disc Number1 + Disc Count1 + Track Number19 + Track Count23 + Year2014 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3781450518 + Play Date UTC2023-10-29T15:55:18Z + Skip Count2 + Skip Date2023-03-24T20:54:07Z + Release Date2014-09-30T12:00:00Z + Artwork Count1 + Sort AlbumVacants (Deluxe Edition) + Sort ArtistHippie Sabotage + Sort NameNo Help Needed + Persistent IDB630FE5EA7C3CACD + Track TypeRemote + Apple Music + + 3351 + + Track ID3351 + NameWe (feat. CeeLo Green) + ArtistMac Miller + Album ArtistMac Miller + ComposerAdam Feeney, Malcolm McCormick, Stephen Bruner & Thomas Callaway + AlbumThe Divine Feminine + GenreHip-Hop + KindApple Music AAC audio file + Size11326552 + Total Time319273 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2016 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3769952925 + Play Date UTC2023-06-18T14:08:45Z + Release Date2016-08-19T07:00:00Z + Artwork Count1 + Sort AlbumDivine Feminine + Sort ArtistMac Miller + Sort NameWe (feat. CeeLo Green) + Persistent IDB0FDCD920135CC8C + Explicit + Track TypeRemote + Apple Music + + 3353 + + Track ID3353 + NameLean On + ArtistEli Sostre + Album ArtistEli Sostre + AlbumStill up All Night + GenreR&B/Soul + KindApple Music AAC audio file + Size4983959 + Total Time141333 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2016 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count115 + Play Date3773850047 + Play Date UTC2023-08-02T16:40:47Z + Skip Count2 + Skip Date2019-05-01T06:06:44Z + Release Date2016-08-05T12:00:00Z + Artwork Count1 + Sort AlbumStill up All Night + Sort ArtistEli Sostre + Sort NameLean On + Persistent ID966A948FC3545190 + Explicit + Track TypeRemote + Apple Music + + 3355 + + Track ID3355 + NameI'm Going (feat. Ben West) + ArtistFredo Santana + Album ArtistFredo Santana + AlbumAin't No Money Like Trap Money, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8692048 + Total Time254545 + Disc Number1 + Disc Count1 + Track Number6 + Track Count15 + Year2015 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3779898098 + Play Date UTC2023-10-11T16:41:38Z + Skip Count1 + Skip Date2019-03-19T14:31:36Z + Release Date2015-05-20T12:00:00Z + Artwork Count1 + Sort AlbumAin't No Money Like Trap Money, Vol. 1 + Sort ArtistFredo Santana + Sort NameI'm Going (feat. Ben West) + Persistent ID3CD71B39BC60AAAD + Explicit + Track TypeRemote + Apple Music + + 3357 + + Track ID3357 + NameHollywood (feat. Safe) + ArtistNessly + Album ArtistNessly + AlbumStill Finessin' + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5804932 + Total Time158447 + Disc Number1 + Disc Count1 + Track Number6 + Track Count9 + Year2016 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count65 + Play Date3781620251 + Play Date UTC2023-10-31T15:04:11Z + Skip Count2 + Skip Date2023-03-13T15:39:41Z + Release Date2016-05-10T12:00:00Z + Artwork Count1 + Sort AlbumStill Finessin' + Sort ArtistNessly + Sort NameHollywood (feat. Safe) + Persistent ID3A63A48F4C091F8E + Explicit + Track TypeRemote + Apple Music + + 3359 + + Track ID3359 + NameTo the Moon + ArtistPhora + Album ArtistPhora + ComposerAdrian Velasquez, Alex Isley, Anthony Ruiz & Marco Archer + AlbumYours Truly Forever + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8975692 + Total Time252320 + Disc Number1 + Disc Count1 + Track Number6 + Track Count16 + Year2017 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count61 + Play Date3783779702 + Play Date UTC2023-11-25T14:55:02Z + Skip Count1 + Skip Date2019-03-19T14:29:59Z + Release Date2017-08-18T12:00:00Z + Artwork Count1 + Sort AlbumYours Truly Forever + Sort ArtistPhora + Sort NameTo the Moon + Persistent ID728B7A3EAABE918F + Track TypeRemote + Apple Music + + 3361 + + Track ID3361 + NameEnemy + ArtistEddie Zuko + Album ArtistEddie Zuko + ComposerEddie Zuko + AlbumEnemy - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5278378 + Total Time145848 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3781192994 + Play Date UTC2023-10-26T16:23:14Z + Skip Count2 + Skip Date2019-03-25T16:43:22Z + Release Date2017-04-06T12:00:00Z + Artwork Count1 + Sort AlbumEnemy - Single + Sort ArtistEddie Zuko + Sort NameEnemy + Persistent ID5FCE1F3F2CD3744D + Track TypeRemote + Apple Music + + 3363 + + Track ID3363 + NameSeptember + ArtistShotta Spence + Album ArtistShotta Spence + ComposerSpencer David Lee & Von Vuai + AlbumUpfall + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11826557 + Total Time343864 + Disc Number1 + Disc Count1 + Track Number9 + Track Count15 + Year2016 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count28 + Play Date3768298949 + Play Date UTC2023-05-30T10:42:29Z + Skip Count1 + Skip Date2019-03-18T10:45:20Z + Release Date2016-07-28T12:00:00Z + Artwork Count1 + Sort AlbumUpfall + Sort ArtistShotta Spence + Sort NameSeptember + Persistent ID28CBA951D929A413 + Explicit + Track TypeRemote + Apple Music + + 3365 + + Track ID3365 + NameBrother + Artist¡MAYDAY! + Album Artist¡MAYDAY! + Composer¡MAYDAY! + AlbumFuture Vintage + GenreHip-Hop + KindApple Music AAC audio file + Size7265580 + Total Time203424 + Disc Number1 + Disc Count1 + Track Number16 + Track Count19 + Year2015 + Date Modified2019-03-17T17:59:28Z + Date Added2019-03-17T17:59:28Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3779701941 + Play Date UTC2023-10-09T10:12:21Z + Skip Count3 + Skip Date2020-11-08T07:00:38Z + Release Date2015-09-18T12:00:00Z + Artwork Count1 + Sort AlbumFuture Vintage + Sort Artist¡MAYDAY! + Sort NameBrother + Persistent IDF3301845961539CD + Explicit + Track TypeRemote + Apple Music + + 3367 + + Track ID3367 + NameSolo + ArtistFrank Ocean + Album ArtistFrank Ocean + AlbumBlonde + GenrePop + KindApple Music AAC audio file + Size9270235 + Total Time257380 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2016 + Date Modified2019-03-17T17:59:29Z + Date Added2019-03-17T17:59:29Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3783769820 + Play Date UTC2023-11-25T12:10:20Z + Release Date2016-08-20T07:00:00Z + Artwork Count1 + Sort AlbumBlonde + Sort ArtistFrank Ocean + Sort NameSolo + Persistent IDEBDEEB7CC28C7F74 + Explicit + Track TypeRemote + Apple Music + + 3369 + + Track ID3369 + NameAutograph + ArtistYe Ali + Album ArtistYe Ali + ComposerYusuf Ali + AlbumTrapHouse Jodeci + GenreR&B/Soul + KindApple Music AAC audio file + Size9782497 + Total Time279353 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2016 + Date Modified2019-03-17T17:59:29Z + Date Added2019-03-17T17:59:29Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3764051725 + Play Date UTC2023-04-11T06:55:25Z + Skip Count1 + Skip Date2021-03-06T13:44:44Z + Release Date2016-09-26T12:00:00Z + Artwork Count1 + Sort AlbumTrapHouse Jodeci + Sort ArtistYe Ali + Sort NameAutograph + Persistent ID304FEE3DD72A8CEF + Track TypeRemote + Apple Music + + 3371 + + Track ID3371 + NameOnly 19 + ArtistR.Chris + Album ArtistR.Chris + ComposerChristian Ruiz + AlbumVibes - EP + GenreHip-Hop/Rap + KindAAC audio file + Size6927466 + Total Time191007 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2017 + Date Modified2019-03-17T17:59:29Z + Date Added2019-03-17T17:59:29Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3643454956 + Play Date UTC2019-06-15T11:49:16Z + Skip Count2 + Skip Date2019-03-24T19:29:02Z + Release Date2017-01-09T12:00:00Z + Artwork Count1 + Sort AlbumVibes - EP + Sort ArtistR.Chris + Sort NameOnly 19 + Persistent IDB5BDA12316E09C0A + Explicit + Track TypeRemote + + 3373 + + Track ID3373 + NameThe Formula + ArtistRuss + Album ArtistRuss + AlbumThe Formula - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5941257 + Total Time166348 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2019-03-17T17:59:29Z + Date Added2019-03-17T17:59:29Z + Bit Rate256 + Sample Rate44100 + Play Count125 + Play Date3780497077 + Play Date UTC2023-10-18T15:04:37Z + Skip Count5 + Skip Date2022-05-28T12:53:10Z + Release Date2015-11-24T12:00:00Z + Normalization2193 + Artwork Count1 + Sort AlbumFormula - Single + Sort ArtistRuss + Sort NameFormula + Persistent ID207B8E1DE7B4F922 + Explicit + Track TypeRemote + Apple Music + + 3375 + + Track ID3375 + NameEnjoyed Your Bud + ArtistAfroman + Album ArtistAfroman + ComposerJoseph Foreman & John P Randall + AlbumMarijuana Music + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size15761509 + Total Time461662 + Disc Number1 + Disc Count1 + Track Number4 + Track Count17 + Year2013 + Date Modified2019-03-17T17:59:29Z + Date Added2019-03-17T17:59:29Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3766061264 + Play Date UTC2023-05-04T13:07:44Z + Skip Count6 + Skip Date2023-03-15T18:50:41Z + Release Date2013-07-12T12:00:00Z + Artwork Count1 + Sort AlbumMarijuana Music + Sort ArtistAfroman + Sort NameEnjoyed Your Bud + Persistent ID268B86CC35FD24B1 + Explicit + Track TypeRemote + Apple Music + + 3377 + + Track ID3377 + NameBetter Hope + ArtistFelix Snow & Wintertime + Album ArtistFelix Snow & Wintertime + ComposerFelix Snow & T'ziah Roy + AlbumNo Winter Without Snow - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6368835 + Total Time175775 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2017 + Date Modified2019-03-17T17:59:29Z + Date Added2019-03-17T17:59:29Z + Bit Rate256 + Sample Rate44100 + Play Count235 + Play Date3779902746 + Play Date UTC2023-10-11T17:59:06Z + Skip Count11 + Skip Date2021-09-14T18:52:32Z + Release Date2017-01-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNo Winter Without Snow - EP + Sort ArtistFelix Snow & Wintertime + Sort NameBetter Hope + Persistent ID326C41D6BFCB4F60 + Track TypeRemote + Apple Music + + 3379 + + Track ID3379 + NameYou Might Find Yours + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumYou Might Find Yours - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size5312651 + Total Time151028 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-03-21T16:21:17Z + Date Added2019-03-21T16:21:17Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3783762752 + Play Date UTC2023-11-25T10:12:32Z + Release Date2019-03-01T12:00:00Z + Artwork Count1 + Sort AlbumYou Might Find Yours - Single + Sort ArtistTom Rosenthal + Sort NameYou Might Find Yours + Persistent IDA98F1A7F64D76676 + Track TypeRemote + Apple Music + + 3381 + + Track ID3381 + NameI Like Girls (feat. Lil Skies) + ArtistPnB Rock + Album ArtistPnB Rock + ComposerRakim Hasheem Allen, Christian Ward, Kimetrius Foose, James Foye III, Austin Owens, Michael Williams, Ib Kornum & Lars Stagis + AlbumI Like Girls (feat. Lil Skies) - Single + GenreХип-хоп/рэп + KindApple Music AAC audio file + Size5649419 + Total Time155093 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-03-23T20:06:51Z + Date Added2019-03-23T20:06:51Z + Bit Rate256 + Sample Rate44100 + Play Count243 + Play Date3783780426 + Play Date UTC2023-11-25T15:07:06Z + Skip Count7 + Skip Date2021-11-04T17:22:27Z + Release Date2019-03-20T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumI Like Girls (feat. Lil Skies) - Single + Sort ArtistPnB Rock + Sort NameI Like Girls (feat. Lil Skies) + Persistent IDD1E1DF36AA7CF8DA + Explicit + Track TypeRemote + Apple Music + + 3383 + + Track ID3383 + NameBroken Romance (feat. Lexi the Lexiconist) + Artistmac moon + Album Artistmac moon + ComposerJustin Mcguinness + AlbumBroken Romance (feat. Lexi the Lexiconist) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5982696 + Total Time165731 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-03-30T20:00:16Z + Date Added2019-03-30T20:00:16Z + Bit Rate256 + Sample Rate44100 + Play Count101 + Play Date3760286032 + Play Date UTC2023-02-26T16:53:52Z + Skip Count4 + Skip Date2021-02-01T20:51:46Z + Release Date2019-02-08T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBroken Romance (feat. Lexi the Lexiconist) - Single + Sort Artistmac moon + Sort NameBroken Romance (feat. Lexi the Lexiconist) + Persistent ID7FC183EE75DB52B3 + Explicit + Track TypeRemote + Apple Music + + 3385 + + Track ID3385 + NameMy Neighbor Is a Drug Dealer + ArtistBeagles + Album ArtistBeagles + AlbumBeagles + GenrePop + KindApple Music AAC audio file + Size7795875 + Total Time187283 + Disc Number1 + Disc Count1 + Track Number2 + Track Count8 + Year2016 + Date Modified2019-03-31T21:48:40Z + Date Added2019-03-31T21:48:40Z + Bit Rate256 + Sample Rate44100 + Play Count74 + Play Date3781353038 + Play Date UTC2023-10-28T12:50:38Z + Skip Count2 + Skip Date2021-02-06T21:04:53Z + Release Date2016-06-10T12:00:00Z + Artwork Count1 + Sort AlbumBeagles + Sort ArtistBeagles + Sort NameMy Neighbor Is a Drug Dealer + Persistent ID0012C3BE9D6081D9 + Track TypeRemote + Apple Music + + 3387 + + Track ID3387 + NameBlack Guitar + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino & Amedeo Pace + AlbumPenny Sparkle + GenreAlternative + KindApple Music AAC audio file + Size11142474 + Total Time319627 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2010 + Date Modified2019-04-02T12:53:19Z + Date Added2019-04-02T12:53:19Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3783771247 + Play Date UTC2023-11-25T12:34:07Z + Skip Count2 + Skip Date2021-07-09T18:12:35Z + Release Date2010-09-13T12:00:00Z + Artwork Count1 + Sort AlbumPenny Sparkle + Sort ArtistBlonde Redhead + Sort NameBlack Guitar + Persistent ID0B3FE2A33CF51078 + Track TypeRemote + Apple Music + + 3389 + + Track ID3389 + Nameused to + ArtistJosh Golden + Album ArtistJosh Golden + ComposerKeith Varon & Joshua Lewis Golden + Albumused to - Single + GenrePop + KindApple Music AAC audio file + Size6583725 + Total Time181090 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-04-03T04:49:33Z + Date Added2019-04-03T04:49:33Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3761759517 + Play Date UTC2023-03-15T18:11:57Z + Release Date2017-10-06T12:00:00Z + Artwork Count1 + Sort Albumused to - Single + Sort ArtistJosh Golden + Sort Nameused to + Persistent IDF310C1D59926A70C + Explicit + Track TypeRemote + + 3391 + + Track ID3391 + NameLouis V. Lover + ArtistFelix Snow & Wintertime + Album ArtistFelix Snow & Wintertime + ComposerFelix Snow & T'ziah Roy + AlbumNo Winter Without Snow - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4928119 + Total Time128640 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2017 + Date Modified2019-04-03T14:32:31Z + Date Added2019-04-03T14:32:31Z + Bit Rate256 + Sample Rate44100 + Play Count74 + Play Date3773534339 + Play Date UTC2023-07-30T00:58:59Z + Skip Count3 + Skip Date2022-11-21T06:24:55Z + Release Date2017-01-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNo Winter Without Snow - EP + Sort ArtistFelix Snow & Wintertime + Sort NameLouis V. Lover + Persistent IDC8F1C4BD1626F523 + Track TypeRemote + Apple Music + + 3393 + + Track ID3393 + NameReal Deal Freestyle + ArtistFelix Snow & Wintertime + Album ArtistFelix Snow & Wintertime + ComposerFelix Snow & T'ziah Roy + AlbumNo Winter Without Snow - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5126839 + Total Time134563 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2017 + Date Modified2019-04-03T22:13:26Z + Date Added2019-04-03T22:13:26Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3771044602 + Play Date UTC2023-07-01T05:23:22Z + Skip Count1 + Skip Date2022-12-16T09:39:47Z + Release Date2017-01-13T12:00:00Z + Artwork Count1 + Sort AlbumNo Winter Without Snow - EP + Sort ArtistFelix Snow & Wintertime + Sort NameReal Deal Freestyle + Persistent ID0E382F924EFBF10D + Explicit + Track TypeRemote + Apple Music + + 3395 + + Track ID3395 + NameIn My Bag + ArtistFelix Snow & Wintertime + Album ArtistFelix Snow & Wintertime + ComposerFelix Snow & T'ziah Roy + AlbumNo Winter Without Snow - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6553079 + Total Time181748 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2017 + Date Modified2019-04-03T22:13:34Z + Date Added2019-04-03T22:13:34Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3779319378 + Play Date UTC2023-10-04T23:56:18Z + Skip Count2 + Skip Date2023-02-08T15:37:43Z + Release Date2017-01-13T12:00:00Z + Artwork Count1 + Sort AlbumNo Winter Without Snow - EP + Sort ArtistFelix Snow & Wintertime + Sort NameIn My Bag + Persistent ID6473C96CBBB3B25F + Explicit + Track TypeRemote + Apple Music + + 3397 + + Track ID3397 + NameSlide Thru + ArtistFelix Snow & Wintertime + Album ArtistFelix Snow & Wintertime + ComposerFelix Snow & T'ziah Roy + AlbumNo Winter Without Snow - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7665276 + Total Time210796 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year2017 + Date Modified2019-04-03T22:13:34Z + Date Added2019-04-03T22:13:34Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3781618112 + Play Date UTC2023-10-31T14:28:32Z + Skip Count2 + Skip Date2023-10-25T09:18:50Z + Release Date2017-01-13T12:00:00Z + Artwork Count1 + Sort AlbumNo Winter Without Snow - EP + Sort ArtistFelix Snow & Wintertime + Sort NameSlide Thru + Persistent ID80175920CBD5AACC + Explicit + Track TypeRemote + Apple Music + + 3399 + + Track ID3399 + NameWinter Workout Plan + ArtistFelix Snow & Wintertime + Album ArtistFelix Snow & Wintertime + ComposerFelix Snow & T'ziah Roy + AlbumNo Winter Without Snow - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5422282 + Total Time142826 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2017 + Date Modified2019-04-03T22:13:34Z + Date Added2019-04-03T22:13:34Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3776230295 + Play Date UTC2023-08-30T05:51:35Z + Skip Count1 + Skip Date2022-07-14T15:25:09Z + Release Date2017-01-13T12:00:00Z + Artwork Count1 + Sort AlbumNo Winter Without Snow - EP + Sort ArtistFelix Snow & Wintertime + Sort NameWinter Workout Plan + Persistent ID27950F48A13A273D + Track TypeRemote + Apple Music + + 3401 + + Track ID3401 + NameWhat’s Broken with You? + ArtistVaboh + Album ArtistVaboh + ComposerVaboh + AlbumWhat’s Broken with You? - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5713812 + Total Time157612 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-04-06T06:09:29Z + Date Added2019-04-06T06:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count58 + Play Date3763643836 + Play Date UTC2023-04-06T13:37:16Z + Skip Count2 + Skip Date2021-02-12T05:45:19Z + Release Date2019-03-15T12:00:00Z + Artwork Count1 + Sort AlbumWhat’s Broken with You? - Single + Sort ArtistVaboh + Sort NameWhat’s Broken with You? + Persistent ID098DA5905AF0EBA1 + Explicit + Track TypeRemote + Apple Music + + 3403 + + Track ID3403 + NameLester + ArtistDan & Drum + Album ArtistDan & Drum + ComposerDan & Drum + AlbumGrowl Pop + GenreR&B/Soul + KindApple Music AAC audio file + Size7970782 + Total Time219928 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2017 + Date Modified2019-04-07T13:19:48Z + Date Added2019-04-07T13:19:48Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3783666744 + Play Date UTC2023-11-24T07:32:24Z + Release Date2017-02-28T12:00:00Z + Artwork Count1 + Sort AlbumGrowl Pop + Sort ArtistDan & Drum + Sort NameLester + Persistent IDFF3480029D1826B0 + Track TypeRemote + Apple Music + + 3405 + + Track ID3405 + NameAll We Are + ArtistAndy Kong + Album ArtistAndy Kong + AlbumMeteor Showers - EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size9808994 + Total Time279876 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2015 + Date Modified2019-04-08T09:22:06Z + Date Added2019-04-08T09:22:06Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3779631312 + Play Date UTC2023-10-08T14:35:12Z + Skip Count1 + Skip Date2022-11-16T06:02:42Z + Release Date2015-05-12T12:00:00Z + Artwork Count1 + Sort AlbumMeteor Showers - EP + Sort ArtistAndy Kong + Sort NameAll We Are + Persistent ID78FB75E2C6322D2B + Track TypeRemote + Apple Music + + 3407 + + Track ID3407 + NameHow It Is (feat. The Plug) + ArtistRoddy Ricch, Chip & Yxng Bane + Album ArtistRoddy Ricch, Chip & Yxng Bane + AlbumHow It Is (feat. The Plug) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9663080 + Total Time277551 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-04-12T11:43:38Z + Date Added2019-04-12T11:43:38Z + Bit Rate256 + Sample Rate44100 + Play Count67 + Play Date3781465364 + Play Date UTC2023-10-29T20:02:44Z + Skip Count1 + Skip Date2022-10-25T17:11:07Z + Release Date2019-02-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHow It Is (feat. The Plug) - Single + Sort ArtistRoddy Ricch, Chip & Yxng Bane + Sort NameHow It Is (feat. The Plug) + Persistent ID6A522398492BE452 + Explicit + Track TypeRemote + Apple Music + + 3409 + + Track ID3409 + NameStray + ArtistGrace VanderWaal + Album ArtistGrace VanderWaal + ComposerGrace VanderWaal + AlbumStray - Single + GenrePop + KindApple Music AAC audio file + Size6844602 + Total Time190787 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-04-14T14:40:52Z + Date Added2019-04-14T14:40:52Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3780191708 + Play Date UTC2023-10-15T02:15:08Z + Release Date2019-02-22T12:00:00Z + Artwork Count1 + Sort AlbumStray - Single + Sort ArtistGrace VanderWaal + Sort NameStray + Persistent ID60BC7C27E28EBB16 + Track TypeRemote + Apple Music + + 3411 + + Track ID3411 + NameStay Up + ArtistEric Reprid + Album ArtistEric Reprid + ComposerShi Yi Liu + AlbumStay Up - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5286057 + Total Time141504 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-04-17T09:31:39Z + Date Added2019-04-17T09:31:39Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3767807064 + Play Date UTC2023-05-24T18:04:24Z + Release Date2019-03-08T12:00:00Z + Artwork Count1 + Sort AlbumStay Up - Single + Sort ArtistEric Reprid + Sort NameStay Up + Persistent ID8EDF785320453250 + Explicit + Track TypeRemote + Apple Music + + 3413 + + Track ID3413 + NameU & Us + ArtistQuinn XCII + Album ArtistQuinn XCII + ComposerMikael Temrowski, Imad Roy El-Amine, Roget Chahayed, Garrett Nash & Grant Yarber + AlbumFrom Michigan With Love + GenrePop + KindApple Music AAC audio file + Size7958447 + Total Time226000 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2019 + Date Modified2019-04-17T09:47:09Z + Date Added2019-04-17T09:47:09Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3775566145 + Play Date UTC2023-08-22T13:22:25Z + Skip Count1 + Skip Date2022-11-10T13:15:03Z + Release Date2019-02-15T12:00:00Z + Artwork Count1 + Sort AlbumFrom Michigan With Love + Sort ArtistQuinn XCII + Sort NameU & Us + Persistent ID754A25519CA31B3D + Track TypeRemote + Apple Music + + 3415 + + Track ID3415 + NameLUV ME + ArtistJay Prince + Album ArtistJay Prince + ComposerJazon Kawu-Eugenio + AlbumWONDER - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7176263 + Total Time202293 + Disc Number1 + Disc Count1 + Track Number4 + Track Count7 + Year2019 + Date Modified2019-04-17T11:07:50Z + Date Added2019-04-17T11:07:50Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count32 + Play Date3770015472 + Play Date UTC2023-06-19T07:31:12Z + Release Date2019-01-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWONDER - EP + Sort ArtistJay Prince + Sort NameLUV ME + Persistent ID6D3560C44854B88F + Explicit + Track TypeRemote + Apple Music + + 3417 + + Track ID3417 + NameLucy + ArtistMatt Easton + Album ArtistMatt Easton + ComposerMatt Easton + AlbumLucy - Single + GenrePop + KindApple Music AAC audio file + Size7665922 + Total Time217500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-04-17T16:50:32Z + Date Added2019-04-17T16:50:32Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count37 + Play Date3781062452 + Play Date UTC2023-10-25T04:07:32Z + Release Date2018-07-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLucy - Single + Sort ArtistMatt Easton + Sort NameLucy + Persistent IDD7B66168EF6E6646 + Explicit + Track TypeRemote + Apple Music + + 3419 + + Track ID3419 + NameBrother + ArtistMatt Easton + Album ArtistMatt Easton + AlbumThe Phantom Image - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8768320 + Total Time235998 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2015 + Date Modified2019-04-17T17:20:53Z + Date Added2019-04-17T17:20:53Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3780850271 + Play Date UTC2023-10-22T17:11:11Z + Skip Count2 + Skip Date2022-08-19T16:08:24Z + Release Date2015-05-04T12:00:00Z + Artwork Count1 + Sort AlbumPhantom Image - EP + Sort ArtistMatt Easton + Sort NameBrother + Persistent IDC8CDC7789E8C64EF + Explicit + Track TypeRemote + Apple Music + + 3421 + + Track ID3421 + NameGlisten + ArtistMwk + Album ArtistMwk + ComposerDylan MCD + AlbumGlisten - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5185134 + Total Time141000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-04-17T17:23:37Z + Date Added2019-04-17T17:23:37Z + Bit Rate256 + Sample Rate44100 + Play Count72 + Play Date3781317815 + Play Date UTC2023-10-28T03:03:35Z + Skip Count4 + Skip Date2022-09-17T05:41:38Z + Release Date2019-02-01T12:00:00Z + Artwork Count1 + Sort AlbumGlisten - Single + Sort ArtistMwk + Sort NameGlisten + Persistent IDA9C9703327BA1A78 + Explicit + Track TypeRemote + Apple Music + + 3423 + + Track ID3423 + NameAmerika + ArtistYoung the Giant + Album ArtistYoung the Giant + ComposerEric Cannata, Francois Comtois, Jacob Tilley, Payam Doostzadeh & Sameer Gadhia + AlbumHome of the Strange + GenreAlternative + KindApple Music AAC audio file + Size8802090 + Total Time240240 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2016 + Date Modified2019-04-17T17:25:57Z + Date Added2019-04-17T17:25:57Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3761722705 + Play Date UTC2023-03-15T07:58:25Z + Skip Count2 + Skip Date2022-11-02T14:31:21Z + Release Date2016-04-15T07:00:00Z + Artwork Count1 + Sort AlbumHome of the Strange + Sort ArtistYoung the Giant + Sort NameAmerika + Persistent ID619B44EE573E4405 + Track TypeRemote + Apple Music + + 3425 + + Track ID3425 + NameSomething to Believe In (Live Acoustic) + ArtistYoung the Giant + Album ArtistYoung the Giant + ComposerAlex Salibian, Eric Cannata, Francois Comtois, Jacob Tilley, Payam Doostzadeh & Sameer Gadhia + AlbumSomething to Believe In (Live Acoustic) - Single + GenreAlternative + KindApple Music AAC audio file + Size7949827 + Total Time224400 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2019-04-17T17:26:13Z + Date Added2019-04-17T17:26:13Z + Bit Rate256 + Sample Rate44100 + Play Count60 + Play Date3779697458 + Play Date UTC2023-10-09T08:57:38Z + Skip Count1 + Skip Date2022-07-16T13:53:41Z + Release Date2016-08-26T07:00:00Z + Artwork Count1 + Sort AlbumSomething to Believe In (Live Acoustic) - Single + Sort ArtistYoung the Giant + Sort NameSomething to Believe In (Live Acoustic) + Persistent IDAA317921D6349129 + Track TypeRemote + Apple Music + + 3427 + + Track ID3427 + NameRoy G. Rainbows + ArtistMatt Easton + Album ArtistMatt Easton + ComposerMatt Easton & Timothy P. Sullivan + AlbumRoy G. Rainbows - Single + GenrePop + KindApple Music AAC audio file + Size8322128 + Total Time235745 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-04-17T17:44:16Z + Date Added2019-04-17T17:44:16Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count26 + Play Date3783678602 + Play Date UTC2023-11-24T10:50:02Z + Release Date2018-05-25T12:00:00Z + Artwork Count1 + Sort AlbumRoy G. Rainbows - Single + Sort ArtistMatt Easton + Sort NameRoy G. Rainbows + Persistent IDDD0176FB610845E7 + Track TypeRemote + Apple Music + + 3429 + + Track ID3429 + NameSan Clemente Glass House + ArtistMatt Easton + Album ArtistMatt Easton + AlbumSan Clemente Glass House - Single + GenrePop + KindApple Music AAC audio file + Size10855676 + Total Time312115 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-04-18T05:27:35Z + Date Added2019-04-18T05:27:35Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3770624681 + Play Date UTC2023-06-26T08:44:41Z + Release Date2017-06-23T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSan Clemente Glass House - Single + Sort ArtistMatt Easton + Sort NameSan Clemente Glass House + Persistent ID72AAAE70A9C50964 + Track TypeRemote + Apple Music + + 3431 + + Track ID3431 + Namebad guy + ArtistBillie Eilish + Album ArtistBillie Eilish + ComposerFINNEAS & Billie Eilish + AlbumWHEN WE ALL FALL ASLEEP, WHERE DO WE GO? + GenreAlternative + KindApple Music AAC audio file + Size7204218 + Total Time194088 + Disc Number1 + Disc Count1 + Track Number2 + Track Count14 + Year2019 + Date Modified2019-04-18T08:12:03Z + Date Added2019-04-18T08:12:03Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3777373404 + Play Date UTC2023-09-12T11:23:24Z + Skip Count5 + Skip Date2022-08-19T16:11:17Z + Release Date2019-03-29T12:00:00Z + Artwork Count1 + Sort AlbumWHEN WE ALL FALL ASLEEP, WHERE DO WE GO? + Sort ArtistBillie Eilish + Sort Namebad guy + Persistent ID95B423119490A067 + Track TypeRemote + Apple Music + + 3433 + + Track ID3433 + NameNonstop + ArtistDrake + Album ArtistDrake + ComposerA. Graham, B. / Chambers & D. Wilson + AlbumScorpion + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8484864 + Total Time238613 + Disc Number1 + Disc Count2 + Track Number2 + Track Count12 + Year2018 + Date Modified2019-04-18T08:30:47Z + Date Added2019-04-18T08:30:47Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3783402993 + Play Date UTC2023-11-21T06:16:33Z + Release Date2018-06-29T12:00:00Z + Artwork Count1 + Sort AlbumScorpion + Sort ArtistDrake + Sort NameNonstop + Persistent ID11CE5F9E597F70A7 + Explicit + Track TypeRemote + Apple Music + + 3435 + + Track ID3435 + NameTalk + ArtistKhalid + Album ArtistKhalid + ComposerKhalid Robinson, Howard Lawrence & Guy Lawrence + AlbumFree Spirit + GenreR&B/Soul + KindApple Music AAC audio file + Size7147644 + Total Time197573 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2019 + Date Modified2019-04-18T12:20:14Z + Date Added2019-04-18T12:20:14Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3773127756 + Play Date UTC2023-07-25T08:02:36Z + Skip Count1 + Skip Date2019-05-01T14:37:06Z + Release Date2019-02-09T08:00:00Z + Artwork Count1 + Sort AlbumFree Spirit + Sort ArtistKhalid + Sort NameTalk + Persistent ID5FBF8045E0AA1172 + Track TypeRemote + Apple Music + + 3437 + + Track ID3437 + NameMurder on My Mind + ArtistYNW Melly + Album ArtistYNW Melly + AlbumI Am You + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9537248 + Total Time268434 + Disc Number1 + Disc Count1 + Track Number13 + Track Count15 + Year2017 + Date Modified2019-04-19T17:12:50Z + Date Added2019-04-19T17:12:50Z + Bit Rate256 + Sample Rate44100 + Play Count135 + Play Date3783771721 + Play Date UTC2023-11-25T12:42:01Z + Skip Count4 + Skip Date2021-01-25T11:38:51Z + Release Date2017-10-14T12:00:00Z + Artwork Count1 + Sort AlbumI Am You + Sort ArtistYNW Melly + Sort NameMurder on My Mind + Persistent ID672769B53BFFE88E + Explicit + Track TypeRemote + Apple Music + + 3439 + + Track ID3439 + NameAint Goin Back + ArtistRuss + Album ArtistRuss + ComposerRussell Vitale + AlbumAint Goin Back - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6132847 + Total Time170270 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-04-20T06:36:52Z + Date Added2019-04-20T06:36:52Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3766771079 + Play Date UTC2023-05-12T18:17:59Z + Skip Count4 + Skip Date2022-12-05T21:45:53Z + Release Date2019-03-26T07:00:00Z + Artwork Count1 + Sort AlbumAint Goin Back - Single + Sort ArtistRuss + Sort NameAint Goin Back + Persistent ID6C84B391C0369661 + Explicit + Track TypeRemote + Apple Music + + 3441 + + Track ID3441 + NameDrip Too Hard + ArtistLil Baby & Gunna + Album ArtistLil Baby & Gunna + ComposerDominique Jones, Sergio Kitchens & Chandler Durham + AlbumDrip Harder + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5428386 + Total Time145543 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2018 + Date Modified2019-04-20T19:46:45Z + Date Added2019-04-20T19:46:45Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3781435362 + Play Date UTC2023-10-29T11:42:42Z + Skip Count2 + Skip Date2021-05-30T21:00:59Z + Release Date2018-09-12T07:00:00Z + Loved + Artwork Count1 + Sort AlbumDrip Harder + Sort ArtistLil Baby & Gunna + Sort NameDrip Too Hard + Persistent ID7ECFA74BC47D921D + Explicit + Track TypeRemote + Apple Music + + 3443 + + Track ID3443 + NameHEY CHILD + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAndrew Wells, Casey Harris, Sam Nelson Harris & Adam Levin + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size7406427 + Total Time208653 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2019 + Date Modified2019-04-20T20:49:22Z + Date Added2019-04-20T20:49:22Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3770356804 + Play Date UTC2023-06-23T06:20:04Z + Skip Count2 + Skip Date2019-06-16T12:30:54Z + Release Date2019-04-19T07:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameHEY CHILD + Persistent ID5667BEDEE89079D4 + Track TypeRemote + Apple Music + + 3445 + + Track ID3445 + NameBad Husband (feat. X Ambassadors) + ArtistEminem + Album ArtistEminem + ComposerMarshall Mathers + AlbumRevival + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10167682 + Total Time287893 + Disc Number1 + Disc Count1 + Track Number10 + Track Count19 + Year2017 + Date Modified2019-04-21T08:38:15Z + Date Added2019-04-21T08:38:15Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3773761664 + Play Date UTC2023-08-01T16:07:44Z + Release Date2017-12-15T12:00:00Z + Artwork Count1 + Sort AlbumRevival + Sort ArtistEminem + Sort NameBad Husband (feat. X Ambassadors) + Persistent IDF375EECB43649C2C + Explicit + Track TypeRemote + Apple Music + + 3447 + + Track ID3447 + NameDEUTSCHLAND + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size11642783 + Total Time323031 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-04-22T12:13:50Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783766739 + Play Date UTC2023-11-25T11:18:59Z + Release Date2019-03-28T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameDEUTSCHLAND + Persistent ID4914DA0829EF2FA5 + Track TypeRemote + Apple Music + + 3449 + + Track ID3449 + NameRADIO + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size9745004 + Total Time277397 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-04-25T21:26:14Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3782381339 + Play Date UTC2023-11-09T10:28:59Z + Skip Count1 + Skip Date2022-10-22T09:10:38Z + Release Date2019-04-26T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameRADIO + Persistent IDD8F3B6CBA7CF4525 + Track TypeRemote + Apple Music + + 3451 + + Track ID3451 + NameZEIG DICH + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size9406896 + Total Time255845 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-05-16T21:09:28Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3782383561 + Play Date UTC2023-11-09T11:06:01Z + Skip Count1 + Skip Date2020-01-29T10:38:24Z + Release Date2019-05-17T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameZEIG DICH + Persistent IDB659B6A198BE6DA6 + Track TypeRemote + Apple Music + + 3453 + + Track ID3453 + NameAUSLÄNDER + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size8258147 + Total Time231603 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-05-16T21:44:43Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3782381062 + Play Date UTC2023-11-09T10:24:22Z + Skip Count2 + Skip Date2022-06-01T08:15:38Z + Release Date2019-05-17T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameAUSLÄNDER + Persistent ID176B08F63BE6658C + Track TypeRemote + Apple Music + + 3455 + + Track ID3455 + NameSEX + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size8427156 + Total Time236529 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-05-16T21:09:28Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3782383990 + Play Date UTC2023-11-09T11:13:10Z + Skip Count1 + Skip Date2022-05-18T11:28:24Z + Release Date2019-05-17T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameSEX + Persistent IDCCD454376E25BE24 + Track TypeRemote + Apple Music + + 3457 + + Track ID3457 + NamePUPPE + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size9732773 + Total Time273707 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-05-16T21:09:28Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3782385497 + Play Date UTC2023-11-09T11:38:17Z + Skip Count1 + Skip Date2022-02-14T16:43:51Z + Release Date2019-05-17T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NamePUPPE + Persistent IDFA82DDF5F259D342 + Track TypeRemote + Apple Music + + 3459 + + Track ID3459 + NameWAS ICH LIEBE + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size9569073 + Total Time269046 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-05-16T21:09:28Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783679616 + Play Date UTC2023-11-24T11:06:56Z + Skip Count1 + Skip Date2022-11-09T14:46:54Z + Release Date2019-05-17T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameWAS ICH LIEBE + Persistent ID30D188EA7399FDEC + Track TypeRemote + Apple Music + + 3461 + + Track ID3461 + NameDIAMANT + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size5580822 + Total Time154299 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-05-16T21:09:28Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3782386151 + Play Date UTC2023-11-09T11:49:11Z + Skip Count1 + Skip Date2021-02-28T00:22:39Z + Release Date2019-05-17T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameDIAMANT + Persistent ID76DC72A07B249CD4 + Track TypeRemote + Apple Music + + 3463 + + Track ID3463 + NameTATTOO + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size8794394 + Total Time251659 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-05-16T21:09:28Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3782814450 + Play Date UTC2023-11-14T10:47:30Z + Skip Count1 + Skip Date2022-02-26T18:30:43Z + Release Date2019-05-17T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameTATTOO + Persistent ID58BC23F53A769548 + Track TypeRemote + Apple Music + + 3465 + + Track ID3465 + NameHALLOMANN + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRAMMSTEIN + GenreMetal + KindApple Music AAC audio file + Size9080777 + Total Time251634 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2019 + Date Modified2019-04-22T12:13:50Z + Date Added2019-05-16T21:09:28Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3782389088 + Play Date UTC2023-11-09T12:38:08Z + Skip Count2 + Skip Date2022-02-09T11:09:01Z + Release Date2019-05-17T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameHALLOMANN + Persistent ID1133716A9E417A5D + Track TypeRemote + Apple Music + + 3467 + + Track ID3467 + NameAntidote + ArtistTYLERxCORDY + Album ArtistTYLERxCORDY + ComposerTyler Cordy & Dan Edinberg + AlbumAntidote - Single + GenrePop + KindApple Music AAC audio file + Size6495873 + Total Time174375 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-04-26T11:39:18Z + Date Added2019-04-26T11:39:18Z + Bit Rate256 + Sample Rate44100 + Play Count70 + Play Date3782901515 + Play Date UTC2023-11-15T10:58:35Z + Skip Count2 + Skip Date2022-09-30T16:10:29Z + Release Date2019-03-29T12:00:00Z + Artwork Count1 + Sort AlbumAntidote - Single + Sort ArtistTYLERxCORDY + Sort NameAntidote + Persistent ID0D6F9B64C01B34E5 + Track TypeRemote + Apple Music + + 3469 + + Track ID3469 + NameCute + ArtistCyrus + Album ArtistCyrus + ComposerCyrus + AlbumCute - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11249661 + Total Time321649 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-04-26T11:45:18Z + Date Added2019-04-26T11:45:18Z + Bit Rate256 + Sample Rate44100 + Play Count55 + Play Date3781062774 + Play Date UTC2023-10-25T04:12:54Z + Skip Count1 + Skip Date2023-02-07T12:17:13Z + Release Date2019-03-25T12:00:00Z + Artwork Count1 + Sort AlbumCute - Single + Sort ArtistCyrus + Sort NameCute + Persistent ID68001B4DFCA6A4F0 + Explicit + Track TypeRemote + Apple Music + + 3471 + + Track ID3471 + NameWhippin (feat. Felix Snow) + ArtistKiiara + Album ArtistKiiara + ComposerDavid Singer-Vine, Felix Snow, Jonathan Adam Mills, Kiiara Saulters & Kurtis Mckenzie + AlbumWhippin (feat. Felix Snow) - Single + GenrePop + KindApple Music AAC audio file + Size5846575 + Total Time160597 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2019-04-29T10:26:21Z + Date Added2019-04-29T10:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count77 + Play Date3776433384 + Play Date UTC2023-09-01T14:16:24Z + Release Date2017-04-12T12:00:00Z + Artwork Count1 + Sort AlbumWhippin (feat. Felix Snow) - Single + Sort ArtistKiiara + Sort NameWhippin (feat. Felix Snow) + Persistent IDAAAC6BE0273F079C + Explicit + Track TypeRemote + Apple Music + + 3473 + + Track ID3473 + NameWonderful Life + ArtistKatie Melua + Album ArtistKatie Melua + ComposerColin Vearncombe + AlbumWonderful Life - Single + GenrePop + KindApple Music AAC audio file + Size8543328 + Total Time247153 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2014 + Date Modified2019-05-02T05:05:46Z + Date Added2019-05-02T05:05:46Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780837275 + Play Date UTC2023-10-22T13:34:35Z + Skip Count1 + Skip Date2021-04-03T13:56:12Z + Release Date2014-11-07T12:00:00Z + Artwork Count1 + Sort AlbumWonderful Life - Single + Sort ArtistKatie Melua + Sort NameWonderful Life + Persistent ID2947565BF7408822 + Track TypeRemote + Apple Music + + 3475 + + Track ID3475 + NameCaffeine + ArtistLolo Zouaï + Album ArtistLolo Zouaï + ComposerLolo Zouaï & Stelios Phili + AlbumHigh Highs to Low Lows + GenrePop + KindApple Music AAC audio file + Size5784331 + Total Time159733 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2019 + Date Modified2019-05-03T07:31:14Z + Date Added2019-05-03T07:31:14Z + Bit Rate256 + Sample Rate44100 + Play Count110 + Play Date3776618901 + Play Date UTC2023-09-03T17:48:21Z + Skip Count6 + Skip Date2022-10-09T15:30:55Z + Release Date2019-04-19T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHigh Highs to Low Lows + Sort ArtistLolo Zouaï + Sort NameCaffeine + Persistent ID589E22E1DD15C708 + Track TypeRemote + Apple Music + + 3477 + + Track ID3477 + Name1000 Backyard Pools + ArtistHarry Teardrop + Album ArtistHarry Teardrop + ComposerHarry Teardrop, Drake Li & James Ivy + Album1000 Backyard Pools - EP + GenreAlternative + KindApple Music AAC audio file + Size7177273 + Total Time191750 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2019 + Date Modified2019-05-03T09:49:02Z + Date Added2019-05-03T09:49:02Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count45 + Play Date3781319247 + Play Date UTC2023-10-28T03:27:27Z + Skip Count1 + Skip Date2022-04-23T19:21:27Z + Release Date2019-05-31T12:00:00Z + Artwork Count1 + Sort Album1000 Backyard Pools - EP + Sort ArtistHarry Teardrop + Sort Name1000 Backyard Pools + Persistent IDA4FEE881C2D3B1FD + Track TypeRemote + Apple Music + + 3479 + + Track ID3479 + NameSober + ArtistWESLEY + Album ArtistWESLEY + ComposerWesley Stromberg, Dan Whittemore, Roland Spreckley & WESLEY + AlbumSober - Single + GenrePop + KindApple Music AAC audio file + Size6077713 + Total Time169076 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-05-05T09:04:12Z + Date Added2019-05-05T09:04:12Z + Bit Rate256 + Sample Rate44100 + Play Count70 + Play Date3780760673 + Play Date UTC2023-10-21T16:17:53Z + Skip Count5 + Skip Date2021-09-07T06:34:32Z + Release Date2019-02-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSober - Single + Sort ArtistWESLEY + Sort NameSober + Persistent IDCE6439E4A9807977 + Explicit + Track TypeRemote + Apple Music + + 3481 + + Track ID3481 + NameThe Bird + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumSYML + GenreAlternative + KindApple Music AAC audio file + Size9668559 + Total Time274355 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2019 + Date Modified2019-05-05T15:16:06Z + Date Added2019-05-05T15:16:06Z + Bit Rate256 + Sample Rate44100 + Play Count100 + Play Date3781573675 + Play Date UTC2023-10-31T02:07:55Z + Skip Count11 + Skip Date2023-09-28T13:29:35Z + Release Date2019-05-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSYML + Sort ArtistSYML + Sort NameBird + Persistent ID59A96FF8E4B7D14C + Track TypeRemote + Apple Music + + 3483 + + Track ID3483 + NameCarefree + ArtistRINI + Album ArtistRINI + AlbumRini + GenreR&B/Soul + KindApple Music AAC audio file + Size7390414 + Total Time216000 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2017 + Date Modified2019-05-05T16:07:13Z + Date Added2019-05-05T16:07:13Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3760421653 + Play Date UTC2023-02-28T06:34:13Z + Skip Count3 + Skip Date2023-10-26T16:20:40Z + Release Date2017-05-25T12:00:00Z + Album Rating60 + Album Rating Computed + Artwork Count1 + Sort AlbumRini + Sort ArtistRINI + Sort NameCarefree + Persistent ID74AB65D29DBFCED1 + Track TypeRemote + Apple Music + + 3485 + + Track ID3485 + NameWorld Wide Web + ArtistDanger Incorporated + Album ArtistDanger Incorporated + ComposerAustin Peacock & Keeling Thompson + AlbumWorld Wide Web - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size6759439 + Total Time183004 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2016 + Date Modified2019-05-05T16:19:10Z + Date Added2019-05-05T16:19:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count96 + Play Date3766691620 + Play Date UTC2023-05-11T20:13:40Z + Skip Count3 + Skip Date2022-11-16T20:29:10Z + Release Date2016-10-31T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWorld Wide Web - EP + Sort ArtistDanger Incorporated + Sort NameWorld Wide Web + Persistent IDC71722318966FF45 + Explicit + Track TypeRemote + Apple Music + + 3487 + + Track ID3487 + NameUs and Them + ArtistDerek Pope + Album ArtistDerek Pope + AlbumUs and Them - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6913462 + Total Time196517 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2019-05-07T06:24:51Z + Date Added2019-05-07T06:24:51Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count48 + Play Date3783692682 + Play Date UTC2023-11-24T14:44:42Z + Skip Count2 + Skip Date2019-06-26T13:56:24Z + Release Date2019-04-12T12:00:00Z + Artwork Count1 + Sort AlbumUs and Them - Single + Sort ArtistDerek Pope + Sort NameUs and Them + Persistent IDEDF7AAE7343F348C + Explicit + Track TypeRemote + Apple Music + + 3489 + + Track ID3489 + NameGoldenEye + ArtistDerek Pope + Album ArtistDerek Pope + AlbumGoldenEye - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7070223 + Total Time200000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-05-07T06:26:11Z + Date Added2019-05-07T06:26:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count46 + Play Date3767805065 + Play Date UTC2023-05-24T17:31:05Z + Skip Count2 + Skip Date2021-02-01T20:49:10Z + Release Date2017-08-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumGoldenEye - Single + Sort ArtistDerek Pope + Sort NameGoldenEye + Persistent IDBBA57BA5F47A0B7D + Explicit + Track TypeRemote + Apple Music + + 3491 + + Track ID3491 + NameForget It (feat. Oliver Tree) + ArtistGetter + Album ArtistGetter + AlbumRadical Dude! - EP + GenreDance + KindApple Music AAC audio file + Size7460792 + Total Time212632 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2016 + Date Modified2019-05-07T20:26:35Z + Date Added2019-05-07T20:26:35Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3780686481 + Play Date UTC2023-10-20T19:41:21Z + Skip Count1 + Skip Date2022-07-24T14:21:14Z + Release Date2016-03-11T08:00:00Z + Artwork Count1 + Sort AlbumRadical Dude! - EP + Sort ArtistGetter + Sort NameForget It (feat. Oliver Tree) + Persistent ID818FE754D4992519 + Track TypeRemote + Apple Music + + 3493 + + Track ID3493 + NameEnemy + ArtistOliver Tree & Whethan + Album ArtistOliver Tree + ComposerEthan Snoreck & Oliver Tree Nickell + AlbumAlien Boy - EP + GenreAlternative + KindAAC audio file + Size4275872 + Total Time114313 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2017 + Date Modified2019-05-07T20:31:54Z + Date Added2019-05-07T20:31:54Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3663147047 + Play Date UTC2020-01-29T09:50:47Z + Skip Count2 + Skip Date2019-05-17T07:37:58Z + Release Date2017-09-27T12:00:00Z + Artwork Count1 + Sort AlbumAlien Boy - EP + Sort ArtistOliver Tree & Whethan + Sort NameEnemy + Persistent ID4451296930A1A430 + Track TypeRemote + + 3495 + + Track ID3495 + NameSleep Deprived + ArtistVaboh + Album ArtistVaboh + ComposerVaboh + AlbumHow to Be Happy - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5185183 + Total Time140322 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2019 + Date Modified2019-05-11T09:56:33Z + Date Added2019-05-11T09:56:33Z + Bit Rate256 + Sample Rate44100 + Play Count149 + Play Date3782992840 + Play Date UTC2023-11-16T12:20:40Z + Skip Count10 + Skip Date2022-03-15T18:00:48Z + Release Date2019-04-19T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumHow to Be Happy - Single + Sort ArtistVaboh + Sort NameSleep Deprived + Persistent ID6ED03B36C0A18C9B + Explicit + Track TypeRemote + Apple Music + + 3497 + + Track ID3497 + NameI Met a Witch In the Woods + Artist$uicideboy$ + Album Artist$uicideboy$ + AlbumI Met a Witch In the Woods - Single + GenreHip-Hop/Rap + KindAAC audio file + Size4924103 + Total Time134192 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-05-11T13:01:08Z + Date Added2019-05-11T13:01:08Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3734258401 + Play Date UTC2022-05-01T11:00:01Z + Release Date2022-10-10T00:00:00Z + Artwork Count1 + Sort AlbumI Met a Witch In the Woods - Single + Sort Artist$uicideboy$ + Sort NameI Met a Witch In the Woods + Persistent ID5D04B86399F6A4F2 + Explicit + Track TypeRemote + + 3499 + + Track ID3499 + NameMistakes Before I’m Gone + ArtistVaboh + Album ArtistVaboh + ComposerVaboh + AlbumMistakes Before I’m Gone - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4902452 + Total Time132414 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-05-12T08:24:04Z + Date Added2019-05-12T08:24:04Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3781615139 + Play Date UTC2023-10-31T13:38:59Z + Skip Count4 + Skip Date2021-12-08T22:25:44Z + Release Date2018-04-10T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMistakes Before I’m Gone - Single + Sort ArtistVaboh + Sort NameMistakes Before I’m Gone + Persistent ID40A65ADEEC895E1A + Explicit + Track TypeRemote + Apple Music + + 3501 + + Track ID3501 + NameWalk It Talk It (feat. Drake) + ArtistMigos + Album ArtistMigos + ComposerQuavious Marshall, Kiari Cephus, Kirsnick Ball, Aubrey Graham, OG Parker & Jerel + AlbumCulture II + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9693961 + Total Time276147 + Disc Number1 + Disc Count1 + Track Number6 + Track Count24 + Year2018 + Date Modified2019-05-14T07:05:42Z + Date Added2019-05-14T07:05:42Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3781185368 + Play Date UTC2023-10-26T14:16:08Z + Release Date2018-01-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCulture II + Sort ArtistMigos + Sort NameWalk It Talk It (feat. Drake) + Persistent ID11895D979BBDAB8A + Explicit + Track TypeRemote + Apple Music + + 3503 + + Track ID3503 + NameVersace (feat. Drake) [Remix] + ArtistMigos + Album ArtistMigos + AlbumVersace (feat. Drake) [Remix] - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8780201 + Total Time246047 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2013 + Date Modified2019-05-14T09:39:58Z + Date Added2019-05-14T09:39:58Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3775819211 + Play Date UTC2023-08-25T11:40:11Z + Skip Count3 + Skip Date2023-05-30T05:55:15Z + Release Date2013-06-22T07:00:00Z + Normalization4508 + Artwork Count1 + Sort AlbumVersace (feat. Drake) [Remix] - Single + Sort ArtistMigos + Sort NameVersace (feat. Drake) [Remix] + Persistent ID2D6DBF407A9611C7 + Explicit + Track TypeRemote + Apple Music + + 3505 + + Track ID3505 + NameSmall Conversations at Parties + ArtistDerek Pope + Album ArtistDerek Pope + AlbumThe Introverted Socialite + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9080538 + Total Time257015 + Disc Number1 + Disc Count1 + Track Number4 + Track Count7 + Year2016 + Date Modified2019-05-14T15:51:48Z + Date Added2019-05-14T15:51:48Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count58 + Play Date3762757987 + Play Date UTC2023-03-27T07:33:07Z + Skip Count3 + Skip Date2019-05-20T05:43:42Z + Release Date2016-12-14T12:00:00Z + Artwork Count1 + Sort AlbumIntroverted Socialite + Sort ArtistDerek Pope + Sort NameSmall Conversations at Parties + Persistent ID595FF575A338C9D3 + Explicit + Track TypeRemote + Apple Music + + 3507 + + Track ID3507 + NameSki Mask (feat. Los & Sahtyre) + ArtistAtlantic Haze + Album ArtistAtlantic Haze + AlbumSki Mask (feat. Los & Sahtyre) - Single + GenreElectronic + KindApple Music AAC audio file + Size6000249 + Total Time162500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2019-05-15T04:17:30Z + Date Added2019-05-15T04:17:30Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781058715 + Play Date UTC2023-10-25T03:05:15Z + Release Date2016-07-29T12:00:00Z + Artwork Count1 + Sort AlbumSki Mask (feat. Los & Sahtyre) - Single + Sort ArtistAtlantic Haze + Sort NameSki Mask (feat. Los & Sahtyre) + Persistent IDAD157EE7313453A6 + Explicit + Track TypeRemote + Apple Music + + 3509 + + Track ID3509 + Name147Am + Artistmac moon + Album Artistmac moon + ComposerJustin Mcguinness + Album147Am - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3293645 + Total Time83204 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-05-17T07:41:19Z + Date Added2019-05-17T07:41:19Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781165567 + Play Date UTC2023-10-26T08:46:07Z + Skip Count1 + Skip Date2019-05-23T05:10:29Z + Release Date2019-02-15T12:00:00Z + Loved + Artwork Count1 + Sort Album147Am - Single + Sort Artistmac moon + Sort Name147Am + Persistent ID7CA4E26488008746 + Track TypeRemote + Apple Music + + 3511 + + Track ID3511 + NameBaptize Me + ArtistX Ambassadors & Jacob Banks + Album ArtistVarious Artists + ComposerSam Harris, Casey Harris, Eric Frederic & Adam Levin + AlbumFor the Throne (Music Inspired by the HBO Series Game of Thrones) + GenreAlternative + KindApple Music AAC audio file + Size7832091 + Total Time217933 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2019 + Date Modified2019-05-18T07:26:05Z + Date Added2019-05-18T07:26:05Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3783663943 + Play Date UTC2023-11-24T06:45:43Z + Release Date2019-04-26T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumFor the Throne (Music Inspired by the HBO Series Game of Thrones) + Sort ArtistX Ambassadors & Jacob Banks + Sort NameBaptize Me + Persistent IDCBBCB2982F365F59 + Track TypeRemote + Apple Music + + 3513 + + Track ID3513 + NameDrown + ArtistAndru + Album ArtistAndru + AlbumThe Negative Ep + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7303118 + Total Time204465 + Disc Number1 + Disc Count1 + Track Number3 + Track Count8 + Year2015 + Date Modified2019-05-20T04:55:21Z + Date Added2019-05-20T04:55:21Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3770104051 + Play Date UTC2023-06-20T08:07:31Z + Skip Count2 + Skip Date2021-10-25T13:53:01Z + Release Date2015-05-20T12:00:00Z + Artwork Count1 + Sort AlbumNegative Ep + Sort ArtistAndru + Sort NameDrown + Persistent IDFFAE6018B3D3B0F3 + Explicit + Track TypeRemote + Apple Music + + 3515 + + Track ID3515 + Namemonsoon + ArtistHippo Campus + Album ArtistHippo Campus + ComposerNathen Stocker, Whistler Allen, Jake Luppen & Zach Sutton + Albumlandmark + GenreAlternative + KindApple Music AAC audio file + Size8338472 + Total Time222820 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2016 + Date Modified2019-05-20T07:48:01Z + Date Added2019-05-20T07:48:01Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3762588180 + Play Date UTC2023-03-25T08:23:00Z + Release Date2016-11-21T12:00:00Z + Artwork Count1 + Sort Albumlandmark + Sort ArtistHippo Campus + Sort Namemonsoon + Persistent ID629191D54CBD83F4 + Track TypeRemote + Apple Music + + 3517 + + Track ID3517 + Nameheavy snow + ArtistChristian French + Album ArtistChristian French + ComposerChristian Blake French + Albumheavy snow - Single + GenrePop + KindApple Music AAC audio file + Size7788735 + Total Time221360 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-05-24T19:05:23Z + Date Added2019-05-24T19:05:23Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3783767130 + Play Date UTC2023-11-25T11:25:30Z + Skip Count1 + Skip Date2019-06-02T06:38:55Z + Release Date2019-03-15T12:00:00Z + Artwork Count1 + Sort Albumheavy snow - Single + Sort ArtistChristian French + Sort Nameheavy snow + Persistent ID6FD1D891F9C7B30F + Track TypeRemote + Apple Music + + 3519 + + Track ID3519 + NameUs vs the World + ArtistilyTOMMY + Album ArtistilyTOMMY + ComposerTommelik Ward + AlbumUs vs the World - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4680913 + Total Time122253 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-05-24T19:06:18Z + Date Added2019-05-24T19:06:18Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3767610645 + Play Date UTC2023-05-22T11:30:45Z + Skip Count3 + Skip Date2022-09-14T10:13:53Z + Release Date2019-03-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumUs vs the World - Single + Sort ArtistilyTOMMY + Sort NameUs vs the World + Persistent ID93322BE6F783A44E + Track TypeRemote + Apple Music + + 3521 + + Track ID3521 + NameGone (feat. Trevor Daniel) + Artistsober rob + Album Artistsober rob + ComposerRobert Connelly, Alex Dowbnia & Trevor Daniel + AlbumReset + GenreElectronic + KindApple Music AAC audio file + Size6834565 + Total Time190163 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2019 + Date Modified2019-05-25T10:09:02Z + Date Added2019-05-25T10:09:02Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3779899499 + Play Date UTC2023-10-11T17:04:59Z + Skip Count3 + Skip Date2022-06-21T04:58:29Z + Release Date2019-04-12T12:00:00Z + Artwork Count1 + Sort AlbumReset + Sort Artistsober rob + Sort NameGone (feat. Trevor Daniel) + Persistent ID160E1BED71DD767C + Track TypeRemote + Apple Music + + 3523 + + Track ID3523 + NameBackdrop + ArtistNgahere Wafer + Album ArtistNgahere Wafer + ComposerThomas Williams & Ngahere Wafer + AlbumBackdrop - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6106160 + Total Time173871 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-05-25T10:54:24Z + Date Added2019-05-25T10:54:24Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3778766450 + Play Date UTC2023-09-28T14:20:50Z + Skip Count1 + Skip Date2021-10-06T21:53:43Z + Release Date2019-04-11T12:00:00Z + Artwork Count1 + Sort AlbumBackdrop - Single + Sort ArtistNgahere Wafer + Sort NameBackdrop + Persistent ID5ACE08B4E8089029 + Track TypeRemote + Apple Music + + 3525 + + Track ID3525 + NameSix Feet Under + ArtistBillie Eilish + Album ArtistBillie Eilish + ComposerFINNEAS + AlbumSix Feet Under - Single + GenreAlternative + KindApple Music AAC audio file + Size6962618 + Total Time189613 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2019-05-26T07:04:27Z + Date Added2019-05-26T07:04:27Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3783402461 + Play Date UTC2023-11-21T06:07:41Z + Skip Count1 + Skip Date2020-04-18T11:12:13Z + Release Date2016-06-24T12:00:00Z + Artwork Count1 + Sort AlbumSix Feet Under - Single + Sort ArtistBillie Eilish + Sort NameSix Feet Under + Persistent IDB11C5B388CFF95F9 + Track TypeRemote + Apple Music + + 3527 + + Track ID3527 + NameIscariot + ArtistWALK THE MOON + Album ArtistWALK THE MOON + ComposerNicholas Petricca + AlbumWalk the Moon (Expanded Edition) + GenreAlternative + KindApple Music AAC audio file + Size11266011 + Total Time322640 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2012 + Date Modified2019-05-26T10:52:52Z + Date Added2019-05-26T10:52:52Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3781393901 + Play Date UTC2023-10-29T00:11:41Z + Skip Count2 + Skip Date2022-06-21T05:06:02Z + Release Date2012-06-15T07:00:00Z + Artwork Count1 + Sort AlbumWalk the Moon (Expanded Edition) + Sort ArtistWALK THE MOON + Sort NameIscariot + Persistent IDEC2051EF5D1040A4 + Track TypeRemote + Apple Music + + 3529 + + Track ID3529 + NameHOLD YOU DOWN + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerMalay Ho, Sam Harris, Casey Harris, Adam Levin, Eric Frederic & Jacob Kasher Hindlin + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size7068950 + Total Time197933 + Disc Number1 + Disc Count1 + Track Number11 + Year2019 + Date Modified2019-05-31T19:50:58Z + Date Added2019-05-31T19:50:58Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781052675 + Play Date UTC2023-10-25T01:24:35Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameHOLD YOU DOWN + Persistent ID4D6EAEEEE9036CC3 + Track TypeRemote + Apple Music + + 3531 + + Track ID3531 + NameNew Ones (feat. NoCap) + ArtistQuando Rondo + Album ArtistQuando Rondo + AlbumFrom the Neighborhood to the Stage + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6446447 + Total Time178449 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2019 + Date Modified2019-05-31T20:16:38Z + Date Added2019-05-31T20:16:38Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3773530686 + Play Date UTC2023-07-29T23:58:06Z + Skip Count4 + Skip Date2022-09-09T14:50:48Z + Release Date2019-05-10T12:00:00Z + Artwork Count1 + Sort AlbumFrom the Neighborhood to the Stage + Sort ArtistQuando Rondo + Sort NameNew Ones (feat. NoCap) + Persistent IDC15191CCBD1BBEB9 + Explicit + Track TypeRemote + Apple Music + + 3533 + + Track ID3533 + NameHyrule Temple + Artistbbno$ & DJ Yung Vamp + Album Artistbbno$ & DJ Yung Vamp + ComposerAlexander Gumuchian + AlbumHyrule Temple - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6378308 + Total Time177231 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-06-01T02:24:06Z + Date Added2019-06-01T02:24:06Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3762836354 + Play Date UTC2023-03-28T05:19:14Z + Skip Count4 + Skip Date2023-10-12T22:27:26Z + Release Date2019-03-22T12:00:00Z + Artwork Count1 + Sort AlbumHyrule Temple - Single + Sort Artistbbno$ & DJ Yung Vamp + Sort NameHyrule Temple + Persistent ID33C32634BC5EAC70 + Explicit + Track TypeRemote + Apple Music + + 3535 + + Track ID3535 + NameSunlight + ArtistNick Murphy + Album ArtistNick Murphy + ComposerDave Harrington & Nick Murphy + AlbumRun Fast Sleep Naked + GenreAlternative + KindApple Music AAC audio file + Size7598307 + Total Time211563 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2019 + Date Modified2019-06-01T07:12:15Z + Date Added2019-06-01T07:12:15Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3783354396 + Play Date UTC2023-11-20T16:46:36Z + Release Date2019-03-04T12:00:00Z + Artwork Count1 + Sort AlbumRun Fast Sleep Naked + Sort ArtistNick Murphy + Sort NameSunlight + Persistent IDBA183ACCC58201E1 + Track TypeRemote + Apple Music + + 3537 + + Track ID3537 + NameHonest + ArtistK.A.A.N., Bleverly Hills & Dem Jointz + Album ArtistK.A.A.N., Bleverly Hills & Dem Jointz + ComposerCourtney Blevins, Dwayne Allen Abernathy Jr & Brandon Perry + AlbumGathering + GenreHip-Hop + KindApple Music AAC audio file + Size7585367 + Total Time209917 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2019 + Date Modified2019-06-01T15:54:21Z + Date Added2019-06-01T15:54:21Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3770190402 + Play Date UTC2023-06-21T08:06:42Z + Skip Count2 + Skip Date2022-10-16T07:45:56Z + Release Date2019-03-04T12:00:00Z + Artwork Count1 + Sort AlbumGathering + Sort ArtistK.A.A.N., Bleverly Hills & Dem Jointz + Sort NameHonest + Persistent IDC35BB84DAFFFAA9A + Explicit + Track TypeRemote + Apple Music + + 3539 + + Track ID3539 + Nameminimal + ArtistROLE MODEL + Album ArtistROLE MODEL + ComposerTucker Pillsbury + Albumminimal - Single + GenreAlternative + KindApple Music AAC audio file + Size5944462 + Total Time163340 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-06-01T16:44:30Z + Date Added2019-06-01T16:44:30Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3782978420 + Play Date UTC2023-11-16T08:20:20Z + Skip Count3 + Skip Date2023-06-16T13:03:27Z + Release Date2019-05-03T12:00:00Z + Artwork Count1 + Sort Albumminimal - Single + Sort ArtistROLE MODEL + Sort Nameminimal + Persistent ID158C5868FD4550E8 + Explicit + Track TypeRemote + Apple Music + + 3541 + + Track ID3541 + NameTimes New Roman + ArtistSean McVerry + Album ArtistSean McVerry + AlbumTimes New Roman - Single + GenrePop + KindAAC audio file + Size7586394 + Total Time204048 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-06-01T18:23:12Z + Date Added2019-06-01T18:23:12Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3752138577 + Play Date UTC2022-11-24T09:42:57Z + Release Date2019-04-19T12:00:00Z + Artwork Count1 + Sort AlbumTimes New Roman - Single + Sort ArtistSean McVerry + Sort NameTimes New Roman + Persistent IDB03C48D88A8802E9 + Track TypeRemote + + 3543 + + Track ID3543 + NameLiving Wrong (feat. Glc & Nico Segal) + ArtistThe O'My's + Album ArtistThe O'My's + AlbumChicago Style + GenreRock + KindApple Music AAC audio file + Size12287631 + Total Time357695 + Disc Number1 + Disc Count1 + Track Number7 + Track Count7 + Year2012 + Date Modified2019-06-03T06:34:53Z + Date Added2019-06-03T06:34:53Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3781318372 + Play Date UTC2023-10-28T03:12:52Z + Skip Count4 + Skip Date2022-04-16T22:57:30Z + Release Date2012-09-18T12:00:00Z + Artwork Count1 + Sort AlbumChicago Style + Sort Album ArtistO'My's + Sort ArtistO'My's + Sort NameLiving Wrong (feat. Glc & Nico Segal) + Persistent ID4B40B7BD95AF1D98 + Track TypeRemote + Apple Music + + 3545 + + Track ID3545 + NameI Loved You + ArtistiLoveMakonnen + Album ArtistiLoveMakonnen + ComposeriLoveMakonnen + AlbumI LOVE MAKONNEN 2 + GenreHip-Hop + KindApple Music AAC audio file + Size12047831 + Total Time346700 + Disc Number1 + Disc Count1 + Track Number7 + Track Count7 + Year2015 + Date Modified2019-06-03T07:36:27Z + Date Added2019-06-03T07:36:27Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3773820617 + Play Date UTC2023-08-02T08:30:17Z + Skip Count1 + Skip Date2019-06-03T10:43:44Z + Release Date2015-11-20T12:00:00Z + Artwork Count1 + Sort AlbumI LOVE MAKONNEN 2 + Sort ArtistiLoveMakonnen + Sort NameI Loved You + Persistent IDBB0D4F5B1F9FA13C + Track TypeRemote + Apple Music + + 3547 + + Track ID3547 + NameWalking Down the Line + ArtistKids These Days + Album ArtistKids These Days + ComposerErin Stewart, John Paul Floyd, Nicolas Segal, Rajiv Halim, Victor Mensah, Liam Cunningham & Lane Beckstrom,Greg Landfair Jr + AlbumHard Times - EP + GenreAlternative + KindApple Music AAC audio file + Size9489596 + Total Time264192 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2011 + Date Modified2019-06-03T09:45:54Z + Date Added2019-06-03T09:45:54Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3771825015 + Play Date UTC2023-07-10T06:10:15Z + Skip Count1 + Skip Date2021-06-18T19:35:47Z + Release Date2011-06-28T12:00:00Z + Artwork Count1 + Sort AlbumHard Times - EP + Sort ArtistKids These Days + Sort NameWalking Down the Line + Persistent ID150CBEBBDB44A956 + Track TypeRemote + Apple Music + + 3549 + + Track ID3549 + NameAdolescent + ArtistAndru + Album ArtistAndru + AlbumThe Negative Ep + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7455618 + Total Time212014 + Disc Number1 + Disc Count1 + Track Number1 + Track Count8 + Year2015 + Date Modified2019-06-03T10:53:46Z + Date Added2019-06-03T10:53:46Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3770358662 + Play Date UTC2023-06-23T06:51:02Z + Skip Count6 + Skip Date2022-08-06T11:03:18Z + Release Date2015-05-20T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNegative Ep + Sort ArtistAndru + Sort NameAdolescent + Persistent ID1527B118BAF3841A + Explicit + Track TypeRemote + Apple Music + + 3551 + + Track ID3551 + NameOld Town Road (feat. Billy Ray Cyrus) [Remix] + ArtistLil Nas X + Album ArtistLil Nas X + ComposerBilly Ray Cyrus, Montero Lamar Hill, Michael Trent Reznor, Atticus Matthew Ross & Jocelyn Donald + AlbumOld Town Road (feat. Billy Ray Cyrus) [Remix] - Single + GenreCountry + KindApple Music AAC audio file + Size5779303 + Total Time157067 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-06-03T10:57:10Z + Date Added2019-06-03T10:57:10Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3782982014 + Play Date UTC2023-11-16T09:20:14Z + Skip Count3 + Skip Date2022-04-23T21:00:19Z + Release Date2019-04-05T07:00:00Z + Artwork Count1 + Sort AlbumOld Town Road (feat. Billy Ray Cyrus) [Remix] - Single + Sort ArtistLil Nas X + Sort NameOld Town Road (feat. Billy Ray Cyrus) [Remix] + Persistent IDDD86B6238E61DFB4 + Track TypeRemote + Apple Music + + 3553 + + Track ID3553 + NameBillie Jean$ + ArtistDrippetrippe + Album ArtistDrippetrippe + ComposerDrippetrippe & Lamarcus Walker + AlbumBillie Jean$ - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5539069 + Total Time150465 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-06-03T10:59:24Z + Date Added2019-06-03T10:59:24Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3781243040 + Play Date UTC2023-10-27T06:17:20Z + Skip Count2 + Skip Date2023-10-31T13:04:43Z + Release Date2019-05-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBillie Jean$ - Single + Sort ArtistDrippetrippe + Sort NameBillie Jean$ + Persistent IDA72F027E4A0A86D8 + Explicit + Track TypeRemote + Apple Music + + 3555 + + Track ID3555 + NameOld Town Road (feat. Billy Ray Cyrus) + ArtistLil Nas X + GenreHip-Hop/Rap + KindMPEG-4 video file + Size68011152 + Total Time308933 + Year2019 + Date Modified2019-06-03T11:03:40Z + Date Added2019-06-03T11:03:40Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3738691545 + Play Date UTC2022-06-21T18:25:45Z + Skip Count4 + Skip Date2022-06-06T22:26:09Z + Release Date2019-05-17T07:00:00Z + Artwork Count1 + Sort ArtistLil Nas X + Sort NameOld Town Road (feat. Billy Ray Cyrus) + Persistent ID859A1E85A4C2BCFA + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 3557 + + Track ID3557 + NameKill Yourself (Part III) + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumMy Liver Will Handle What My Heart Can't + GenreHip-Hop + KindApple Music AAC audio file + Size5407126 + Total Time145078 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2015 + Date Modified2019-06-04T14:25:33Z + Date Added2019-06-04T14:25:33Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3783453984 + Play Date UTC2023-11-21T20:26:24Z + Skip Count1 + Skip Date2022-01-03T18:35:04Z + Release Date2015-09-21T12:00:00Z + Artwork Count1 + Sort AlbumMy Liver Will Handle What My Heart Can't + Sort Artist$uicideboy$ + Sort NameKill Yourself (Part III) + Persistent ID8E4703278B0EEE26 + Explicit + Track TypeRemote + Apple Music + + 3559 + + Track ID3559 + NameKilling 2 Birds with 22 Stones (feat. MUNKY) + Artist$uicideboy$ & Trais Barker + Album Artist$uicideboy$ & Travis Barker + ComposerAristos Petrou & Scott Arceneaux Jr. + AlbumLive Fast, Die Whenever - EP + GenreHip-Hop + KindApple Music AAC audio file + Size5256502 + Total Time143259 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2019 + Date Modified2019-06-04T14:56:58Z + Date Added2019-06-04T14:56:58Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3779864982 + Play Date UTC2023-10-11T07:29:42Z + Skip Count1 + Skip Date2022-11-29T16:10:30Z + Release Date2019-05-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLive Fast, Die Whenever - EP + Sort Artist$uicideboy$ & Trais Barker + Sort NameKilling 2 Birds with 22 Stones (feat. MUNKY) + Persistent IDDC50B5EF739C2632 + Explicit + Track TypeRemote + Apple Music + + 3561 + + Track ID3561 + NameCool People In LA --- + ArtistBret James + Album ArtistBret James + ComposerBret Loehr + AlbumCool - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size8659021 + Total Time243187 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2019 + Date Modified2019-06-11T05:27:47Z + Date Added2019-06-11T05:27:47Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3783593747 + Play Date UTC2023-11-23T11:15:47Z + Skip Count4 + Skip Date2023-03-15T12:08:31Z + Release Date2019-04-05T12:00:00Z + Artwork Count1 + Sort AlbumCool - EP + Sort ArtistBret James + Persistent IDFED3AC602B5C64A7 + Explicit + Track TypeRemote + Apple Music + + 3563 + + Track ID3563 + NameI Lost a Friend + ArtistFINNEAS + Album ArtistFINNEAS + ComposerFINNEAS + AlbumI Lost a Friend - Single + GenrePop + KindApple Music AAC audio file + Size8198066 + Total Time237020 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-06-11T05:45:22Z + Date Added2019-06-11T05:45:22Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3783780664 + Play Date UTC2023-11-25T15:11:04Z + Skip Count2 + Skip Date2022-11-14T16:45:25Z + Release Date2019-05-03T12:00:00Z + Artwork Count1 + Sort AlbumI Lost a Friend - Single + Sort ArtistFINNEAS + Sort NameI Lost a Friend + Persistent ID9154B7D78EEEAD59 + Track TypeRemote + Apple Music + + 3565 + + Track ID3565 + NameCONFIDENCE (feat. K.Flay) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris, Adam Levine, Kristine Flaherty, Julian Gramma & Dylan Cleary Krell + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size6408523 + Total Time173373 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2019 + Date Modified2019-06-14T05:35:35Z + Date Added2019-06-14T05:35:35Z + Bit Rate256 + Sample Rate44100 + Play Count60 + Play Date3767710845 + Play Date UTC2023-05-23T15:20:45Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameCONFIDENCE (feat. K.Flay) + Persistent ID51F711222B087A1B + Track TypeRemote + Apple Music + + 3567 + + Track ID3567 + NameQUICKSAND + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris, Adam Levin, Jayson Dezuzio & Eric Frederic + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size6774777 + Total Time189827 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2019 + Date Modified2019-06-14T05:37:39Z + Date Added2019-06-14T05:37:39Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3772623634 + Play Date UTC2023-07-19T12:00:34Z + Skip Count3 + Skip Date2022-04-30T07:37:55Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameQUICKSAND + Persistent ID884EFE361DBDFB92 + Track TypeRemote + Apple Music + + 3569 + + Track ID3569 + NameRULE + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris, Adam Levin & James Ho + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size7404313 + Total Time205960 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2019 + Date Modified2019-06-14T06:22:25Z + Date Added2019-06-14T06:22:25Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3783694971 + Play Date UTC2023-11-24T15:22:51Z + Skip Count1 + Skip Date2022-04-16T22:56:01Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameRULE + Persistent ID30DF76BACC1D1327 + Clean + Track TypeRemote + Apple Music + + 3571 + + Track ID3571 + NameHISTORY + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris & Adam Levin + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size8966956 + Total Time257680 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2019 + Date Modified2019-06-14T06:22:25Z + Date Added2019-06-14T06:22:25Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3781394492 + Play Date UTC2023-10-29T00:21:32Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameHISTORY + Persistent IDAE2335FB2971DCBD + Track TypeRemote + Apple Music + + 3573 + + Track ID3573 + NameRECOVER + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris, Adam Levin, Eric Frederic & Justin Tranter + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size7587689 + Total Time212693 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2019 + Date Modified2019-06-14T06:22:25Z + Date Added2019-06-14T06:22:25Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3767798611 + Play Date UTC2023-05-24T15:43:31Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameRECOVER + Persistent ID78708BD90225BEB6 + Clean + Track TypeRemote + Apple Music + + 3575 + + Track ID3575 + NameWASTELAND + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris, Adam Levin & Eric Frederic + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size6917882 + Total Time188933 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2019 + Date Modified2019-06-14T06:22:25Z + Date Added2019-06-14T06:22:25Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3770534735 + Play Date UTC2023-06-25T07:45:35Z + Skip Date2022-10-09T16:15:09Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameWASTELAND + Persistent IDA6BB03B9BE130B49 + Track TypeRemote + Apple Music + + 3577 + + Track ID3577 + NameSHADOWS + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris, Adam Levin, Eric Frederic, Emily Warren & Jayson Dezuzio + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size6897146 + Total Time194640 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2019 + Date Modified2019-06-14T06:22:25Z + Date Added2019-06-14T06:22:25Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3776170618 + Play Date UTC2023-08-29T13:16:58Z + Skip Count4 + Skip Date2022-07-15T10:33:55Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameSHADOWS + Persistent IDF58D0CA91F8CC61E + Track TypeRemote + Apple Music + + 3579 + + Track ID3579 + NameI DON’T KNOW HOW TO PRAY + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris & Adam Levin + AlbumORION + GenreAlternative + KindApple Music AAC audio file + Size4776583 + Total Time133453 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2019 + Date Modified2019-06-14T06:22:25Z + Date Added2019-06-14T06:22:25Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3775742783 + Play Date UTC2023-08-24T14:26:23Z + Skip Count1 + Skip Date2022-08-19T16:10:18Z + Release Date2019-06-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumORION + Sort ArtistX Ambassadors + Sort NameI DON’T KNOW HOW TO PRAY + Persistent ID1A5132500FD64570 + Track TypeRemote + Apple Music + + 3581 + + Track ID3581 + NameMake It Last + ArtistTherr Maitz + Album ArtistTherr Maitz + AlbumUnicorn + GenreAlternative + KindMPEG-4 video file + Size44853112 + Total Time198083 + Disc Number1 + Disc Count1 + Track Number16 + Track Count17 + Year2015 + Date Modified2019-06-14T06:24:48Z + Date Added2019-06-14T06:24:48Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3761061132 + Play Date UTC2023-03-07T16:12:12Z + Skip Count4 + Skip Date2022-02-12T22:33:41Z + Release Date2015-03-04T08:00:00Z + Artwork Count1 + Sort AlbumUnicorn + Sort ArtistTherr Maitz + Sort NameMake It Last + Persistent ID3C327CBAA0FB8653 + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 3583 + + Track ID3583 + NamePop Out Again (feat. Lil Baby & Gunna) + ArtistPolo G + Album ArtistPolo G + ComposerPolo G, Lil Tjay, João Victor Alba Duarte & Dylan Berg + AlbumDie a Legend + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7959066 + Total Time223787 + Disc Number1 + Disc Count1 + Track Number14 + Track Count14 + Year2019 + Date Modified2019-06-22T19:58:52Z + Date Added2019-06-22T19:58:52Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3783774395 + Play Date UTC2023-11-25T13:26:35Z + Skip Count2 + Skip Date2022-11-10T19:24:14Z + Release Date2019-06-07T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDie a Legend + Sort ArtistPolo G + Sort NamePop Out Again (feat. Lil Baby & Gunna) + Persistent ID236045ED9E5E31D8 + Explicit + Track TypeRemote + Apple Music + + 3585 + + Track ID3585 + NameOut Tha Mud + ArtistRoddy Ricch + Album ArtistRoddy Ricch + ComposerJune James & Rodrick Moore + AlbumOut Tha Mud - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7603116 + Total Time212052 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-06-22T19:58:59Z + Date Added2019-06-22T19:58:59Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3768311010 + Play Date UTC2023-05-30T14:03:30Z + Skip Count1 + Skip Date2022-08-30T06:47:55Z + Release Date2019-05-31T07:00:00Z + Artwork Count1 + Sort AlbumOut Tha Mud - Single + Sort ArtistRoddy Ricch + Sort NameOut Tha Mud + Persistent ID7BB5F9F7B0026C83 + Explicit + Track TypeRemote + Apple Music + + 3587 + + Track ID3587 + NamePARANOID + ArtistRuss + Album ArtistRuss + ComposerRuss + AlbumPARANOID - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6563228 + Total Time181933 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2019-06-22T20:01:22Z + Date Added2019-06-22T20:01:22Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3770986069 + Play Date UTC2023-06-30T13:07:49Z + Skip Count4 + Skip Date2022-10-19T16:40:02Z + Release Date2019-06-06T12:00:00Z + Artwork Count1 + Sort AlbumPARANOID - Single + Sort ArtistRuss + Sort NamePARANOID + Persistent IDD15A5F8C96257FE4 + Explicit + Track TypeRemote + Apple Music + + 3589 + + Track ID3589 + NameThe War + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumIn My Body - EP + GenreAlternative + KindApple Music AAC audio file + Size12144614 + Total Time354265 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2016 + Date Modified2019-06-26T15:39:41Z + Date Added2019-06-26T15:39:41Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3760604390 + Play Date UTC2023-03-02T09:19:50Z + Skip Count5 + Skip Date2022-04-23T18:14:20Z + Release Date2016-09-09T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization1719 + Artwork Count1 + Sort AlbumIn My Body - EP + Sort ArtistSYML + Sort NameWar + Persistent ID9B964C78063917C2 + Track TypeRemote + Apple Music + + 3591 + + Track ID3591 + NameRansom + ArtistLil Tecca + Album ArtistLil Tecca + ComposerNick Mira, Taz Taylor & Tyler-Justin Anthony Sharpe + AlbumRansom - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4873705 + Total Time131248 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-07-09T13:17:44Z + Date Added2019-07-09T13:17:44Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3783685419 + Play Date UTC2023-11-24T12:43:39Z + Skip Count3 + Skip Date2022-11-28T16:35:54Z + Release Date2019-05-22T07:00:00Z + Artwork Count1 + Sort AlbumRansom - Single + Sort ArtistLil Tecca + Sort NameRansom + Persistent IDC7AD86E237EC927A + Explicit + Track TypeRemote + Apple Music + + 3593 + + Track ID3593 + NameRainy Days with You (feat. Khai Dreams) + ArtistRudeManners + Album ArtistRudeManners + ComposerRudeManners + AlbumRainy Days with You (feat. Khai Dreams) - Single + GenreDowntempo + KindApple Music AAC audio file + Size5257136 + Total Time147644 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-07-10T19:35:16Z + Date Added2019-07-10T19:35:16Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3780125766 + Play Date UTC2023-10-14T07:56:06Z + Release Date2017-03-09T12:00:00Z + Artwork Count1 + Sort AlbumRainy Days with You (feat. Khai Dreams) - Single + Sort ArtistRudeManners + Sort NameRainy Days with You (feat. Khai Dreams) + Persistent ID83D1F654370BF503 + Track TypeRemote + Apple Music + + 3595 + + Track ID3595 + NamePush Off + ArtistThe Palms + Album ArtistThe Palms + AlbumPush Off - Single + GenreAlternative + KindApple Music AAC audio file + Size8098175 + Total Time230950 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2019-07-10T20:07:04Z + Date Added2019-07-10T20:07:04Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3780391052 + Play Date UTC2023-10-17T09:37:32Z + Release Date2015-04-01T12:00:00Z + Artwork Count1 + Sort AlbumPush Off - Single + Sort Album ArtistPalms + Sort ArtistPalms + Sort NamePush Off + Persistent IDBBF7EE7F0AEB5F40 + Explicit + Track TypeRemote + Apple Music + + 3597 + + Track ID3597 + NameAll4you + ArtistThe Palms + Album ArtistThe Palms + AlbumSway - EP + GenreAlternative + KindApple Music AAC audio file + Size8254638 + Total Time220462 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2016 + Date Modified2019-07-10T20:14:16Z + Date Added2019-07-10T20:14:16Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3776345122 + Play Date UTC2023-08-31T13:45:22Z + Release Date2016-08-05T12:00:00Z + Artwork Count1 + Sort AlbumSway - EP + Sort Album ArtistPalms + Sort ArtistPalms + Sort NameAll4you + Persistent ID66EB36B4748C4121 + Track TypeRemote + Apple Music + + 3599 + + Track ID3599 + NameThis Bitch + ArtistThe Palms + Album ArtistThe Palms + AlbumThis Bitch - Single + GenreAlternative + KindApple Music AAC audio file + Size7399163 + Total Time208018 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-07-10T20:16:24Z + Date Added2019-07-10T20:16:24Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3776170302 + Play Date UTC2023-08-29T13:11:42Z + Skip Count1 + Skip Date2019-07-11T06:33:29Z + Release Date2017-10-06T12:00:00Z + Artwork Count1 + Sort AlbumThis Bitch - Single + Sort Album ArtistPalms + Sort ArtistPalms + Sort NameThis Bitch + Persistent ID1A82241239BC98F8 + Track TypeRemote + Apple Music + + 3601 + + Track ID3601 + NameLuna + ArtistJon Waltz + Album ArtistJon Waltz + ComposerDanny Dwyer, Colin Moriarty, Jon Savare Walter & Eric Raymond Lynch + AlbumMonochrome + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6320129 + Total Time178462 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2019 + Date Modified2019-07-12T18:50:06Z + Date Added2019-07-12T18:50:06Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3773667896 + Play Date UTC2023-07-31T14:04:56Z + Skip Count3 + Skip Date2022-11-02T05:15:01Z + Release Date2019-06-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMonochrome + Sort ArtistJon Waltz + Sort NameLuna + Persistent ID8A59C939F4E55965 + Track TypeRemote + Apple Music + + 3603 + + Track ID3603 + NameRescue Me + ArtistOneRepublic + Album ArtistOneRepublic + ComposerBrent Kutzle & Ryan Tedder + AlbumRescue Me - Single + GenrePop + KindApple Music AAC audio file + Size5819037 + Total Time158900 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-07-12T19:00:41Z + Date Added2019-07-12T19:00:41Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3782814045 + Play Date UTC2023-11-14T10:40:45Z + Skip Count5 + Skip Date2022-10-05T05:45:08Z + Release Date2019-05-17T12:00:00Z + Artwork Count1 + Sort AlbumRescue Me - Single + Sort ArtistOneRepublic + Sort NameRescue Me + Persistent ID0A8155E94C4A0981 + Track TypeRemote + Apple Music + + 3605 + + Track ID3605 + Namedead yet (with phem) + Artistgabriel black + Album Artistgabriel black + Composergabriel black, Cisco Adler, Austen Afridi & phem + Albumdead yet (with phem) - Single + GenreAlternative + KindApple Music AAC audio file + Size5914085 + Total Time161867 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-07-13T08:42:00Z + Date Added2019-07-13T08:42:00Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3780776305 + Play Date UTC2023-10-21T20:38:25Z + Skip Count3 + Skip Date2022-04-16T22:54:32Z + Release Date2019-06-21T12:00:00Z + Artwork Count1 + Sort Albumdead yet (with phem) - Single + Sort Artistgabriel black + Sort Namedead yet (with phem) + Persistent IDD37DCB22025A659F + Explicit + Track TypeRemote + Apple Music + + 3607 + + Track ID3607 + NameSome Other Way + ArtistDerek Pope + Album ArtistDerek Pope + AlbumSome Other Way - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6215959 + Total Time175821 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2019-07-13T08:49:08Z + Date Added2019-07-13T08:49:08Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count23 + Play Date3766061959 + Play Date UTC2023-05-04T13:19:19Z + Skip Count2 + Skip Date2019-07-18T13:35:56Z + Release Date2019-06-05T12:00:00Z + Artwork Count1 + Sort AlbumSome Other Way - Single + Sort ArtistDerek Pope + Sort NameSome Other Way + Persistent IDD8599105FD0C24A3 + Explicit + Track TypeRemote + Apple Music + + 3609 + + Track ID3609 + NameInbetween + ArtistRuss + Album ArtistRuss + AlbumInbetween - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size5817440 + Total Time162795 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2019-07-13T09:06:08Z + Date Added2019-07-13T09:06:08Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3767702108 + Play Date UTC2023-05-23T12:55:08Z + Skip Count1 + Skip Date2022-08-16T16:34:14Z + Release Date2016-01-25T12:00:00Z + Artwork Count1 + Sort AlbumInbetween - Single + Sort ArtistRuss + Sort NameInbetween + Persistent ID995FA0C10F29CC17 + Explicit + Track TypeRemote + Apple Music + + 3611 + + Track ID3611 + NameGoodbye + ArtistRuss + Album ArtistRuss + AlbumPink Elephant + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8917410 + Total Time252858 + Disc Number1 + Disc Count1 + Track Number1 + Track Count8 + Year2014 + Date Modified2019-07-13T09:08:47Z + Date Added2019-07-13T09:08:47Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3780135477 + Play Date UTC2023-10-14T10:37:57Z + Skip Count2 + Skip Date2021-05-11T13:39:06Z + Release Date2014-01-23T12:00:00Z + Artwork Count1 + Sort AlbumPink Elephant + Sort ArtistRuss + Sort NameGoodbye + Persistent ID3CF9EEF8894FEF28 + Explicit + Track TypeRemote + Apple Music + + 3613 + + Track ID3613 + NameGive Me Peace of Mind + Artistdandelion hands + Album Artistdandelion hands + Album{Commissions III] + GenreAlternative + KindApple Music AAC audio file + Size6320660 + Total Time178110 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2017 + Date Modified2019-07-14T13:21:13Z + Date Added2019-07-14T13:21:13Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3780192881 + Play Date UTC2023-10-15T02:34:41Z + Skip Count1 + Skip Date2019-07-16T08:54:06Z + Release Date2017-01-01T12:00:00Z + Artwork Count1 + Sort Album{Commissions III] + Sort Artistdandelion hands + Sort NameGive Me Peace of Mind + Persistent ID64B56E509F93A73C + Track TypeRemote + Apple Music + + 3615 + + Track ID3615 + NameFreight Train + ArtistIeuan + Album ArtistIeuan + ComposerSarah Jackson Holman + AlbumFreight Train - Single + GenrePop + KindAAC audio file + Size8976759 + Total Time251009 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2014 + Date Modified2019-07-14T13:34:19Z + Date Added2019-07-14T13:34:19Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3646042019 + Play Date UTC2019-07-15T10:26:59Z + Skip Count1 + Skip Date2019-07-16T14:53:55Z + Release Date2014-06-24T12:00:00Z + Sort AlbumFreight Train - Single + Sort ArtistIeuan + Sort NameFreight Train + Persistent IDD79270BE90D9AEC4 + Track TypeRemote + + 3617 + + Track ID3617 + NameMorning Bell + ArtistRadiohead + Album ArtistRadiohead + ComposerColin Greenwood, Ed O'Brien, Jonny Greenwood, Phil Selway & Thom Yorke + AlbumKid A + GenreAlternative + KindApple Music AAC audio file + Size10153005 + Total Time275800 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2000 + Date Modified2019-07-14T14:55:54Z + Date Added2019-07-14T14:55:54Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3761318873 + Play Date UTC2023-03-10T15:47:53Z + Release Date2000-09-27T07:00:00Z + Artwork Count1 + Sort AlbumKid A + Sort ArtistRadiohead + Sort NameMorning Bell + Persistent IDC88B7B4E8DD62F1A + Track TypeRemote + Apple Music + + 3619 + + Track ID3619 + NameCellophane + ArtistPageant Boys + Album ArtistPageant Boys + AlbumShadowboxing - EP + GenreIndie Rock + KindApple Music AAC audio file + Size8828580 + Total Time242243 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2017 + Date Modified2019-07-14T16:19:22Z + Date Added2019-07-14T16:19:22Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3770358241 + Play Date UTC2023-06-23T06:44:01Z + Skip Count1 + Skip Date2019-07-18T13:40:53Z + Release Date2017-02-24T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization1257 + Artwork Count1 + Sort AlbumShadowboxing - EP + Sort ArtistPageant Boys + Sort NameCellophane + Persistent IDE266062D7D0FABFE + Track TypeRemote + Apple Music + + 3621 + + Track ID3621 + NameFountain + ArtistPageant Boys + Album ArtistPageant Boys + AlbumShadowboxing - EP + GenreIndie Rock + KindApple Music AAC audio file + Size8042522 + Total Time228305 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2017 + Date Modified2019-07-14T17:27:28Z + Date Added2019-07-14T17:27:28Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781705408 + Play Date UTC2023-11-01T14:43:28Z + Skip Count2 + Skip Date2019-07-20T14:35:23Z + Release Date2017-05-19T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumShadowboxing - EP + Sort ArtistPageant Boys + Sort NameFountain + Persistent ID95D267B535D5D720 + Track TypeRemote + Apple Music + + 3623 + + Track ID3623 + NameFor a Moment + ArtistPageant Boys + Album ArtistPageant Boys + ComposerAlexander Sheppard + AlbumWhat's Next KC Sessions - Single + GenreAlternative + KindApple Music AAC audio file + Size10756518 + Total Time317678 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2018 + Date Modified2019-07-14T21:46:27Z + Date Added2019-07-14T21:46:27Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3772620188 + Play Date UTC2023-07-19T11:03:08Z + Skip Date2022-07-21T07:16:03Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumWhat's Next KC Sessions - Single + Sort ArtistPageant Boys + Sort NameFor a Moment + Persistent IDAC11255F32DC50E5 + Track TypeRemote + Apple Music + + 3625 + + Track ID3625 + NameVersatile + ArtistKodak Black + Album ArtistKodak Black + ComposerKodak Black & Martin McCurtis + AlbumProject Baby 2: All Grown Up (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size14500932 + Total Time418628 + Disc Number1 + Disc Count1 + Track Number1 + Track Count27 + Year2017 + Date Modified2019-07-15T16:20:10Z + Date Added2019-07-15T16:20:10Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783595095 + Play Date UTC2023-11-23T11:38:15Z + Release Date2017-08-18T12:00:00Z + Artwork Count1 + Sort AlbumProject Baby 2: All Grown Up (Deluxe) + Sort ArtistKodak Black + Sort NameVersatile + Persistent ID0F53E8E494013416 + Explicit + Track TypeRemote + Apple Music + + 3627 + + Track ID3627 + NameChange My Ways + ArtistKodak Black + Album ArtistKodak Black + ComposerDJ Khaled, Khaled Khaled, Kodak Black, Krystyana Czeiner & Nick The Piff + AlbumProject Baby 2: All Grown Up (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8458001 + Total Time239299 + Disc Number1 + Disc Count1 + Track Number2 + Track Count27 + Year2017 + Date Modified2019-07-15T16:27:36Z + Date Added2019-07-15T16:27:36Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3771743068 + Play Date UTC2023-07-09T07:24:28Z + Skip Count1 + Skip Date2019-07-16T14:54:13Z + Release Date2017-08-18T12:00:00Z + Artwork Count1 + Sort AlbumProject Baby 2: All Grown Up (Deluxe) + Sort ArtistKodak Black + Sort NameChange My Ways + Persistent IDE921321BDBDF5E9A + Explicit + Track TypeRemote + Apple Music + + 3629 + + Track ID3629 + NameNeed a Break + ArtistKodak Black + Album ArtistKodak Black + ComposerKodak Black, SkipOnDaBeat & Thomas Klingensmith + AlbumProject Baby 2: All Grown Up (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8576201 + Total Time243652 + Disc Number1 + Disc Count1 + Track Number6 + Track Count27 + Year2017 + Date Modified2019-07-15T18:17:29Z + Date Added2019-07-15T18:17:29Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3783710032 + Play Date UTC2023-11-24T19:33:52Z + Release Date2017-08-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumProject Baby 2: All Grown Up (Deluxe) + Sort ArtistKodak Black + Sort NameNeed a Break + Persistent IDE77C1B2D370B7555 + Explicit + Track TypeRemote + Apple Music + + 3631 + + Track ID3631 + NameMy Klik (feat. John Wicks & JackBoy) + ArtistKodak Black + Album ArtistKodak Black + ComposerJack Boy, John Wicks, Kodak Black & Taz Taylor + AlbumProject Baby 2: All Grown Up (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7412419 + Total Time205712 + Disc Number1 + Disc Count1 + Track Number9 + Track Count27 + Year2017 + Date Modified2019-07-15T18:43:01Z + Date Added2019-07-15T18:43:01Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781523641 + Play Date UTC2023-10-30T12:14:01Z + Skip Count1 + Skip Date2020-09-07T05:15:05Z + Release Date2017-08-18T12:00:00Z + Artwork Count1 + Sort AlbumProject Baby 2: All Grown Up (Deluxe) + Sort ArtistKodak Black + Sort NameMy Klik (feat. John Wicks & JackBoy) + Persistent ID47A2EDB757848C40 + Explicit + Track TypeRemote + Apple Music + + 3633 + + Track ID3633 + NameMy Choppa Hate N****s + Artist21 Savage & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerShayaa Joseph, Leland Wayne, Kevin Gromringer & Tim Gomringer + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5452408 + Total Time148640 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2017 + Date Modified2019-07-17T14:32:52Z + Date Added2019-07-17T14:32:52Z + Bit Rate256 + Sample Rate44100 + Play Count450 + Play Date3781050486 + Play Date UTC2023-10-25T00:48:06Z + Skip Count9 + Skip Date2023-11-02T11:49:55Z + Release Date2017-12-23T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWithout Warning + Sort Artist21 Savage & Metro Boomin + Sort NameMy Choppa Hate Niggas + Persistent ID8EDEE7267AF1C95C + Explicit + Track TypeRemote + Apple Music + + 3635 + + Track ID3635 + NameIf You Only Knew + ArtistOkay(K) + Album ArtistOkay(K) + AlbumLucy Wrap(s) - EP + GenreAlternative + KindAAC audio file + Size5760262 + Total Time160000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2017 + Date Modified2019-07-18T20:38:26Z + Date Added2019-07-18T20:38:26Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3770099593 + Play Date UTC2023-06-20T06:53:13Z + Skip Count1 + Skip Date2022-06-24T12:31:09Z + Release Date2017-02-08T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLucy Wrap(s) - EP + Sort ArtistOkay(K) + Sort NameIf You Only Knew + Persistent ID7217DC3F068AC268 + Explicit + Track TypeRemote + + 3637 + + Track ID3637 + NameCookin' Eggs (Interlude) + ArtistOkay(K) + Album ArtistOkay(K) + AlbumLucy Wrap(s) - EP + GenreAlternative + KindAAC audio file + Size2210832 + Total Time50000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2017 + Date Modified2019-07-18T20:43:16Z + Date Added2019-07-18T20:43:16Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3767770045 + Play Date UTC2023-05-24T07:47:25Z + Skip Count1 + Skip Date2022-10-16T10:05:56Z + Release Date2017-02-08T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLucy Wrap(s) - EP + Sort ArtistOkay(K) + Sort NameCookin' Eggs (Interlude) + Persistent IDC36A62FDE28F8DC3 + Explicit + Track TypeRemote + + 3639 + + Track ID3639 + NamePreach (feat. Lexie) + ArtistOkay(K) + Album ArtistOkay(K) + Album(Tmrw) - EP + GenreR&B/Soul + KindAAC audio file + Size9721725 + Total Time275132 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2017 + Date Modified2019-07-18T20:47:08Z + Date Added2019-07-18T20:47:08Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3760179967 + Play Date UTC2023-02-25T11:26:07Z + Skip Count2 + Skip Date2022-06-24T12:42:33Z + Release Date2017-05-17T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Album(Tmrw) - EP + Sort ArtistOkay(K) + Sort NamePreach (feat. Lexie) + Persistent ID6240AEB6EFC01194 + Explicit + Track TypeRemote + + 3641 + + Track ID3641 + NameOverdue (feat. Travis Scott) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerLeland Wayne, Jacques Webster, Hannah Robinson, Annie Strand & Richard Phillips + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6096964 + Total Time166093 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2018 + Date Modified2019-07-18T20:56:23Z + Date Added2019-07-18T20:56:23Z + Bit Rate256 + Sample Rate44100 + Play Count84 + Play Date3775211959 + Play Date UTC2023-08-18T10:59:19Z + Skip Count9 + Skip Date2023-10-29T01:41:42Z + Release Date2018-11-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameOverdue (feat. Travis Scott) + Persistent ID9BB26841ADBE7655 + Explicit + Track TypeRemote + Apple Music + + 3643 + + Track ID3643 + NameNo Type + ArtistRae Sremmurd + Album ArtistRae Sremmurd + ComposerMike Williams, A.Brown & K. Brown + AlbumSremmLife + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7157635 + Total Time200080 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2014 + Date Modified2019-07-18T20:57:39Z + Date Added2019-07-18T20:57:39Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3778860625 + Play Date UTC2023-09-29T16:30:25Z + Release Date2014-01-01T12:00:00Z + Artwork Count1 + Sort AlbumSremmLife + Sort ArtistRae Sremmurd + Sort NameNo Type + Persistent IDFBA74ABDA058C188 + Explicit + Track TypeRemote + Apple Music + + 3645 + + Track ID3645 + NameDead to Me + ArtistVaboh + Album ArtistVaboh + ComposerVaboh + AlbumDead to Me - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4628459 + Total Time123429 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-07-18T21:07:02Z + Date Added2019-07-18T21:07:02Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3773641700 + Play Date UTC2023-07-31T06:48:20Z + Skip Count1 + Skip Date2022-10-16T13:31:53Z + Release Date2019-06-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDead to Me - Single + Sort ArtistVaboh + Sort NameDead to Me + Persistent ID7A5E12BA4CE1C7DD + Explicit + Track TypeRemote + Apple Music + + 3647 + + Track ID3647 + NameMaria + Artistgrandson + Album Artistgrandson + ComposerBrad Wilk, Tim Commerford, Tom Morello & Zack de la Rocha + AlbumMaria - Single + GenreAlternative + KindApple Music AAC audio file + Size6795109 + Total Time188571 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-07-18T21:22:47Z + Date Added2019-07-18T21:22:47Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3783586451 + Play Date UTC2023-11-23T09:14:11Z + Skip Count1 + Skip Date2022-07-17T08:47:12Z + Release Date2019-05-22T12:00:00Z + Artwork Count1 + Sort AlbumMaria - Single + Sort Artistgrandson + Sort NameMaria + Persistent IDDF1357F52805D30D + Track TypeRemote + Apple Music + + 3649 + + Track ID3649 + NameMake Me Laugh + ArtistTRACE + Album ArtistTRACE + ComposerMike Derenzo & Tracy Le + AlbumMake Me Laugh - Single + GenreDance + KindApple Music AAC audio file + Size6683909 + Total Time185438 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-07-18T21:26:08Z + Date Added2019-07-18T21:26:08Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3778764701 + Play Date UTC2023-09-28T13:51:41Z + Skip Count1 + Skip Date2022-11-16T20:14:16Z + Release Date2019-06-27T12:00:00Z + Normalization1604 + Artwork Count1 + Sort AlbumMake Me Laugh - Single + Sort ArtistTRACE + Sort NameMake Me Laugh + Persistent ID72FD8395BB932B40 + Track TypeRemote + Apple Music + + 3651 + + Track ID3651 + NameThoughts & Prayers + Artistgrandson + Album Artistgrandson + ComposerJordan Benjamin, Kevin Hissink & Taylor Bird + AlbumThoughts & Prayers - Single + GenreAlternative + KindApple Music AAC audio file + Size7993296 + Total Time225333 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-07-20T07:59:45Z + Date Added2019-07-20T07:59:45Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3781616208 + Play Date UTC2023-10-31T13:56:48Z + Release Date2018-03-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumThoughts & Prayers - Single + Sort Artistgrandson + Sort NameThoughts & Prayers + Persistent IDFC452E5F6E4DE8CF + Track TypeRemote + Apple Music + + 3653 + + Track ID3653 + NameRiot + ArtistJaden + Album ArtistJaden + ComposerJaden & Hugo Chan + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9657016 + Total Time274988 + Disc Number1 + Disc Count1 + Track Number16 + Track Count17 + Year2019 + Date Modified2019-07-21T13:10:05Z + Date Added2019-07-21T13:10:05Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3781060123 + Play Date UTC2023-10-25T03:28:43Z + Skip Count3 + Skip Date2023-07-18T06:25:30Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameRiot + Persistent ID34DA8D9C834FC2E0 + Explicit + Track TypeRemote + Apple Music + + 3655 + + Track ID3655 + NameN + ArtistJaden + Album ArtistJaden + ComposerJaden, Peder Losnegård, Tyler Cole & Mateo Arias + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8170581 + Total Time231034 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2019 + Date Modified2019-07-21T13:30:01Z + Date Added2019-07-21T13:30:01Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3779319609 + Play Date UTC2023-10-05T00:00:09Z + Skip Count4 + Skip Date2022-08-19T16:10:52Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameN + Persistent ID21339659F6E33F12 + Explicit + Track TypeRemote + Apple Music + + 3657 + + Track ID3657 + NameMy Old Flame + ArtistMatt Kronish + Album ArtistMatt Kronish + AlbumWinter in Southern California - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size9794999 + Total Time275514 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2016 + Date Modified2019-07-24T13:05:25Z + Date Added2019-07-24T13:05:25Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3777367220 + Play Date UTC2023-09-12T09:40:20Z + Skip Count4 + Skip Date2021-10-03T17:44:12Z + Release Date2016-02-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWinter in Southern California - Single + Sort ArtistMatt Kronish + Sort NameMy Old Flame + Persistent ID80E46633BFC7AA5E + Track TypeRemote + Apple Music + + 3659 + + Track ID3659 + NamePlease Tell Me + ArtistFuture + Album ArtistFuture + ComposerNayvadius Wilburn & Tony Son + AlbumSAVE ME + GenreR&B/Soul + KindApple Music AAC audio file + Size7230599 + Total Time204520 + Disc Number1 + Disc Count1 + Track Number3 + Track Count7 + Year2019 + Date Modified2019-07-25T09:12:04Z + Date Added2019-07-25T09:12:04Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3782903783 + Play Date UTC2023-11-15T11:36:23Z + Release Date2019-06-07T07:00:00Z + Loved + Artwork Count1 + Sort AlbumSAVE ME + Sort ArtistFuture + Sort NamePlease Tell Me + Persistent ID07C0A8055D80AAFC + Explicit + Track TypeRemote + Apple Music + + 3661 + + Track ID3661 + NameMidnight + ArtistPrettyboys + Album ArtistPrettyboys + ComposerDominic Tousignant & Loic Drouin + AlbumMidnight06 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9003002 + Total Time256093 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2019 + Date Modified2019-07-26T09:10:08Z + Date Added2019-07-26T09:10:08Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3776164365 + Play Date UTC2023-08-29T11:32:45Z + Skip Count2 + Skip Date2023-09-26T07:57:13Z + Release Date2019-06-13T12:00:00Z + Artwork Count1 + Sort AlbumMidnight06 + Sort ArtistPrettyboys + Sort NameMidnight + Persistent ID6519E8A58209EA88 + Explicit + Track TypeRemote + Apple Music + + 3663 + + Track ID3663 + NameHappiest Year + ArtistJaymes Young + Album ArtistJaymes Young + ComposerJaymes Young + AlbumHappiest Year - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8134691 + Total Time228443 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-07-26T14:18:54Z + Date Added2019-07-26T14:18:54Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3783681417 + Play Date UTC2023-11-24T11:36:57Z + Skip Count1 + Skip Date2021-06-24T23:30:51Z + Release Date2017-06-23T12:00:00Z + Artwork Count1 + Sort AlbumHappiest Year - Single + Sort ArtistJaymes Young + Sort NameHappiest Year + Persistent IDEFE9590D4A87468F + Track TypeRemote + Apple Music + + 3665 + + Track ID3665 + NameDue In June + Artist¡MAYDAY! + Album Artist¡MAYDAY! + Composer¡MAYDAY! + AlbumTake Me to Your Leader + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6485638 + Total Time180933 + Disc Number1 + Disc Count1 + Track Number7 + Track Count19 + Year2012 + Date Modified2019-07-29T11:48:18Z + Date Added2019-07-29T11:48:18Z + Bit Rate256 + Sample Rate44100 + Play Count70 + Play Date3767523551 + Play Date UTC2023-05-21T11:19:11Z + Skip Count3 + Skip Date2020-02-01T06:04:41Z + Release Date2012-03-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTake Me to Your Leader + Sort Artist¡MAYDAY! + Sort NameDue In June + Persistent ID262DD0E69A98BA4D + Explicit + Track TypeRemote + Apple Music + + 3667 + + Track ID3667 + NameWtf + ArtistXavier + Album ArtistXavier + ComposerXavier Tubianosa + AlbumWtf - Single + GenreHip-Hop + KindApple Music AAC audio file + Size6721106 + Total Time188317 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-08-02T09:04:45Z + Date Added2019-08-02T09:04:45Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781201282 + Play Date UTC2023-10-26T18:41:22Z + Skip Count2 + Skip Date2022-12-10T08:14:10Z + Release Date2019-06-26T12:00:00Z + Artwork Count1 + Sort AlbumWtf - Single + Sort ArtistXavier + Sort NameWtf + Persistent ID6F2789BF3718ABFB + Explicit + Track TypeRemote + Apple Music + + 3669 + + Track ID3669 + NameThought I Had It All Figured Out + ArtistHateful + Album ArtistHateful + ComposerViktor Edfalk + AlbumThought I Had It All Figured Out - Single + GenreAlternative + KindApple Music AAC audio file + Size5241620 + Total Time142493 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-08-13T14:46:18Z + Date Added2019-08-13T14:46:18Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3783680770 + Play Date UTC2023-11-24T11:26:10Z + Skip Count1 + Skip Date2022-06-24T11:41:02Z + Release Date2019-06-21T12:00:00Z + Loved + Artwork Count1 + Sort AlbumThought I Had It All Figured Out - Single + Sort ArtistHateful + Sort NameThought I Had It All Figured Out + Persistent ID171F5934D41D4E9F + Track TypeRemote + Apple Music + + 3671 + + Track ID3671 + NameMoney In The Grave (feat. Rick Ross) + ArtistDrake + Album ArtistDrake + ComposerAubrey Graham, W. Roberts, L. Currie, C. Dade & A. Joergensen + AlbumThe Best In The World Pack - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7278315 + Total Time205369 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2019 + Date Modified2019-08-13T14:57:59Z + Date Added2019-08-13T14:57:59Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3779182718 + Play Date UTC2023-10-03T09:58:38Z + Release Date2019-06-15T12:00:00Z + Artwork Count1 + Sort AlbumBest In The World Pack - Single + Sort ArtistDrake + Sort NameMoney In The Grave (feat. Rick Ross) + Persistent ID053877D0410831B0 + Explicit + Track TypeRemote + Apple Music + + 3673 + + Track ID3673 + Namewhoa (mind in awe) + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJ. Onfroy, J. Cunningham & R. Soukiasyan + AlbumSKINS + GenrePop + KindApple Music AAC audio file + Size5759892 + Total Time157777 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2018 + Date Modified2019-08-13T15:28:51Z + Date Added2019-08-13T15:28:51Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count45 + Play Date3783777422 + Play Date UTC2023-11-25T14:17:02Z + Skip Count3 + Skip Date2022-03-28T11:38:52Z + Release Date2018-12-07T08:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumSKINS + Sort ArtistXXXTENTACION + Sort Namewhoa (mind in awe) + Persistent IDF15F3F64C2578678 + Track TypeRemote + Apple Music + + 3675 + + Track ID3675 + NameFalling Down (Bonus Track) + ArtistLil Peep & XXXTENTACION + Album ArtistLil Peep + ComposerGustav Ahr, Jahseh Onfroy, Valentin Leon Blavatnik, iLoveMakonnen, Michael Williams II & Aaron Jackson + AlbumCome Over When You're Sober, Pt. 2 (Bonus) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7147719 + Total Time196400 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2018 + Date Modified2019-08-13T15:45:13Z + Date Added2019-08-13T15:45:13Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3778371745 + Play Date UTC2023-09-24T00:42:25Z + Skip Count2 + Skip Date2023-09-28T15:41:47Z + Release Date2018-09-19T12:00:00Z + Artwork Count1 + Sort AlbumCome Over When You're Sober, Pt. 2 (Bonus) + Sort ArtistLil Peep & XXXTENTACION + Sort NameFalling Down (Bonus Track) + Persistent ID3CB219C17303690E + Explicit + Track TypeRemote + Apple Music + + 3677 + + Track ID3677 + NameEverybody Dies in Their Nightmares + ArtistXXXTENTACION + Album ArtistXXXTENTACION + Album17 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3758050 + Total Time95467 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2017 + Date Modified2019-08-13T16:05:59Z + Date Added2019-08-13T16:05:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3767800494 + Play Date UTC2023-05-24T16:14:54Z + Release Date2017-08-25T12:00:00Z + Artwork Count1 + Sort Album17 + Sort ArtistXXXTENTACION + Sort NameEverybody Dies in Their Nightmares + Persistent ID8C92C4C31FC3E6DC + Explicit + Track TypeRemote + Apple Music + + 3679 + + Track ID3679 + NameSave Me + ArtistXXXTENTACION + Album ArtistXXXTENTACION + Album17 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5924266 + Total Time163202 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2017 + Date Modified2019-08-13T16:06:00Z + Date Added2019-08-13T16:06:00Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count23 + Play Date3781086711 + Play Date UTC2023-10-25T10:51:51Z + Skip Date2021-09-14T10:24:05Z + Release Date2017-08-25T12:00:00Z + Artwork Count1 + Sort Album17 + Sort ArtistXXXTENTACION + Sort NameSave Me + Persistent ID1EA64D4F386531FE + Explicit + Track TypeRemote + Apple Music + + 3681 + + Track ID3681 + NameRobbery + ArtistJuice WRLD + Album ArtistJuice WRLD + ComposerNick Mira & Jarad Higgins + AlbumDeath Race for Love + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8607928 + Total Time240051 + Disc Number1 + Disc Count1 + Track Number8 + Track Count22 + Year2019 + Date Modified2019-08-13T17:52:09Z + Date Added2019-08-13T17:52:09Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3781570941 + Play Date UTC2023-10-31T01:22:21Z + Release Date2019-02-13T08:00:00Z + Artwork Count1 + Sort AlbumDeath Race for Love + Sort ArtistJuice WRLD + Sort NameRobbery + Persistent IDB7D85A294951EBA8 + Explicit + Track TypeRemote + Apple Music + + 3683 + + Track ID3683 + NameSyphilis + ArtistJuice WRLD + Album ArtistJuice WRLD + ComposerJarad Higgins, Daveon Jackson & Ronald LaTour + AlbumDeath Race for Love + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4986134 + Total Time131761 + Disc Number1 + Disc Count1 + Track Number11 + Track Count22 + Year2019 + Date Modified2019-08-13T19:07:29Z + Date Added2019-08-13T19:07:29Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3780838893 + Play Date UTC2023-10-22T14:01:33Z + Release Date2019-03-08T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDeath Race for Love + Sort ArtistJuice WRLD + Sort NameSyphilis + Persistent IDE4E3403D2F56C045 + Explicit + Track TypeRemote + Apple Music + + 3685 + + Track ID3685 + NameSKELETONS + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster + AlbumASTROWORLD + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5400177 + Total Time145588 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year2018 + Date Modified2019-08-14T06:06:46Z + Date Added2019-08-14T06:06:46Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3779631032 + Play Date UTC2023-10-08T14:30:32Z + Skip Count1 + Skip Date2020-12-12T00:10:22Z + Release Date2018-08-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumASTROWORLD + Sort ArtistTravis Scott + Sort NameSKELETONS + Persistent ID892C28B7A0148D7D + Explicit + Track TypeRemote + Apple Music + + 3687 + + Track ID3687 + NamePure Water + ArtistMustard & Migos + Album ArtistMustard & Migos + ComposerDijon McFarlane, Quavios Keyate Marshall, Kirsnick Khari Ball, Kiari Kendrell Cephus & SHAHRUKH KHAN + AlbumPure Water - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6977166 + Total Time194520 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-08-14T10:05:54Z + Date Added2019-08-14T10:05:54Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3780911564 + Play Date UTC2023-10-23T10:12:44Z + Skip Count1 + Skip Date2023-07-19T05:55:57Z + Release Date2019-01-16T12:00:00Z + Artwork Count1 + Sort AlbumPure Water - Single + Sort ArtistMustard & Migos + Sort NamePure Water + Persistent ID381330D3D86F69F0 + Explicit + Track TypeRemote + Apple Music + + 3689 + + Track ID3689 + NameDo the Most + ArtistMarty Grimes + Album ArtistMarty Grimes + ComposerMarty Grimes + AlbumDo the Most - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6117784 + Total Time168333 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-08-16T08:03:15Z + Date Added2019-08-16T08:03:15Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count18 + Play Date3780129670 + Play Date UTC2023-10-14T09:01:10Z + Skip Count1 + Skip Date2023-04-18T09:47:18Z + Release Date2019-07-12T12:00:00Z + Artwork Count1 + Sort AlbumDo the Most - Single + Sort ArtistMarty Grimes + Sort NameDo the Most + Persistent ID06622051A2213275 + Explicit + Track TypeRemote + Apple Music + + 3691 + + Track ID3691 + NameOut Da Cut + ArtistRellim & Donnatella + Album ArtistRellim & Donnatella + ComposerEric Michael Miller, Rellim & Donnatella + AlbumOut Da Cut - Single + GenreRap + KindApple Music AAC audio file + Size8042417 + Total Time227814 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-08-16T08:32:34Z + Date Added2019-08-16T08:32:34Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3759585078 + Play Date UTC2023-02-18T14:11:18Z + Skip Count2 + Skip Date2022-03-15T17:59:33Z + Release Date2019-06-21T12:00:00Z + Loved + Artwork Count1 + Sort AlbumOut Da Cut - Single + Sort ArtistRellim & Donnatella + Sort NameOut Da Cut + Persistent ID1CB5DCAF3B1642D8 + Explicit + Track TypeRemote + Apple Music + + 3693 + + Track ID3693 + NameEyes Open + ArtistAndy Okoro & Eddie Okoro + Album ArtistAndy Okoro & Eddie Okoro + ComposerAndy Okoro & Eddie Okoro + AlbumUndeniable + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6468068 + Total Time176065 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2019 + Date Modified2019-08-17T07:45:07Z + Date Added2019-08-17T07:45:07Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3776234971 + Play Date UTC2023-08-30T07:09:31Z + Release Date2019-06-07T12:00:00Z + Loved + Artwork Count1 + Sort AlbumUndeniable + Sort ArtistAndy Okoro & Eddie Okoro + Sort NameEyes Open + Persistent IDEDC80926B347F50C + Track TypeRemote + Apple Music + + 3695 + + Track ID3695 + NameKinda Broke. + ArtistYvng Knight + Album ArtistYvng Knight + ComposerJacob Knight Moser + AlbumDaydream. + GenreAlternative + KindApple Music AAC audio file + Size6020777 + Total Time169249 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2019 + Date Modified2019-08-17T07:48:52Z + Date Added2019-08-17T07:48:52Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3766772841 + Play Date UTC2023-05-12T18:47:21Z + Release Date2019-07-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDaydream. + Sort ArtistYvng Knight + Sort NameKinda Broke. + Persistent IDB8BED9136D17FB94 + Explicit + Track TypeRemote + Apple Music + + 3697 + + Track ID3697 + NameBleed. + ArtistYvng Knight + Album ArtistYvng Knight + ComposerJacob Knight Moser + AlbumDaydream. + GenreAlternative + KindApple Music AAC audio file + Size4399041 + Total Time117166 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2019 + Date Modified2019-08-20T09:07:07Z + Date Added2019-08-20T09:07:07Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3781615885 + Play Date UTC2023-10-31T13:51:25Z + Release Date2019-07-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDaydream. + Sort ArtistYvng Knight + Sort NameBleed. + Persistent ID6F2330CB1C53998C + Explicit + Track TypeRemote + Apple Music + + 3699 + + Track ID3699 + NameHit Me Like That Snare (Jimi Charles Moody Version) + Artistalt-J + Album Artistalt-J + ComposerThom Green, Ben Cullum, Fergus Brignall, Harley Alexander-Sule, Gus Unger-Hamilton & Joe Newman + AlbumReduxer + GenreAlternative + KindAAC audio file + Size7791510 + Total Time212406 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count10 + Play Date3733822177 + Play Date UTC2022-04-26T09:49:37Z + Skip Count1 + Skip Date2019-08-26T15:00:54Z + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NameHit Me Like That Snare (Jimi Charles Moody Version) + Persistent ID77C393ADF789032C + Explicit + Track TypeRemote + Apple Music + + 3701 + + Track ID3701 + NameIn Cold Blood (feat. Kontra K) [Kontra K Version] + Artistalt-J + Album Artistalt-J + ComposerJoe Newman, Thom Green, Maximilian Diehn & Gus Unger-Hamilton + AlbumReduxer + GenreAlternative + KindAAC audio file + Size7808992 + Total Time214750 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3782993611 + Play Date UTC2023-11-16T12:33:31Z + Release Date2017-03-29T12:00:00Z + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NameIn Cold Blood (feat. Kontra K) [Kontra K Version] + Persistent ID7AEBE58BB2F86B65 + Explicit + Track TypeRemote + Apple Music + + 3703 + + Track ID3703 + NamePleader (feat. Pj Sin Suela) [Trooko Version] + Artistalt-J + Album Artistalt-J + ComposerThom Green, Pedro-Juan Vázquez, Gus Unger-Hamilton & Joe Newman + AlbumReduxer + GenreAlternative + KindAAC audio file + Size10092969 + Total Time286182 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count11 + Play Date3736202111 + Play Date UTC2022-05-23T22:55:11Z + Skip Count1 + Skip Date2019-08-29T18:12:49Z + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NamePleader (feat. Pj Sin Suela) [Trooko Version] + Persistent ID040997CD36507A79 + Explicit + Track TypeRemote + Apple Music + + 3705 + + Track ID3705 + NameIn Cold Blood (feat. Pusha T) [Twin Shadow Version] + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Terrence LeVarr Thornton, Joe Newman & Thom Green + AlbumReduxer + GenreAlternative + KindAAC audio file + Size6122702 + Total Time166528 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2017 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3733225750 + Play Date UTC2022-04-19T12:09:10Z + Skip Count1 + Skip Date2022-03-26T17:57:07Z + Release Date2017-03-29T12:00:00Z + Loved + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NameIn Cold Blood (feat. Pusha T) [Twin Shadow Version] + Persistent IDA781399E03CEE6DF + Track TypeRemote + Apple Music + + 3707 + + Track ID3707 + NameDeadcrush (feat. Danny Brown) [The Alchemist x Trooko Version] + Artistalt-J + Album Artistalt-J + ComposerDaniel Sewell, Joe Newman, Thom Green & Gus Unger-Hamilton + AlbumReduxer + GenreAlternative + KindAAC audio file + Size8627615 + Total Time243570 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count9 + Play Date3733921656 + Play Date UTC2022-04-27T13:27:36Z + Skip Count1 + Skip Date2021-11-03T14:44:47Z + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NameDeadcrush (feat. Danny Brown) [The Alchemist x Trooko Version] + Persistent ID75DBDACA94A49BEB + Explicit + Track TypeRemote + Apple Music + + 3709 + + Track ID3709 + NameHouse of the Rising Sun (feat. Tuka) [Tuka Version] + Artistalt-J + Album Artistalt-J + ComposerJoe Newman, Gus Unger-Hamilton, Thom Green, Brendan Tuckerman, Traditional & Sam Sakr + AlbumReduxer + GenreAlternative + KindAAC audio file + Size10365734 + Total Time293837 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count11 + Play Date3733229093 + Play Date UTC2022-04-19T13:04:53Z + Skip Count1 + Skip Date2022-03-22T08:01:16Z + Release Date2017-06-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NameHouse of the Rising Sun (feat. Tuka) [Tuka Version] + Persistent ID6BAB79A766A591E3 + Explicit + Track TypeRemote + Apple Music + + 3711 + + Track ID3711 + NameAdeline (feat. Hex & Paigey Cakey) [ADP Version] + Artistalt-J + Album Artistalt-J + ComposerPaige Meade, Thom Green, Joe Newman, Brendan Behan, Dominic Wright, Hans Zimmer & Gus Unger-Hamilton + AlbumReduxer + GenreAlternative + KindAAC audio file + Size7958030 + Total Time226716 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count27 + Play Date3737399673 + Play Date UTC2022-06-06T19:34:33Z + Release Date2017-05-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NameAdeline (feat. Hex & Paigey Cakey) [ADP Version] + Persistent ID05B4C367F6802F1F + Explicit + Track TypeRemote + Apple Music + + 3713 + + Track ID3713 + Name3WW (feat. Lomepal) [Lomepal Version] + Artistalt-J + Album Artistalt-J + ComposerThom Green, Joe Newman, Antoine Valentinelli & Gus Unger-Hamilton + AlbumReduxer + GenreAlternative + KindAAC audio file + Size6995936 + Total Time195685 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count9 + Play Date3737192027 + Play Date UTC2022-06-04T09:53:47Z + Release Date2017-03-06T12:00:00Z + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort Name3WW (feat. Lomepal) [Lomepal Version] + Persistent ID329541720F0EC044 + Explicit + Track TypeRemote + Apple Music + + 3715 + + Track ID3715 + Name3WW (feat. Little Simz) [OTG Version] + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman, osiris wilson, Simbiatu Ajikawo & Thom Green + AlbumReduxer + GenreAlternative + KindAAC audio file + Size10698887 + Total Time307432 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count12 + Play Date3734529135 + Play Date UTC2022-05-04T14:12:15Z + Skip Count2 + Skip Date2021-08-01T10:56:00Z + Release Date2017-03-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort Name3WW (feat. Little Simz) [OTG Version] + Persistent IDBEF99540B024BB79 + Explicit + Track TypeRemote + Apple Music + + 3717 + + Track ID3717 + NameLast Year (feat. GoldLink) [Terrace Martin Version] + Artistalt-J + Album Artistalt-J + ComposerJoe Newman, Thom Green, Gus Unger-Hamilton & DeAnthony Carlos + AlbumReduxer + GenreAlternative + KindAAC audio file + Size8972443 + Total Time257603 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count10 + Play Date3733686225 + Play Date UTC2022-04-24T20:03:45Z + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NameLast Year (feat. GoldLink) [Terrace Martin Version] + Persistent ID1B545D082148FF6E + Track TypeRemote + Apple Music + + 3719 + + Track ID3719 + NameHit Me Like That Snare (feat. Rejjie Snow) [Rejjie Snow Version] + Artistalt-J + Album Artistalt-J + ComposerJoe Newman, Alex Anyaegbunam, Gus Unger-Hamilton & Thom Green + AlbumReduxer + GenreAlternative + KindAAC audio file + Size6604927 + Total Time179743 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2018 + Date Modified2019-08-26T15:00:10Z + Date Added2019-08-26T15:00:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count9 + Play Date3735292717 + Play Date UTC2022-05-13T10:18:37Z + Skip Count1 + Skip Date2021-08-01T13:58:46Z + Release Date2017-06-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumReduxer + Sort Artistalt-J + Sort NameHit Me Like That Snare (feat. Rejjie Snow) [Rejjie Snow Version] + Persistent ID3DAD2F64896D59BA + Explicit + Track TypeRemote + Apple Music + + 3721 + + Track ID3721 + NamePleader + Artistalt-J + Album Artistalt-J + AlbumRELAXER + GenreAlternative + KindAAC audio file + Size12447618 + Total Time348547 + Disc Number1 + Disc Count1 + Track Number8 + Track Count8 + Year2017 + Date Modified2019-08-28T18:38:58Z + Date Added2019-08-28T18:38:58Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3737194514 + Play Date UTC2022-06-04T10:35:14Z + Release Date2017-06-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRELAXER + Sort Artistalt-J + Sort NamePleader + Persistent ID9FE2828B936B53EC + Track TypeRemote + Apple Music + + 3723 + + Track ID3723 + NameGreygoose + ArtistYung Lean + Album ArtistYung Lean + AlbumLavender - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7002626 + Total Time196000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2013 + Date Modified2019-09-01T16:48:26Z + Date Added2019-09-01T16:48:26Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count67 + Play Date3780770718 + Play Date UTC2023-10-21T19:05:18Z + Release Date2013-08-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLavender - Single + Sort ArtistYung Lean + Sort NameGreygoose + Persistent ID041B849BE5BCB33E + Track TypeRemote + Apple Music + + 3725 + + Track ID3725 + NameSuicide Watch + ArtistRicky Hil + Album ArtistRicky Hil + ComposerRicky Hil + AlbumCandy Painted Coffins + GenreAlternative + KindApple Music AAC audio file + Size8074467 + Total Time225171 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2015 + Date Modified2019-09-02T13:24:15Z + Date Added2019-09-02T13:24:15Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count46 + Play Date3769950310 + Play Date UTC2023-06-18T13:25:10Z + Release Date2015-07-14T12:00:00Z + Artwork Count1 + Sort AlbumCandy Painted Coffins + Sort ArtistRicky Hil + Sort NameSuicide Watch + Persistent IDA140E8F74A0AF331 + Explicit + Track TypeRemote + Apple Music + + 3727 + + Track ID3727 + NameDouble Darkness + ArtistBig Scary + Album ArtistBig Scary + ComposerTom Iansek + AlbumAnimal + GenreAlternative + KindApple Music AAC audio file + Size9695523 + Total Time275947 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2016 + Date Modified2019-09-05T04:11:20Z + Date Added2019-09-05T04:11:20Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3780392888 + Play Date UTC2023-10-17T10:08:08Z + Skip Count1 + Skip Date2019-09-15T16:01:14Z + Release Date2016-09-02T12:00:00Z + Artwork Count1 + Sort AlbumAnimal + Sort ArtistBig Scary + Sort NameDouble Darkness + Persistent ID6B6D38DBB1E643EA + Track TypeRemote + Apple Music + + 3729 + + Track ID3729 + NameGot It, Lost It + ArtistBig Scary + Album ArtistBig Scary + ComposerBig Scary + AlbumVacation + GenreAlternative + KindApple Music AAC audio file + Size9291096 + Total Time263307 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2011 + Date Modified2019-09-05T04:16:42Z + Date Added2019-09-05T04:16:42Z + Bit Rate256 + Sample Rate44100 + Play Count99 + Play Date3781352716 + Play Date UTC2023-10-28T12:45:16Z + Skip Count1 + Skip Date2021-05-10T22:53:24Z + Release Date2011-10-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumVacation + Sort ArtistBig Scary + Sort NameGot It, Lost It + Persistent ID5B2DD0024D3620FA + Track TypeRemote + Apple Music + + 3731 + + Track ID3731 + NameChild in a Tree + ArtistBig Scary + Album ArtistBig Scary + ComposerBig Scary + AlbumVacation + GenreAlternative + KindApple Music AAC audio file + Size7906730 + Total Time218747 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2011 + Date Modified2019-09-05T04:21:36Z + Date Added2019-09-05T04:21:36Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3776172606 + Play Date UTC2023-08-29T13:50:06Z + Skip Count1 + Skip Date2019-09-07T08:36:56Z + Release Date2011-10-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumVacation + Sort ArtistBig Scary + Sort NameChild in a Tree + Persistent ID81DD59BE97451480 + Track TypeRemote + Apple Music + + 3733 + + Track ID3733 + NameFuture Holds + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumFuture Holds - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size6293487 + Total Time175005 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-09-06T10:38:37Z + Date Added2019-09-06T10:38:37Z + Bit Rate256 + Sample Rate44100 + Play Count137 + Play Date3783495256 + Play Date UTC2023-11-22T07:54:16Z + Release Date2019-07-12T12:00:00Z + Artwork Count1 + Sort AlbumFuture Holds - Single + Sort ArtistTom Rosenthal + Sort NameFuture Holds + Persistent ID9181A5B87C847A7B + Track TypeRemote + Apple Music + + 3735 + + Track ID3735 + NameStolen + ArtistSon Lux + Album ArtistSon Lux + AlbumRemedy - EP + GenreAlternative + KindApple Music AAC audio file + Size8601028 + Total Time240240 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2017 + Date Modified2019-09-09T04:50:59Z + Date Added2019-09-09T04:50:59Z + Bit Rate256 + Sample Rate44100 + Play Count109 + Play Date3770109874 + Play Date UTC2023-06-20T09:44:34Z + Release Date2017-05-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRemedy - EP + Sort ArtistSon Lux + Sort NameStolen + Persistent ID14ABC1681817D277 + Track TypeRemote + Apple Music + + 3737 + + Track ID3737 + NameStill + ArtistFoo Fighters + Album ArtistFoo Fighters + ComposerFoo Fighters + AlbumIn Your Honor + GenreAlternative + KindApple Music AAC audio file + Size10939869 + Total Time312826 + Disc Number2 + Disc Count2 + Track Number1 + Track Count10 + Year2005 + Date Modified2019-09-09T10:51:31Z + Date Added2019-09-09T10:51:31Z + Bit Rate256 + Sample Rate44100 + Play Count122 + Play Date3780917295 + Play Date UTC2023-10-23T11:48:15Z + Skip Count3 + Skip Date2022-03-15T18:25:05Z + Release Date2005-06-14T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumIn Your Honor + Sort ArtistFoo Fighters + Sort NameStill + Persistent IDBD4E649340588878 + Track TypeRemote + Apple Music + + 3739 + + Track ID3739 + NameMoving Mountains + ArtistANIMA! + Album ArtistANIMA! + AlbumArt:Work - EP + GenreAlternative + KindApple Music AAC audio file + Size8374853 + Total Time226818 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2016 + Date Modified2019-09-09T17:21:49Z + Date Added2019-09-09T17:21:49Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3776235875 + Play Date UTC2023-08-30T07:24:35Z + Skip Count1 + Skip Date2019-09-13T08:40:37Z + Release Date2016-12-02T12:00:00Z + Artwork Count1 + Sort AlbumArt:Work - EP + Sort ArtistANIMA! + Sort NameMoving Mountains + Persistent IDEADE00B8FB326924 + Track TypeRemote + Apple Music + + 3741 + + Track ID3741 + NameX (feat. Future) + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size9096833 + Total Time258880 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2016 + Date Modified2019-09-17T09:14:54Z + Date Added2019-09-17T09:14:54Z + Bit Rate256 + Sample Rate44100 + Play Count286 + Play Date3735300531 + Play Date UTC2022-05-13T12:28:51Z + Skip Count3 + Skip Date2021-09-12T19:29:03Z + Release Date2016-07-14T07:00:00Z + Loved + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameX (feat. Future) + Persistent IDF00722C1F16CABE5 + Explicit + Track TypeRemote + + 3743 + + Track ID3743 + NameFeel It + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size5880990 + Total Time163387 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2016 + Date Modified2019-09-17T11:08:59Z + Date Added2019-09-17T11:08:59Z + Bit Rate256 + Sample Rate44100 + Play Count268 + Play Date3731752920 + Play Date UTC2022-04-02T11:02:00Z + Skip Count2 + Skip Date2022-04-16T22:46:46Z + Release Date2016-07-15T07:00:00Z + Loved + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameFeel It + Persistent IDFAB2511ED54B1B50 + Explicit + Track TypeRemote + + 3745 + + Track ID3745 + NameI'm Gonna Be + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7104096 + Total Time200680 + Disc Number1 + Disc Count1 + Track Number10 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count73 + Play Date3783060931 + Play Date UTC2023-11-17T07:15:31Z + Skip Count1 + Skip Date2021-10-03T11:19:30Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameI'm Gonna Be + Persistent IDD12159C25C96D39E + Explicit + Track TypeRemote + Apple Music + + 3747 + + Track ID3747 + NameOn the Road (feat. Meek Mill & Lil Baby) + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Nick Mira, Austin Post, Robert Williams, Dominique Jones, Billy Walsh & Tavoris Hollins, Jr. + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7739896 + Total Time218317 + Disc Number1 + Disc Count1 + Track Number8 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count74 + Play Date3783409108 + Play Date UTC2023-11-21T07:58:28Z + Skip Count2 + Skip Date2021-03-16T04:36:02Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameOn the Road (feat. Meek Mill & Lil Baby) + Persistent ID7C040834DD66437D + Explicit + Track TypeRemote + Apple Music + + 3749 + + Track ID3749 + NameDie For Me (feat. Future & Halsey) + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Andrew Watt, Happy Perez, Austin Post, Nayvadius Wilburn, Ashley Frangipane & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8691194 + Total Time245268 + Disc Number1 + Disc Count1 + Track Number7 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count80 + Play Date3783004275 + Play Date UTC2023-11-16T15:31:15Z + Skip Count4 + Skip Date2021-10-03T15:05:44Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameDie For Me (feat. Future & Halsey) + Persistent IDA1B9E46FCCF1F37E + Explicit + Track TypeRemote + Apple Music + + 3751 + + Track ID3751 + NameCircles + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post, Kaan Gunesberk, Adam Feeney & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7733632 + Total Time215277 + Disc Number1 + Disc Count1 + Track Number6 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count148 + Play Date3783007410 + Play Date UTC2023-11-16T16:23:30Z + Skip Count6 + Skip Date2022-06-28T16:09:51Z + Release Date2019-08-30T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameCircles + Persistent ID9C7727CACABE2490 + Track TypeRemote + Apple Music + + 3753 + + Track ID3753 + NameInternet + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post, Kanye West & Dacoury Dahi Natche + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4677474 + Total Time123390 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count74 + Play Date3783013700 + Play Date UTC2023-11-16T18:08:20Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameInternet + Persistent ID69FE0651037E39D8 + Explicit + Track TypeRemote + Apple Music + + 3755 + + Track ID3755 + NameStaring at the Sun (feat. SZA) + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Matt Tavares, Austin Post, Solana Rowe, Adam Feeney & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6201258 + Total Time168276 + Disc Number1 + Disc Count1 + Track Number11 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3783671955 + Play Date UTC2023-11-24T08:59:15Z + Skip Count2 + Skip Date2021-04-15T20:07:01Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameStaring at the Sun (feat. SZA) + Persistent IDA2D734C6C6BB8186 + Explicit + Track TypeRemote + Apple Music + + 3757 + + Track ID3757 + NameTake What You Want (feat. Ozzy Osbourne & Travis Scott) + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Andrew Watt, Austin Post, Ozzy Osbourne, Jacques Webster & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8264998 + Total Time229580 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count82 + Play Date3783007862 + Play Date UTC2023-11-16T16:31:02Z + Skip Count11 + Skip Date2022-09-01T09:29:55Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameTake What You Want (feat. Ozzy Osbourne & Travis Scott) + Persistent IDF5B61DAD28DB595A + Track TypeRemote + Apple Music + + 3759 + + Track ID3759 + NameHollywood's Bleeding + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Brian Lee, Austin Post, Billy Walsh & Carter Lang + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5679447 + Total Time156265 + Disc Number1 + Disc Count1 + Track Number1 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count138 + Play Date3783012370 + Play Date UTC2023-11-16T17:46:10Z + Skip Count10 + Skip Date2023-02-26T20:04:24Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameHollywood's Bleeding + Persistent ID314FB0A8AA160DD0 + Track TypeRemote + Apple Music + + 3761 + + Track ID3761 + NameI Know + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5322260 + Total Time141441 + Disc Number1 + Disc Count1 + Track Number16 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count67 + Play Date3783056818 + Play Date UTC2023-11-17T06:06:58Z + Skip Count2 + Skip Date2022-08-19T16:10:05Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameI Know + Persistent ID6B79313F795CCE22 + Explicit + Track TypeRemote + Apple Music + + 3763 + + Track ID3763 + NameSaint-Tropez + ArtistPost Malone + Album ArtistPost Malone + ComposerJahaan Akil Sweet, Louis Bell, Austin Post, Adam Feeney, Nima Jahanbin, Paimon Jahanbin & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5609150 + Total Time150865 + Disc Number1 + Disc Count1 + Track Number2 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count122 + Play Date3783008755 + Play Date UTC2023-11-16T16:45:55Z + Skip Count9 + Skip Date2022-10-09T15:24:22Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameSaint-Tropez + Persistent ID6D62816763EBB693 + Explicit + Track TypeRemote + Apple Music + + 3765 + + Track ID3765 + NameMyself + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Emile Haynie, Austin Post, Joshua Tillman & Adam Feeney + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5792736 + Total Time158123 + Disc Number1 + Disc Count1 + Track Number15 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count66 + Play Date3783594485 + Play Date UTC2023-11-23T11:28:05Z + Skip Count1 + Skip Date2023-10-12T22:35:54Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameMyself + Persistent ID2E098290BABDB102 + Explicit + Track TypeRemote + Apple Music + + 3767 + + Track ID3767 + NameGoodbyes (feat. Young Thug) + ArtistPost Malone + Album ArtistPost Malone + ComposerBrian Lee, Louis Bell, Austin Post, Billy Walsh, Jeffery Williams, Jessie Lauren Foutz & Val Blavatnik + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6445775 + Total Time174843 + Disc Number1 + Disc Count1 + Track Number14 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count70 + Play Date3783711114 + Play Date UTC2023-11-24T19:51:54Z + Skip Count2 + Skip Date2023-10-12T22:35:59Z + Release Date2019-07-05T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameGoodbyes (feat. Young Thug) + Persistent IDB645969EC9031E3C + Explicit + Track TypeRemote + Apple Music + + 3769 + + Track ID3769 + NameA Thousand Bad Times + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Kaan Gunesberk, Austin Post, Adam Feeney & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7878758 + Total Time221183 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count75 + Play Date3783058054 + Play Date UTC2023-11-17T06:27:34Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameThousand Bad Times + Persistent ID1E876D335AD52C76 + Explicit + Track TypeRemote + Apple Music + + 3771 + + Track ID3771 + NameAllergic + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Brian Lee, Austin Post & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5795234 + Total Time156891 + Disc Number1 + Disc Count1 + Track Number4 + Track Count16 + Year2019 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3783005569 + Play Date UTC2023-11-16T15:52:49Z + Skip Count14 + Skip Date2023-07-19T11:40:14Z + Release Date2019-09-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameAllergic + Persistent ID35E4540B07376857 + Explicit + Track TypeRemote + Apple Music + + 3773 + + Track ID3773 + NameWow. + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post, Adam Feeny & Billy Walsh + AlbumHollywood's Bleeding + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5594776 + Total Time149507 + Disc Number1 + Disc Count1 + Track Number17 + Year2018 + Date Modified2019-09-18T16:26:21Z + Date Added2019-09-18T16:26:21Z + Bit Rate256 + Sample Rate44100 + Play Count95 + Play Date3783011753 + Play Date UTC2023-11-16T17:35:53Z + Skip Count3 + Skip Date2021-11-02T16:14:28Z + Release Date2018-12-24T08:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumHollywood's Bleeding + Sort ArtistPost Malone + Sort NameWow. + Persistent IDC5A3FA0BA8C07F67 + Explicit + Track TypeRemote + Apple Music + + 3775 + + Track ID3775 + NameI Just Want You + ArtistOzzy Osbourne + Album ArtistOzzy Osbourne + ComposerOzzy Osbourne & Jim Vallance + AlbumOzzmosis (Bonus Track Version) + GenreHard Rock + KindApple Music AAC audio file + Size10965653 + Total Time296123 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year1995 + Date Modified2019-09-18T18:16:48Z + Date Added2019-09-18T18:16:48Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3783410581 + Play Date UTC2023-11-21T08:23:01Z + Release Date1995-10-23T07:00:00Z + Loved + Artwork Count1 + Sort AlbumOzzmosis (Bonus Track Version) + Sort ArtistOzzy Osbourne + Sort NameI Just Want You + Persistent IDA5C94F0256B68DE1 + Track TypeRemote + Apple Music + + 3777 + + Track ID3777 + NameMr Sal + ArtistNiska + Album ArtistNiska + ComposerSaydiq & Sam H + AlbumMr Sal + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6230520 + Total Time177333 + Disc Number1 + Disc Count1 + Track Number10 + Track Count18 + Year2019 + Date Modified2019-09-20T08:34:46Z + Date Added2019-09-20T08:34:46Z + Bit Rate256 + Sample Rate44100 + Play Count79 + Play Date3783682465 + Play Date UTC2023-11-24T11:54:25Z + Skip Count7 + Skip Date2022-11-11T18:39:34Z + Release Date2019-09-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMr Sal + Sort ArtistNiska + Sort NameMr Sal + Persistent IDA9869F57F7AAD4CE + Explicit + Track TypeRemote + Apple Music + + 3779 + + Track ID3779 + NameMemories + ArtistMaroon 5 + Album ArtistMaroon 5 + ComposerAdam Levine, Michael Pollack, Jonathan Bellion, Jordan Johnson, Stefan Johnson, Vincent Ford & Jacob Kasher Hindlin + AlbumMemories - Single + GenrePop + KindApple Music AAC audio file + Size6808629 + Total Time189486 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-09-24T11:03:40Z + Date Added2019-09-24T11:03:40Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3776255129 + Play Date UTC2023-08-30T12:45:29Z + Skip Count1 + Skip Date2022-09-01T09:30:19Z + Release Date2019-09-20T12:00:00Z + Artwork Count1 + Sort AlbumMemories - Single + Sort ArtistMaroon 5 + Sort NameMemories + Persistent IDDE80E9F1A502FD70 + Track TypeRemote + Apple Music + + 3781 + + Track ID3781 + NameUnder the Same Sun + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom (Deluxe Edition) + GenreAlternative Folk + KindApple Music AAC audio file + Size10070968 + Total Time286280 + Disc Number1 + Disc Count1 + Track Number14 + Track Count17 + Year2011 + Date Modified2019-09-24T17:24:06Z + Date Added2019-09-24T17:24:06Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3771825543 + Play Date UTC2023-07-10T06:19:03Z + Release Date2011-01-01T12:00:00Z + Rating40 + Rating Computed + Album Rating40 + Artwork Count1 + Sort AlbumEvery Kingdom (Deluxe Edition) + Sort ArtistBen Howard + Sort NameUnder the Same Sun + Persistent ID1C5C9C8C5ECE847C + Track TypeRemote + Apple Music + + 3783 + + Track ID3783 + NameNica Libres At Dusk + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard, Mickey Smith, Kyle Keegan, Nathan Wason, India Bourne & Richard Thomas + AlbumNoonday Dream + GenreSinger/Songwriter + KindApple Music AAC audio file + Size14254968 + Total Time394320 + Disc Number1 + Disc Count1 + Track Number1 + Track Count9 + Year2018 + Date Modified2019-09-24T17:48:02Z + Date Added2019-09-24T17:48:02Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3766664094 + Play Date UTC2023-05-11T12:34:54Z + Release Date2018-06-01T12:00:00Z + Artwork Count1 + Sort AlbumNoonday Dream + Sort ArtistBen Howard + Sort NameNica Libres At Dusk + Persistent ID5F102F16E8C84E3F + Track TypeRemote + Apple Music + + 3785 + + Track ID3785 + NameGracious + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom (Deluxe Edition) + GenreAlternative Folk + KindApple Music AAC audio file + Size10421346 + Total Time297173 + Disc Number1 + Disc Count1 + Track Number9 + Track Count17 + Year2011 + Date Modified2019-09-24T18:09:27Z + Date Added2019-09-24T18:09:27Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3767036462 + Play Date UTC2023-05-15T20:01:02Z + Release Date2011-01-01T12:00:00Z + Rating40 + Rating Computed + Album Rating40 + Artwork Count1 + Sort AlbumEvery Kingdom (Deluxe Edition) + Sort ArtistBen Howard + Sort NameGracious + Persistent ID42F4FE017538DB3C + Track TypeRemote + Apple Music + + 3787 + + Track ID3787 + NameThe Girl on the Couch + ArtistOkay(K) + Album ArtistOkay(K) + AlbumThe Girl on the Couch EP - EP + GenreR&B/Soul + KindAAC audio file + Size3985858 + Total Time104226 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2019 + Date Modified2019-09-25T16:59:32Z + Date Added2019-09-25T16:59:32Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3727605841 + Play Date UTC2022-02-13T11:04:01Z + Skip Count1 + Skip Date2019-09-25T19:38:13Z + Release Date2019-09-10T12:00:00Z + Sort AlbumGirl on the Couch EP - EP + Sort ArtistOkay(K) + Sort NameGirl on the Couch + Persistent ID85B1904379884BFE + Track TypeRemote + + 3789 + + Track ID3789 + NameSlow Dancing W/ Jazz + ArtistOkay(K) + Album ArtistOkay(K) + Albumslow dancing w/ jazz - Single + GenrePop + KindAAC audio file + Size8984166 + Total Time254537 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-09-25T16:59:49Z + Date Added2019-09-25T16:59:49Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3760470672 + Play Date UTC2023-02-28T20:11:12Z + Release Date2019-08-30T12:00:00Z + Artwork Count1 + Sort Albumslow dancing w/ jazz - Single + Sort ArtistOkay(K) + Sort NameSlow Dancing W/ Jazz + Persistent ID8E618A7DAAD4165D + Explicit + Track TypeRemote + + 3791 + + Track ID3791 + NameSarah's Song + ArtistRicky Hil + Album ArtistRicky Hil + AlbumSyldd + GenreR&B/Soul + KindApple Music AAC audio file + Size7944301 + Total Time225667 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2014 + Date Modified2019-09-25T17:23:30Z + Date Added2019-09-25T17:23:30Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3760253032 + Play Date UTC2023-02-26T07:43:52Z + Release Date2014-12-16T12:00:00Z + Artwork Count1 + Sort AlbumSyldd + Sort ArtistRicky Hil + Sort NameSarah's Song + Persistent ID27E1234C29375F7D + Explicit + Track TypeRemote + Apple Music + + 3793 + + Track ID3793 + NameNomads (feat. The Weeknd) + ArtistRicky Hil + Album ArtistRicky Hil + AlbumSyldd + GenreR&B/Soul + KindApple Music AAC audio file + Size8437471 + Total Time241427 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2014 + Date Modified2019-09-25T17:25:55Z + Date Added2019-09-25T17:25:55Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3774950122 + Play Date UTC2023-08-15T10:15:22Z + Release Date2014-12-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSyldd + Sort ArtistRicky Hil + Sort NameNomads (feat. The Weeknd) + Persistent ID90A8DB4C1AE993F6 + Explicit + Track TypeRemote + Apple Music + + 3795 + + Track ID3795 + NameBeautiful When You're Sad + ArtistRicky Hil + Album ArtistRicky Hil + AlbumSyldd + GenreR&B/Soul + KindApple Music AAC audio file + Size10372082 + Total Time298373 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2014 + Date Modified2019-09-25T17:36:48Z + Date Added2019-09-25T17:36:48Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781174196 + Play Date UTC2023-10-26T11:09:56Z + Release Date2014-12-16T12:00:00Z + Artwork Count1 + Sort AlbumSyldd + Sort ArtistRicky Hil + Sort NameBeautiful When You're Sad + Persistent IDCE4C2F6E6F41377E + Explicit + Track TypeRemote + Apple Music + + 3797 + + Track ID3797 + NameWalk Around Here + ArtistRicky Hil + Album ArtistRicky Hil + ComposerRicky Hil + AlbumCandy Painted Coffins + GenreAlternative + KindApple Music AAC audio file + Size4626528 + Total Time124974 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2015 + Date Modified2019-09-25T18:18:02Z + Date Added2019-09-25T18:18:02Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3782979129 + Play Date UTC2023-11-16T08:32:09Z + Skip Count1 + Skip Date2022-11-26T14:51:57Z + Release Date2015-07-17T12:00:00Z + Artwork Count1 + Sort AlbumCandy Painted Coffins + Sort ArtistRicky Hil + Sort NameWalk Around Here + Persistent ID34EABB9B9CDE60AD + Explicit + Track TypeRemote + Apple Music + + 3799 + + Track ID3799 + NamePsych Ward Blues + ArtistRicky Hil + Album ArtistRicky Hil + ComposerRicky Hil + AlbumCandy Painted Coffins + GenreAlternative + KindApple Music AAC audio file + Size7288761 + Total Time205009 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2015 + Date Modified2019-09-25T19:05:15Z + Date Added2019-09-25T19:05:15Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count16 + Play Date3776335336 + Play Date UTC2023-08-31T11:02:16Z + Skip Count1 + Skip Date2020-02-01T06:07:04Z + Release Date2015-07-14T12:00:00Z + Artwork Count1 + Sort AlbumCandy Painted Coffins + Sort ArtistRicky Hil + Sort NamePsych Ward Blues + Persistent ID056F780E5071E2A5 + Explicit + Track TypeRemote + Apple Music + + 3801 + + Track ID3801 + NameSuperman + ArtistRicky Hil + Album ArtistRicky Hil + ComposerRicky Hil + AlbumCandy Painted Coffins + GenreAlternative + KindApple Music AAC audio file + Size8874098 + Total Time252669 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2015 + Date Modified2019-09-25T19:16:37Z + Date Added2019-09-25T19:16:37Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count15 + Play Date3758766317 + Play Date UTC2023-02-09T02:45:17Z + Skip Count1 + Skip Date2023-10-03T15:22:49Z + Release Date2015-07-14T12:00:00Z + Artwork Count1 + Sort AlbumCandy Painted Coffins + Sort ArtistRicky Hil + Sort NameSuperman + Persistent IDFC4E23D81C8A9BEB + Explicit + Track TypeRemote + Apple Music + + 3803 + + Track ID3803 + NameParanoia + ArtistRicky Hil + Album ArtistRicky Hil + ComposerRicky Hil + AlbumCandy Painted Coffins + GenreAlternative + KindApple Music AAC audio file + Size7988795 + Total Time224600 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2015 + Date Modified2019-09-25T19:16:37Z + Date Added2019-09-25T19:16:37Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3773235345 + Play Date UTC2023-07-26T13:55:45Z + Skip Count2 + Skip Date2022-01-14T11:05:04Z + Release Date2015-07-14T12:00:00Z + Artwork Count1 + Sort AlbumCandy Painted Coffins + Sort ArtistRicky Hil + Sort NameParanoia + Persistent ID0115DBAAA5066553 + Explicit + Track TypeRemote + Apple Music + + 3805 + + Track ID3805 + NameSkys Black + ArtistRicky Hil + Album ArtistRicky Hil + ComposerRicky Hil + AlbumCandy Painted Coffins + GenreAlternative + KindApple Music AAC audio file + Size6001782 + Total Time152772 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2015 + Date Modified2019-09-25T19:16:37Z + Date Added2019-09-25T19:16:37Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count26 + Play Date3783412668 + Play Date UTC2023-11-21T08:57:48Z + Skip Count3 + Skip Date2022-09-20T11:02:54Z + Release Date2015-07-14T12:00:00Z + Artwork Count1 + Sort AlbumCandy Painted Coffins + Sort ArtistRicky Hil + Sort NameSkys Black + Persistent ID0858C603358FA2DC + Explicit + Track TypeRemote + Apple Music + + 3807 + + Track ID3807 + NameChained + ArtistThe xx + Album ArtistThe xx + ComposerOliver Sim & Romy Madley Croft + AlbumCoexist + GenreAlternative + KindApple Music AAC audio file + Size6110458 + Total Time167547 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2012 + Date Modified2019-09-25T19:22:59Z + Date Added2019-09-25T19:22:59Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3770487924 + Play Date UTC2023-06-24T18:45:24Z + Release Date2012-08-07T07:00:00Z + Album Rating60 + Album Rating Computed + Artwork Count1 + Sort AlbumCoexist + Sort Album Artistxx + Sort Artistxx + Sort NameChained + Persistent ID9555A955F0E45F27 + Track TypeRemote + Apple Music + + 3809 + + Track ID3809 + NameAll the Time 2 + ArtistWintertime + Album ArtistWintertime + AlbumAll the Time 2 - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5510899 + Total Time150271 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2019-09-25T19:45:30Z + Date Added2019-09-25T19:45:30Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3773545992 + Play Date UTC2023-07-30T04:13:12Z + Skip Count2 + Skip Date2023-01-20T20:35:03Z + Release Date2016-10-21T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAll the Time 2 - Single + Sort ArtistWintertime + Sort NameAll the Time 2 + Persistent ID517FF4997E1CAC79 + Explicit + Track TypeRemote + Apple Music + + 3811 + + Track ID3811 + Name4 Door + ArtistWintertime + Album ArtistWintertime + ComposerWintertime + Album4 Door - Single + GenreHip-Hop/Rap + KindAAC audio file + Size5566540 + Total Time151894 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2019-09-25T19:46:31Z + Date Added2019-09-25T19:46:31Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3711821020 + Play Date UTC2021-08-14T18:23:40Z + Release Date2018-07-06T12:00:00Z + Loved + Artwork Count1 + Sort Album4 Door - Single + Sort ArtistWintertime + Sort Name4 Door + Persistent ID632770A9A2937A6A + Explicit + Track TypeRemote + + 3813 + + Track ID3813 + NameFeeling Like (feat. Jeezy) + ArtistKodak Black + Album ArtistKodak Black + ComposerHonorable C.N.O.T.E, Jay Jenkins & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size8097045 + Total Time228259 + Disc Number1 + Disc Count1 + Track Number16 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3776429967 + Play Date UTC2023-09-01T13:19:27Z + Skip Count1 + Skip Date2023-06-25T09:03:29Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameFeeling Like (feat. Jeezy) + Persistent ID96024D929C8249E4 + Explicit + Track TypeRemote + Apple Music + + 3815 + + Track ID3815 + NameWhy They Call You Kodak + ArtistKodak Black + Album ArtistKodak Black + ComposerBen Billions & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7532846 + Total Time213655 + Disc Number1 + Disc Count1 + Track Number17 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3779316921 + Play Date UTC2023-10-04T23:15:21Z + Skip Count2 + Skip Date2022-07-24T13:34:16Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameWhy They Call You Kodak + Persistent ID0C769CD706BF7067 + Explicit + Track TypeRemote + Apple Music + + 3817 + + Track ID3817 + NameThere He Go + ArtistKodak Black + Album ArtistKodak Black + ComposerAaron Lockhart Jr. & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7053734 + Total Time196113 + Disc Number1 + Disc Count1 + Track Number18 + Track Count18 + Year2016 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3780497275 + Play Date UTC2023-10-18T15:07:55Z + Skip Count1 + Skip Date2022-10-23T08:19:35Z + Release Date2016-12-23T08:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameThere He Go + Persistent ID30DCDFDB440C2A47 + Explicit + Track TypeRemote + Apple Music + + 3819 + + Track ID3819 + NameSave You + ArtistKodak Black + Album ArtistKodak Black + ComposerBen Billions, Kodak Black & NAV + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size8477395 + Total Time238687 + Disc Number1 + Disc Count1 + Track Number8 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3773644726 + Play Date UTC2023-07-31T07:38:46Z + Skip Count3 + Skip Date2022-10-29T09:19:23Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameSave You + Persistent ID4246B9F6EBECE41E + Explicit + Track TypeRemote + Apple Music + + 3821 + + Track ID3821 + NameConscience (feat. Future) + ArtistKodak Black + Album ArtistKodak Black + ComposerDY, Future & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7846597 + Total Time219754 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781196402 + Play Date UTC2023-10-26T17:20:02Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameConscience (feat. Future) + Persistent IDD7CE25649D2E7836 + Explicit + Track TypeRemote + Apple Music + + 3823 + + Track ID3823 + NameTunnel Vision + ArtistKodak Black + Album ArtistKodak Black + ComposerKevin Gomringer, Kodak Black, Metro Boomin, Southside & Tim Gomringer + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size9533050 + Total Time268187 + Disc Number1 + Disc Count1 + Track Number10 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3783321889 + Play Date UTC2023-11-20T07:44:49Z + Release Date2017-02-17T08:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameTunnel Vision + Persistent ID906CF7128E7E61A6 + Explicit + Track TypeRemote + Apple Music + + 3825 + + Track ID3825 + NameCorrlinks and JPay + ArtistKodak Black + Album ArtistKodak Black + Composer30 Roc & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size6619958 + Total Time182833 + Disc Number1 + Disc Count1 + Track Number11 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783684619 + Play Date UTC2023-11-24T12:30:19Z + Skip Count1 + Skip Date2019-10-02T12:42:15Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameCorrlinks and JPay + Persistent IDCC10C5EE1679A98D + Explicit + Track TypeRemote + Apple Music + + 3827 + + Track ID3827 + NameReminiscing (feat. A Boogie wit da Hoodie) + ArtistKodak Black + Album ArtistKodak Black + ComposerA Boogie wit da Hoodie, Ben Billions, Dyryk & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7962598 + Total Time225132 + Disc Number1 + Disc Count1 + Track Number12 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781535847 + Play Date UTC2023-10-30T15:37:27Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort ComposerBoogie wit da Hoodie, Ben Billions, Dyryk & Kodak Black + Sort NameReminiscing (feat. A Boogie wit da Hoodie) + Persistent ID5AA6D27C508B59D8 + Explicit + Track TypeRemote + Apple Music + + 3829 + + Track ID3829 + NameSide N***a + ArtistKodak Black + Album ArtistKodak Black + ComposerC-Clip Beatz & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7509190 + Total Time209808 + Disc Number1 + Disc Count1 + Track Number13 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3766559336 + Play Date UTC2023-05-10T07:28:56Z + Skip Count1 + Skip Date2023-03-28T09:39:35Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameSide Nigga + Persistent ID0C54B9F8848FE1AF + Explicit + Track TypeRemote + Apple Music + + 3831 + + Track ID3831 + NameOff the Land + ArtistKodak Black + Album ArtistKodak Black + ComposerKodak Black, Rex Kudo & Wheezy + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7986076 + Total Time225726 + Disc Number1 + Disc Count1 + Track Number14 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3775566979 + Play Date UTC2023-08-22T13:36:19Z + Skip Count2 + Skip Date2022-08-11T13:38:04Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameOff the Land + Persistent ID4A0A802038D2EC87 + Explicit + Track TypeRemote + Apple Music + + 3833 + + Track ID3833 + NameU Ain't Never + ArtistKodak Black + Album ArtistKodak Black + ComposerBen Billions & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7531819 + Total Time209707 + Disc Number1 + Disc Count1 + Track Number5 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3773156125 + Play Date UTC2023-07-25T15:55:25Z + Skip Count2 + Skip Date2023-10-29T11:55:50Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameU Ain't Never + Persistent ID1578CC8228EC9CE2 + Explicit + Track TypeRemote + Apple Music + + 3835 + + Track ID3835 + NameTwenty 8 + ArtistKodak Black + Album ArtistKodak Black + ComposerDaris Meachem & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size6503297 + Total Time179591 + Disc Number1 + Disc Count1 + Track Number6 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3760962856 + Play Date UTC2023-03-06T12:54:16Z + Skip Count3 + Skip Date2023-10-21T19:05:24Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameTwenty 8 + Persistent IDB2A50BDEA3237336 + Explicit + Track TypeRemote + Apple Music + + 3837 + + Track ID3837 + NamePatty Cake + ArtistKodak Black + Album ArtistKodak Black + ComposerBen Billions, Kodak Black, Ness & Nick Seeley + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size6996134 + Total Time198110 + Disc Number1 + Disc Count1 + Track Number7 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3777563585 + Play Date UTC2023-09-14T16:13:05Z + Skip Date2022-10-10T13:38:30Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NamePatty Cake + Persistent IDDA5AF80F09961B4F + Explicit + Track TypeRemote + Apple Music + + 3839 + + Track ID3839 + NameCoolin and Booted + ArtistKodak Black + Album ArtistKodak Black + ComposerBen Billions, DannyBoyStyles & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7666017 + Total Time214782 + Disc Number1 + Disc Count1 + Track Number2 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3776171902 + Play Date UTC2023-08-29T13:38:22Z + Skip Count2 + Skip Date2022-08-21T12:14:06Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameCoolin and Booted + Persistent ID2EE9B3BF3C726545 + Explicit + Track TypeRemote + Apple Music + + 3841 + + Track ID3841 + NameCandy Paint (feat. Bun B) + ArtistKodak Black + Album ArtistKodak Black + ComposerBun B, Jan Branicki, Kevin Price & Kodak Black + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size7778829 + Total Time218990 + Disc Number1 + Disc Count1 + Track Number3 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3775745468 + Play Date UTC2023-08-24T15:11:08Z + Skip Count2 + Skip Date2021-04-07T18:31:09Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameCandy Paint (feat. Bun B) + Persistent IDBCBAE58F78A3FA94 + Explicit + Track TypeRemote + Apple Music + + 3843 + + Track ID3843 + NameUp in Here + ArtistKodak Black + Album ArtistKodak Black + ComposerCharlie Handsome, Kodak Black & Rex Kudo + AlbumPainting Pictures + GenreHip-Hop + KindApple Music AAC audio file + Size6417931 + Total Time175682 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2017 + Date Modified2019-09-26T12:45:28Z + Date Added2019-09-26T12:45:28Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3773848141 + Play Date UTC2023-08-02T16:09:01Z + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumPainting Pictures + Sort ArtistKodak Black + Sort NameUp in Here + Persistent ID561FBDD9CA2BFEA8 + Explicit + Track TypeRemote + Apple Music + + 3845 + + Track ID3845 + NameTremosine + ArtistGeorge Ogilvie + Album ArtistGeorge Ogilvie + ComposerGeorge Ogilvie + AlbumWhite Out + GenreAlternative + KindApple Music AAC audio file + Size11804113 + Total Time343573 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2020 + Date Modified2019-09-27T09:23:03Z + Date Added2019-09-27T09:23:03Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3768380769 + Play Date UTC2023-05-31T09:26:09Z + Skip Count2 + Skip Date2022-08-16T15:28:12Z + Release Date2020-02-06T08:00:00Z + Artwork Count1 + Sort AlbumWhite Out + Sort ArtistGeorge Ogilvie + Sort NameTremosine + Persistent ID20E372886FEDC4BC + Track TypeRemote + Apple Music + + 3847 + + Track ID3847 + NameShelter (feat. Ropoporose & BRNS) + ArtistNamdose + Album ArtistNamdose + ComposerAntoine Meersseman, Romain Benard, Pauline Benard, Timothée Philippe & Diego Leyder + AlbumShelter (feat. Ropoporose & BRNS) - Single + GenreElectronic + KindApple Music AAC audio file + Size9217602 + Total Time259077 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-09-27T09:31:17Z + Date Added2019-09-27T09:31:17Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3773763435 + Play Date UTC2023-08-01T16:37:15Z + Release Date2019-09-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumShelter (feat. Ropoporose & BRNS) - Single + Sort ArtistNamdose + Sort NameShelter (feat. Ropoporose & BRNS) + Persistent ID7EDD4DB1F6F4F676 + Track TypeRemote + Apple Music + + 3849 + + Track ID3849 + NameOpen + ArtistLuke Howard + Album ArtistLuke Howard + ComposerLuke Howard + AlbumMore Heart Stories - EP + GenreInstrumental + KindApple Music AAC audio file + Size7330440 + Total Time182648 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2018 + Date Modified2019-09-27T11:11:34Z + Date Added2019-09-27T11:11:34Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3778583726 + Play Date UTC2023-09-26T11:35:26Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumMore Heart Stories - EP + Sort ArtistLuke Howard + Sort NameOpen + Persistent ID866C19098AD98206 + Track TypeRemote + Apple Music + + 3851 + + Track ID3851 + NameMiss You + ArtistTrentemøller + Album ArtistTrentemøller + ComposerTrentemøller + AlbumThe Last Resort + GenreElectronic + KindApple Music AAC audio file + Size8807549 + Total Time247818 + Disc Number1 + Disc Count2 + Track Number13 + Track Count13 + Year2006 + Date Modified2019-09-27T11:17:12Z + Date Added2019-09-27T11:17:12Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781535621 + Play Date UTC2023-10-30T15:33:41Z + Skip Count3 + Skip Date2021-09-24T20:09:09Z + Release Date2006-01-01T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumLast Resort + Sort ArtistTrentemøller + Sort NameMiss You + Persistent IDCFD73ACBAA7D5080 + Track TypeRemote + Apple Music + + 3853 + + Track ID3853 + NameOn the Esplanade + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size8268322 + Total Time220640 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2009 + Date Modified2019-09-27T11:24:07Z + Date Added2019-09-27T11:24:07Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3765125678 + Play Date UTC2023-04-23T17:14:38Z + Skip Count1 + Skip Date2022-03-15T17:17:55Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameOn the Esplanade + Persistent IDEF0D39FC0CF2DD04 + Track TypeRemote + Apple Music + + 3855 + + Track ID3855 + NameXO TOUR Llif3 + ArtistLil Uzi Vert + Album ArtistLil Uzi Vert + ComposerBryan Lamar Simmons, Bryan Simmons & Lil Uzi Vert + AlbumXO TOUR Llif3 - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6651445 + Total Time182707 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-09-27T13:32:10Z + Date Added2019-09-27T13:32:10Z + Bit Rate256 + Sample Rate44100 + Play Count111 + Play Date3783782823 + Play Date UTC2023-11-25T15:47:03Z + Skip Count5 + Skip Date2022-11-26T14:59:23Z + Release Date2017-02-26T08:00:00Z + Loved + Artwork Count1 + Sort AlbumXO TOUR Llif3 - Single + Sort ArtistLil Uzi Vert + Sort NameXO TOUR Llif3 + Persistent IDBC67463A2932B398 + Explicit + Track TypeRemote + Apple Music + + 3857 + + Track ID3857 + NameParadox + ArtistJaymes Young + Album ArtistJaymes Young + AlbumParadox - Single + GenreAlternative + KindApple Music AAC audio file + Size8152370 + Total Time230493 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-10-04T16:09:03Z + Date Added2019-10-04T16:09:03Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3781355026 + Play Date UTC2023-10-28T13:23:46Z + Release Date2019-09-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumParadox - Single + Sort ArtistJaymes Young + Sort NameParadox + Persistent IDE38649B0B7FAEFD9 + Track TypeRemote + Apple Music + + 3859 + + Track ID3859 + Nameprobably<3 + ArtistSueco + Album ArtistSueco + ComposerJad Antoury & William Henry Victor Schultz + AlbumMISCREANT + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5230846 + Total Time141053 + Disc Number1 + Disc Count1 + Track Number6 + Track Count8 + Year2019 + Date Modified2019-10-11T09:47:05Z + Date Added2019-10-11T09:47:05Z + Bit Rate256 + Sample Rate44100 + Play Count95 + Play Date3772816116 + Play Date UTC2023-07-21T17:28:36Z + Skip Count5 + Skip Date2023-02-22T15:01:27Z + Release Date2019-09-20T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMISCREANT + Sort ArtistSueco + Sort Nameprobably<3 + Persistent ID841DC22D7B284553 + Explicit + Track TypeRemote + Apple Music + + 3861 + + Track ID3861 + NameFiction + ArtistLund + Album ArtistLund + ComposerRobert Lund + AlbumFiction - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9677857 + Total Time279515 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-10-12T08:30:05Z + Date Added2019-10-12T08:30:05Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781206555 + Play Date UTC2023-10-26T20:09:15Z + Skip Count3 + Skip Date2020-12-10T16:54:02Z + Release Date2019-07-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFiction - Single + Sort ArtistLund + Sort NameFiction + Persistent ID28CEC198EF3AA6F5 + Explicit + Track TypeRemote + Apple Music + + 3863 + + Track ID3863 + NameSick Lullaby (feat. Keaton Henson) + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size9552546 + Total Time273729 + Disc Number1 + Disc Count1 + Track Number15 + Year2017 + Date Modified2019-10-14T11:37:52Z + Date Added2019-10-14T11:37:52Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3782992326 + Play Date UTC2023-11-16T12:12:06Z + Release Date2017-01-20T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameSick Lullaby (feat. Keaton Henson) + Persistent ID335118B18A83297A + Track TypeRemote + Apple Music + + 3865 + + Track ID3865 + NameYou + ArtistKeaton Henson + Album ArtistKeaton Henson + ComposerKeaton Henson + AlbumBirthdays + GenreAlternative + KindApple Music AAC audio file + Size9947872 + Total Time282680 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2013 + Date Modified2019-10-15T04:23:10Z + Date Added2019-10-15T04:23:10Z + Bit Rate256 + Sample Rate44100 + Play Count81 + Play Date3780127602 + Play Date UTC2023-10-14T08:26:42Z + Skip Count6 + Skip Date2019-11-03T06:45:10Z + Release Date2013-02-22T12:00:00Z + Artwork Count1 + Sort AlbumBirthdays + Sort ArtistKeaton Henson + Sort NameYou + Persistent IDE34645B3915E6FCA + Track TypeRemote + Apple Music + + 3867 + + Track ID3867 + NameFarewell (feat. ESKA, Dhani Harrison, Keaton Henson, James Lavelle, Jack Leonard, Mïnk, Liela Moss, Elliott Power, YSÉE & Steven Young) + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size13204747 + Total Time376530 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2017 + Date Modified2019-10-15T08:53:57Z + Date Added2019-10-15T08:53:57Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3782886489 + Play Date UTC2023-11-15T06:48:09Z + Skip Count2 + Skip Date2022-11-26T15:03:11Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameFarewell (feat. ESKA, Dhani Harrison, Keaton Henson, James Lavelle, Jack Leonard, Mïnk, Liela Moss, Elliott Power, YSÉE & Steven Young) + Persistent ID5A67353E568614D3 + Track TypeRemote + Apple Music + + 3869 + + Track ID3869 + NameNo Where to Run / Bandits + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size11653214 + Total Time334876 + Disc Number1 + Disc Count1 + Track Number6 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783685120 + Play Date UTC2023-11-24T12:38:40Z + Skip Count1 + Skip Date2022-08-05T19:24:41Z + Release Date2017-05-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameNo Where to Run / Bandits + Persistent IDE677656543618C32 + Track TypeRemote + Apple Music + + 3871 + + Track ID3871 + NameIter 3: Keep on Runnin’ + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size2233852 + Total Time56113 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780686538 + Play Date UTC2023-10-20T19:42:18Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameIter 3: Keep on Runnin’ + Persistent ID2889D744F0D45017 + Track TypeRemote + Apple Music + + 3873 + + Track ID3873 + NameArms Length (feat. Callum Finn, Mïnk & Elliott Power) + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size10571810 + Total Time296184 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3776162492 + Play Date UTC2023-08-29T11:01:32Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameArms Length (feat. Callum Finn, Mïnk & Elliott Power) + Persistent IDF314054D3F74DEB6 + Track TypeRemote + Apple Music + + 3875 + + Track ID3875 + NameSonata (feat. Keaton Henson) + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size10888214 + Total Time318239 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3781529389 + Play Date UTC2023-10-30T13:49:49Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameSonata (feat. Keaton Henson) + Persistent IDF6E472389570C0AE + Track TypeRemote + Apple Music + + 3877 + + Track ID3877 + NameIter 2: How Do You Feel? + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size2734326 + Total Time66771 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783669565 + Play Date UTC2023-11-24T08:19:25Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameIter 2: How Do You Feel? + Persistent IDFFCEB46B48472184 + Track TypeRemote + Apple Music + + 3879 + + Track ID3879 + NameIter 5: Friend or Foe + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size1599413 + Total Time33405 + Disc Number1 + Disc Count1 + Track Number13 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3781081045 + Play Date UTC2023-10-25T09:17:25Z + Skip Count1 + Skip Date2022-04-07T15:47:50Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameIter 5: Friend or Foe + Persistent ID3CE785FFC8125105 + Track TypeRemote + Apple Music + + 3881 + + Track ID3881 + NameStole Enough (feat. Mïnk) + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size6728669 + Total Time189027 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781615329 + Play Date UTC2023-10-31T13:42:09Z + Release Date2017-05-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameStole Enough (feat. Mïnk) + Persistent ID6E5299EC7C56DF87 + Track TypeRemote + Apple Music + + 3883 + + Track ID3883 + NameSunrise (Always Comes Around) [feat. Liela Moss] + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size13760270 + Total Time402422 + Disc Number1 + Disc Count1 + Track Number14 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3781622676 + Play Date UTC2023-10-31T15:44:36Z + Skip Count1 + Skip Date2022-02-22T15:02:51Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameSunrise (Always Comes Around) [feat. Liela Moss] + Persistent ID68AEEC14B72D3235 + Track TypeRemote + Apple Music + + 3885 + + Track ID3885 + NameIter 1: Have You Looked at Yourself? + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size2151445 + Total Time49875 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3780848558 + Play Date UTC2023-10-22T16:42:38Z + Skip Count1 + Skip Date2019-10-19T15:10:52Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameIter 1: Have You Looked at Yourself? + Persistent ID97DEBF63EA2A1931 + Track TypeRemote + Apple Music + + 3887 + + Track ID3887 + NameCowboys or Indians (feat. Elliott Power, Mïnk & YSÉE) + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size13429416 + Total Time380349 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3772705405 + Play Date UTC2023-07-20T10:43:25Z + Skip Count1 + Skip Date2023-10-12T16:42:45Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameCowboys or Indians (feat. Elliott Power, Mïnk & YSÉE) + Persistent ID5268243F3BA04315 + Track TypeRemote + Apple Music + + 3889 + + Track ID3889 + NameThe Road (feat. ESKA) + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size13612994 + Total Time382845 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781385480 + Play Date UTC2023-10-28T21:51:20Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameRoad (feat. ESKA) + Persistent IDD81F16ACF307AC99 + Track TypeRemote + Apple Music + + 3891 + + Track ID3891 + NameLooking for the Rain (feat. Mark Lanegan & ESKA) + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size12913139 + Total Time361870 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3780309384 + Play Date UTC2023-10-16T10:56:24Z + Release Date2017-04-13T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameLooking for the Rain (feat. Mark Lanegan & ESKA) + Persistent IDA32B4B4F904559E7 + Track TypeRemote + Apple Music + + 3893 + + Track ID3893 + NameIter 4: We Are Stardust + ArtistUNKLE + Album ArtistUNKLE + AlbumThe Road, Pt. 1 + GenreElectronic + KindApple Music AAC audio file + Size2375456 + Total Time59554 + Disc Number1 + Disc Count1 + Track Number10 + Track Count13 + Year2017 + Date Modified2019-10-16T11:04:30Z + Date Added2019-10-16T11:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3781059848 + Play Date UTC2023-10-25T03:24:08Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumRoad, Pt. 1 + Sort ArtistUNKLE + Sort NameIter 4: We Are Stardust + Persistent IDAEEB811BFF8B8F5A + Track TypeRemote + Apple Music + + 3895 + + Track ID3895 + NameInitium + ArtistKeaton Henson + Album ArtistKeaton Henson + ComposerKeaton Henson + AlbumSix Lethargies + GenreClassical Crossover + KindApple Music AAC audio file + Size20830117 + Total Time572187 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2019 + Date Modified2019-10-16T11:10:20Z + Date Added2019-10-16T11:10:20Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3779315980 + Play Date UTC2023-10-04T22:59:40Z + Skip Count4 + Skip Date2022-08-13T15:49:56Z + Release Date2019-10-25T12:00:00Z + Artwork Count1 + Sort AlbumSix Lethargies + Sort ArtistKeaton Henson + Sort NameInitium + Persistent IDA08A12969458C835 + Track TypeRemote + Apple Music + + 3897 + + Track ID3897 + NameMéchant (feat. Ninho) + ArtistNiska + Album ArtistNiska + ComposerDopebwoy + AlbumMr Sal + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6748582 + Total Time191133 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2019 + Date Modified2019-10-18T07:19:18Z + Date Added2019-10-18T07:19:18Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3783768482 + Play Date UTC2023-11-25T11:48:02Z + Skip Count6 + Skip Date2023-07-20T15:00:34Z + Release Date2019-09-06T12:00:00Z + Artwork Count1 + Sort AlbumMr Sal + Sort ArtistNiska + Sort NameMéchant (feat. Ninho) + Persistent ID9C9C09029FE6D074 + Explicit + Track TypeRemote + Apple Music + + 3899 + + Track ID3899 + NameBucking the System (feat. Kevin Gates) + ArtistGucci Mane + Album ArtistGucci Mane + ComposerKevin Gilyard, Radric Davis & Xavier Dotson + AlbumWoptober II + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7402502 + Total Time202927 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2019 + Date Modified2019-10-18T08:53:14Z + Date Added2019-10-18T08:53:14Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3776431713 + Play Date UTC2023-09-01T13:48:33Z + Skip Count1 + Skip Date2020-12-09T14:58:11Z + Release Date2019-10-18T12:00:00Z + Artwork Count1 + Sort AlbumWoptober II + Sort ArtistGucci Mane + Sort NameBucking the System (feat. Kevin Gates) + Persistent IDEAB7B7214288CCE0 + Explicit + Track TypeRemote + Apple Music + + 3901 + + Track ID3901 + NameBurn My Shadow + ArtistUNKLE + Album ArtistUNKLE + AlbumWar Stories + GenreElectronic + KindApple Music AAC audio file + Size10572765 + Total Time297147 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year2007 + Date Modified2019-10-19T15:47:56Z + Date Added2019-10-19T15:47:56Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3766664672 + Play Date UTC2023-05-11T12:44:32Z + Skip Count1 + Skip Date2023-03-15T17:40:47Z + Release Date2007-07-02T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWar Stories + Sort ArtistUNKLE + Sort NameBurn My Shadow + Persistent ID16C711BB8DF50FD8 + Track TypeRemote + Apple Music + + 3903 + + Track ID3903 + NameTalk Is Cheap + ArtistChet Faker + Album ArtistChet Faker + ComposerNick Murphy + AlbumBuilt on Glass + GenreElectronic + KindApple Music AAC audio file + Size7768933 + Total Time218067 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2014 + Date Modified2019-10-20T14:10:23Z + Date Added2019-10-20T14:10:23Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3781572373 + Play Date UTC2023-10-31T01:46:13Z + Skip Count2 + Skip Date2022-04-23T18:13:43Z + Release Date1975-01-01T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBuilt on Glass + Sort ArtistChet Faker + Sort NameTalk Is Cheap + Persistent IDCEFC4CF8E6888E8E + Track TypeRemote + Apple Music + + 3905 + + Track ID3905 + NameHIGHEST IN THE ROOM + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster + AlbumHIGHEST IN THE ROOM - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6729322 + Total Time175721 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-10-23T10:45:00Z + Date Added2019-10-23T10:45:00Z + Bit Rate256 + Sample Rate44100 + Play Count179 + Play Date3783264493 + Play Date UTC2023-11-19T15:48:13Z + Skip Count4 + Skip Date2021-04-28T10:55:30Z + Release Date2019-10-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHIGHEST IN THE ROOM - Single + Sort ArtistTravis Scott + Sort NameHIGHEST IN THE ROOM + Persistent IDA352FAA12D680009 + Explicit + Track TypeRemote + Apple Music + + 3907 + + Track ID3907 + Namehot girl bummer + Artistblackbear + Album Artistblackbear + ComposerAndrew Goldstein & Matthew Tyler Musto + Albumeverything means nothing + GenrePop + KindApple Music AAC audio file + Size6698064 + Total Time188344 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2019 + Date Modified2019-10-23T13:48:07Z + Date Added2019-10-23T13:48:07Z + Bit Rate256 + Sample Rate44100 + Play Count87 + Play Date3770987346 + Play Date UTC2023-06-30T13:29:06Z + Skip Count2 + Skip Date2019-10-31T04:05:10Z + Release Date2019-08-23T12:00:00Z + Loved + Artwork Count1 + Sort Albumeverything means nothing + Sort Artistblackbear + Sort Namehot girl bummer + Persistent IDEB6E6ED69681F726 + Explicit + Track TypeRemote + Apple Music + + 3909 + + Track ID3909 + NameMessing With My Head + ArtistSmoothboi Ezra + Album ArtistSmoothboi Ezra + ComposerRebecca Williams + AlbumIs It - EP + GenreAlternative + KindApple Music AAC audio file + Size6884598 + Total Time193333 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2019 + Date Modified2019-10-25T18:10:44Z + Date Added2019-10-25T18:10:44Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count176 + Play Date3771690578 + Play Date UTC2023-07-08T16:49:38Z + Skip Count3 + Skip Date2020-12-08T21:00:27Z + Release Date2019-09-12T12:00:00Z + Artwork Count1 + Sort AlbumIs It - EP + Sort ArtistSmoothboi Ezra + Sort NameMessing With My Head + Persistent IDB05556FB8E835377 + Track TypeRemote + Apple Music + + 3911 + + Track ID3911 + NameOpal Ocean + Artistslenderbodies + Album Artistslenderbodies + AlbumFabulist - EP + GenreAlternative + KindApple Music AAC audio file + Size7970219 + Total Time225992 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2017 + Date Modified2019-11-04T15:25:18Z + Date Added2019-11-04T15:25:18Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3776163045 + Play Date UTC2023-08-29T11:10:45Z + Skip Count1 + Skip Date2019-11-08T06:47:32Z + Release Date2017-04-21T12:00:00Z + Artwork Count1 + Sort AlbumFabulist - EP + Sort Artistslenderbodies + Sort NameOpal Ocean + Persistent ID20742367009EC6A7 + Track TypeRemote + Apple Music + + 3913 + + Track ID3913 + NameSides + ArtistBalthazar + Album ArtistBalthazar + ComposerJinte Deprez & Maarten Devoldere + AlbumRats + GenreAlternative + KindApple Music AAC audio file + Size7072678 + Total Time188048 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2012 + Date Modified2019-11-04T18:17:29Z + Date Added2019-11-04T18:17:29Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783577011 + Play Date UTC2023-11-23T06:36:51Z + Skip Count2 + Skip Date2022-07-06T10:34:26Z + Release Date2012-10-15T12:00:00Z + Artwork Count1 + Sort AlbumRats + Sort ArtistBalthazar + Sort NameSides + Persistent ID66CD9FAD4A478F54 + Track TypeRemote + Apple Music + + 3915 + + Track ID3915 + NameGrace + ArtistJacob Banks + Album ArtistJacob Banks + AlbumThe Paradox + GenreR&B/Soul + KindApple Music AAC audio file + Size7643552 + Total Time216000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count8 + Year2015 + Date Modified2019-11-05T05:56:49Z + Date Added2019-11-05T05:56:49Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3780911781 + Play Date UTC2023-10-23T10:16:21Z + Skip Count1 + Skip Date2019-11-08T06:48:32Z + Release Date2015-07-21T07:00:00Z + Artwork Count1 + Sort AlbumParadox + Sort ArtistJacob Banks + Sort NameGrace + Persistent IDB0DC0CDBD0E22540 + Track TypeRemote + Apple Music + + 3917 + + Track ID3917 + NameFollow God + ArtistKanye West + Album ArtistKanye West + ComposerKanye West, Jahmal Gwin, Bryant Bell, Aaron Butts, Calvin Eubanks & Curtis Eubanks + AlbumJESUS IS KING + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4030231 + Total Time104591 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2019 + Date Modified2019-11-08T10:30:15Z + Date Added2019-11-08T10:30:15Z + Bit Rate256 + Sample Rate44100 + Play Count73 + Play Date3768835623 + Play Date UTC2023-06-05T15:47:03Z + Skip Count3 + Skip Date2020-01-12T06:27:58Z + Release Date2019-10-25T12:00:00Z + Artwork Count1 + Sort AlbumJESUS IS KING + Sort ArtistKanye West + Sort NameFollow God + Persistent ID481E1DC1A6AE2A12 + Track TypeRemote + Apple Music + + 3919 + + Track ID3919 + NameInto the Woods + ArtistPumarosa + Album ArtistPumarosa + ComposerIsabel Munoz-Newsome, James Neville, John Tomoya Forster & Nicholas Owen + AlbumDevastation + GenreAlternative + KindApple Music AAC audio file + Size11697850 + Total Time319333 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2019 + Date Modified2019-11-08T15:37:19Z + Date Added2019-11-08T15:37:19Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3772084335 + Play Date UTC2023-07-13T06:12:15Z + Skip Count1 + Skip Date2019-11-11T17:14:17Z + Release Date2019-11-01T07:00:00Z + Loved + Artwork Count1 + Sort AlbumDevastation + Sort ArtistPumarosa + Sort NameInto the Woods + Persistent ID664AF31736476C25 + Track TypeRemote + Apple Music + + 3921 + + Track ID3921 + NameGod Is + ArtistKanye West + Album ArtistKanye West + ComposerKanye West, Warryn Campbell, Federico Vindver, Angel Lopez, Timothy Lee Mckenzie, Victory Elyse Boyd & Robert Fryson + AlbumJESUS IS KING + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7326484 + Total Time203141 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2019 + Date Modified2019-11-10T11:28:09Z + Date Added2019-11-10T11:28:09Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3781622903 + Play Date UTC2023-10-31T15:48:23Z + Skip Count2 + Skip Date2021-02-04T21:59:58Z + Release Date2019-10-25T12:00:00Z + Artwork Count1 + Sort AlbumJESUS IS KING + Sort ArtistKanye West + Sort NameGod Is + Persistent IDA0A4C368FC005F89 + Track TypeRemote + Apple Music + + 3923 + + Track ID3923 + NameClosed on Sunday + ArtistKanye West + Album ArtistKanye West + ComposerKanye West, Federico Vindver, Angel Lopez, Brian Miller, Timothy Mosley, Terrence Thornton, Gene Thornton, Rennard East, Victory Elyse Boyd & "Chango" Farias Gomez + AlbumJESUS IS KING + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5586425 + Total Time151873 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2019 + Date Modified2019-11-10T11:32:58Z + Date Added2019-11-10T11:32:58Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3775291173 + Play Date UTC2023-08-19T08:59:33Z + Skip Count2 + Skip Date2020-01-12T06:27:48Z + Release Date2019-10-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumJESUS IS KING + Sort ArtistKanye West + Sort NameClosed on Sunday + Persistent IDAF2450F1D25CDB21 + Track TypeRemote + Apple Music + + 3925 + + Track ID3925 + NameHot (feat. Gunna) + ArtistYoung Thug + Album ArtistYoung Thug + AlbumSo Much Fun + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6959254 + Total Time193027 + Disc Number1 + Disc Count1 + Track Number4 + Track Count19 + Year2019 + Date Modified2019-11-11T17:09:18Z + Date Added2019-11-11T17:09:18Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3770985887 + Play Date UTC2023-06-30T13:04:47Z + Skip Count2 + Skip Date2019-11-11T19:10:29Z + Release Date2019-08-16T07:00:00Z + Artwork Count1 + Sort AlbumSo Much Fun + Sort ArtistYoung Thug + Sort NameHot (feat. Gunna) + Persistent IDFBADDE65F8D9F7A6 + Explicit + Track TypeRemote + Apple Music + + 3927 + + Track ID3927 + NameLast Stand Kovacs V1 + ArtistJeff Russo + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size1731102 + Total Time34147 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2018 + Date Modified2019-11-12T07:29:28Z + Date Added2019-11-12T07:29:28Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3774949650 + Play Date UTC2023-08-15T10:07:30Z + Skip Count4 + Skip Date2023-06-18T18:35:39Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameLast Stand Kovacs V1 + Persistent IDC73307862416EAE7 + Track TypeRemote + Apple Music + + 3929 + + Track ID3929 + NameConsciousness + ArtistJeff Russo + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size11130670 + Total Time323440 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2018 + Date Modified2019-11-12T07:29:28Z + Date Added2019-11-12T07:29:28Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783354184 + Play Date UTC2023-11-20T16:43:04Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameConsciousness + Persistent IDBE11DFC27A8C78CE + Track TypeRemote + Apple Music + + 3931 + + Track ID3931 + NameHer Daughter + ArtistJeff Russo + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size9294551 + Total Time267120 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2018 + Date Modified2019-11-12T07:29:28Z + Date Added2019-11-12T07:29:28Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3781571380 + Play Date UTC2023-10-31T01:29:40Z + Skip Count1 + Skip Date2022-07-12T14:01:20Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameHer Daughter + Persistent ID4AD69C3A2DF2B122 + Track TypeRemote + Apple Music + + 3933 + + Track ID3933 + NameBancroft Shows Kovacs + ArtistJeff Russo + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size7817351 + Total Time224680 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2018 + Date Modified2019-11-12T07:29:28Z + Date Added2019-11-12T07:29:28Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780391677 + Play Date UTC2023-10-17T09:47:57Z + Skip Count2 + Skip Date2022-02-06T17:39:02Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameBancroft Shows Kovacs + Persistent ID783595F48FF8C3FE + Track TypeRemote + Apple Music + + 3935 + + Track ID3935 + NameMore Human Than Human + ArtistSune Rose Wagner + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size4532795 + Total Time113067 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2018 + Date Modified2019-11-12T07:29:28Z + Date Added2019-11-12T07:29:28Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3765801892 + Play Date UTC2023-05-01T13:04:52Z + Skip Count1 + Skip Date2022-09-27T06:54:08Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistSune Rose Wagner + Sort NameMore Human Than Human + Persistent ID94F60BD9204F9BB5 + Track TypeRemote + Apple Music + + 3937 + + Track ID3937 + NamePassing the Book + ArtistJeff Russo + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size4879099 + Total Time131387 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2018 + Date Modified2019-11-12T07:29:28Z + Date Added2019-11-12T07:29:28Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3777369863 + Play Date UTC2023-09-12T10:24:23Z + Skip Count3 + Skip Date2022-11-08T16:02:29Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NamePassing the Book + Persistent IDEFB460FB29A2A4AE + Track TypeRemote + Apple Music + + 3939 + + Track ID3939 + NameAttacked By Troopers + ArtistJeff Russo + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size2540491 + Total Time62800 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2018 + Date Modified2019-11-12T07:29:28Z + Date Added2019-11-12T07:29:28Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781193792 + Play Date UTC2023-10-26T16:36:32Z + Skip Count1 + Skip Date2022-12-12T06:07:36Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameAttacked By Troopers + Persistent ID8FCFACAC0B6414A9 + Track TypeRemote + Apple Music + + 3941 + + Track ID3941 + NameThe Patchwork Man + ArtistJeff Russo + Album ArtistJeff Russo + AlbumAltered Carbon (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size2057886 + Total Time46893 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2018 + Date Modified2019-11-12T07:29:28Z + Date Added2019-11-12T07:29:28Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3773536932 + Play Date UTC2023-07-30T01:42:12Z + Skip Count1 + Skip Date2022-10-05T20:43:02Z + Release Date2018-02-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAltered Carbon (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NamePatchwork Man + Persistent ID88A492D1157097D7 + Track TypeRemote + Apple Music + + 3943 + + Track ID3943 + NameBLACK METAL TERRORIST l 13 M T + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Isaac De Boni, Michael Mule, Ronald Spence Jr. & Michael Hirschenberg + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5971972 + Total Time161627 + Disc Number3 + Disc Count3 + Track Number4 + Track Count4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count64 + Play Date3767006991 + Play Date UTC2023-05-15T11:49:51Z + Release Date2018-07-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameBLACK METAL TERRORIST l 13 M T + Persistent IDB1465EF6B8EF07B5 + Explicit + Track TypeRemote + Apple Music + + 3945 + + Track ID3945 + NameSUPER SAIYAN SUPERMAN l ZUPER ZA1YAN ZUPERMAN + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Isaac De Boni, Michael Mule & Justin Elwin + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4851165 + Total Time132813 + Disc Number2 + Disc Count3 + Track Number1 + Track Count4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count57 + Play Date3767802701 + Play Date UTC2023-05-24T16:51:41Z + Skip Count2 + Skip Date2020-01-12T06:27:10Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameSUPER SAIYAN SUPERMAN l ZUPER ZA1YAN ZUPERMAN + Persistent ID44A45F315755B25B + Explicit + Track TypeRemote + Apple Music + + 3947 + + Track ID3947 + NameSWITCH IT UP l ZWITCH 1T UP + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Ronald Spence Jr. & Ramon Ibanga Jr + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6151579 + Total Time175907 + Disc Number2 + Disc Count3 + Track Number2 + Track Count4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3776621342 + Play Date UTC2023-09-03T18:29:02Z + Skip Count2 + Skip Date2020-01-12T06:27:13Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameSWITCH IT UP l ZWITCH 1T UP + Persistent ID5683781DFEFC4320 + Explicit + Track TypeRemote + Apple Music + + 3949 + + Track ID3949 + NamePERCS l PERCZ + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6900952 + Total Time186627 + Disc Number3 + Disc Count3 + Track Number2 + Track Count4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3782476592 + Play Date UTC2023-11-10T12:56:32Z + Skip Count1 + Skip Date2019-11-19T14:07:12Z + Release Date2018-05-25T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NamePERCS l PERCZ + Persistent ID468C0938A4CEF3F2 + Explicit + Track TypeRemote + Apple Music + + 3951 + + Track ID3951 + NameMAD I GOT IT l MAD 1 GOT 1T + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Isaac De Boni, Michael Mule, Kevin Saurer, Jeff Saurer & Javohn Griffin + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8229613 + Total Time232293 + Disc Number2 + Disc Count3 + Track Number3 + Track Count4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3781767076 + Play Date UTC2023-11-02T07:51:16Z + Skip Count3 + Skip Date2020-09-28T14:04:42Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameMAD I GOT IT l MAD 1 GOT 1T + Persistent ID233B83E56FC219A7 + Explicit + Track TypeRemote + Apple Music + + 3953 + + Track ID3953 + NameTABOO l TA13OO + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Isaac De Boni, Michael Mule, Michael Hirschenberg & Latisha Hyman + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7247644 + Total Time197440 + Disc Number1 + Disc Count3 + Track Number1 + Track Count3 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3773543283 + Play Date UTC2023-07-30T03:28:03Z + Skip Count1 + Skip Date2021-05-05T22:07:59Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameTABOO l TA13OO + Persistent ID83862FD9E2D1285C + Explicit + Track TypeRemote + Apple Music + + 3955 + + Track ID3955 + NameSIRENS l Z1RENZ (feat. J.I.D) + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Destin Route, Dacoury Natche & Billie Eilish + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8762033 + Total Time236107 + Disc Number2 + Disc Count3 + Track Number4 + Track Count4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3776233670 + Play Date UTC2023-08-30T06:47:50Z + Skip Count2 + Skip Date2022-08-13T09:28:49Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameSIRENS l Z1RENZ (feat. J.I.D) + Persistent ID4D8BAF8CD379352B + Explicit + Track TypeRemote + Apple Music + + 3957 + + Track ID3957 + NameBLACK BALLOONS l 13LACK 13ALLOONZ (feat. Twelve'len & GoldLink) + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, D'Anthony Carlos, Lavares Joseph, Isaac De Boni, Michael Mule & Ryan DeGrandy + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7653082 + Total Time210960 + Disc Number1 + Disc Count3 + Track Number2 + Track Count3 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3763675575 + Play Date UTC2023-04-06T22:26:15Z + Skip Count2 + Skip Date2020-01-12T06:27:01Z + Release Date2018-07-23T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameBLACK BALLOONS l 13LACK 13ALLOONZ (feat. Twelve'len & GoldLink) + Persistent IDE462D28E95A7EF0E + Explicit + Track TypeRemote + Apple Music + + 3959 + + Track ID3959 + NameVENGEANCE l VENGEANCE (feat. JPEGMAFIA & ZillaKami) + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Barrington Devaugh Hendricks, Junius Donald Rogers, Ryan DeGrandy, Isaac De Boni & Michael Mule + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8511888 + Total Time240213 + Disc Number3 + Disc Count3 + Track Number3 + Track Count4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3782902899 + Play Date UTC2023-11-15T11:21:39Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameVENGEANCE l VENGEANCE (feat. JPEGMAFIA & ZillaKami) + Persistent ID3B06BF7C75D917E8 + Explicit + Track TypeRemote + Apple Music + + 3961 + + Track ID3961 + NameCASH MANIAC l CAZH MAN1AC (feat. Nyyjerya) + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Imani Taylor, Ryan DeGrandy, Isaac De Boni, Michael Mule & Samuel Ahana + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7216315 + Total Time198773 + Disc Number1 + Disc Count3 + Track Number3 + Track Count3 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3780130834 + Play Date UTC2023-10-14T09:20:34Z + Skip Count3 + Skip Date2022-11-16T20:16:58Z + Release Date2018-07-24T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameCASH MANIAC l CAZH MAN1AC (feat. Nyyjerya) + Persistent IDD7BD86A85E1FFF75 + Explicit + Track TypeRemote + Apple Music + + 3963 + + Track ID3963 + NameSUMO l ZUMO + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry & Charlie Heat + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8008123 + Total Time227373 + Disc Number1 + Disc Count3 + Track Number4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3752167776 + Play Date UTC2022-11-24T17:49:36Z + Skip Count3 + Skip Date2021-10-21T15:18:36Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameSUMO l ZUMO + Persistent ID3FEA51B7CCC1EEC1 + Explicit + Track TypeRemote + Apple Music + + 3965 + + Track ID3965 + NameTHE BLACKEST BALLOON l THE 13LACKEZT 13ALLOON + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Isaac De Boni, Michael Mule & Ryan DeGrandy + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6576269 + Total Time175173 + Disc Number3 + Disc Count3 + Track Number1 + Track Count4 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3775828495 + Play Date UTC2023-08-25T14:14:55Z + Skip Count1 + Skip Date2020-01-12T06:27:45Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameBLACKEST BALLOON l THE 13LACKEZT 13ALLOON + Persistent IDBB2E693A2BF412C9 + Explicit + Track TypeRemote + Apple Music + + 3967 + + Track ID3967 + NameCLOUT COBAIN l CLOUT CO13A1N + ArtistDenzel Curry + Album ArtistDenzel Curry + ComposerDenzel Curry, Mike Hector & Julian Gramma + AlbumTA13OO + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8206146 + Total Time231333 + Disc Number2 + Disc Count3 + Track Number5 + Year2018 + Date Modified2019-11-13T15:42:45Z + Date Added2019-11-13T15:42:45Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3776351499 + Play Date UTC2023-08-31T15:31:39Z + Skip Count2 + Skip Date2020-01-12T06:27:30Z + Release Date2018-07-27T12:00:00Z + Artwork Count1 + Sort AlbumTA13OO + Sort ArtistDenzel Curry + Sort NameCLOUT COBAIN l CLOUT CO13A1N + Persistent ID6A60733AE029014D + Explicit + Track TypeRemote + Apple Music + + 3969 + + Track ID3969 + NameTokyo Drifting + ArtistGlass Animals & Denzel Curry + Album ArtistGlass Animals & Denzel Curry + ComposerDenzel Curry, Dave Bayley & Caiphus Semenya + AlbumTokyo Drifting - Single + GenreAlternative + KindApple Music AAC audio file + Size8201801 + Total Time217693 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-11-14T04:17:00Z + Date Added2019-11-14T04:17:00Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3781355887 + Play Date UTC2023-10-28T13:38:07Z + Skip Count5 + Skip Date2021-06-11T11:46:45Z + Release Date2019-11-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTokyo Drifting - Single + Sort ArtistGlass Animals & Denzel Curry + Sort NameTokyo Drifting + Persistent IDA4D5F0725B9679CC + Explicit + Track TypeRemote + Apple Music + + 3971 + + Track ID3971 + NameOverflow + ArtistANIMA! + Album ArtistANIMA! + AlbumGrow Your Garden + GenreIndie Pop + KindApple Music AAC audio file + Size8705095 + Total Time227507 + Disc Number1 + Disc Count1 + Track Number4 + Track Count9 + Year2019 + Date Modified2019-11-20T05:10:55Z + Date Added2019-11-20T05:10:55Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count19 + Play Date3780193108 + Play Date UTC2023-10-15T02:38:28Z + Release Date2019-04-17T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGrow Your Garden + Sort ArtistANIMA! + Sort NameOverflow + Persistent ID00FCE4B48BD0633F + Track TypeRemote + Apple Music + + 3973 + + Track ID3973 + NameThoughts Of A Child (feat. The New Ukrainians) + ArtistChip Taylor & The New Ukrainians + Album ArtistChip Taylor & The New Ukrainians + AlbumF**k All The Perfect People (feat. The New Ukrainians) + GenreRock + KindApple Music AAC audio file + Size9368250 + Total Time266107 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2012 + Date Modified2019-11-20T10:00:12Z + Date Added2019-11-20T10:00:12Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3770985693 + Play Date UTC2023-06-30T13:01:33Z + Release Date2012-01-25T12:00:00Z + Artwork Count1 + Sort AlbumF**k All The Perfect People (feat. The New Ukrainians) + Sort ArtistChip Taylor & The New Ukrainians + Sort NameThoughts Of A Child (feat. The New Ukrainians) + Persistent IDF0C37E19A89EF05A + Track TypeRemote + Apple Music + + 3975 + + Track ID3975 + NameJust a Thought + ArtistChelou + Album ArtistChelou + ComposerMaya Jane Coles & Adam R. S. Gray + AlbumOut of Sight + GenreAlternative + KindApple Music AAC audio file + Size6743376 + Total Time189219 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2019 + Date Modified2019-11-20T10:27:09Z + Date Added2019-11-20T10:27:09Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count29 + Play Date3780915857 + Play Date UTC2023-10-23T11:24:17Z + Skip Count3 + Skip Date2022-10-22T13:37:54Z + Release Date2019-04-26T12:00:00Z + Artwork Count1 + Sort AlbumOut of Sight + Sort ArtistChelou + Sort NameJust a Thought + Persistent IDD0BA7199500E5665 + Track TypeRemote + Apple Music + + 3977 + + Track ID3977 + NameYolo + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumB-Sides + GenreNew Acoustic + KindApple Music AAC audio file + Size5295910 + Total Time141690 + Disc Number1 + Disc Count1 + Track Number2 + Track Count20 + Year2013 + Date Modified2019-11-21T19:51:49Z + Date Added2019-11-21T19:51:49Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3780654025 + Play Date UTC2023-10-20T10:40:25Z + Skip Count5 + Skip Date2022-07-07T22:37:39Z + Release Date2013-04-29T12:00:00Z + Loved + Artwork Count1 + Sort AlbumB-Sides + Sort ArtistTom Rosenthal + Sort NameYolo + Persistent ID31420C5C20BD1268 + Track TypeRemote + Apple Music + + 3979 + + Track ID3979 + NameIt's Ok (Acoustic) + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumB-Sides + GenreNew Acoustic + KindApple Music AAC audio file + Size6845270 + Total Time191351 + Disc Number1 + Disc Count1 + Track Number4 + Track Count20 + Year2013 + Date Modified2019-11-23T11:58:46Z + Date Added2019-11-23T11:58:46Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3782803887 + Play Date UTC2023-11-14T07:51:27Z + Release Date2013-04-29T12:00:00Z + Artwork Count1 + Sort AlbumB-Sides + Sort ArtistTom Rosenthal + Sort NameIt's Ok (Acoustic) + Persistent ID752C34D901C9AF0B + Track TypeRemote + Apple Music + + 3981 + + Track ID3981 + NameBajo el agua + ArtistManuel Medrano + Album ArtistManuel Medrano + ComposerManuel Medrano + AlbumBajo el agua - Single + GenrePop Latino + KindApple Music AAC audio file + Size7917882 + Total Time222410 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2019-11-23T14:28:23Z + Date Added2019-11-23T14:28:23Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3783453839 + Play Date UTC2023-11-21T20:23:59Z + Skip Count5 + Skip Date2022-06-20T10:51:47Z + Release Date2015-07-17T12:00:00Z + Artwork Count1 + Sort AlbumBajo el agua - Single + Sort ArtistManuel Medrano + Sort NameBajo el agua + Persistent ID4DB495724C6F5499 + Track TypeRemote + Apple Music + + 3983 + + Track ID3983 + NameLoyal + ArtistKodak Black + Album ArtistKodak Black + ComposerC-Clip Beatz & Kodak Black + AlbumHeart Break Kodak + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6008971 + Total Time165821 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2018 + Date Modified2019-11-26T13:44:52Z + Date Added2019-11-26T13:44:52Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3776233007 + Play Date UTC2023-08-30T06:36:47Z + Skip Count1 + Skip Date2021-02-04T21:57:06Z + Release Date2018-02-14T12:00:00Z + Artwork Count1 + Sort AlbumHeart Break Kodak + Sort ArtistKodak Black + Sort NameLoyal + Persistent IDA1107C3F15387253 + Explicit + Track TypeRemote + Apple Music + + 3985 + + Track ID3985 + NameExorciSSm + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9855823 + Total Time281842 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3772806729 + Play Date UTC2023-07-21T14:52:09Z + Skip Date2020-02-22T07:37:30Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameExorciSSm + Persistent IDFD3053BA59F9605D + Explicit + Track TypeRemote + Apple Music + + 3987 + + Track ID3987 + NameSomebody Will Take Her + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6001271 + Total Time165719 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3761031290 + Play Date UTC2023-03-07T07:54:50Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameSomebody Will Take Her + Persistent IDFBE53A6BCF999795 + Explicit + Track TypeRemote + Apple Music + + 3989 + + Track ID3989 + NameShe Tastes Like Bubble Gum + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8394038 + Total Time239341 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count25 + Play Date3776148963 + Play Date UTC2023-08-29T07:16:03Z + Skip Count2 + Skip Date2023-07-06T06:08:06Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameShe Tastes Like Bubble Gum + Persistent ID17D366BB8AAAAB4B + Explicit + Track TypeRemote + Apple Music + + 3991 + + Track ID3991 + NameWhat a Love (feat. Bonic) + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7913127 + Total Time222885 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3776336627 + Play Date UTC2023-08-31T11:23:47Z + Skip Count1 + Skip Date2022-08-21T11:06:37Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameWhat a Love (feat. Bonic) + Persistent IDF1621C463E89A0AF + Explicit + Track TypeRemote + Apple Music + + 3993 + + Track ID3993 + NameWherever I Got You + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7871409 + Total Time222064 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count22 + Play Date3781600602 + Play Date UTC2023-10-31T09:36:42Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameWherever I Got You + Persistent ID6FDCC49DDB618D98 + Explicit + Track TypeRemote + Apple Music + + 3995 + + Track ID3995 + NameZips + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6583305 + Total Time179162 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:40Z + Date Added2019-11-27T13:18:40Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3779175478 + Play Date UTC2023-10-03T07:57:58Z + Skip Count2 + Skip Date2023-01-04T06:37:34Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameZips + Persistent ID16E259ABDAE46127 + Explicit + Track TypeRemote + Apple Music + + 3997 + + Track ID3997 + NameShe Loves Me but I Don't Like Her + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8465203 + Total Time240448 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count18 + Play Date3770987588 + Play Date UTC2023-06-30T13:33:08Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameShe Loves Me but I Don't Like Her + Persistent ID2349E86910D3F3A1 + Explicit + Track TypeRemote + Apple Music + + 3999 + + Track ID3999 + NamePray for Me Baby + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10464042 + Total Time300660 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count27 + Play Date3765359148 + Play Date UTC2023-04-26T10:05:48Z + Skip Count2 + Skip Date2022-01-18T22:56:27Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NamePray for Me Baby + Persistent IDAEBB969C5CD64953 + Explicit + Track TypeRemote + Apple Music + + 4001 + + Track ID4001 + NameWoh Woh (feat. Jay 305) + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7241427 + Total Time204126 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3783412323 + Play Date UTC2023-11-21T08:52:03Z + Skip Count7 + Skip Date2023-10-14T08:56:31Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameWoh Woh (feat. Jay 305) + Persistent ID429B0A988D211D3F + Explicit + Track TypeRemote + Apple Music + + 4003 + + Track ID4003 + NameI See a Ho Through My Window (feat. Jid Mack) + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6486509 + Total Time179459 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:39Z + Date Added2019-11-27T13:18:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count18 + Play Date3758664026 + Play Date UTC2023-02-07T22:20:26Z + Skip Count5 + Skip Date2022-12-26T09:39:29Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameI See a Ho Through My Window (feat. Jid Mack) + Persistent IDF2B70BA76EAAE3E3 + Explicit + Track TypeRemote + Apple Music + + 4005 + + Track ID4005 + NameYou Don't Wanna Go Down + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9226833 + Total Time265350 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:40Z + Date Added2019-11-27T13:18:40Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count22 + Play Date3772715504 + Play Date UTC2023-07-20T13:31:44Z + Skip Count1 + Skip Date2022-08-21T11:26:08Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameYou Don't Wanna Go Down + Persistent ID1D895F3456E49876 + Explicit + Track TypeRemote + Apple Music + + 4007 + + Track ID4007 + NameDevil Don't Take Me There + ArtistRicky Hil + Album ArtistRicky Hil + AlbumExorciSSm, Vol. 1 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8195380 + Total Time232263 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2016 + Date Modified2019-11-27T13:18:40Z + Date Added2019-11-27T13:18:40Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count22 + Play Date3783770703 + Play Date UTC2023-11-25T12:25:03Z + Skip Count3 + Skip Date2023-10-05T00:34:04Z + Release Date2016-12-16T12:00:00Z + Artwork Count1 + Sort AlbumExorciSSm, Vol. 1 + Sort ArtistRicky Hil + Sort NameDevil Don't Take Me There + Persistent ID487DDC0113F6FE28 + Explicit + Track TypeRemote + Apple Music + + 4009 + + Track ID4009 + NamePrecedent + ArtistKyle Lux + Album ArtistKyle Lux + ComposerKyle Tolbert + AlbumNo Roof Access + GenreR&B/Soul + KindApple Music AAC audio file + Size7181849 + Total Time201069 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2019 + Date Modified2019-11-30T12:20:28Z + Date Added2019-11-30T12:20:28Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count25 + Play Date3781196736 + Play Date UTC2023-10-26T17:25:36Z + Release Date2019-11-15T12:00:00Z + Artwork Count1 + Sort AlbumNo Roof Access + Sort ArtistKyle Lux + Sort NamePrecedent + Persistent IDCC70C3C34813D4E3 + Explicit + Track TypeRemote + Apple Music + + 4011 + + Track ID4011 + NameOut of Sight (feat. Témé Tan) + ArtistJaguar Jaguar + Album ArtistJaguar Jaguar + ComposerThomas Lauwers, Dries Meeus, Ruben Vanhoutte, Emiel Raeymaekers, Jasper Segers & Tanguy Haesevoets + AlbumOut of Sight (feat. Témé Tan) - Single + GenrePop + KindApple Music AAC audio file + Size6994906 + Total Time195513 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-11-30T19:14:12Z + Date Added2019-11-30T19:14:12Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3777370257 + Play Date UTC2023-09-12T10:30:57Z + Skip Count2 + Skip Date2023-10-14T09:08:59Z + Release Date2019-11-08T12:00:00Z + Artwork Count1 + Sort AlbumOut of Sight (feat. Témé Tan) - Single + Sort ArtistJaguar Jaguar + Sort NameOut of Sight (feat. Témé Tan) + Persistent IDC8C00575D5C21F15 + Track TypeRemote + Apple Music + + 4013 + + Track ID4013 + NameMood Swings + ArtistA Boogie wit da Hoodie + Album ArtistA Boogie wit da Hoodie + ComposerArtist Dubose & Wesley Glass + AlbumMood Swings - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5675329 + Total Time156960 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-12-01T14:22:23Z + Date Added2019-12-01T14:22:23Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3781193728 + Play Date UTC2023-10-26T16:35:28Z + Skip Count1 + Skip Date2021-06-02T18:59:04Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumMood Swings - Single + Sort Album ArtistBoogie wit da Hoodie + Sort ArtistBoogie wit da Hoodie + Sort NameMood Swings + Persistent ID1D219FB500BFD65C + Explicit + Track TypeRemote + Apple Music + + 4015 + + Track ID4015 + NameClosure + ArtistTrevor Daniel + Album ArtistTrevor Daniel + ComposerTrevor Neill, Danny Snodgrass Jr. & Nick Mira + AlbumRestless - EP + GenrePop + KindApple Music AAC audio file + Size6861637 + Total Time191581 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2019 + Date Modified2019-12-02T04:17:51Z + Date Added2019-12-02T04:17:51Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3772874890 + Play Date UTC2023-07-22T09:48:10Z + Release Date2019-03-22T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRestless - EP + Sort ArtistTrevor Daniel + Sort NameClosure + Persistent ID426C957E5700FF8A + Track TypeRemote + Apple Music + + 4017 + + Track ID4017 + Nameبنی آدم + ArtistColdplay + Album ArtistColdplay + ComposerAlice Coltrane, Chris Martin, Guy Berryman, Harcourt Whyte, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunset + GenreAlternative + KindApple Music AAC audio file + Size7198671 + Total Time194667 + Disc Number2 + Disc Count2 + Track Number6 + Track Count6 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3776618741 + Play Date UTC2023-09-03T17:45:41Z + Release Date2019-11-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort Nameبنی آدم + Persistent IDC37E5318F7BB9106 + Track TypeRemote + Apple Music + + 4019 + + Track ID4019 + NameChampion of the World + ArtistColdplay + Album ArtistColdplay + ComposerAndy Monaghan, Chris Martin, Guy Berryman, Harcourt Whyte, Jonny Buckland, Scott John Hutchison, Simon Liddell & Will Champion + AlbumEveryday Life + GroupingSunset + GenreAlternative + KindApple Music AAC audio file + Size9127787 + Total Time257547 + Disc Number2 + Disc Count2 + Track Number7 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3779916732 + Play Date UTC2023-10-11T21:52:12Z + Release Date2019-11-20T08:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameChampion of the World + Persistent IDDEF342E2F8E7FAFA + Track TypeRemote + Apple Music + + 4021 + + Track ID4021 + NameCry Cry Cry + ArtistColdplay + Album ArtistColdplay + ComposerBert Berns, Chris Martin, Guy Berryman, Jacob Collier, Jerry Ragovoy, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunset + GenreAlternative + KindApple Music AAC audio file + Size5993498 + Total Time167280 + Disc Number2 + Disc Count2 + Track Number4 + Track Count6 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3780833246 + Play Date UTC2023-10-22T12:27:26Z + Release Date2019-11-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameCry Cry Cry + Persistent IDF2119083ED245B79 + Track TypeRemote + Apple Music + + 4023 + + Track ID4023 + NameOld Friends + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunset + GenreAlternative + KindApple Music AAC audio file + Size5449445 + Total Time146947 + Disc Number2 + Disc Count2 + Track Number5 + Track Count6 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3754421066 + Play Date UTC2022-12-20T19:44:26Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameOld Friends + Persistent IDBF6721430C4134B5 + Track TypeRemote + Apple Music + + 4025 + + Track ID4025 + NameOrphans + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland, Moses Martin & Will Champion + AlbumEveryday Life + GroupingSunset + GenreAlternative + KindApple Music AAC audio file + Size7204322 + Total Time197533 + Disc Number2 + Disc Count2 + Track Number2 + Track Count6 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3759916822 + Play Date UTC2023-02-22T10:20:22Z + Skip Date2019-12-03T10:45:04Z + Release Date2019-10-24T07:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameOrphans + Persistent IDE7103261A5D31563 + Track TypeRemote + Apple Music + + 4027 + + Track ID4027 + NameÈkó + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunset + GenreAlternative + KindApple Music AAC audio file + Size5768102 + Total Time157867 + Disc Number2 + Disc Count2 + Track Number3 + Track Count6 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3780775790 + Play Date UTC2023-10-21T20:29:50Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameÈkó + Persistent ID52D7954E55644F8F + Track TypeRemote + Apple Music + + 4029 + + Track ID4029 + NameGuns + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunset + GenreAlternative + KindApple Music AAC audio file + Size4362712 + Total Time115080 + Disc Number2 + Disc Count2 + Track Number1 + Track Count6 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3776166806 + Play Date UTC2023-08-29T12:13:26Z + Skip Date2022-11-21T13:36:35Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameGuns + Persistent ID72852B8A9D61687D + Explicit + Track TypeRemote + Apple Music + + 4031 + + Track ID4031 + NameEveryday Life + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, John Metcalfe, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunset + GenreAlternative + KindApple Music AAC audio file + Size9032134 + Total Time258533 + Disc Number2 + Disc Count2 + Track Number8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3781061612 + Play Date UTC2023-10-25T03:53:32Z + Release Date2019-11-02T07:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameEveryday Life + Persistent IDAB28E5D271FE0BF3 + Track TypeRemote + Apple Music + + 4033 + + Track ID4033 + NameArabesque + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Drew Goddard, Femi Kuti, Guy Berryman, Jonny Buckland, Paul Van Haver & Will Champion + AlbumEveryday Life + GroupingSunrise + GenreAlternative + KindApple Music AAC audio file + Size11964828 + Total Time340280 + Disc Number1 + Disc Count2 + Track Number7 + Track Count8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3783074347 + Play Date UTC2023-11-17T10:59:07Z + Skip Count2 + Skip Date2022-08-17T12:33:13Z + Release Date2019-10-24T07:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameArabesque + Persistent IDAF32C2539848AF02 + Explicit + Track TypeRemote + Apple Music + + 4035 + + Track ID4035 + NameWhen I Need a Friend + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunrise + GenreAlternative + KindApple Music AAC audio file + Size5780525 + Total Time155000 + Disc Number1 + Disc Count2 + Track Number8 + Track Count8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3777135471 + Play Date UTC2023-09-09T17:17:51Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameWhen I Need a Friend + Persistent ID32129F39CE6EB219 + Track TypeRemote + Apple Music + + 4037 + + Track ID4037 + NameDaddy + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunrise + GenreAlternative + KindApple Music AAC audio file + Size10531090 + Total Time298320 + Disc Number1 + Disc Count2 + Track Number5 + Track Count8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3782990983 + Play Date UTC2023-11-16T11:49:43Z + Release Date2019-11-20T08:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameDaddy + Persistent ID21272971D84A2ADA + Track TypeRemote + Apple Music + + 4039 + + Track ID4039 + NameWOTW/POTP + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunrise + GenreAlternative + KindApple Music AAC audio file + Size3236160 + Total Time76933 + Disc Number1 + Disc Count2 + Track Number6 + Track Count8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3761062789 + Play Date UTC2023-03-07T16:39:49Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameWOTW/POTP + Persistent ID2C96246D5977780E + Track TypeRemote + Apple Music + + 4041 + + Track ID4041 + NameTrouble In Town + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunrise + GenreAlternative + KindApple Music AAC audio file + Size9718570 + Total Time278907 + Disc Number1 + Disc Count2 + Track Number3 + Track Count8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3782977658 + Play Date UTC2023-11-16T08:07:38Z + Skip Count1 + Skip Date2022-10-23T05:30:12Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameTrouble In Town + Persistent ID2F0C140EA642F320 + Explicit + Track TypeRemote + Apple Music + + 4043 + + Track ID4043 + NameBrokEn + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunrise + GenreAlternative + KindApple Music AAC audio file + Size5917671 + Total Time150200 + Disc Number1 + Disc Count2 + Track Number4 + Track Count8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3782802351 + Play Date UTC2023-11-14T07:25:51Z + Skip Count2 + Skip Date2022-07-19T10:46:35Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameBrokEn + Persistent ID8502CD7024BAA946 + Track TypeRemote + Apple Music + + 4045 + + Track ID4045 + NameSunrise + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Davide Rossi, Guy Berryman, Jonny Buckland & Will Champion + AlbumEveryday Life + GroupingSunrise + GenreAlternative + KindApple Music AAC audio file + Size5685246 + Total Time151093 + Disc Number1 + Disc Count2 + Track Number1 + Track Count8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3782903453 + Play Date UTC2023-11-15T11:30:53Z + Skip Count3 + Skip Date2021-12-02T08:47:08Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameSunrise + Persistent ID9B46EB8E2D9E9EE3 + Track TypeRemote + Apple Music + + 4047 + + Track ID4047 + NameChurch + ArtistColdplay + Album ArtistColdplay + ComposerAmjad Sabri, Chris Martin, Davide Rossi, Guy Berryman, Jacob Collier, Jonny Buckland, Mikkel D. Eriksen, Norah Shaqur, Tor Erik Hermansen & Will Champion + AlbumEveryday Life + GroupingSunrise + GenreAlternative + KindApple Music AAC audio file + Size8215255 + Total Time230013 + Disc Number1 + Disc Count2 + Track Number2 + Track Count8 + Year2019 + Date Modified2019-12-03T10:04:09Z + Date Added2019-12-03T10:04:09Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781570701 + Play Date UTC2023-10-31T01:18:21Z + Skip Count3 + Skip Date2022-12-08T12:56:12Z + Release Date2019-11-22T12:00:00Z + Artwork Count1 + Sort AlbumEveryday Life + Sort ArtistColdplay + Sort NameChurch + Persistent IDBCA80371C8AFDBF9 + Track TypeRemote + Apple Music + + 4049 + + Track ID4049 + NameNorth Korea + ArtistJosh A & iAmJakeHill + Album ArtistJosh A & iAmJakeHill + AlbumBetter off Dead + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5685687 + Total Time153835 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2017 + Date Modified2019-12-03T10:41:09Z + Date Added2019-12-03T10:41:09Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781450088 + Play Date UTC2023-10-29T15:48:08Z + Release Date2017-10-19T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBetter off Dead + Sort ArtistJosh A & iAmJakeHill + Sort NameNorth Korea + Persistent ID036AAE946FE9F658 + Explicit + Track TypeRemote + Apple Music + + 4051 + + Track ID4051 + NameGucci Coffin + ArtistJosh A & iAmJakeHill + Album ArtistJosh A & iAmJakeHill + AlbumBetter off Dead + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6658583 + Total Time180005 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2017 + Date Modified2019-12-03T10:43:02Z + Date Added2019-12-03T10:43:02Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3773542811 + Play Date UTC2023-07-30T03:20:11Z + Release Date2017-10-19T12:00:00Z + Artwork Count1 + Sort AlbumBetter off Dead + Sort ArtistJosh A & iAmJakeHill + Sort NameGucci Coffin + Persistent ID810B26CDDDE4A309 + Explicit + Track TypeRemote + Apple Music + + 4053 + + Track ID4053 + NameMy Kind of Woman + ArtistMac DeMarco + Album ArtistMac DeMarco + Album2 + GenreAlternative + KindApple Music AAC audio file + Size6841334 + Total Time190846 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2012 + Date Modified2019-12-06T04:50:35Z + Date Added2019-12-06T04:50:35Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781203366 + Play Date UTC2023-10-26T19:16:06Z + Release Date2012-10-16T07:00:00Z + Artwork Count1 + Sort Album2 + Sort ArtistMac DeMarco + Sort NameMy Kind of Woman + Persistent IDCE908F0757C6980A + Track TypeRemote + Apple Music + + 4055 + + Track ID4055 + NameChamber of Reflection + ArtistMac DeMarco + Album ArtistMac DeMarco + AlbumSalad Days + GenreAlternative + KindApple Music AAC audio file + Size8690546 + Total Time231724 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2014 + Date Modified2019-12-06T04:53:40Z + Date Added2019-12-06T04:53:40Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781538780 + Play Date UTC2023-10-30T16:26:20Z + Skip Count3 + Skip Date2021-04-04T18:11:28Z + Release Date2014-04-01T07:00:00Z + Artwork Count1 + Sort AlbumSalad Days + Sort ArtistMac DeMarco + Sort NameChamber of Reflection + Persistent IDC4FCA7BB5078F738 + Track TypeRemote + Apple Music + + 4057 + + Track ID4057 + NameOn the Level + ArtistMac DeMarco + Album ArtistMac DeMarco + AlbumThis Old Dog + GenreIndie Rock + KindApple Music AAC audio file + Size7900541 + Total Time227653 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2017 + Date Modified2019-12-06T20:38:05Z + Date Added2019-12-06T20:38:05Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3781790931 + Play Date UTC2023-11-02T14:28:51Z + Skip Count5 + Skip Date2022-12-27T13:17:44Z + Release Date2017-04-11T12:00:00Z + Loved + Artwork Count1 + Sort AlbumThis Old Dog + Sort ArtistMac DeMarco + Sort NameOn the Level + Persistent IDFC4AF2392DF8999B + Track TypeRemote + Apple Music + + 4059 + + Track ID4059 + NameDrifters & Trawlers + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + AlbumMerrie Land + GenreAlternative + KindApple Music AAC audio file + Size5661610 + Total Time154853 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2018 + Date Modified2019-12-08T11:12:31Z + Date Added2019-12-08T11:12:31Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3765360799 + Play Date UTC2023-04-26T10:33:19Z + Skip Count3 + Skip Date2022-06-24T11:40:55Z + Release Date2018-11-16T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMerrie Land + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameDrifters & Trawlers + Persistent IDAE9C9FB7D3ED57CA + Track TypeRemote + Apple Music + + 4061 + + Track ID4061 + NameRibbons + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + AlbumMerrie Land + GenreAlternative + KindApple Music AAC audio file + Size6280066 + Total Time172227 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2018 + Date Modified2019-12-09T07:10:03Z + Date Added2019-12-09T07:10:03Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3782884536 + Play Date UTC2023-11-15T06:15:36Z + Release Date2018-11-16T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMerrie Land + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameRibbons + Persistent ID45352A26DBF35D64 + Track TypeRemote + Apple Music + + 4063 + + Track ID4063 + NameGun to the Head + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + AlbumMerrie Land + GenreAlternative + KindApple Music AAC audio file + Size9497423 + Total Time259107 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2018 + Date Modified2019-12-09T15:38:21Z + Date Added2019-12-09T15:38:21Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3781464919 + Play Date UTC2023-10-29T19:55:19Z + Skip Count1 + Skip Date2022-08-12T08:31:40Z + Release Date2018-11-16T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMerrie Land + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameGun to the Head + Persistent IDD31A65E0C44B6A12 + Track TypeRemote + Apple Music + + 4065 + + Track ID4065 + Name80s Life + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size7478109 + Total Time208187 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783363066 + Play Date UTC2023-11-20T19:11:06Z + Release Date2007-01-22T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort Name80s Life + Persistent ID5ECBA5B1E0F084B5 + Track TypeRemote + Apple Music + + 4067 + + Track ID4067 + NameHistory Song + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Abarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size7338319 + Total Time185973 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3783711300 + Play Date UTC2023-11-24T19:55:00Z + Skip Count1 + Skip Date2019-12-11T05:00:05Z + Release Date2007-01-22T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameHistory Song + Persistent IDC717A2D91DB0BA76 + Track TypeRemote + Apple Music + + 4069 + + Track ID4069 + NameNorthern Whale + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size8868141 + Total Time234133 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3773528875 + Play Date UTC2023-07-29T23:27:55Z + Release Date2007-01-22T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameNorthern Whale + Persistent ID9FC170F872BFED71 + Track TypeRemote + Apple Music + + 4071 + + Track ID4071 + NameKingdom of Doom + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size6247615 + Total Time162867 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2006 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3781536200 + Play Date UTC2023-10-30T15:43:20Z + Release Date2006-11-20T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameKingdom of Doom + Persistent IDABB9546F8567B22E + Track TypeRemote + Apple Music + + 4073 + + Track ID4073 + NameBehind the Sun + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size6027087 + Total Time158453 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783494956 + Play Date UTC2023-11-22T07:49:16Z + Release Date2007-01-22T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameBehind the Sun + Persistent ID2A413E54CE476B3F + Track TypeRemote + Apple Music + + 4075 + + Track ID4075 + NameHerculean + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size8458148 + Total Time239640 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2006 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3772873423 + Play Date UTC2023-07-22T09:23:43Z + Skip Count1 + Skip Date2023-05-23T06:05:16Z + Release Date2006-10-10T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameHerculean + Persistent ID891DCDCDF1795CC2 + Track TypeRemote + Apple Music + + 4077 + + Track ID4077 + NameGreen Fields (feat. James Dring) + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size5784545 + Total Time146333 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3783454861 + Play Date UTC2023-11-21T20:41:01Z + Release Date2007-01-22T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameGreen Fields (feat. James Dring) + Persistent ID412A6D6B1CECEB1A + Track TypeRemote + Apple Music + + 4079 + + Track ID4079 + NameThree Changes + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerPaul Simonon & Damon Albarn + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size9199258 + Total Time255040 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3776172387 + Play Date UTC2023-08-29T13:46:27Z + Skip Count2 + Skip Date2021-06-12T18:07:07Z + Release Date2007-01-22T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameThree Changes + Persistent IDF1428E876E79F129 + Track TypeRemote + Apple Music + + 4081 + + Track ID4081 + NameThe Good, The Bad and the Queen + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerThe Good, the Bad & the Queen + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size15762612 + Total Time420293 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3776334500 + Play Date UTC2023-08-31T10:48:20Z + Release Date2007-01-22T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort ComposerGood, the Bad & the Queen + Sort NameGood, The Bad and the Queen + Persistent IDB53A948930DA2DC9 + Track TypeRemote + Apple Music + + 4083 + + Track ID4083 + NameThe Bunting Song + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerPaul Simonon & Damon Albarn + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size8685813 + Total Time227280 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3777023344 + Play Date UTC2023-09-08T10:09:04Z + Release Date2007-01-22T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameBunting Song + Persistent ID7C5F4D718B01C282 + Track TypeRemote + Apple Music + + 4085 + + Track ID4085 + NameA Soldier's Tale + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumThe Good, the Bad & the Queen + GenreAlternative + KindApple Music AAC audio file + Size5511045 + Total Time150000 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2007 + Date Modified2019-12-09T16:20:07Z + Date Added2019-12-09T16:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3776153881 + Play Date UTC2023-08-29T08:38:01Z + Release Date2007-01-22T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumGood, the Bad & the Queen + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameSoldier's Tale + Persistent IDEFF478A1BEC7F3CF + Track TypeRemote + Apple Music + + 4087 + + Track ID4087 + NameTribunal + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size7383513 + Total Time208510 + Disc Number1 + Disc Count1 + Track Number25 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3773207226 + Play Date UTC2023-07-26T06:07:06Z + Skip Count1 + Skip Date2022-07-15T17:51:15Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameTribunal + Persistent IDBEA12E66452E7B10 + Track TypeRemote + Apple Music + + 4089 + + Track ID4089 + NameCommand Module Cobb + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size2560152 + Total Time62869 + Disc Number1 + Disc Count1 + Track Number24 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count22 + Play Date3773542382 + Play Date UTC2023-07-30T03:13:02Z + Skip Count2 + Skip Date2022-08-24T07:47:47Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameCommand Module Cobb + Persistent ID918F877C6CDC0B7F + Track TypeRemote + Apple Music + + 4091 + + Track ID4091 + NameHeroes + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size5360976 + Total Time144576 + Disc Number1 + Disc Count1 + Track Number6 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count14 + Play Date3753607879 + Play Date UTC2022-12-11T09:51:19Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameHeroes + Persistent ID6244615B9428D8E0 + Track TypeRemote + Apple Music + + 4093 + + Track ID4093 + NameHeading for the Landing + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size5764264 + Total Time159061 + Disc Number1 + Disc Count1 + Track Number5 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count49 + Play Date3781385097 + Play Date UTC2023-10-28T21:44:57Z + Skip Count4 + Skip Date2022-07-12T15:44:52Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameHeading for the Landing + Persistent ID7920B81E4E15D6F8 + Track TypeRemote + Apple Music + + 4095 + + Track ID4095 + NameWoman on the Moon + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size6553057 + Total Time184061 + Disc Number1 + Disc Count1 + Track Number26 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count18 + Play Date3761060725 + Play Date UTC2023-03-07T16:05:25Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameWoman on the Moon + Persistent ID9E8184F8E496E0B7 + Track TypeRemote + Apple Music + + 4097 + + Track ID4097 + NameFlight Director + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size3525180 + Total Time90564 + Disc Number1 + Disc Count1 + Track Number22 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count14 + Play Date3766952037 + Play Date UTC2023-05-14T20:33:57Z + Skip Count1 + Skip Date2022-05-28T12:58:19Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameFlight Director + Persistent ID797BDB369D99D286 + Track TypeRemote + Apple Music + + 4099 + + Track ID4099 + NameVon Braun + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size5114378 + Total Time139762 + Disc Number1 + Disc Count1 + Track Number21 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3772617969 + Play Date UTC2023-07-19T10:26:09Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameVon Braun + Persistent IDC3315C07253E9913 + Track TypeRemote + Apple Music + + 4101 + + Track ID4101 + NameLit Match + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size3845597 + Total Time99761 + Disc Number1 + Disc Count1 + Track Number23 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3780379584 + Play Date UTC2023-10-17T06:26:24Z + Skip Count1 + Skip Date2022-08-19T16:10:33Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameLit Match + Persistent IDD150C9C62BEE4BA7 + Track TypeRemote + Apple Music + + 4103 + + Track ID4103 + NameLonely Research + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size6496695 + Total Time181056 + Disc Number1 + Disc Count1 + Track Number16 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count26 + Play Date3782884717 + Play Date UTC2023-11-15T06:18:37Z + Skip Count1 + Skip Date2022-08-06T10:15:45Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameLonely Research + Persistent IDE39A734F2244DFA9 + Track TypeRemote + Apple Music + + 4105 + + Track ID4105 + NameAnts + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size6751623 + Total Time188203 + Disc Number1 + Disc Count1 + Track Number14 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3780827391 + Play Date UTC2023-10-22T10:49:51Z + Skip Count1 + Skip Date2023-11-15T10:55:37Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameAnts + Persistent IDBB3BF86BDF098E33 + Track TypeRemote + Apple Music + + 4107 + + Track ID4107 + NameLanding + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size8572742 + Total Time241195 + Disc Number1 + Disc Count1 + Track Number19 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count19 + Play Date3766404236 + Play Date UTC2023-05-08T12:23:56Z + Skip Count1 + Skip Date2023-01-18T13:12:33Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameLanding + Persistent ID392FE614F7DFB87D + Track TypeRemote + Apple Music + + 4109 + + Track ID4109 + NameArmed Booster / Another Ship + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size21762047 + Total Time643243 + Disc Number1 + Disc Count1 + Track Number15 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count17 + Play Date3781521413 + Play Date UTC2023-10-30T11:36:53Z + Skip Count2 + Skip Date2022-07-17T12:13:49Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameArmed Booster / Another Ship + Persistent ID5E27FB2ACB169556 + Track TypeRemote + Apple Music + + 4111 + + Track ID4111 + NameQuestioned on Tape + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size5436810 + Total Time150443 + Disc Number1 + Disc Count1 + Track Number13 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count26 + Play Date3782904739 + Play Date UTC2023-11-15T11:52:19Z + Skip Count3 + Skip Date2023-11-21T06:12:35Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameQuestioned on Tape + Persistent ID06195205DE90E8E8 + Track TypeRemote + Apple Music + + 4113 + + Track ID4113 + NameSmoke + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size5461710 + Total Time149813 + Disc Number1 + Disc Count1 + Track Number20 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3783663168 + Play Date UTC2023-11-24T06:32:48Z + Skip Count5 + Skip Date2023-10-13T16:14:37Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameSmoke + Persistent IDF2E0DF2BC507B609 + Track TypeRemote + Apple Music + + 4115 + + Track ID4115 + NameMoon Miss America + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size7933243 + Total Time222635 + Disc Number1 + Disc Count1 + Track Number10 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3772619317 + Play Date UTC2023-07-19T10:48:37Z + Skip Count1 + Skip Date2022-05-18T19:41:38Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameMoon Miss America + Persistent ID58E542A76E451E90 + Track TypeRemote + Apple Music + + 4117 + + Track ID4117 + NameWater, Pt. 1 + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size5561790 + Total Time152811 + Disc Number1 + Disc Count1 + Track Number9 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count22 + Play Date3776336199 + Play Date UTC2023-08-31T11:16:39Z + Skip Count1 + Skip Date2022-11-02T15:31:30Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameWater, Pt. 1 + Persistent IDE8B86B85FEB07E82 + Track TypeRemote + Apple Music + + 4119 + + Track ID4119 + NameHurry to Watch + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size3488600 + Total Time90027 + Disc Number1 + Disc Count1 + Track Number7 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count25 + Play Date3773849694 + Play Date UTC2023-08-02T16:34:54Z + Skip Count2 + Skip Date2023-07-22T09:12:17Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameHurry to Watch + Persistent IDE6F1E1313AF64816 + Track TypeRemote + Apple Music + + 4121 + + Track ID4121 + NameKaren and Ed + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size3362895 + Total Time86272 + Disc Number1 + Disc Count1 + Track Number8 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count22 + Play Date3780393457 + Play Date UTC2023-10-17T10:17:37Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameKaren and Ed + Persistent ID81BEAB4B18CF651F + Track TypeRemote + Apple Music + + 4123 + + Track ID4123 + NameMoon + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size1864116 + Total Time39360 + Disc Number1 + Disc Count1 + Track Number4 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count26 + Play Date3781598915 + Play Date UTC2023-10-31T09:08:35Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameMoon + Persistent ID6B5AA1D0ADEFE291 + Track TypeRemote + Apple Music + + 4125 + + Track ID4125 + NameWater, Pt. 2 + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size15741927 + Total Time461397 + Disc Number1 + Disc Count1 + Track Number12 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count23 + Play Date3783848623 + Play Date UTC2023-11-26T10:03:43Z + Skip Count1 + Skip Date2023-07-11T15:20:30Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1214 + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameWater, Pt. 2 + Persistent ID1B570D8014761398 + Track TypeRemote + Apple Music + + 4127 + + Track ID4127 + NameCareer Over / No Russians + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size4096272 + Total Time109023 + Disc Number1 + Disc Count1 + Track Number18 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count17 + Play Date3758957723 + Play Date UTC2023-02-11T07:55:23Z + Skip Count2 + Skip Date2022-12-11T14:29:20Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameCareer Over / No Russians + Persistent IDF5EA35CCC76EF357 + Track TypeRemote + Apple Music + + 4129 + + Track ID4129 + NameLower Molly + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size6702899 + Total Time188756 + Disc Number1 + Disc Count1 + Track Number11 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count17 + Play Date3783409569 + Play Date UTC2023-11-21T08:06:09Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameLower Molly + Persistent ID4B7D8483C1EA7E96 + Track TypeRemote + Apple Music + + 4131 + + Track ID4131 + NameEllen and Deke In Trouble + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size6532028 + Total Time182976 + Disc Number1 + Disc Count1 + Track Number17 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-22T11:51:29Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count18 + Play Date3777023098 + Play Date UTC2023-09-08T10:04:58Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameEllen and Deke In Trouble + Persistent ID6E74370CC8483921 + Track TypeRemote + Apple Music + + 4133 + + Track ID4133 + NameRace to the Moon (Piano Suite) + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size12611388 + Total Time371154 + Disc Number1 + Disc Count1 + Track Number3 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3760430202 + Play Date UTC2023-02-28T08:56:42Z + Skip Count2 + Skip Date2022-11-27T20:59:44Z + Release Date2020-01-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameRace to the Moon (Piano Suite) + Persistent ID68B4760EA52845F8 + Track TypeRemote + Apple Music + + 4135 + + Track ID4135 + NameFor All Mankind Main Title + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size3043397 + Total Time80253 + Disc Number1 + Disc Count1 + Track Number1 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3775565517 + Play Date UTC2023-08-22T13:11:57Z + Skip Count1 + Skip Date2022-05-28T13:02:51Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameFor All Mankind Main Title + Persistent ID9F4807AB230952D8 + Track TypeRemote + Apple Music + + 4137 + + Track ID4137 + NameFor All Jazz-Kind + ArtistJeff Russo + Album ArtistJeff Russo + AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size8474577 + Total Time242240 + Disc Number1 + Disc Count1 + Track Number2 + Track Count24 + Year2020 + Date Modified2019-12-14T15:27:05Z + Date Added2019-12-14T15:27:05Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count19 + Play Date3760253747 + Play Date UTC2023-02-26T07:55:47Z + Skip Count2 + Skip Date2023-06-17T18:25:05Z + Release Date2020-01-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFor All Mankind: Season 1 (Apple TV+ Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameFor All Jazz-Kind + Persistent ID0F211AA08B27FB66 + Track TypeRemote + Apple Music + + 4139 + + Track ID4139 + NamePoor Meemo + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size1985920 + Total Time42080 + Disc Number1 + Disc Count1 + Track Number12 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783767774 + Play Date UTC2023-11-25T11:36:14Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NamePoor Meemo + Persistent IDD25AD8BB5C35E514 + Track TypeRemote + Apple Music + + 4141 + + Track ID4141 + NameThe East + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size12174256 + Total Time354947 + Disc Number1 + Disc Count1 + Track Number11 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780497630 + Play Date UTC2023-10-18T15:13:50Z + Skip Count1 + Skip Date2023-05-14T12:13:51Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameEast + Persistent ID502E9CE826D433F9 + Track TypeRemote + Apple Music + + 4143 + + Track ID4143 + NameOrchestra for Nikki + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size17302961 + Total Time506173 + Disc Number1 + Disc Count1 + Track Number14 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3783687240 + Play Date UTC2023-11-24T13:14:00Z + Skip Count3 + Skip Date2023-05-07T14:26:58Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameOrchestra for Nikki + Persistent IDA240F93F351716A0 + Track TypeRemote + Apple Music + + 4145 + + Track ID4145 + NameThe Robbery + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size6289573 + Total Time177173 + Disc Number1 + Disc Count1 + Track Number13 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783454162 + Play Date UTC2023-11-21T20:29:22Z + Skip Count6 + Skip Date2023-06-30T11:46:16Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameRobbery + Persistent ID69F836337E86392B + Track TypeRemote + Apple Music + + 4147 + + Track ID4147 + NameWrench and Swango + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size4053236 + Total Time96880 + Disc Number1 + Disc Count1 + Track Number16 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3782980886 + Play Date UTC2023-11-16T09:01:26Z + Skip Count4 + Skip Date2023-11-25T13:32:18Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameWrench and Swango + Persistent ID583D517D1C3BB3B6 + Track TypeRemote + Apple Music + + 4149 + + Track ID4149 + NameVarga + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size8853958 + Total Time263040 + Disc Number1 + Disc Count1 + Track Number15 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3767794275 + Play Date UTC2023-05-24T14:31:15Z + Skip Count1 + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameVarga + Persistent IDF196E1FA0F841A3D + Track TypeRemote + Apple Music + + 4151 + + Track ID4151 + NameFingerprint Scanner + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size1529874 + Total Time30827 + Disc Number1 + Disc Count1 + Track Number18 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3777374890 + Play Date UTC2023-09-12T11:48:10Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameFingerprint Scanner + Persistent ID088629F6DFDEEC3C + Track TypeRemote + Apple Music + + 4153 + + Track ID4153 + NameWrench and Nikki Steal a Truck + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size6166984 + Total Time162787 + Disc Number1 + Disc Count1 + Track Number17 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783709267 + Play Date UTC2023-11-24T19:21:07Z + Skip Count1 + Skip Date2023-10-17T16:24:39Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameWrench and Nikki Steal a Truck + Persistent ID15F2E7514F013782 + Track TypeRemote + Apple Music + + 4155 + + Track ID4155 + NameFargo Main Theme (Season 3) + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size5346751 + Total Time148160 + Disc Number1 + Disc Count1 + Track Number20 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3760902211 + Play Date UTC2023-03-05T20:03:31Z + Skip Count1 + Skip Date2022-07-24T13:22:31Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameFargo Main Theme (Season 3) + Persistent IDF62C30AF62027544 + Track TypeRemote + Apple Music + + 4157 + + Track ID4157 + NameThe Russians (Alternate Version) + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size5167301 + Total Time146227 + Disc Number1 + Disc Count1 + Track Number19 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3767778678 + Play Date UTC2023-05-24T10:11:18Z + Skip Count2 + Skip Date2022-05-10T11:32:41Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameRussians (Alternate Version) + Persistent IDCC2682B2E21C91B4 + Track TypeRemote + Apple Music + + 4159 + + Track ID4159 + NameShip of Fools + ArtistJeff Russo & Noah Hawley + Album ArtistJeff Russo + ComposerKarl Edmond De Vere Wallinger + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size14198779 + Total Time425507 + Disc Number1 + Disc Count1 + Track Number21 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3783453398 + Play Date UTC2023-11-21T20:16:38Z + Release Date2017-08-04T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo & Noah Hawley + Sort NameShip of Fools + Persistent ID8BB3D654BF237DD7 + Track TypeRemote + Apple Music + + 4161 + + Track ID4161 + NameFargo Main Theme (Choir) + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size4911939 + Total Time136667 + Disc Number1 + Disc Count1 + Track Number1 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3783709779 + Play Date UTC2023-11-24T19:29:39Z + Skip Count2 + Skip Date2021-09-29T08:57:49Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameFargo Main Theme (Choir) + Persistent ID36805ECB8B94347E + Track TypeRemote + Apple Music + + 4163 + + Track ID4163 + NameFor Nikki + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size17301420 + Total Time519293 + Disc Number1 + Disc Count1 + Track Number4 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783661690 + Play Date UTC2023-11-24T06:08:10Z + Skip Count1 + Skip Date2021-02-01T18:29:24Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameFor Nikki + Persistent ID40420E703A36EFF8 + Track TypeRemote + Apple Music + + 4165 + + Track ID4165 + NameNikki, Ray and AC + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size8341453 + Total Time232027 + Disc Number1 + Disc Count1 + Track Number3 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3776346242 + Play Date UTC2023-08-31T14:04:02Z + Skip Count2 + Skip Date2023-10-08T14:27:49Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameNikki, Ray and AC + Persistent ID45B63E71F29D4803 + Track TypeRemote + Apple Music + + 4167 + + Track ID4167 + NameHorn Heavy + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size8448143 + Total Time240507 + Disc Number1 + Disc Count1 + Track Number6 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3783688176 + Play Date UTC2023-11-24T13:29:36Z + Skip Count3 + Skip Date2022-06-19T09:31:20Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameHorn Heavy + Persistent ID68FDB46D1510E6A4 + Track TypeRemote + Apple Music + + 4169 + + Track ID4169 + NameThe Russians + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size5169472 + Total Time145053 + Disc Number1 + Disc Count1 + Track Number5 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3782802653 + Play Date UTC2023-11-14T07:30:53Z + Skip Count1 + Skip Date2023-10-03T12:55:14Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameRussians + Persistent IDC311219D9A91C212 + Track TypeRemote + Apple Music + + 4171 + + Track ID4171 + NameThe Meeting + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size2272332 + Total Time54387 + Disc Number1 + Disc Count1 + Track Number8 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3769952604 + Play Date UTC2023-06-18T14:03:24Z + Skip Count4 + Skip Date2023-05-31T15:35:21Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameMeeting + Persistent IDAFBD0755B7C4868D + Track TypeRemote + Apple Music + + 4173 + + Track ID4173 + NameYear Three Murder + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size6589926 + Total Time184280 + Disc Number1 + Disc Count1 + Track Number7 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3782978256 + Play Date UTC2023-11-16T08:17:36Z + Skip Count1 + Skip Date2022-11-09T14:47:27Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameYear Three Murder + Persistent ID41CE3AAA43DD60DA + Track TypeRemote + Apple Music + + 4175 + + Track ID4175 + NameNikki in Tub + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size6313554 + Total Time175713 + Disc Number1 + Disc Count1 + Track Number10 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3767610354 + Play Date UTC2023-05-22T11:25:54Z + Skip Count1 + Skip Date2022-08-14T16:48:19Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameNikki in Tub + Persistent IDCB7245546E549D54 + Track TypeRemote + Apple Music + + 4177 + + Track ID4177 + NameMinsky (I Can Help) + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 3 (An Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size12276093 + Total Time356227 + Disc Number1 + Disc Count1 + Track Number9 + Track Count21 + Year2017 + Date Modified2019-12-14T15:27:11Z + Date Added2019-12-14T15:27:11Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3758716395 + Play Date UTC2023-02-08T12:53:15Z + Skip Count3 + Skip Date2023-10-09T09:59:59Z + Release Date2017-08-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumFargo Year 3 (An Original MGM / FXP Television Series) + Sort ArtistJeff Russo + Sort NameMinsky (I Can Help) + Persistent ID426FF1DE3DD221DF + Track TypeRemote + Apple Music + + 4179 + + Track ID4179 + NameRye's Theme + ArtistJeff Russo & USC Drum Corps + Album ArtistJeff Russo + ComposerJeff Russo + AlbumFargo Year 2 (Score from the Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size6387804 + Total Time171320 + Disc Number1 + Disc Count1 + Track Number3 + Track Count28 + Year2016 + Date Modified2019-12-16T04:07:44Z + Date Added2019-12-16T04:07:44Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781383318 + Play Date UTC2023-10-28T21:15:18Z + Skip Count6 + Skip Date2022-11-26T08:42:59Z + Release Date2016-03-25T07:00:00Z + Loved + Artwork Count1 + Sort AlbumFargo Year 2 (Score from the Original MGM / FXP Television Series) + Sort ArtistJeff Russo & USC Drum Corps + Sort NameRye's Theme + Persistent IDFA56B0806679F1CF + Track TypeRemote + Apple Music + + 4181 + + Track ID4181 + NameDidn't Leave Nobody But the Baby + ArtistNoah Hawley & Jeff Russo + Album ArtistVarious Artists + ComposerAlan Lomax, Gillian Welch & T Bone Burnett + AlbumFargo Year 2 (Songs from the Original MGM / FXP Television Series) + GenreSoundtrack + KindApple Music AAC audio file + Size6369067 + Total Time173753 + Disc Number1 + Disc Count1 + Track Number3 + Track Count15 + Year2016 + Date Modified2019-12-16T04:12:34Z + Date Added2019-12-16T04:12:34Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3757522812 + Play Date UTC2023-01-25T17:20:12Z + Skip Count2 + Skip Date2021-09-29T09:27:08Z + Release Date2016-03-25T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumFargo Year 2 (Songs from the Original MGM / FXP Television Series) + Sort ArtistNoah Hawley & Jeff Russo + Sort NameDidn't Leave Nobody But the Baby + Persistent ID23B4FD017B31BEFA + Track TypeRemote + Apple Music + + 4183 + + Track ID4183 + NameThe Umbrella Academy + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumThe Umbrella Academy (Original Series Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size11132968 + Total Time317627 + Disc Number1 + Disc Count1 + Track Number4 + Track Count15 + Year2019 + Date Modified2019-12-16T04:16:43Z + Date Added2019-12-16T04:16:43Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3777018919 + Play Date UTC2023-09-08T08:55:19Z + Skip Count1 + Skip Date2019-12-29T14:07:03Z + Release Date2019-02-15T12:00:00Z + Artwork Count1 + Sort AlbumUmbrella Academy (Original Series Soundtrack) + Sort ArtistJeff Russo + Sort NameUmbrella Academy + Persistent IDC48A8B8B61FD8A6D + Track TypeRemote + Apple Music + + 4185 + + Track ID4185 + NameHell & Back + ArtistAzizi Gibson + Album ArtistAzizi Gibson + AlbumChimera Act + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5916463 + Total Time167000 + Disc Number1 + Disc Count1 + Track Number14 + Track Count14 + Year2019 + Date Modified2019-12-19T05:23:22Z + Date Added2019-12-19T05:23:22Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783685287 + Play Date UTC2023-11-24T12:41:27Z + Release Date2019-11-01T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumChimera Act + Sort ArtistAzizi Gibson + Sort NameHell & Back + Persistent ID4EC77F9E3CFEB830 + Explicit + Track TypeRemote + Apple Music + + 4187 + + Track ID4187 + Nameparadise + ArtistMarco Luka + Album ArtistMarco Luka + ComposerMarco Luka & Josh Bishop + Albumparadise - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5053546 + Total Time140000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2019-12-19T05:29:02Z + Date Added2019-12-19T05:29:02Z + Bit Rate256 + Sample Rate44100 + Play Count80 + Play Date3783450464 + Play Date UTC2023-11-21T19:27:44Z + Skip Count3 + Skip Date2021-12-08T15:16:56Z + Release Date2019-04-26T12:00:00Z + Loved + Artwork Count1 + Sort Albumparadise - Single + Sort ArtistMarco Luka + Sort Nameparadise + Persistent IDFE43C6E04DA0CF4F + Explicit + Track TypeRemote + Apple Music + + 4189 + + Track ID4189 + NameProsecco + ArtistCroosh + Album ArtistCroosh + ComposerJamir Malek & Peterson Faustin + AlbumCrazy Virgo + GenreAlternative + KindApple Music AAC audio file + Size6201766 + Total Time176842 + Disc Number1 + Disc Count1 + Track Number13 + Track Count14 + Year2019 + Date Modified2019-12-19T05:32:04Z + Date Added2019-12-19T05:32:04Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3783849223 + Play Date UTC2023-11-26T10:13:43Z + Skip Count1 + Skip Date2019-12-22T11:50:12Z + Release Date2019-08-23T12:00:00Z + Artwork Count1 + Sort AlbumCrazy Virgo + Sort ArtistCroosh + Sort NameProsecco + Persistent ID403D4A0A28BCA1B1 + Explicit + Track TypeRemote + Apple Music + + 4191 + + Track ID4191 + NameGhost Stories + ArtistAnthony Russo + Album ArtistAnthony Russo + ComposerAnthony Russo + AlbumBasement Demos - EP + GenrePop + KindApple Music AAC audio file + Size7018550 + Total Time196160 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2016 + Date Modified2019-12-23T10:36:51Z + Date Added2019-12-23T10:36:51Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3776428320 + Play Date UTC2023-09-01T12:52:00Z + Skip Count3 + Skip Date2021-06-21T11:56:30Z + Release Date2016-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBasement Demos - EP + Sort ArtistAnthony Russo + Sort NameGhost Stories + Persistent IDBB27E386AF988E32 + Track TypeRemote + Apple Music + + 4193 + + Track ID4193 + NameRighteous + ArtistHippie Sabotage + Album ArtistHippie Sabotage + ComposerJ. Saurer & K. Saurer + AlbumRighteous - Single + GenreElectronic + KindApple Music AAC audio file + Size10098495 + Total Time292206 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2019-12-23T10:47:29Z + Date Added2019-12-23T10:47:29Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3781685274 + Play Date UTC2023-11-01T09:07:54Z + Skip Count2 + Skip Date2020-02-01T06:04:58Z + Release Date2017-12-15T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRighteous - Single + Sort ArtistHippie Sabotage + Sort NameRighteous + Persistent ID32E9B9E3C70FA983 + Explicit + Track TypeRemote + Apple Music + + 4195 + + Track ID4195 + NameEvil + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Paul Banks & Samuel Fogarino + AlbumAntics + GenreAlternative + KindApple Music AAC audio file + Size7746342 + Total Time215827 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2004 + Date Modified2019-12-27T16:31:26Z + Date Added2019-12-27T16:31:26Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3771823967 + Play Date UTC2023-07-10T05:52:47Z + Skip Count2 + Skip Date2023-05-27T10:41:57Z + Release Date2004-01-01T12:00:00Z + Artwork Count1 + Sort AlbumAntics + Sort ArtistInterpol + Sort NameEvil + Persistent IDAD7FE71DD701CB1A + Track TypeRemote + Apple Music + + 4197 + + Track ID4197 + NamePeta (feat. Meek Mill) + ArtistRoddy Ricch + Album ArtistRoddy Ricch + ComposerRodrick Moore, Ozan Yildirim, Nils Noehden & Robert Williams + AlbumPlease Excuse Me For Being Antisocial + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7258001 + Total Time198849 + Disc Number1 + Disc Count1 + Track Number8 + Track Count16 + Year2019 + Date Modified2020-01-01T21:44:00Z + Date Added2020-01-01T21:44:00Z + Bit Rate256 + Sample Rate44100 + Play Count75 + Play Date3766834182 + Play Date UTC2023-05-13T11:49:42Z + Skip Count1 + Skip Date2020-01-22T08:05:01Z + Release Date2019-12-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumPlease Excuse Me For Being Antisocial + Sort ArtistRoddy Ricch + Sort NamePeta (feat. Meek Mill) + Persistent ID06082058992EDB77 + Explicit + Track TypeRemote + Apple Music + + 4199 + + Track ID4199 + NameWHAT TO DO? (feat. Don Toliver) + ArtistJACKBOYS & Travis Scott + Album ArtistJACKBOYS & Travis Scott + ComposerJacques Webster, Caleb Zackery Toliver, James Austin Cyr, Julius-Alexander Brown & Niv Kalisky + AlbumJACKBOYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8969290 + Total Time250142 + Disc Number1 + Disc Count1 + Track Number6 + Track Count7 + Year2019 + Date Modified2020-01-01T21:44:08Z + Date Added2020-01-01T21:44:08Z + Bit Rate256 + Sample Rate44100 + Play Count151 + Play Date3767988716 + Play Date UTC2023-05-26T20:31:56Z + Skip Count7 + Skip Date2022-04-30T07:20:00Z + Release Date2019-12-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumJACKBOYS + Sort ArtistJACKBOYS & Travis Scott + Sort NameWHAT TO DO? (feat. Don Toliver) + Persistent ID33594FFB3D52B835 + Explicit + Track TypeRemote + Apple Music + + 4201 + + Track ID4201 + NameWar Baby + ArtistRoddy Ricch + Album ArtistRoddy Ricch + ComposerRodrick Moore, Eric Anthony Sandoval & Ashley Kember + AlbumPlease Excuse Me For Being Antisocial + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7039129 + Total Time195668 + Disc Number1 + Disc Count1 + Track Number16 + Track Count16 + Year2019 + Date Modified2020-01-02T14:27:13Z + Date Added2020-01-02T14:27:13Z + Bit Rate256 + Sample Rate44100 + Play Count173 + Play Date3781768310 + Play Date UTC2023-11-02T08:11:50Z + Skip Count2 + Skip Date2022-03-15T18:53:28Z + Release Date2019-12-06T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumPlease Excuse Me For Being Antisocial + Sort ArtistRoddy Ricch + Sort NameWar Baby + Persistent ID5AA6E519A9127210 + Explicit + Track TypeRemote + Apple Music + + 4203 + + Track ID4203 + NameFind a Way + ArtistTyler James Bellinger + Album ArtistTyler James Bellinger + ComposerTyler James Bellinger, Michael MacAllister & Daniel Choder + AlbumFind a Way - Single + GenrePop + KindApple Music AAC audio file + Size7757447 + Total Time216630 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2020-01-04T18:40:07Z + Date Added2020-01-04T18:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3773849603 + Play Date UTC2023-08-02T16:33:23Z + Skip Count2 + Skip Date2022-10-27T15:12:51Z + Release Date2019-11-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFind a Way - Single + Sort ArtistTyler James Bellinger + Sort NameFind a Way + Persistent ID84CA58F1534B4418 + Track TypeRemote + Apple Music + + 4205 + + Track ID4205 + NameBullet In A Gun + ArtistImagine Dragons + Album ArtistImagine Dragons + ComposerJayson Dezuzio, Alexander Grant, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman + AlbumOrigins + GenreAlternative + KindApple Music AAC audio file + Size7340693 + Total Time204853 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2018 + Date Modified2020-01-09T06:06:13Z + Date Added2020-01-09T06:06:13Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3783774729 + Play Date UTC2023-11-25T13:32:09Z + Skip Count2 + Skip Date2022-04-16T23:25:40Z + Release Date2018-11-09T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumOrigins + Sort ArtistImagine Dragons + Sort NameBullet In A Gun + Persistent IDA27DD5654C47DA00 + Track TypeRemote + Apple Music + + 4207 + + Track ID4207 + NameLegend + ArtistThe Score + Album ArtistThe Score + ComposerEdan Dover & Eddie Anthony + AlbumATLAS (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size6852422 + Total Time189120 + Disc Number1 + Disc Count1 + Track Number2 + Track Count28 + Year2017 + Date Modified2020-01-09T06:11:20Z + Date Added2020-01-09T06:11:20Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3783454352 + Play Date UTC2023-11-21T20:32:32Z + Skip Count2 + Skip Date2022-11-19T21:52:36Z + Release Date2017-02-06T12:00:00Z + Artwork Count1 + Sort AlbumATLAS (Deluxe) + Sort Album ArtistScore + Sort ArtistScore + Sort NameLegend + Persistent ID04B033BC1DF01B56 + Track TypeRemote + Apple Music + + 4209 + + Track ID4209 + NameFaithfully + ArtistDerek Pope + Album ArtistDerek Pope + AlbumPoltergeist - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6144337 + Total Time171781 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2019 + Date Modified2020-01-09T06:19:57Z + Date Added2020-01-09T06:19:57Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count41 + Play Date3761738973 + Play Date UTC2023-03-15T12:29:33Z + Release Date2019-09-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPoltergeist - EP + Sort ArtistDerek Pope + Sort NameFaithfully + Persistent ID3193AB62B853B2FD + Explicit + Track TypeRemote + Apple Music + + 4211 + + Track ID4211 + NameOnly If You Run + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size8428629 + Total Time228560 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3781890675 + Play Date UTC2023-11-03T18:11:15Z + Skip Count2 + Skip Date2022-04-16T23:12:17Z + Release Date2009-08-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameOnly If You Run + Persistent ID5B77B12BC0DE10A6 + Track TypeRemote + Apple Music + + 4213 + + Track ID4213 + NameGirl on the Sporting News + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size6308133 + Total Time173040 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3766923776 + Play Date UTC2023-05-14T12:42:56Z + Skip Count2 + Skip Date2023-01-23T09:19:25Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameGirl on the Sporting News + Persistent ID3756B6CF513DD566 + Track TypeRemote + Apple Music + + 4215 + + Track ID4215 + NameGames for Days + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size8493051 + Total Time237320 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3778862772 + Play Date UTC2023-09-29T17:06:12Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameGames for Days + Persistent IDDCD61A88B9E775DB + Track TypeRemote + Apple Music + + 4217 + + Track ID4217 + NameH + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is ... Skyscraper (Bonus Track Version) + GenreAlternative + KindApple Music AAC audio file + Size6008109 + Total Time158640 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3760420622 + Play Date UTC2023-02-28T06:17:02Z + Skip Count2 + Skip Date2022-01-06T21:06:03Z + Release Date2009-08-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization2081 + Artwork Count1 + Sort AlbumJulian Plenti Is ... Skyscraper (Bonus Track Version) + Sort ArtistJulian Plenti + Sort NameH + Persistent ID551B666BAF2CFDBC + Track TypeRemote + Apple Music + + 4219 + + Track ID4219 + NameFun That We Have + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size8077313 + Total Time221387 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3780850945 + Play Date UTC2023-10-22T17:22:25Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameFun That We Have + Persistent IDF76DC93664056614 + Track TypeRemote + Apple Music + + 4221 + + Track ID4221 + NameMadrid Song + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size4751195 + Total Time127947 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3781465488 + Play Date UTC2023-10-29T20:04:48Z + Skip Count2 + Skip Date2023-01-11T20:58:22Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameMadrid Song + Persistent ID6A987A0573D06A58 + Track TypeRemote + Apple Music + + 4223 + + Track ID4223 + NameNo Chance Survival + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size8671162 + Total Time243480 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3773532150 + Play Date UTC2023-07-30T00:22:30Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameNo Chance Survival + Persistent IDA55C472EBD933A01 + Track TypeRemote + Apple Music + + 4225 + + Track ID4225 + NameGames for Days (Single Version) + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size8317670 + Total Time229209 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3781320101 + Play Date UTC2023-10-28T03:41:41Z + Skip Count2 + Skip Date2023-05-23T05:46:24Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameGames for Days (Single Version) + Persistent IDD16B784B29DAB310 + Track TypeRemote + Apple Music + + 4227 + + Track ID4227 + NameUnwind + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size7427243 + Total Time198400 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3783763124 + Play Date UTC2023-11-25T10:18:44Z + Skip Count1 + Skip Date2020-02-26T04:21:50Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameUnwind + Persistent IDFF44B6D8E06DF015 + Track TypeRemote + Apple Music + + 4229 + + Track ID4229 + NameSkyscraper + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size7541984 + Total Time199507 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3752586997 + Play Date UTC2022-11-29T14:16:37Z + Skip Count2 + Skip Date2022-04-12T11:09:03Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameSkyscraper + Persistent ID476AC20F1395391F + Track TypeRemote + Apple Music + + 4231 + + Track ID4231 + NameFly As You Might + ArtistJulian Plenti + Album ArtistJulian Plenti + ComposerJulian Plenti + AlbumJulian Plenti Is... Skyscraper + GenreAlternative + KindApple Music AAC audio file + Size8880969 + Total Time237133 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2009 + Date Modified2020-01-09T06:22:13Z + Date Added2020-01-09T06:22:13Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3780905483 + Play Date UTC2023-10-23T08:31:23Z + Release Date2009-08-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumJulian Plenti Is... Skyscraper + Sort ArtistJulian Plenti + Sort NameFly As You Might + Persistent ID400A6D47C795E1BC + Track TypeRemote + Apple Music + + 4233 + + Track ID4233 + NameClose Your Mouth Now + ArtistRaz Simone + Album ArtistRaz Simone + ComposerRaz Simone + AlbumStill Love + GenreAlternative + KindApple Music AAC audio file + Size6372481 + Total Time176000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count15 + Year2019 + Date Modified2020-01-14T11:59:49Z + Date Added2020-01-14T11:59:49Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781183991 + Play Date UTC2023-10-26T13:53:11Z + Release Date2019-01-15T12:00:00Z + Loved + Artwork Count1 + Sort AlbumStill Love + Sort ArtistRaz Simone + Sort NameClose Your Mouth Now + Persistent IDE152ACE1D7A7847F + Explicit + Track TypeRemote + Apple Music + + 4235 + + Track ID4235 + NameMiddle of the Night + ArtistElley Duhé + Album ArtistElley Duhé + ComposerElley Duhé, Andrew Wells, Sam Roman & SAM ROMANS + AlbumMIDDLE of the NIGHT - Single + GenrePop + KindApple Music AAC audio file + Size6983369 + Total Time184448 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-01-18T10:43:31Z + Date Added2020-01-18T10:43:31Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781770021 + Play Date UTC2023-11-02T08:40:21Z + Skip Count4 + Skip Date2022-03-04T07:48:26Z + Release Date2020-01-10T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMIDDLE of the NIGHT - Single + Sort ArtistElley Duhé + Sort NameMiddle of the Night + Persistent IDA7E07633ED4E586B + Track TypeRemote + Apple Music + + 4237 + + Track ID4237 + NameDarkness + ArtistEminem + Album ArtistEminem + ComposerM. Mathers, R. Montgomery, L. Resto & P. Simon + AlbumMusic To Be Murdered By + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11679965 + Total Time337147 + Disc Number1 + Disc Count1 + Track Number8 + Track Count20 + Year2020 + Date Modified2020-01-19T06:13:33Z + Date Added2020-01-19T06:13:33Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3781520764 + Play Date UTC2023-10-30T11:26:04Z + Skip Count1 + Skip Date2022-11-23T17:49:27Z + Release Date2020-01-17T08:00:00Z + Artwork Count1 + Sort AlbumMusic To Be Murdered By + Sort ArtistEminem + Sort NameDarkness + Persistent ID7C5087DA435B4728 + Explicit + Track TypeRemote + Apple Music + + 4239 + + Track ID4239 + NameYou Melt Away the Snow (feat. Powfu) + ArtistTeqkoi + Album ArtistTeqkoi + ComposerTeqkoi + AlbumYou Melt Away the Snow (feat. Powfu) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6260731 + Total Time175622 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2020-01-27T13:38:01Z + Date Added2020-01-27T13:38:01Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3783670500 + Play Date UTC2023-11-24T08:35:00Z + Skip Count1 + Skip Date2020-02-05T05:46:44Z + Release Date2018-12-07T12:00:00Z + Artwork Count1 + Sort AlbumYou Melt Away the Snow (feat. Powfu) - Single + Sort ArtistTeqkoi + Sort NameYou Melt Away the Snow (feat. Powfu) + Persistent ID05AC595531168CBF + Explicit + Track TypeRemote + Apple Music + + 4241 + + Track ID4241 + NameHallowed Ft. Emily Raymond + ArtistLund + Album ArtistLund + ComposerRobert Lund & Lund + AlbumBlkBird + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8844553 + Total Time251112 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2017 + Date Modified2020-01-27T20:00:56Z + Date Added2020-01-27T20:00:56Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3780128660 + Play Date UTC2023-10-14T08:44:20Z + Release Date2017-06-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBlkBird + Sort ArtistLund + Sort NameHallowed Ft. Emily Raymond + Persistent IDD3FF35CC658CB24D + Explicit + Track TypeRemote + Apple Music + + 4243 + + Track ID4243 + NameHeaven + ArtistFINNEAS + Album ArtistFINNEAS + AlbumHeaven - Single + GenreAlternative + KindApple Music AAC audio file + Size8009225 + Total Time222664 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2020-01-27T20:15:03Z + Date Added2020-01-27T20:15:03Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count27 + Play Date3781569759 + Play Date UTC2023-10-31T01:02:39Z + Skip Count1 + Skip Date2020-01-30T17:49:57Z + Release Date2018-03-23T12:00:00Z + Artwork Count1 + Sort AlbumHeaven - Single + Sort ArtistFINNEAS + Sort NameHeaven + Persistent IDC4FEBAD4F8D4759C + Track TypeRemote + Apple Music + + 4245 + + Track ID4245 + NameLonely Nights + ArtistilyTOMMY + Album ArtistilyTOMMY + AlbumLonely Nights - Single + GenreAlternative + KindAAC audio file + Size6707213 + Total Time185881 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2020-01-27T20:19:53Z + Date Added2020-01-27T20:19:53Z + Bit Rate256 + Sample Rate44100 + Play Count63 + Play Date3761577773 + Play Date UTC2023-03-13T15:42:53Z + Release Date2017-10-16T12:00:00Z + Artwork Count1 + Sort AlbumLonely Nights - Single + Sort ArtistilyTOMMY + Sort NameLonely Nights + Persistent ID08940DAE45B5FFC1 + Track TypeRemote + Apple Music + + 4247 + + Track ID4247 + NameBlackstar + ArtistMaya Beiser, Ambient Orchestra & Evan Ziporyn + Album ArtistMaya Beiser, Ambient Orchestra & Evan Ziporyn + ComposerDavid Bowie + AlbumBowie Cello Symphonic: Blackstar + GenreClassical Crossover + KindApple Music AAC audio file + Size23424862 + Total Time686525 + Disc Number1 + Disc Count1 + Track Number1 + Track Count8 + Year2020 + Date Modified2020-01-31T07:24:47Z + Date Added2020-01-31T07:24:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3778862133 + Play Date UTC2023-09-29T16:55:33Z + Skip Count1 + Skip Date2023-01-15T09:59:53Z + Release Date2020-01-10T12:00:00Z + Artwork Count1 + Sort AlbumBowie Cello Symphonic: Blackstar + Sort ArtistMaya Beiser, Ambient Orchestra & Evan Ziporyn + Sort NameBlackstar + Persistent ID96E292406DBA1BA3 + Track TypeRemote + Apple Music + + 4249 + + Track ID4249 + NameDreams + ArtistLil Wayne + Album ArtistLil Wayne + ComposerTimothy Sommers, Ben Burgess, Dwayne Carter, Alexander Joseph Delicata, Aaron Zuckerman & Jeremy Dussolliett + AlbumFuneral + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8154593 + Total Time227680 + Disc Number1 + Disc Count1 + Track Number5 + Track Count24 + Year2020 + Date Modified2020-02-02T16:32:42Z + Date Added2020-02-02T16:32:42Z + Bit Rate256 + Sample Rate44100 + Play Count86 + Play Date3783595328 + Play Date UTC2023-11-23T11:42:08Z + Skip Count2 + Skip Date2021-06-12T08:06:34Z + Release Date2020-01-31T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFuneral + Sort ArtistLil Wayne + Sort NameDreams + Persistent ID25C6277933D1AFED + Explicit + Track TypeRemote + Apple Music + + 4251 + + Track ID4251 + NameFlight 99 (feat. Masego) + ArtistPlease Wait, Ta-ku & matt mcwaters + Album ArtistPlease Wait, Ta-ku & matt mcwaters + Composermatt mcwaters, Regan Matthews & Micah Davis + AlbumBlack & White - EP + GenreContemporary R&B + KindApple Music AAC audio file + Size6211270 + Total Time167143 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year2019 + Date Modified2020-02-03T19:01:36Z + Date Added2020-02-03T19:01:36Z + Bit Rate256 + Sample Rate44100 + Play Count62 + Play Date3758630778 + Play Date UTC2023-02-07T13:06:18Z + Release Date2019-11-15T12:00:00Z + Artwork Count1 + Sort AlbumBlack & White - EP + Sort ArtistPlease Wait, Ta-ku & matt mcwaters + Sort NameFlight 99 (feat. Masego) + Persistent ID6030CA54AA598547 + Track TypeRemote + Apple Music + + 4253 + + Track ID4253 + NameSHUT UP + ArtistDaBaby + Album ArtistDaBaby + ComposerJonathan Kirk, De'Juane Dunwood & Vid Vucenovic + AlbumSHUT UP - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6178456 + Total Time170192 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-02-14T21:34:52Z + Date Added2020-02-14T21:34:52Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3781447434 + Play Date UTC2023-10-29T15:03:54Z + Release Date2020-02-06T12:00:00Z + Artwork Count1 + Sort AlbumSHUT UP - Single + Sort ArtistDaBaby + Sort NameSHUT UP + Persistent ID66C9A5CB3631AC57 + Explicit + Track TypeRemote + Apple Music + + 4255 + + Track ID4255 + NameI'm over You + ArtistVaboh + Album ArtistVaboh + ComposerVaboh + AlbumLove Anxiety 2 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3920530 + Total Time102400 + Disc Number1 + Disc Count1 + Track Number7 + Track Count7 + Year2019 + Date Modified2020-02-16T14:36:29Z + Date Added2020-02-16T14:36:29Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3779238411 + Play Date UTC2023-10-04T01:26:51Z + Release Date2019-12-07T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLove Anxiety 2 + Sort ArtistVaboh + Sort NameI'm over You + Persistent ID1F74C492C9B0BA87 + Explicit + Track TypeRemote + Apple Music + + 4257 + + Track ID4257 + NameEveryone Knows + ArtistJutes + Album ArtistJutes + ComposerAndrew Luce, Miles Shepperd & Jordan Lutes + AlbumOverrated + GenreAlternative + KindApple Music AAC audio file + Size5179954 + Total Time141913 + Disc Number1 + Disc Count1 + Track Number3 + Track Count7 + Year2020 + Date Modified2020-02-16T14:48:30Z + Date Added2020-02-16T14:48:30Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3782981660 + Play Date UTC2023-11-16T09:14:20Z + Release Date2020-02-06T12:00:00Z + Artwork Count1 + Sort AlbumOverrated + Sort ArtistJutes + Sort NameEveryone Knows + Persistent ID8775701925F1AA90 + Explicit + Track TypeRemote + Apple Music + + 4259 + + Track ID4259 + NameBed + ArtistYeek + Album ArtistYeek + Composersebastian carandang + AlbumBlackheart - EP + GenrePop + KindApple Music AAC audio file + Size7701777 + Total Time211858 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2018 + Date Modified2020-02-16T22:14:46Z + Date Added2020-02-16T22:14:46Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count118 + Play Date3775801380 + Play Date UTC2023-08-25T06:43:00Z + Skip Count2 + Skip Date2020-12-01T19:46:21Z + Release Date2018-05-04T12:00:00Z + Loved + Normalization1919 + Artwork Count1 + Sort AlbumBlackheart - EP + Sort ArtistYeek + Sort NameBed + Persistent ID097267A61E59F0C5 + Explicit + Track TypeRemote + Apple Music + + 4261 + + Track ID4261 + NameNo Limitations + ArtistTidus + Album ArtistTidus + AlbumBefore It's Too Late - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11264020 + Total Time346233 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2017 + Date Modified2020-02-17T16:23:03Z + Date Added2020-02-17T16:23:03Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3768834403 + Play Date UTC2023-06-05T15:26:43Z + Release Date2017-02-24T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBefore It's Too Late - EP + Sort ArtistTidus + Sort NameNo Limitations + Persistent ID971A7D3D338E57FB + Track TypeRemote + Apple Music + + 4263 + + Track ID4263 + NameWhat You Need + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerAbel Tesfaye & Jeremy Rose + AlbumTrilogy + GenreR&B/Soul + KindApple Music AAC audio file + Size7112997 + Total Time196653 + Disc Number1 + Disc Count3 + Track Number2 + Track Count10 + Year2011 + Date Modified2020-02-17T18:09:26Z + Date Added2020-02-17T18:09:26Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3767274317 + Play Date UTC2023-05-18T14:05:17Z + Skip Count3 + Skip Date2022-10-22T09:41:41Z + Release Date2011-03-21T12:00:00Z + Artwork Count1 + Sort AlbumTrilogy + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort NameWhat You Need + Persistent ID41EF4C5BBA7A8B78 + Track TypeRemote + Apple Music + + 4265 + + Track ID4265 + NameThe Path + ArtistHippie Sabotage + Album ArtistHippie Sabotage + ComposerJ. Saurer & K. Saurer + AlbumThe Path - Single + GenreElectronic + KindApple Music AAC audio file + Size6718119 + Total Time189701 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2020-02-17T19:01:56Z + Date Added2020-02-17T19:01:56Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3783685609 + Play Date UTC2023-11-24T12:46:49Z + Release Date2017-12-15T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPath - Single + Sort ArtistHippie Sabotage + Sort NamePath + Persistent IDE87C20F158502E2F + Track TypeRemote + Apple Music + + 4267 + + Track ID4267 + NameGoodnight + ArtistNick Murphy + Album ArtistNick Murphy + AlbumGoodnight - Single + GenrePop + KindApple Music AAC audio file + Size9662773 + Total Time261983 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-02-18T04:54:52Z + Date Added2020-02-18T04:54:52Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3780135738 + Play Date UTC2023-10-14T10:42:18Z + Release Date2020-02-14T12:00:00Z + Artwork Count1 + Sort AlbumGoodnight - Single + Sort ArtistNick Murphy + Sort NameGoodnight + Persistent IDC78D0F9DD7055916 + Track TypeRemote + Apple Music + + 4269 + + Track ID4269 + NameEARFQUAKE + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6837581 + Total Time190073 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2019 + Date Modified2020-02-20T19:08:20Z + Date Added2020-02-20T19:08:20Z + Bit Rate256 + Sample Rate44100 + Play Count126 + Play Date3783452378 + Play Date UTC2023-11-21T19:59:38Z + Skip Count8 + Skip Date2021-12-13T20:57:02Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameEARFQUAKE + Persistent ID8DDCF5EC69C2DD24 + Explicit + Track TypeRemote + Apple Music + + 4271 + + Track ID4271 + NameI DON'T LOVE YOU ANYMORE + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5908921 + Total Time161200 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count81 + Play Date3781063570 + Play Date UTC2023-10-25T04:26:10Z + Skip Count1 + Skip Date2022-10-03T13:12:11Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameI DON'T LOVE YOU ANYMORE + Persistent IDB42772452E8B6A83 + Explicit + Track TypeRemote + Apple Music + + 4273 + + Track ID4273 + NameRUNNING OUT OF TIME + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6438288 + Total Time177219 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count97 + Play Date3781617456 + Play Date UTC2023-10-31T14:17:36Z + Skip Count5 + Skip Date2023-08-14T09:53:03Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameRUNNING OUT OF TIME + Persistent IDCA21E9B52036A5E5 + Explicit + Track TypeRemote + Apple Music + + 4275 + + Track ID4275 + NameWHAT'S GOOD + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7360960 + Total Time205637 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count79 + Play Date3780151047 + Play Date UTC2023-10-14T14:57:27Z + Skip Count1 + Skip Date2021-03-25T17:05:30Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameWHAT'S GOOD + Persistent ID2C638CCEB534CE39 + Explicit + Track TypeRemote + Apple Music + + 4277 + + Track ID4277 + NameGONE, GONE / THANK YOU + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma, Cullen Omori, Tatsuro Yamashita & Alan O Day + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12969997 + Total Time375387 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count80 + Play Date3767699342 + Play Date UTC2023-05-23T12:09:02Z + Skip Count1 + Skip Date2021-03-02T05:22:52Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Normalization1810 + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameGONE, GONE / THANK YOU + Persistent ID316391972E631E1F + Explicit + Track TypeRemote + Apple Music + + 4279 + + Track ID4279 + NameARE WE STILL FRIENDS? + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma & Al Green + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9327503 + Total Time265480 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count74 + Play Date3783710937 + Play Date UTC2023-11-24T19:48:57Z + Skip Date2020-02-28T05:47:55Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameARE WE STILL FRIENDS? + Persistent ID60BB04B613ECB220 + Explicit + Track TypeRemote + Apple Music + + 4281 + + Track ID4281 + NameEXACTLY WHAT YOU RUN FROM YOU END UP CHASING + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size1024331 + Total Time14627 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count121 + Play Date3781538547 + Play Date UTC2023-10-30T16:22:27Z + Skip Count1 + Skip Date2021-05-11T12:29:29Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameEXACTLY WHAT YOU RUN FROM YOU END UP CHASING + Persistent IDF352E675FFDDED14 + Track TypeRemote + Apple Music + + 4283 + + Track ID4283 + NameI THINK + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7609084 + Total Time212016 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count96 + Play Date3781448671 + Play Date UTC2023-10-29T15:24:31Z + Skip Count5 + Skip Date2021-09-15T20:53:26Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameI THINK + Persistent ID89979996D9E1E7AB + Explicit + Track TypeRemote + Apple Music + + 4285 + + Track ID4285 + NamePUPPET + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma, Kanye West, Walter Byers, Luis Leal & David Smith + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6566031 + Total Time179003 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count83 + Play Date3780150841 + Play Date UTC2023-10-14T14:54:01Z + Skip Count6 + Skip Date2023-10-25T09:17:32Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NamePUPPET + Persistent IDD3392196D076747D + Explicit + Track TypeRemote + Apple Music + + 4287 + + Track ID4287 + NameNEW MAGIC WAND + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7741659 + Total Time195327 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count154 + Play Date3783808037 + Play Date UTC2023-11-25T22:47:17Z + Skip Count8 + Skip Date2022-03-15T18:53:41Z + Release Date2019-05-16T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameNEW MAGIC WAND + Persistent ID414FFD5C892237FE + Explicit + Track TypeRemote + Apple Music + + 4289 + + Track ID4289 + NameIGOR'S THEME + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7339009 + Total Time200684 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count123 + Play Date3780180011 + Play Date UTC2023-10-14T23:00:11Z + Skip Count8 + Skip Date2022-03-06T08:54:25Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameIGOR'S THEME + Persistent ID83CF59165FD84CF5 + Track TypeRemote + Apple Music + + 4291 + + Track ID4291 + NameA BOY IS A GUN + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumIGOR + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7513945 + Total Time210253 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2019 + Date Modified2020-02-20T19:38:13Z + Date Added2020-02-20T19:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count86 + Play Date3781531447 + Play Date UTC2023-10-30T14:24:07Z + Skip Count4 + Skip Date2021-09-20T20:42:08Z + Release Date2019-05-16T07:00:00Z + Album Rating100 + Album Rating Computed + Album Loved + Artwork Count1 + Sort AlbumIGOR + Sort ArtistTyler, The Creator + Sort NameBOY IS A GUN + Persistent ID374EB0D62B2B67C1 + Explicit + Track TypeRemote + Apple Music + + 4293 + + Track ID4293 + NameEverytime + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size8716575 + Total Time242213 + Disc Number1 + Disc Count2 + Track Number5 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3780846548 + Play Date UTC2023-10-22T16:09:08Z + Skip Count2 + Skip Date2022-08-19T16:19:13Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameEverytime + Persistent IDDD7F1EE1DA3C30F6 + Track TypeRemote + Apple Music + + 4295 + + Track ID4295 + NameBad Habit + ArtistFoals + Album ArtistFoals + ComposerEdwin Congreave, Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size10025079 + Total Time280267 + Disc Number1 + Disc Count2 + Track Number4 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3776337881 + Play Date UTC2023-08-31T11:44:41Z + Skip Count1 + Skip Date2022-11-20T14:26:41Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameBad Habit + Persistent IDC72D76D220CDCFF0 + Track TypeRemote + Apple Music + + 4297 + + Track ID4297 + NameMy Number + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size8990368 + Total Time238853 + Disc Number1 + Disc Count2 + Track Number3 + Track Count11 + Year2012 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3781156306 + Play Date UTC2023-10-26T06:11:46Z + Skip Count4 + Skip Date2022-12-03T23:50:32Z + Release Date2012-12-17T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameMy Number + Persistent IDA067AF221BAAD580 + Track TypeRemote + Apple Music + + 4299 + + Track ID4299 + NameProvidence + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size8623424 + Total Time247933 + Disc Number1 + Disc Count2 + Track Number9 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3783002246 + Play Date UTC2023-11-16T14:57:26Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameProvidence + Persistent ID5C78C0F7564EF484 + Track TypeRemote + Apple Music + + 4301 + + Track ID4301 + NameMilk & Black Spiders + ArtistFoals + Album ArtistFoals + ComposerEdwin Congreave, Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size11040320 + Total Time317253 + Disc Number1 + Disc Count2 + Track Number8 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3783449731 + Play Date UTC2023-11-21T19:15:31Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameMilk & Black Spiders + Persistent ID8A38E42B3C5B759B + Track TypeRemote + Apple Music + + 4303 + + Track ID4303 + NameOut of the Woods + ArtistFoals + Album ArtistFoals + ComposerEdwin Congreave, Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size7398220 + Total Time204947 + Disc Number1 + Disc Count2 + Track Number7 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3783682669 + Play Date UTC2023-11-24T11:57:49Z + Skip Count2 + Skip Date2021-06-12T18:07:05Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameOut of the Woods + Persistent IDE3C0D0A8462418CA + Track TypeRemote + Apple Music + + 4305 + + Track ID4305 + NameLate Night + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size11349983 + Total Time327680 + Disc Number1 + Disc Count2 + Track Number6 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3782976767 + Play Date UTC2023-11-16T07:52:47Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameLate Night + Persistent ID44CD0C45F6F9235F + Track TypeRemote + Apple Music + + 4307 + + Track ID4307 + NamePrelude + ArtistFoals + Album ArtistFoals + ComposerEdwin Congreave, Jack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size8821458 + Total Time247707 + Disc Number1 + Disc Count2 + Track Number1 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3781535135 + Play Date UTC2023-10-30T15:25:35Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NamePrelude + Persistent ID04DDB378510C9DFE + Track TypeRemote + Apple Music + + 4309 + + Track ID4309 + NameMoon + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size10166724 + Total Time293053 + Disc Number1 + Disc Count2 + Track Number11 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3783592709 + Play Date UTC2023-11-23T10:58:29Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameMoon + Persistent ID7B58137B31957319 + Track TypeRemote + Apple Music + + 4311 + + Track ID4311 + NameStepson + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size10837399 + Total Time288813 + Disc Number1 + Disc Count2 + Track Number10 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3774242412 + Play Date UTC2023-08-07T05:40:12Z + Release Date2013-01-31T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameStepson + Persistent IDE827375240D53B2A + Track TypeRemote + Apple Music + + 4313 + + Track ID4313 + NameInhaler + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumHoly Fire + GenreAlternative + KindApple Music AAC audio file + Size10521775 + Total Time292547 + Disc Number1 + Disc Count2 + Track Number2 + Track Count11 + Year2013 + Date Modified2020-02-21T08:27:43Z + Date Added2020-02-21T08:27:43Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3781617901 + Play Date UTC2023-10-31T14:25:01Z + Release Date2013-01-28T12:00:00Z + Artwork Count1 + Sort AlbumHoly Fire + Sort ArtistFoals + Sort NameInhaler + Persistent ID96B3CA9176E176F7 + Track TypeRemote + Apple Music + + 4315 + + Track ID4315 + NameA Knife in the Ocean + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumWhat Went Down + GenreAlternative + KindApple Music AAC audio file + Size14202496 + Total Time412827 + Disc Number1 + Disc Count2 + Track Number10 + Track Count10 + Year2015 + Date Modified2020-02-21T09:43:26Z + Date Added2020-02-21T09:43:26Z + Bit Rate256 + Sample Rate44100 + Play Count60 + Play Date3781464459 + Play Date UTC2023-10-29T19:47:39Z + Skip Count1 + Skip Date2020-12-05T23:21:23Z + Release Date2015-08-28T12:00:00Z + Artwork Count1 + Sort AlbumWhat Went Down + Sort ArtistFoals + Sort NameKnife in the Ocean + Persistent ID5C6A500D3B66341D + Track TypeRemote + Apple Music + + 4317 + + Track ID4317 + NameThe Runner + ArtistFoals + Album ArtistFoals + ComposerFoals + AlbumEverything Not Saved Will Be Lost Part II + GenreAlternative + KindApple Music AAC audio file + Size9191397 + Total Time261937 + Disc Number1 + Disc Count2 + Track Number2 + Track Count10 + Year2019 + Date Modified2020-02-21T09:53:05Z + Date Added2020-02-21T09:53:05Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3774239221 + Play Date UTC2023-08-07T04:47:01Z + Skip Count4 + Skip Date2023-06-26T05:43:28Z + Release Date2019-09-05T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumEverything Not Saved Will Be Lost Part II + Sort ArtistFoals + Sort NameRunner + Persistent ID6D2C2187996700A6 + Track TypeRemote + Apple Music + + 4319 + + Track ID4319 + NameI Hate You So Much + ArtistAlexander 23 + Album ArtistAlexander 23 + ComposerAlexander 23 + AlbumI Hate You So Much - Single + GenrePop + KindApple Music AAC audio file + Size5416843 + Total Time148187 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-02-25T18:17:04Z + Date Added2020-02-25T18:17:04Z + Bit Rate256 + Sample Rate44100 + Play Count72 + Play Date3776173485 + Play Date UTC2023-08-29T14:04:45Z + Skip Count2 + Skip Date2020-03-08T06:50:11Z + Release Date2020-02-12T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumI Hate You So Much - Single + Sort ArtistAlexander 23 + Sort NameI Hate You So Much + Persistent ID109D4BAEFC31318A + Track TypeRemote + Apple Music + + 4321 + + Track ID4321 + NameMessy + ArtistTyler James Bellinger + Album ArtistTyler James Bellinger + ComposerTyler James Bellinger, Christina Kapushy & Michael MacAllister + AlbumMessy - Single + GenrePop + KindApple Music AAC audio file + Size6552920 + Total Time178525 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-02-29T05:16:06Z + Date Added2020-02-29T05:16:06Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3782885396 + Play Date UTC2023-11-15T06:29:56Z + Skip Count1 + Skip Date2021-11-07T22:19:35Z + Release Date2020-02-14T12:00:00Z + Artwork Count1 + Sort AlbumMessy - Single + Sort ArtistTyler James Bellinger + Sort NameMessy + Persistent ID72246DA55AF1CCFE + Track TypeRemote + Apple Music + + 4323 + + Track ID4323 + NameBang! + ArtistAJR + Album ArtistAJR + ComposerRyan Met, Jack Met & Adam Met + AlbumBang! - Single + GenrePop + KindApple Music AAC audio file + Size6308764 + Total Time170858 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-02-29T10:34:36Z + Date Added2020-02-29T10:34:36Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3777371111 + Play Date UTC2023-09-12T10:45:11Z + Skip Count2 + Skip Date2022-07-15T07:28:10Z + Release Date2020-02-12T12:00:00Z + Artwork Count1 + Sort AlbumBang! - Single + Sort ArtistAJR + Sort NameBang! + Persistent ID05D93069284C91A6 + Track TypeRemote + Apple Music + + 4325 + + Track ID4325 + NameDésolé (feat. Fatoumata Diawara) + ArtistGorillaz + Album ArtistGorillaz + ComposerFatoumata Diawara, D. Albarn, James Ford & Remi Kabaka Jr + AlbumSong Machine Episode 2 – EP + GenreAlternative + KindApple Music AAC audio file + Size8575713 + Total Time236570 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2020 + Date Modified2020-02-29T19:27:21Z + Date Added2020-02-29T19:27:21Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3771746582 + Play Date UTC2023-07-09T08:23:02Z + Skip Count1 + Skip Date2020-03-03T08:26:49Z + Release Date2020-02-27T12:00:00Z + Artwork Count1 + Sort AlbumSong Machine Episode 2 – EP + Sort ArtistGorillaz + Sort NameDésolé (feat. Fatoumata Diawara) + Persistent IDC41D2D4FCF72E7CF + Track TypeRemote + Apple Music + + 4327 + + Track ID4327 + NameGorgeous (Live – Upstate Sessions) + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris + AlbumVHS 2.0 + GenreAlternative + KindApple Music AAC audio file + Size8049792 + Total Time224173 + Disc Number1 + Disc Count1 + Track Number17 + Track Count18 + Year2016 + Date Modified2020-03-04T06:08:42Z + Date Added2020-03-04T06:08:42Z + Bit Rate256 + Sample Rate44100 + Play Count85 + Play Date3783663726 + Play Date UTC2023-11-24T06:42:06Z + Skip Count1 + Skip Date2022-07-11T16:37:36Z + Release Date2016-06-10T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumVHS 2.0 + Sort ArtistX Ambassadors + Sort NameGorgeous (Live – Upstate Sessions) + Persistent IDC35CCF8FA84906D9 + Track TypeRemote + Apple Music + + 4329 + + Track ID4329 + NameHappy Home + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerRodney "Darkchild" Jerkins, Adam Levin, Casey Harris, Sam Nelson Harris & Jared Thorne + AlbumBelong EP + GenreAlternative + KindApple Music AAC audio file + Size7143647 + Total Time203518 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2020 + Date Modified2020-03-07T07:16:40Z + Date Added2020-03-07T07:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781057313 + Play Date UTC2023-10-25T02:41:53Z + Release Date2020-03-06T12:00:00Z + Artwork Count1 + Sort AlbumBelong EP + Sort ArtistX Ambassadors + Sort NameHappy Home + Persistent ID6C077EE2C67F3B19 + Explicit + Track TypeRemote + Apple Music + + 4331 + + Track ID4331 + NameBelong + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerRodney "Darkchild" Jerkins, Adam Levin, Casey Harris, Sam Nelson Harris & Jared Thorne + AlbumBelong EP + GenreAlternative + KindApple Music AAC audio file + Size7685837 + Total Time218885 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2020 + Date Modified2020-03-07T07:16:40Z + Date Added2020-03-07T07:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3770490627 + Play Date UTC2023-06-24T19:30:27Z + Release Date2020-03-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBelong EP + Sort ArtistX Ambassadors + Sort NameBelong + Persistent ID00608C52F5AFB638 + Track TypeRemote + Apple Music + + 4333 + + Track ID4333 + NameEverything Sounds Like A Love Song + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAdam Levin, Casey Harris, Sam Nelson Harris, Sam Roman & Andrew Wotman + AlbumBelong EP + GenreAlternative + KindApple Music AAC audio file + Size9426259 + Total Time266612 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2020 + Date Modified2020-03-07T07:16:40Z + Date Added2020-03-07T07:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3766854400 + Play Date UTC2023-05-13T17:26:40Z + Release Date2020-02-07T12:00:00Z + Artwork Count1 + Sort AlbumBelong EP + Sort ArtistX Ambassadors + Sort NameEverything Sounds Like A Love Song + Persistent IDAE4D0AE169381B55 + Track TypeRemote + Apple Music + + 4335 + + Track ID4335 + NameCycles (feat. X Ambassadors) + ArtistMethal + Album ArtistMethal + ComposerMethal Al Hammadi, Sam Harris, Evan Bogart, Jon Yip, Ray McCullogh, Ray Romulus & Jeremy Reeves + AlbumCycles (feat. X Ambassadors) - Single + GenrePop + KindApple Music AAC audio file + Size7168091 + Total Time193547 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2020-03-10T04:39:43Z + Date Added2020-03-10T04:39:43Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781317173 + Play Date UTC2023-10-28T02:52:53Z + Release Date2017-07-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCycles (feat. X Ambassadors) - Single + Sort ArtistMethal + Sort NameCycles (feat. X Ambassadors) + Persistent ID374D83314AB63021 + Track TypeRemote + Apple Music + + 4337 + + Track ID4337 + NameHypochondriac + ArtistFenne Lily + Album ArtistFenne Lily + ComposerFenne Lily + AlbumHypochondriac - Single + GenreAlternative + KindApple Music AAC audio file + Size6901290 + Total Time192853 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-03-13T20:30:10Z + Date Added2020-03-13T20:30:10Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3766833459 + Play Date UTC2023-05-13T11:37:39Z + Release Date2020-03-10T12:00:00Z + Artwork Count1 + Sort AlbumHypochondriac - Single + Sort ArtistFenne Lily + Sort NameHypochondriac + Persistent IDAE4EE3DCCFF3B61F + Track TypeRemote + Apple Music + + 4339 + + Track ID4339 + NamePlatz eins + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size8258440 + Total Time235413 + Disc Number1 + Disc Count1 + Track Number10 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3767786975 + Play Date UTC2023-05-24T12:29:35Z + Skip Count2 + Skip Date2022-10-17T14:10:41Z + Release Date2019-11-22T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NamePlatz eins + Persistent IDD3FCACB7C265C153 + Track TypeRemote + Apple Music + + 4341 + + Track ID4341 + NameGummi + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size8345609 + Total Time236387 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3775316791 + Play Date UTC2023-08-19T16:06:31Z + Skip Count1 + Skip Date2020-12-30T07:53:16Z + Release Date2019-11-22T12:00:00Z + Rating80 + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameGummi + Persistent ID12C0968A4BCD86BE + Track TypeRemote + Apple Music + + 4343 + + Track ID4343 + NameSchlaf ein + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size10697207 + Total Time309147 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3780296027 + Play Date UTC2023-10-16T07:13:47Z + Skip Count1 + Skip Date2021-11-10T17:38:06Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameSchlaf ein + Persistent ID737B1641B76FB046 + Track TypeRemote + Apple Music + + 4345 + + Track ID4345 + NameAch so gern + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size7174715 + Total Time202547 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3767284852 + Play Date UTC2023-05-18T17:00:52Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameAch so gern + Persistent IDD544C11A0487754A + Track TypeRemote + Apple Music + + 4347 + + Track ID4347 + NameAch so gern (Pain Version) + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size8037762 + Total Time229440 + Disc Number1 + Disc Count1 + Track Number13 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781174616 + Play Date UTC2023-10-26T11:16:56Z + Skip Count2 + Skip Date2022-07-30T07:32:02Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameAch so gern (Pain Version) + Persistent ID861014B90448C2BF + Track TypeRemote + Apple Music + + 4349 + + Track ID4349 + NameMathematik + ArtistLindemann + Album ArtistLindemann + ComposerSebastian Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size7672535 + Total Time214107 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count66 + Play Date3760084902 + Play Date UTC2023-02-24T09:01:42Z + Skip Count3 + Skip Date2022-06-01T13:57:49Z + Release Date2019-11-22T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameMathematik + Persistent ID5F080C6243598AC9 + Explicit + Track TypeRemote + Apple Music + + 4351 + + Track ID4351 + NameWer weiß das schon + ArtistLindemann + Album ArtistLindemann + ComposerClemens Wijers + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size8257403 + Total Time237733 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count58 + Play Date3782806092 + Play Date UTC2023-11-14T08:28:12Z + Skip Count6 + Skip Date2023-11-25T14:14:21Z + Release Date2019-11-22T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameWer weiß das schon + Persistent ID259224009CCE331E + Track TypeRemote + Apple Music + + 4353 + + Track ID4353 + NameBlut + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size8797876 + Total Time242773 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3772521089 + Play Date UTC2023-07-18T07:31:29Z + Skip Count3 + Skip Date2021-08-15T18:10:21Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameBlut + Persistent IDAEEA012A23B803C1 + Track TypeRemote + Apple Music + + 4355 + + Track ID4355 + NameFrau & Mann + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size7534901 + Total Time213987 + Disc Number1 + Disc Count1 + Track Number6 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3771824181 + Play Date UTC2023-07-10T05:56:21Z + Skip Count2 + Skip Date2022-08-01T15:29:03Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameFrau & Mann + Persistent ID4479A23DDBF24CBF + Track TypeRemote + Apple Music + + 4357 + + Track ID4357 + NameAllesfresser + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreMetal + KindApple Music AAC audio file + Size7355400 + Total Time209120 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3783664152 + Play Date UTC2023-11-24T06:49:12Z + Skip Count1 + Skip Date2021-06-13T14:26:48Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameAllesfresser + Persistent IDCFEA73D556A22928 + Track TypeRemote + Apple Music + + 4359 + + Track ID4359 + NameKnebel + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren & Till Lindemann + AlbumF & M (Deluxe) + GenreRock + KindApple Music AAC audio file + Size8112632 + Total Time230200 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3766397402 + Play Date UTC2023-05-08T10:30:02Z + Skip Count1 + Skip Date2020-12-30T07:56:19Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameKnebel + Persistent IDAE603B11C800B8AD + Track TypeRemote + Apple Music + + 4361 + + Track ID4361 + NameIch weiß es nicht + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreRock + KindApple Music AAC audio file + Size10134761 + Total Time289787 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3781571670 + Play Date UTC2023-10-31T01:34:30Z + Skip Count1 + Skip Date2020-12-30T07:52:37Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameIch weiß es nicht + Persistent ID2CFE469DC6B79FC7 + Track TypeRemote + Apple Music + + 4363 + + Track ID4363 + NameSteh auf + ArtistLindemann + Album ArtistLindemann + ComposerPeter Tägtgren + AlbumF & M (Deluxe) + GenreRock + KindApple Music AAC audio file + Size6681697 + Total Time184080 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2019 + Date Modified2020-03-16T19:49:32Z + Date Added2020-03-16T19:49:32Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3783695156 + Play Date UTC2023-11-24T15:25:56Z + Skip Count3 + Skip Date2022-11-24T20:29:26Z + Release Date2019-11-22T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumF & M (Deluxe) + Sort ArtistLindemann + Sort NameSteh auf + Persistent ID639016FB185CB1F3 + Track TypeRemote + Apple Music + + 4365 + + Track ID4365 + NameNo Heart + ArtistScum + Album ArtistScum + ComposerVictor Gutierrez & Scum + AlbumScum Singles (: + GenreAlternative + KindApple Music AAC audio file + Size5931165 + Total Time164888 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2017 + Date Modified2020-03-23T07:03:41Z + Date Added2020-03-23T07:03:41Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3781618998 + Play Date UTC2023-10-31T14:43:18Z + Skip Count2 + Skip Date2022-11-11T18:01:32Z + Release Date2017-10-03T12:00:00Z + Artwork Count1 + Sort AlbumScum Singles (: + Sort ArtistScum + Sort NameNo Heart + Persistent ID690FAAE45ACD953E + Track TypeRemote + Apple Music + + 4367 + + Track ID4367 + NameToo Far Gone + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumYou Haunt Me + GenreAlternative + KindApple Music AAC audio file + Size7564489 + Total Time206203 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2014 + Date Modified2020-03-26T11:30:53Z + Date Added2020-03-26T11:30:53Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3779311594 + Play Date UTC2023-10-04T21:46:34Z + Release Date2014-09-16T12:00:00Z + Artwork Count1 + Sort AlbumYou Haunt Me + Sort ArtistSir Sly + Sort NameToo Far Gone + Persistent ID07FB4DFE690FDA3E + Track TypeRemote + Apple Music + + 4369 + + Track ID4369 + NameYou Haunt Me + ArtistSir Sly + GenreAlternative + KindMPEG-4 video file + Size51241624 + Total Time222847 + Year2014 + Date Modified2020-03-26T11:34:59Z + Date Added2020-03-26T11:34:59Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3752059858 + Play Date UTC2022-11-23T11:50:58Z + Skip Count2 + Skip Date2022-06-07T11:44:36Z + Release Date2014-09-09T07:00:00Z + Artwork Count1 + Sort ArtistSir Sly + Sort NameYou Haunt Me + Persistent ID46AC4B19C87339CF + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 4371 + + Track ID4371 + NameDangerous (feat. Joywave) + ArtistBig Data + Album ArtistBig Data + ComposerAlan Wilkis & Daniel Armbruster + Album2.0 + GenreAlternative + KindApple Music AAC audio file + Size10085208 + Total Time280747 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2013 + Date Modified2020-03-26T11:45:46Z + Date Added2020-03-26T11:45:46Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3780773768 + Play Date UTC2023-10-21T19:56:08Z + Release Date2013-08-19T12:00:00Z + Artwork Count1 + Sort Album2.0 + Sort ArtistBig Data + Sort NameDangerous (feat. Joywave) + Persistent ID3B8B817467801F2D + Track TypeRemote + Apple Music + + 4373 + + Track ID4373 + NameIt's a Trip + ArtistTiRon & Ayomari + Album ArtistTiRon & Ayomari + ComposerTiRon Jeffries & Omari Allen + AlbumWET: The Wonderful Ego Trip + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7299215 + Total Time202115 + Disc Number1 + Disc Count1 + Track Number3 + Track Count15 + Year2017 + Date Modified2020-03-29T20:40:52Z + Date Added2020-03-29T20:40:52Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3781061353 + Play Date UTC2023-10-25T03:49:13Z + Skip Count4 + Skip Date2023-05-11T05:38:22Z + Release Date2017-09-06T12:00:00Z + Artwork Count1 + Sort AlbumWET: The Wonderful Ego Trip + Sort ArtistTiRon & Ayomari + Sort NameIt's a Trip + Persistent IDFDA66DB9D64E50CF + Explicit + Track TypeRemote + Apple Music + + 4375 + + Track ID4375 + NameColour in Your Heart + ArtistRoo Panes + Album ArtistRoo Panes + ComposerAndrew Panes + AlbumPacific - EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8241714 + Total Time231692 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2020 + Date Modified2020-03-30T13:47:14Z + Date Added2020-03-30T13:47:14Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3772712432 + Play Date UTC2023-07-20T12:40:32Z + Release Date2020-03-20T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPacific - EP + Sort ArtistRoo Panes + Sort NameColour in Your Heart + Persistent ID63D7D694B8342B5F + Track TypeRemote + Apple Music + + 4377 + + Track ID4377 + NameRest My Chemistry + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Paul Banks & Samuel Fogarino + AlbumOur Love To Admire + GenreAlternative + KindApple Music AAC audio file + Size10560629 + Total Time301094 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2007 + Date Modified2020-03-31T15:26:40Z + Date Added2020-03-31T15:26:40Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3770186873 + Play Date UTC2023-06-21T07:07:53Z + Skip Count2 + Skip Date2022-04-15T19:32:50Z + Release Date2007-07-10T12:00:00Z + Loved + Artwork Count1 + Sort AlbumOur Love To Admire + Sort ArtistInterpol + Sort NameRest My Chemistry + Persistent IDAD9A63FB3AA46B80 + Track TypeRemote + Apple Music + + 4379 + + Track ID4379 + NameHeadcheck + ArtistThe Million + Album ArtistThe Million + ComposerJacob Thomas, Jayden Stewart, Tamon Mashimo, Jesse O'Neill-Hutchin & Jackson Wood + AlbumHydration Station - EP + GenreAlternative + KindApple Music AAC audio file + Size8548863 + Total Time223368 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2017 + Date Modified2020-03-31T16:34:12Z + Date Added2020-03-31T16:34:12Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3765789326 + Play Date UTC2023-05-01T09:35:26Z + Skip Count1 + Skip Date2022-09-30T16:33:51Z + Release Date2017-10-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHydration Station - EP + Sort Album ArtistMillion + Sort ArtistMillion + Sort NameHeadcheck + Persistent IDBF170A4C1AA35A68 + Track TypeRemote + Apple Music + + 4381 + + Track ID4381 + NameThe Base + ArtistPaul Banks + Album ArtistPaul Banks + AlbumBanks + GenreAlternative + KindApple Music AAC audio file + Size8475170 + Total Time234987 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2012 + Date Modified2020-03-31T16:36:13Z + Date Added2020-03-31T16:36:13Z + Bit Rate256 + Sample Rate44100 + Play Count74 + Play Date3781062000 + Play Date UTC2023-10-25T04:00:00Z + Release Date2012-01-01T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumBanks + Sort ArtistPaul Banks + Sort NameBase + Persistent ID9CA65BD77D7F94D8 + Track TypeRemote + Apple Music + + 4383 + + Track ID4383 + NameAnother Chance + ArtistPaul Banks + Album ArtistPaul Banks + AlbumBanks + GenreAlternative + KindApple Music AAC audio file + Size9732967 + Total Time274093 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2012 + Date Modified2020-03-31T17:05:48Z + Date Added2020-03-31T17:05:48Z + Bit Rate256 + Sample Rate44100 + Play Count55 + Play Date3754324849 + Play Date UTC2022-12-19T17:00:49Z + Skip Count1 + Skip Date2022-07-06T09:48:15Z + Release Date2012-10-22T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumBanks + Sort ArtistPaul Banks + Sort NameAnother Chance + Persistent ID9A945E4620BBF069 + Track TypeRemote + Apple Music + + 4385 + + Track ID4385 + NameParty's Over + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size8327941 + Total Time219027 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3781052894 + Play Date UTC2023-10-25T01:28:14Z + Skip Date2022-07-21T07:17:00Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameParty's Over + Persistent ID654A588B54D74182 + Explicit + Track TypeRemote + Apple Music + + 4387 + + Track ID4387 + NameNumber 10 + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size7283520 + Total Time192973 + Disc Number1 + Disc Count1 + Track Number10 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781202654 + Play Date UTC2023-10-26T19:04:14Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameNumber 10 + Persistent ID5A9499D93A7D17CA + Track TypeRemote + Apple Music + + 4389 + + Track ID4389 + NameIt Probably Matters + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size9206539 + Total Time247933 + Disc Number1 + Disc Count1 + Track Number13 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3764667608 + Play Date UTC2023-04-18T10:00:08Z + Skip Count1 + Skip Date2022-07-15T10:25:28Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameIt Probably Matters + Persistent ID7924CA123E44EA6B + Track TypeRemote + Apple Music + + 4391 + + Track ID4391 + NameInterlude 2 + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size2853062 + Total Time63160 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3773234640 + Play Date UTC2023-07-26T13:44:00Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameInterlude 2 + Persistent ID6E94AA1CDBBF19F1 + Track TypeRemote + Apple Music + + 4393 + + Track ID4393 + NameFlight of Fancy + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size8731985 + Total Time231813 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3762584240 + Play Date UTC2023-03-25T07:17:20Z + Skip Count2 + Skip Date2023-02-14T19:41:08Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameFlight of Fancy + Persistent ID81889B869A5258D9 + Track TypeRemote + Apple Music + + 4395 + + Track ID4395 + NameSurveillance + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size9392165 + Total Time253373 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3759848961 + Play Date UTC2023-02-21T15:29:21Z + Skip Count4 + Skip Date2023-03-05T12:39:24Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameSurveillance + Persistent ID20BF41ACF18BC37E + Explicit + Track TypeRemote + Apple Music + + 4397 + + Track ID4397 + NameStay In Touch + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size11052300 + Total Time293213 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3762327101 + Play Date UTC2023-03-22T07:51:41Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameStay In Touch + Persistent IDF741DE6A9AA1094D + Track TypeRemote + Apple Music + + 4399 + + Track ID4399 + NameNysmaw + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size7306984 + Total Time196853 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3767091998 + Play Date UTC2023-05-16T11:26:38Z + Skip Count1 + Skip Date2023-02-24T06:50:50Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameNysmaw + Persistent ID77B007A34FDA21C6 + Track TypeRemote + Apple Music + + 4401 + + Track ID4401 + NameIf You Really Love Nothing + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size10054800 + Total Time265573 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3772004181 + Play Date UTC2023-07-12T07:56:21Z + Skip Count1 + Skip Date2022-08-19T16:06:49Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameIf You Really Love Nothing + Persistent IDE6C868AB36E7A7B5 + Track TypeRemote + Apple Music + + 4403 + + Track ID4403 + NameInterlude 1 + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size2738374 + Total Time61040 + Disc Number1 + Disc Count1 + Track Number6 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3772806447 + Play Date UTC2023-07-21T14:47:27Z + Skip Count1 + Skip Date2021-08-03T15:56:56Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameInterlude 1 + Persistent ID079750D21782874A + Track TypeRemote + Apple Music + + 4405 + + Track ID4405 + NameComplications + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size9303488 + Total Time234227 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3782981120 + Play Date UTC2023-11-16T09:05:20Z + Skip Count2 + Skip Date2022-04-25T06:47:05Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameComplications + Persistent ID4710C912E731F66C + Track TypeRemote + Apple Music + + 4407 + + Track ID4407 + NameThe Rover + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size8800604 + Total Time217693 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3780685412 + Play Date UTC2023-10-20T19:23:32Z + Skip Count3 + Skip Date2022-11-02T05:15:20Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameRover + Persistent IDE238A40AE116B75B + Track TypeRemote + Apple Music + + 4409 + + Track ID4409 + NameMountain Child + ArtistInterpol + Album ArtistInterpol + ComposerDaniel Kessler, Paul Banks & Samuel Fogarino + AlbumMarauder + GenreAlternative + KindApple Music AAC audio file + Size7045937 + Total Time188053 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2018 + Date Modified2020-04-03T16:57:19Z + Date Added2020-04-03T16:57:19Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3752439948 + Play Date UTC2022-11-27T21:25:48Z + Release Date2018-08-24T12:00:00Z + Artwork Count1 + Sort AlbumMarauder + Sort ArtistInterpol + Sort NameMountain Child + Persistent IDD636FDA9F3D65F80 + Track TypeRemote + Apple Music + + 4411 + + Track ID4411 + NameUntitled (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size8324101 + Total Time236667 + Disc Number1 + Disc Count2 + Track Number1 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3781519712 + Play Date UTC2023-10-30T11:08:32Z + Skip Count1 + Skip Date2022-02-28T22:26:31Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameUntitled (2012 Remaster) + Persistent IDE55E45B3EF22F777 + Track TypeRemote + Apple Music + + 4413 + + Track ID4413 + NameRoland (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size7815204 + Total Time215520 + Disc Number1 + Disc Count2 + Track Number9 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3770296627 + Play Date UTC2023-06-22T13:37:07Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameRoland (2012 Remaster) + Persistent ID83DAB381C50B1036 + Track TypeRemote + Apple Music + + 4415 + + Track ID4415 + NameStella Was a Diver and She Was Always Down (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size13455267 + Total Time388067 + Disc Number1 + Disc Count2 + Track Number8 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3767515256 + Play Date UTC2023-05-21T09:00:56Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameStella Was a Diver and She Was Always Down (2012 Remaster) + Persistent ID1B20A733456818E7 + Track TypeRemote + Apple Music + + 4417 + + Track ID4417 + NameObstacle 2 (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size8272389 + Total Time227080 + Disc Number1 + Disc Count2 + Track Number7 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3783708585 + Play Date UTC2023-11-24T19:09:45Z + Skip Count2 + Skip Date2023-05-27T10:41:44Z + Release Date2002-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameObstacle 2 (2012 Remaster) + Persistent IDB8DD9D70F1553812 + Track TypeRemote + Apple Music + + 4419 + + Track ID4419 + NameThe New (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size12692977 + Total Time367360 + Disc Number1 + Disc Count2 + Track Number10 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783358395 + Play Date UTC2023-11-20T17:53:15Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameNew (2012 Remaster) + Persistent ID2E617CDF93A40EF3 + Track TypeRemote + Apple Music + + 4421 + + Track ID4421 + NameObstacle 1 (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size8818761 + Total Time251547 + Disc Number1 + Disc Count2 + Track Number2 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3768387591 + Play Date UTC2023-05-31T11:19:51Z + Skip Count2 + Skip Date2021-12-03T22:49:46Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameObstacle 1 (2012 Remaster) + Persistent ID7FC14124EC24E9F2 + Track TypeRemote + Apple Music + + 4423 + + Track ID4423 + NameNyc (Peel Session - 2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size9011815 + Total Time257307 + Disc Number2 + Disc Count2 + Track Number17 + Track Count17 + Year2012 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783410055 + Play Date UTC2023-11-21T08:14:15Z + Release Date2002-08-20T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameNyc (Peel Session - 2012 Remaster) + Persistent ID5BC1431BF348042F + Track TypeRemote + Apple Music + + 4425 + + Track ID4425 + NameLeif Erikson (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size8573890 + Total Time240000 + Disc Number1 + Disc Count2 + Track Number11 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3770285707 + Play Date UTC2023-06-22T10:35:07Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameLeif Erikson (2012 Remaster) + Persistent ID9E840B8D6F3DE2D9 + Track TypeRemote + Apple Music + + 4427 + + Track ID4427 + NameHands Away (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size7266562 + Total Time185627 + Disc Number1 + Disc Count2 + Track Number6 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783450148 + Play Date UTC2023-11-21T19:22:28Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameHands Away (2012 Remaster) + Persistent IDC6E1D5BE1D4BDD7B + Track TypeRemote + Apple Music + + 4429 + + Track ID4429 + NameSay Hello to the Angels (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size9538538 + Total Time268453 + Disc Number1 + Disc Count2 + Track Number5 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3783358028 + Play Date UTC2023-11-20T17:47:08Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NameSay Hello to the Angels (2012 Remaster) + Persistent ID7AED8BB919F44380 + Track TypeRemote + Apple Music + + 4431 + + Track ID4431 + NamePda (2012 Remaster) + ArtistInterpol + Album ArtistInterpol + ComposerCarlos Dengler, Daniel Kessler, Samuel Fogarino & Paul Banks + AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + GenreAlternative + KindApple Music AAC audio file + Size10541366 + Total Time300053 + Disc Number1 + Disc Count2 + Track Number4 + Track Count11 + Year2002 + Date Modified2020-04-03T16:57:24Z + Date Added2020-04-03T16:57:24Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3777372100 + Play Date UTC2023-09-12T11:01:40Z + Release Date2002-01-01T12:00:00Z + Artwork Count1 + Sort AlbumTurn On the Bright Lights (The Tenth Anniversary Edition - 2012 Remaster) + Sort ArtistInterpol + Sort NamePda (2012 Remaster) + Persistent IDFEAF0D62ED24D9B8 + Track TypeRemote + Apple Music + + 4433 + + Track ID4433 + Name157 + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + Album157 - EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size23458050 + Total Time692197 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-04-04T19:28:00Z + Date Added2020-04-04T19:28:00Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3777016697 + Play Date UTC2023-09-08T08:18:17Z + Skip Count2 + Skip Date2022-11-02T13:02:16Z + Release Date2020-04-01T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Album157 - EP + Sort ArtistTom Rosenthal + Sort Name157 + Persistent IDAA08C2D9EE397862 + Track TypeRemote + Apple Music + + 4435 + + Track ID4435 + Name2am + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size7451697 + Total Time212514 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2017 + Date Modified2020-04-06T07:52:55Z + Date Added2020-04-06T07:52:55Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780498184 + Play Date UTC2023-10-18T15:23:04Z + Skip Date2022-10-25T16:29:35Z + Release Date2017-06-30T12:00:00Z + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort Name2am + Persistent IDDC592317FB67EB21 + Explicit + Track TypeRemote + Apple Music + + 4437 + + Track ID4437 + NameSail + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron R. Bruno + AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + GenreAlternative + KindApple Music AAC audio file + Size9439339 + Total Time259093 + Disc Number1 + Disc Count1 + Track Number10 + Track Count41 + Year2010 + Date Modified2020-04-17T18:24:35Z + Date Added2020-04-17T18:24:35Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3775565918 + Play Date UTC2023-08-22T13:18:38Z + Skip Count2 + Skip Date2020-05-12T19:30:36Z + Release Date2011-01-04T08:00:00Z + Loved + Artwork Count1 + Sort AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + Sort ArtistAWOLNATION + Sort NameSail + Persistent ID83E37E3D22ABF99B + Track TypeRemote + Apple Music + + 4439 + + Track ID4439 + NameI'm a Wreck + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size8987738 + Total Time251773 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-24T05:11:32Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3770299189 + Play Date UTC2023-06-22T14:19:49Z + Skip Count1 + Skip Date2020-05-16T04:38:22Z + Release Date2020-04-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameI'm a Wreck + Persistent IDCDE174C6C3D80CD2 + Explicit + Track TypeRemote + Apple Music + + 4441 + + Track ID4441 + NameHalf Italian + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size9359806 + Total Time263440 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-24T05:11:32Z + Bit Rate256 + Sample Rate44100 + Play Count65 + Play Date3766068447 + Play Date UTC2023-05-04T15:07:27Z + Skip Date2022-10-17T05:44:38Z + Release Date2020-04-24T12:00:00Z + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameHalf Italian + Persistent IDFFD37CDE06907D6D + Explicit + Track TypeRemote + Apple Music + + 4443 + + Track ID4443 + NameMayday!!! Fiesta Fever (feat. Alex Ebert) + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAlex Ebert & Aaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size8194571 + Total Time222267 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-17T19:49:40Z + Bit Rate256 + Sample Rate44100 + Play Count75 + Play Date3769665455 + Play Date UTC2023-06-15T06:17:35Z + Skip Count4 + Skip Date2023-03-06T06:59:36Z + Release Date2020-01-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameMayday!!! Fiesta Fever (feat. Alex Ebert) + Persistent IDFF87AE6E61FD4B33 + Track TypeRemote + Apple Music + + 4445 + + Track ID4445 + NameRadical + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size7866045 + Total Time218307 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-24T05:11:32Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3780906727 + Play Date UTC2023-10-23T08:52:07Z + Skip Count2 + Skip Date2022-11-01T10:01:30Z + Release Date2020-04-24T12:00:00Z + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameRadical + Persistent IDE48B2C5FA1DD6E45 + Track TypeRemote + Apple Music + + 4447 + + Track ID4447 + NameSlam (Angel Miners) + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size10084175 + Total Time288080 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-17T19:49:40Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3783357031 + Play Date UTC2023-11-20T17:30:31Z + Skip Count3 + Skip Date2021-01-24T15:13:39Z + Release Date2020-03-13T12:00:00Z + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameSlam (Angel Miners) + Persistent ID06AB3D5B568ABF05 + Track TypeRemote + Apple Music + + 4449 + + Track ID4449 + NameCalifornia Halo Blue + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size8560940 + Total Time233133 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-17T19:49:40Z + Bit Rate256 + Sample Rate44100 + Play Count75 + Play Date3783682287 + Play Date UTC2023-11-24T11:51:27Z + Skip Count1 + Skip Date2020-05-29T20:09:06Z + Release Date2019-11-29T12:00:00Z + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameCalifornia Halo Blue + Persistent IDC33DDEA446343F74 + Track TypeRemote + Apple Music + + 4451 + + Track ID4451 + NamePacific Coast Highway in the Movies (feat. Rivers Cuomo) + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno, Rivers Cuomo & Daniel Saslow + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size8261691 + Total Time235747 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-24T05:11:32Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3767522730 + Play Date UTC2023-05-21T11:05:30Z + Skip Count6 + Skip Date2023-10-31T15:44:52Z + Release Date2020-04-24T12:00:00Z + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NamePacific Coast Highway in the Movies (feat. Rivers Cuomo) + Persistent IDCB626023A6531305 + Track TypeRemote + Apple Music + + 4453 + + Track ID4453 + NameBattered, Black & Blue (Hole in My Heart) + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size6951054 + Total Time195733 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-24T05:11:32Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3783665278 + Play Date UTC2023-11-24T07:07:58Z + Skip Count4 + Skip Date2023-10-28T02:46:46Z + Release Date2020-04-24T12:00:00Z + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameBattered, Black & Blue (Hole in My Heart) + Persistent IDB308D90B7D8E6E5C + Track TypeRemote + Apple Music + + 4455 + + Track ID4455 + NameThe Best + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size8236246 + Total Time223320 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-17T19:49:40Z + Bit Rate256 + Sample Rate44100 + Play Count71 + Play Date3781050709 + Play Date UTC2023-10-25T00:51:49Z + Skip Count7 + Skip Date2023-02-26T20:04:32Z + Release Date2019-11-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameBest + Persistent ID248D875CA49D1DC0 + Track TypeRemote + Apple Music + + 4457 + + Track ID4457 + NameLightning Riders + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders + GenreAlternative + KindApple Music AAC audio file + Size8316574 + Total Time230587 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2020 + Date Modified2020-04-17T19:49:40Z + Date Added2020-04-24T05:11:32Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3777374705 + Play Date UTC2023-09-12T11:45:05Z + Skip Count1 + Skip Date2020-12-17T09:34:31Z + Release Date2020-04-24T12:00:00Z + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders + Sort ArtistAWOLNATION + Sort NameLightning Riders + Persistent IDFE837815FAD14321 + Track TypeRemote + Apple Music + + 4459 + + Track ID4459 + NameGimme Love + ArtistJoji + Album ArtistJoji + ComposerDaniel Krieger, Daniel Tannenbaum, George Miller, Sergiu Adrian Gherman & Tyler Reese Mehlenbacher + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size7812380 + Total Time214558 + Disc Number1 + Disc Count1 + Track Number6 + Track Count18 + Year2020 + Date Modified2020-04-18T09:15:18Z + Date Added2020-04-18T09:15:18Z + Bit Rate256 + Sample Rate44100 + Play Count94 + Play Date3783362498 + Play Date UTC2023-11-20T19:01:38Z + Skip Count4 + Skip Date2021-06-04T10:05:42Z + Release Date2020-04-16T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameGimme Love + Persistent ID24DA0D33A1E1A91B + Track TypeRemote + Apple Music + + 4461 + + Track ID4461 + NameFemme Fatale + ArtistThe Kooks + Album ArtistThe Kooks + ComposerLuke Pritchard, Hugh Harris, Max Rafferty & Paul Garred + AlbumUnshelved: Pt. I - EP + GenreAlternative + KindApple Music AAC audio file + Size7306872 + Total Time204947 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2020 + Date Modified2020-04-18T09:42:28Z + Date Added2020-04-18T09:42:28Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3776239815 + Play Date UTC2023-08-30T08:30:15Z + Skip Count2 + Skip Date2023-02-26T10:23:41Z + Release Date2020-04-10T12:00:00Z + Loved + Artwork Count1 + Sort AlbumUnshelved: Pt. I - EP + Sort Album ArtistKooks + Sort ArtistKooks + Sort NameFemme Fatale + Persistent ID21C1B7CF3C7DD208 + Track TypeRemote + Apple Music + + 4463 + + Track ID4463 + NameTomorrow + ArtistJack Curley + Album ArtistJack Curley + ComposerEd Holloway, Jack Curley & Nick Atkinson + AlbumTomorrow - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7372218 + Total Time206729 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-04-18T09:45:41Z + Date Added2020-04-18T09:45:41Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3776147538 + Play Date UTC2023-08-29T06:52:18Z + Release Date2020-03-20T12:00:00Z + Artwork Count1 + Sort AlbumTomorrow - Single + Sort ArtistJack Curley + Sort NameTomorrow + Persistent ID338FAE67A31ABC61 + Track TypeRemote + Apple Music + + 4465 + + Track ID4465 + NameTable for One + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumHere Come the Runts + GenreAlternative + KindAAC audio file + Size9708673 + Total Time279127 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2018 + Date Modified2020-04-18T11:20:04Z + Date Added2020-04-18T11:20:04Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3734120456 + Play Date UTC2022-04-29T20:40:56Z + Release Date2018-02-02T12:00:00Z + Loved + Sort AlbumHere Come the Runts + Sort ArtistAWOLNATION + Sort NameTable for One + Persistent IDC57F19140E844673 + Track TypeRemote + + 4467 + + Track ID4467 + NameFingeroll + ArtistRaz Simone + Album ArtistRaz Simone + ComposerRaz Simone + AlbumFingeroll - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size16537388 + Total Time483708 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-04-25T18:48:29Z + Date Added2020-04-25T18:48:29Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3782990449 + Play Date UTC2023-11-16T11:40:49Z + Skip Count1 + Skip Date2020-04-27T10:05:02Z + Release Date2020-04-16T12:00:00Z + Artwork Count1 + Sort AlbumFingeroll - Single + Sort ArtistRaz Simone + Sort NameFingeroll + Persistent ID43CF7EB3CC070417 + Explicit + Track TypeRemote + Apple Music + + 4469 + + Track ID4469 + Name((home movie: 1994)) + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley & Orit Braha + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size805183 + Total Time7156 + Disc Number1 + Disc Count1 + Track Number3 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3779307884 + Play Date UTC2023-10-04T20:44:44Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort Name((home movie: 1994)) + Persistent IDD9A118C3C17676F4 + Track TypeRemote + Apple Music + + 4471 + + Track ID4471 + NameDreamland + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size7319177 + Total Time203492 + Disc Number1 + Disc Count1 + Track Number1 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-05-02T07:02:21Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3767207755 + Play Date UTC2023-05-17T19:35:55Z + Skip Count1 + Skip Date2020-07-05T12:10:45Z + Release Date2020-05-01T07:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameDreamland + Persistent ID0780C58C1C8A720C + Track TypeRemote + Apple Music + + 4473 + + Track ID4473 + NameTangerine + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley & Brittany Hazzard + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size7288966 + Total Time200584 + Disc Number1 + Disc Count1 + Track Number2 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781382040 + Play Date UTC2023-10-28T20:54:00Z + Skip Count1 + Skip Date2022-04-23T20:34:41Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameTangerine + Persistent ID394C9C5B07298EEB + Track TypeRemote + Apple Music + + 4475 + + Track ID4475 + Name((home movie: btx)) + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size1017793 + Total Time13626 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3782883347 + Play Date UTC2023-11-15T05:55:47Z + Skip Count2 + Skip Date2023-07-19T05:56:05Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort Name((home movie: btx)) + Persistent ID6A55EDAABDA75803 + Track TypeRemote + Apple Music + + 4477 + + Track ID4477 + NameHot Sugar + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley, Ann Bridgeforth, Dave Hamilton & Rony Darrel + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size8466221 + Total Time234866 + Disc Number1 + Disc Count1 + Track Number4 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3783848161 + Play Date UTC2023-11-26T09:56:01Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameHot Sugar + Persistent IDE9B20E1C544917FF + Track TypeRemote + Apple Music + + 4479 + + Track ID4479 + NameIt’s All So Incredibly Loud + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size9117705 + Total Time259060 + Disc Number1 + Disc Count1 + Track Number11 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-07-30T21:07:00Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3776434489 + Play Date UTC2023-09-01T14:34:49Z + Skip Count2 + Skip Date2020-08-06T15:46:07Z + Release Date2020-07-31T07:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameIt’s All So Incredibly Loud + Persistent ID72938423FD9D271E + Track TypeRemote + Apple Music + + 4481 + + Track ID4481 + NameWaterfalls Coming Out Your Mouth + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size5866299 + Total Time161790 + Disc Number1 + Disc Count1 + Track Number10 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3782988384 + Play Date UTC2023-11-16T11:06:24Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameWaterfalls Coming Out Your Mouth + Persistent IDA477A2F9C8685EAF + Explicit + Track TypeRemote + Apple Music + + 4483 + + Track ID4483 + NameHelium + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size10990406 + Total Time328232 + Disc Number1 + Disc Count1 + Track Number16 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T22:15:10Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3776320783 + Play Date UTC2023-08-31T06:59:43Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameHelium + Persistent IDFA4C1BA3C13C5D53 + Track TypeRemote + Apple Music + + 4485 + + Track ID4485 + NameDomestic Bliss + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size6990232 + Total Time198035 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3765614407 + Play Date UTC2023-04-29T09:00:07Z + Skip Count1 + Skip Date2021-03-08T09:18:47Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameDomestic Bliss + Persistent IDE97D057C90E729F7 + Explicit + Track TypeRemote + Apple Music + + 4487 + + Track ID4487 + Name((home movie: rockets)) + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size2861528 + Total Time60123 + Disc Number1 + Disc Count1 + Track Number12 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3776170094 + Play Date UTC2023-08-29T13:08:14Z + Skip Count3 + Skip Date2023-02-23T13:24:45Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort Name((home movie: rockets)) + Persistent IDB812F99858A41D6A + Track TypeRemote + Apple Music + + 4489 + + Track ID4489 + NameMelon and the Coconut + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size5436467 + Total Time148706 + Disc Number1 + Disc Count1 + Track Number8 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3758871112 + Play Date UTC2023-02-10T07:51:52Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameMelon and the Coconut + Persistent IDDF4850EB13D4B2F3 + Explicit + Track TypeRemote + Apple Music + + 4491 + + Track ID4491 + NameYour Love (Déjà Vu) + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size8697541 + Total Time234372 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-05-02T07:02:21Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3781062235 + Play Date UTC2023-10-25T04:03:55Z + Skip Count4 + Skip Date2021-06-11T05:24:53Z + Release Date2020-02-19T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameYour Love (Déjà Vu) + Persistent IDA1F9DE44629C9714 + Track TypeRemote + Apple Music + + 4493 + + Track ID4493 + NameSpace Ghost Coast To Coast + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size6864522 + Total Time187384 + Disc Number1 + Disc Count1 + Track Number6 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783849411 + Play Date UTC2023-11-26T10:16:51Z + Skip Count1 + Skip Date2022-11-18T15:30:30Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameSpace Ghost Coast To Coast + Persistent IDEF9A345F5452BBAB + Explicit + Track TypeRemote + Apple Music + + 4495 + + Track ID4495 + NameHeat Waves + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size8713758 + Total Time238805 + Disc Number1 + Disc Count1 + Track Number14 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-06-29T18:20:34Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3781175127 + Play Date UTC2023-10-26T11:25:27Z + Release Date2020-06-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort NameHeat Waves + Persistent IDBBC6606308C33C61 + Track TypeRemote + Apple Music + + 4497 + + Track ID4497 + Name((home movie: shoes on)) + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size1572701 + Total Time31447 + Disc Number1 + Disc Count1 + Track Number15 + Track Count16 + Year2020 + Date Modified2020-05-02T07:02:21Z + Date Added2020-08-06T21:05:47Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3783411176 + Play Date UTC2023-11-21T08:32:56Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals + Sort Name((home movie: shoes on)) + Persistent ID6E6468C5A111EA3A + Track TypeRemote + Apple Music + + 4499 + + Track ID4499 + NameRun + ArtistJoji + Album ArtistJoji + ComposerDaniel Wilson, George Miller & Justin Parker + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size7100066 + Total Time195000 + Disc Number1 + Disc Count1 + Track Number7 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-05-03T06:42:56Z + Bit Rate256 + Sample Rate44100 + Play Count142 + Play Date3781349088 + Play Date UTC2023-10-28T11:44:48Z + Skip Count7 + Skip Date2021-09-24T20:16:24Z + Release Date2020-02-06T08:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization6985 + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameRun + Persistent IDB2A95B7CC3E88ACF + Track TypeRemote + Apple Music + + 4501 + + Track ID4501 + NameDaylight + ArtistJoji & Diplo + Album ArtistJoji + ComposerGeorge Miller, Greg Kurstin, Maximilian Jaeger, Sarah Aarons & Thomas Wesley Pentz + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size6034679 + Total Time163906 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-08-06T16:11:43Z + Bit Rate256 + Sample Rate44100 + Play Count85 + Play Date3781448230 + Play Date UTC2023-10-29T15:17:10Z + Skip Count1 + Skip Date2021-09-27T08:49:21Z + Release Date2020-08-06T07:00:00Z + Album Rating100 + Album Rating Computed + Normalization2468 + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji & Diplo + Sort NameDaylight + Persistent IDA4EBC9D133D993B9 + Explicit + Track TypeRemote + Apple Music + + 4503 + + Track ID4503 + NameYour Man + ArtistJoji + Album ArtistJoji + ComposerAlexander Kotz, George Miller & James Stack + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size6004070 + Total Time163759 + Disc Number1 + Disc Count1 + Track Number18 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count72 + Play Date3783667651 + Play Date UTC2023-11-24T07:47:31Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameYour Man + Persistent IDEED26A613B27FBF5 + Track TypeRemote + Apple Music + + 4505 + + Track ID4505 + NameUpgrade + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller, James Alan Ghaleb, Rickard Goransson & Tobias Karlsson + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size3546469 + Total Time89917 + Disc Number1 + Disc Count1 + Track Number5 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count85 + Play Date3781348671 + Play Date UTC2023-10-28T11:37:51Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameUpgrade + Persistent ID5475BE130461802D + Track TypeRemote + Apple Music + + 4507 + + Track ID4507 + NameEw + ArtistJoji + Album ArtistJoji + ComposerAntoine Norwood, Craig Balmoris, Daniel Nathan Krieger, Daniel Tannenbaum, George Miller, Lucas Szulansky, Sergiu Adrian Gherman, Stuart Daniel Johnson & Tyler Reese Mehlenbacher + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size7468147 + Total Time207710 + Disc Number1 + Disc Count1 + Track Number1 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count100 + Play Date3783073777 + Play Date UTC2023-11-17T10:49:37Z + Skip Count3 + Skip Date2022-11-11T18:10:59Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameEw + Persistent IDC01857D6B8FEF7B7 + Track TypeRemote + Apple Music + + 4509 + + Track ID4509 + NameMODUS + ArtistJoji + Album ArtistJoji + ComposerAjay Bhattacharyya & George Miller + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size7578960 + Total Time207265 + Disc Number1 + Disc Count1 + Track Number2 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count93 + Play Date3781348281 + Play Date UTC2023-10-28T11:31:21Z + Skip Count3 + Skip Date2022-10-06T15:58:48Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameMODUS + Persistent ID3F3531BD3263B6D5 + Track TypeRemote + Apple Music + + 4511 + + Track ID4511 + NameReanimator (feat. Yves Tumor) + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller, Jacob Reske & Yves Tumor + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size6735821 + Total Time183256 + Disc Number1 + Disc Count1 + Track Number16 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count91 + Play Date3782977379 + Play Date UTC2023-11-16T08:02:59Z + Skip Count1 + Skip Date2022-05-09T20:50:57Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameReanimator (feat. Yves Tumor) + Persistent ID8105A6BFB8129A86 + Track TypeRemote + Apple Music + + 4513 + + Track ID4513 + NameTick Tock + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller & Lawrence Jung + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size4941873 + Total Time132215 + Disc Number1 + Disc Count1 + Track Number3 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count122 + Play Date3781348413 + Play Date UTC2023-10-28T11:33:33Z + Skip Count4 + Skip Date2022-02-06T20:18:01Z + Release Date2020-07-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameTick Tock + Persistent ID46479A52AC07E351 + Track TypeRemote + Apple Music + + 4515 + + Track ID4515 + NameLike You Do + ArtistJoji + Album ArtistJoji + ComposerChelsea Lena, George Miller, Joshua Bliss Taffel, Kacy Anne Hill, Kurtis Mckenzie & Linden Jay + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size8625031 + Total Time240294 + Disc Number1 + Disc Count1 + Track Number17 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count66 + Play Date3783756009 + Play Date UTC2023-11-25T08:20:09Z + Skip Count1 + Skip Date2022-07-12T16:13:50Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameLike You Do + Persistent IDEC043002EAE919D3 + Track TypeRemote + Apple Music + + 4517 + + Track ID4517 + NameMr. Hollywood + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller, Kenneth Charles Blume III & Lawrence Jung + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size7269359 + Total Time202072 + Disc Number1 + Disc Count1 + Track Number14 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count94 + Play Date3783710417 + Play Date UTC2023-11-24T19:40:17Z + Skip Count2 + Skip Date2022-08-19T16:10:41Z + Release Date2020-07-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameMr. Hollywood + Persistent IDEFE0CB30C4BC0F69 + Track TypeRemote + Apple Music + + 4519 + + Track ID4519 + Name777 + ArtistJoji + Album ArtistJoji + ComposerAntoine Norwood, Daniel Dalexis & George Miller + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size6640952 + Total Time181772 + Disc Number1 + Disc Count1 + Track Number15 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count69 + Play Date3778364694 + Play Date UTC2023-09-23T22:44:54Z + Skip Count2 + Skip Date2022-11-01T10:37:45Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort Name777 + Persistent ID95167FC51B491973 + Track TypeRemote + Apple Music + + 4521 + + Track ID4521 + NamePretty Boy (feat. Lil Yachty) + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller, John Durham, Miles Benjamin Robinson, Miles McCollum & Patrick Wimberly + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size5851045 + Total Time156759 + Disc Number1 + Disc Count1 + Track Number11 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count114 + Play Date3781349742 + Play Date UTC2023-10-28T11:55:42Z + Skip Count3 + Skip Date2021-02-25T20:18:21Z + Release Date2020-09-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NamePretty Boy (feat. Lil Yachty) + Persistent IDE2B1E272C36C4CB7 + Explicit + Track TypeRemote + Apple Music + + 4523 + + Track ID4523 + NameNormal People (feat. rei brown) + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller, Isaac Cords Sleator & Ray Brown + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size6125755 + Total Time166883 + Disc Number1 + Disc Count1 + Track Number12 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count75 + Play Date3781599524 + Play Date UTC2023-10-31T09:18:44Z + Skip Count2 + Skip Date2022-01-03T19:10:33Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameNormal People (feat. rei brown) + Persistent IDBBED9822539A714E + Track TypeRemote + Apple Music + + 4525 + + Track ID4525 + NameAfterthought + ArtistJoji & BENEE + Album ArtistJoji + ComposerDaniel Wilson, George Miller, Isaac Cords Sleator & Stella Rose Bennett + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size7096870 + Total Time194871 + Disc Number1 + Disc Count1 + Track Number13 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count100 + Play Date3781350104 + Play Date UTC2023-10-28T12:01:44Z + Skip Count1 + Skip Date2022-03-30T18:50:06Z + Release Date2020-07-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji & BENEE + Sort NameAfterthought + Persistent ID60D4FA93B43E378A + Track TypeRemote + Apple Music + + 4527 + + Track ID4527 + NameHigh Hopes (feat. Omar Apollo) + ArtistJoji + Album ArtistJoji + ComposerDaniel Tannenbaum, Daniel Wilson, George Miller, Omar Velasco & Tyler Reese Mehlenbacher + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size6860536 + Total Time182400 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count76 + Play Date3781613994 + Play Date UTC2023-10-31T13:19:54Z + Skip Count4 + Skip Date2022-11-26T21:25:34Z + Release Date2020-09-25T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameHigh Hopes (feat. Omar Apollo) + Persistent IDB82309D5392EF1E3 + Explicit + Track TypeRemote + Apple Music + + 4529 + + Track ID4529 + NameNITROUS + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller, Michael Volpe & Roget Chahayed + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size4999232 + Total Time131719 + Disc Number1 + Disc Count1 + Track Number10 + Track Count18 + Year2020 + Date Modified2020-05-03T06:42:56Z + Date Added2020-09-24T22:23:44Z + Bit Rate256 + Sample Rate44100 + Play Count75 + Play Date3783666049 + Play Date UTC2023-11-24T07:20:49Z + Skip Count2 + Skip Date2023-04-23T06:55:49Z + Release Date2020-07-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameNITROUS + Persistent ID0004A5D69E325C7D + Track TypeRemote + Apple Music + + 4531 + + Track ID4531 + NameSanctuary + ArtistJoji + Album ArtistJoji + ComposerDaniel Wilson, George Miller, Justin Raisen & Luke Niccoli + AlbumNectar + GenreAlternative + KindApple Music AAC audio file + Size6664039 + Total Time180019 + Disc Number1 + Disc Count1 + Track Number8 + Track Count18 + Year2019 + Date Modified2020-05-03T06:42:56Z + Date Added2020-05-03T06:42:56Z + Bit Rate256 + Sample Rate44100 + Play Count95 + Play Date3781349268 + Play Date UTC2023-10-28T11:47:48Z + Release Date2019-06-14T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization3579 + Artwork Count1 + Sort AlbumNectar + Sort ArtistJoji + Sort NameSanctuary + Persistent IDEA8F2D58030FF7B4 + Track TypeRemote + Apple Music + + 4533 + + Track ID4533 + NameAll Your Love + ArtistSir Sly + Album ArtistSir Sly + ComposerWilliam Patrick Corgan, Jason Suwito, Hayden Coplen & Landon Jacobs + AlbumAll Your Love - Single + GenreAlternative + KindApple Music AAC audio file + Size6654370 + Total Time187960 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-05-06T20:29:30Z + Date Added2020-05-06T20:29:30Z + Bit Rate256 + Sample Rate44100 + Play Count68 + Play Date3779914259 + Play Date UTC2023-10-11T21:10:59Z + Skip Count2 + Skip Date2020-09-29T21:22:42Z + Release Date2020-05-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAll Your Love - Single + Sort ArtistSir Sly + Sort NameAll Your Love + Persistent ID90D4C66FB5C18E5C + Explicit + Track TypeRemote + Apple Music + + 4535 + + Track ID4535 + NameAutomatic Driver (Tyler, The Creator Remix) + ArtistLa Roux & Tyler, The Creator + Album ArtistLa Roux & Tyler, The Creator + ComposerElly Jackson + AlbumAutomatic Driver (Tyler, The Creator Remix) - Single + GenreIndie Pop + KindApple Music AAC audio file + Size7570181 + Total Time210674 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-05-12T19:23:23Z + Date Added2020-05-12T19:23:23Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3781207105 + Play Date UTC2023-10-26T20:18:25Z + Skip Count1 + Skip Date2022-03-26T13:37:16Z + Release Date2020-04-17T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAutomatic Driver (Tyler, The Creator Remix) - Single + Sort ArtistLa Roux & Tyler, The Creator + Sort NameAutomatic Driver (Tyler, The Creator Remix) + Persistent ID25A0C6F540309F40 + Track TypeRemote + Apple Music + + 4537 + + Track ID4537 + NameWatermelon + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumBolu + GenreNew Acoustic + KindApple Music AAC audio file + Size7133870 + Total Time185385 + Disc Number1 + Disc Count1 + Track Number2 + Track Count16 + Year2015 + Date Modified2020-05-12T19:31:38Z + Date Added2020-05-12T19:31:38Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3778358748 + Play Date UTC2023-09-23T21:05:48Z + Skip Count5 + Skip Date2022-08-25T10:32:13Z + Release Date2015-04-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBolu + Sort ArtistTom Rosenthal + Sort NameWatermelon + Persistent ID5BF4F27B08B682AF + Track TypeRemote + Apple Music + + 4539 + + Track ID4539 + NameBecause + ArtistPageant Boys + Album ArtistPageant Boys + AlbumDarkroom - EP + GenreElectronic + KindApple Music AAC audio file + Size8964189 + Total Time251897 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2018 + Date Modified2020-05-14T12:11:55Z + Date Added2020-05-14T12:11:55Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3781082231 + Play Date UTC2023-10-25T09:37:11Z + Skip Count3 + Skip Date2022-03-09T18:05:13Z + Release Date2018-04-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDarkroom - EP + Sort ArtistPageant Boys + Sort NameBecause + Persistent IDDAF891D7E3E0C891 + Track TypeRemote + Apple Music + + 4541 + + Track ID4541 + NameZen + ArtistX Ambassadors, K.Flay & grandson + Album ArtistX Ambassadors, K.Flay & grandson + ComposerCasey Harris, Adam Levin, Kristine Flaherty, Jordan Benjamin & Samuel Harris + AlbumZen - Single + GenreAlternative + KindApple Music AAC audio file + Size7594711 + Total Time215883 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-05-15T17:39:42Z + Date Added2020-05-15T17:39:42Z + Bit Rate256 + Sample Rate44100 + Play Count163 + Play Date3780831891 + Play Date UTC2023-10-22T12:04:51Z + Skip Count7 + Skip Date2021-07-10T18:48:16Z + Release Date2020-05-15T12:00:00Z + Loved + Artwork Count1 + Sort AlbumZen - Single + Sort ArtistX Ambassadors, K.Flay & grandson + Sort NameZen + Persistent IDC41B4448FB30963B + Explicit + Track TypeRemote + Apple Music + + 4543 + + Track ID4543 + NameOcean Drive + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size8058640 + Total Time227880 + Disc Number1 + Disc Count1 + Track Number9 + Track Count9 + Year2016 + Date Modified2020-05-24T12:16:40Z + Date Added2020-05-24T12:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3733417746 + Play Date UTC2022-04-21T17:29:06Z + Release Date2016-07-15T07:00:00Z + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameOcean Drive + Persistent ID99F7316421C0B306 + Explicit + Track TypeRemote + + 4545 + + Track ID4545 + NameNo Advance + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size9682967 + Total Time276467 + Disc Number1 + Disc Count1 + Track Number1 + Track Count9 + Year2016 + Date Modified2020-05-24T12:16:40Z + Date Added2020-05-24T12:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3731753424 + Play Date UTC2022-04-02T11:10:24Z + Skip Count3 + Skip Date2021-05-17T19:00:41Z + Release Date2016-07-15T07:00:00Z + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameNo Advance + Persistent ID8C1DEEE78A89902E + Explicit + Track TypeRemote + + 4547 + + Track ID4547 + NameReal Ni**a + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size6640170 + Total Time185467 + Disc Number1 + Disc Count1 + Track Number6 + Track Count9 + Year2016 + Date Modified2020-05-24T12:16:40Z + Date Added2020-05-24T12:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3734022509 + Play Date UTC2022-04-28T17:28:29Z + Skip Count2 + Skip Date2020-06-25T11:27:44Z + Release Date2016-07-15T07:00:00Z + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameReal Ni**a + Persistent ID00661EC61C8C6107 + Explicit + Track TypeRemote + + 4549 + + Track ID4549 + NameSavage Mode + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size8754869 + Total Time249587 + Disc Number1 + Disc Count1 + Track Number4 + Track Count9 + Year2016 + Date Modified2020-05-24T12:16:40Z + Date Added2020-05-24T12:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count57 + Play Date3733729953 + Play Date UTC2022-04-25T08:12:33Z + Release Date2016-07-15T07:00:00Z + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameSavage Mode + Persistent IDC18C3D703E3F7CDB + Explicit + Track TypeRemote + + 4551 + + Track ID4551 + NameNo Heart + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size8269350 + Total Time235040 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2016 + Date Modified2020-05-24T12:16:40Z + Date Added2020-05-24T12:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3733752689 + Play Date UTC2022-04-25T14:31:29Z + Skip Count2 + Skip Date2022-04-25T14:16:48Z + Release Date2016-07-15T07:00:00Z + Loved + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameNo Heart + Persistent ID772E777389657216 + Explicit + Track TypeRemote + + 4553 + + Track ID4553 + NameMad High + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size6473334 + Total Time180707 + Disc Number1 + Disc Count1 + Track Number7 + Track Count9 + Year2016 + Date Modified2020-05-24T12:16:40Z + Date Added2020-05-24T12:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3731752757 + Play Date UTC2022-04-02T10:59:17Z + Release Date2016-07-15T07:00:00Z + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameMad High + Persistent ID66AE4CF6877342A5 + Explicit + Track TypeRemote + + 4555 + + Track ID4555 + NameBad Guy + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerNot Documented + AlbumSavage Mode + GenreRap + KindAAC audio file + Size6088623 + Total Time169493 + Disc Number1 + Disc Count1 + Track Number5 + Track Count9 + Year2016 + Date Modified2020-05-24T12:16:40Z + Date Added2020-05-24T12:16:40Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3733751551 + Play Date UTC2022-04-25T14:12:31Z + Skip Count1 + Skip Date2021-09-12T19:29:18Z + Release Date2016-07-15T07:00:00Z + Sort AlbumSavage Mode + Sort Artist21 Savage & Metro Boomin + Sort NameBad Guy + Persistent ID30FBBEAC72F5C6D3 + Explicit + Track TypeRemote + + 4557 + + Track ID4557 + NameDOLLAZ ON MY HEAD (feat. Young Thug) + ArtistGunna + Album ArtistGunna + ComposerJeffery Lamar Williams, Michael Len Williams II & Sergio Kitchens + AlbumWUNNA + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7133487 + Total Time197760 + Disc Number1 + Disc Count1 + Track Number5 + Track Count18 + Year2020 + Date Modified2020-05-29T20:04:30Z + Date Added2020-05-29T20:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count183 + Play Date3780904815 + Play Date UTC2023-10-23T08:20:15Z + Skip Count4 + Skip Date2022-01-03T08:54:08Z + Release Date2020-05-21T12:00:00Z + Artwork Count1 + Sort AlbumWUNNA + Sort ArtistGunna + Sort NameDOLLAZ ON MY HEAD (feat. Young Thug) + Persistent ID00860560A2F69931 + Explicit + Track TypeRemote + Apple Music + + 4559 + + Track ID4559 + NameLost + ArtistJeff Russo + Album ArtistJeff Russo + ComposerJeff Russo + AlbumLongshot (Original Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size3157192 + Total Time74218 + Disc Number1 + Disc Count1 + Track Number9 + Track Count32 + Year2017 + Date Modified2020-06-02T06:54:32Z + Date Added2020-06-02T06:54:32Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3780569934 + Play Date UTC2023-10-19T11:18:54Z + Skip Count2 + Skip Date2022-10-02T16:53:04Z + Release Date2017-08-25T12:00:00Z + Artwork Count1 + Sort AlbumLongshot (Original Soundtrack) + Sort ArtistJeff Russo + Sort NameLost + Persistent ID31E60D373A544D7A + Track TypeRemote + Apple Music + + 4561 + + Track ID4561 + NameThis is What I Live For + ArtistBlue October + Album ArtistBlue October + ComposerJustin Furstenfeld, Eric D. Holtz & Steve Schiltz + AlbumThis is What I Live For - Single + GenreAlternative + KindApple Music AAC audio file + Size10351983 + Total Time293873 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-06-04T08:44:30Z + Date Added2020-06-04T08:44:30Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3781570471 + Play Date UTC2023-10-31T01:14:31Z + Skip Count3 + Skip Date2022-07-15T17:47:12Z + Release Date2020-05-22T12:00:00Z + Artwork Count1 + Sort AlbumThis is What I Live For - Single + Sort ArtistBlue October + Sort NameThis is What I Live For + Persistent ID41DCF7C01518C343 + Track TypeRemote + Apple Music + + 4563 + + Track ID4563 + NameSplit/Whole Time + ArtistLil Yachty + Album ArtistLil Yachty + ComposerMiles McCollum & Earl Isaac Bynum + AlbumLil Boat 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8507457 + Total Time239314 + Disc Number1 + Disc Count1 + Track Number3 + Track Count19 + Year2020 + Date Modified2020-06-04T08:54:45Z + Date Added2020-06-04T08:54:45Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3761644370 + Play Date UTC2023-03-14T10:12:50Z + Release Date2020-05-26T07:00:00Z + Rating20 + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumLil Boat 3 + Sort ArtistLil Yachty + Sort NameSplit/Whole Time + Persistent ID9B5BD9BB502B9EE0 + Explicit + Track TypeRemote + Apple Music + + 4565 + + Track ID4565 + NameFree Porn Cheap Drugs + ArtistG-Eazy + Album ArtistG-Eazy + ComposerGerald Gillum, Jesse Ackerman & Austin Ward Sherman + AlbumFree Porn Cheap Drugs - Single + GenreAlternative + KindApple Music AAC audio file + Size7151420 + Total Time200653 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-06-04T08:54:49Z + Date Added2020-06-04T08:54:49Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3782989964 + Play Date UTC2023-11-16T11:32:44Z + Release Date2020-05-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFree Porn Cheap Drugs - Single + Sort ArtistG-Eazy + Sort NameFree Porn Cheap Drugs + Persistent ID85E52BF71EE1BAE3 + Track TypeRemote + Apple Music + + 4567 + + Track ID4567 + NameRemedy, Surging Sea + ArtistSon Lux + Album ArtistSon Lux + ComposerRyan Lott + AlbumReincarnates - EP + GenreAlternative + KindApple Music AAC audio file + Size10118981 + Total Time271895 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2020 + Date Modified2020-06-04T09:16:52Z + Date Added2020-06-04T09:16:52Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781384691 + Play Date UTC2023-10-28T21:38:11Z + Skip Count1 + Skip Date2020-06-13T10:22:16Z + Release Date2020-05-22T12:00:00Z + Artwork Count1 + Sort AlbumReincarnates - EP + Sort ArtistSon Lux + Sort NameRemedy, Surging Sea + Persistent IDF382950608A87D67 + Track TypeRemote + Apple Music + + 4569 + + Track ID4569 + Namepopular girl, typical boy + ArtistPowfu & Sleeping + Album ArtistPowfu + ComposerIsaiah Faber, Joaquim Antonio Francisco & Patience Faber + Albumpoems of the past - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8635925 + Total Time246400 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year2020 + Date Modified2020-06-04T09:39:06Z + Date Added2020-06-04T09:39:06Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3780841188 + Play Date UTC2023-10-22T14:39:48Z + Skip Count3 + Skip Date2020-06-24T21:38:37Z + Release Date2020-05-15T12:00:00Z + Artwork Count1 + Sort Albumpoems of the past - EP + Sort ArtistPowfu & Sleeping + Sort Namepopular girl, typical boy + Persistent IDC1DE34A5B81CDDB9 + Track TypeRemote + Apple Music + + 4571 + + Track ID4571 + NameDown To Hell + ArtistAsking Alexandria + Album ArtistAsking Alexandria + ComposerBenjamin Bruce, Danny Worsnop, James Cassells & Matt Good + AlbumLike a House On Fire + GenreHard Rock + KindAAC audio file + Size7017703 + Total Time196464 + Disc Number1 + Disc Count1 + Track Number3 + Track Count15 + Year2020 + Date Modified2020-06-12T09:13:45Z + Date Added2020-06-12T09:13:45Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3749805783 + Play Date UTC2022-10-28T09:43:03Z + Skip Count2 + Skip Date2020-06-25T12:13:34Z + Release Date2020-04-15T12:00:00Z + Artwork Count1 + Sort AlbumLike a House On Fire + Sort ArtistAsking Alexandria + Sort NameDown To Hell + Persistent ID80D0E7F91080EDBA + Explicit + Track TypeRemote + + 4573 + + Track ID4573 + NameNIGHTMARES + Artistbrother sundance + Album Artistbrother sundance + ComposerJace Logan Jennings & Ryan Talerico + AlbumI HURT YOU, I MADE THIS - EP + GenreAlternative + KindApple Music AAC audio file + Size6821564 + Total Time188862 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2020 + Date Modified2020-06-13T12:16:21Z + Date Added2020-06-13T12:16:21Z + Bit Rate256 + Sample Rate44100 + Play Count83 + Play Date3783354756 + Play Date UTC2023-11-20T16:52:36Z + Release Date2020-05-15T12:00:00Z + Artwork Count1 + Sort AlbumI HURT YOU, I MADE THIS - EP + Sort Artistbrother sundance + Sort NameNIGHTMARES + Persistent IDCD1EAA96BD86BCC0 + Explicit + Track TypeRemote + Apple Music + + 4575 + + Track ID4575 + NameOh My, Valentina. + ArtistRich Kreflo + Album ArtistRich Kreflo + ComposerRich Kreflo + AlbumOh My, Valentina. - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size10042291 + Total Time288927 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2020-06-14T08:53:17Z + Date Added2020-06-14T08:53:17Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3773672475 + Play Date UTC2023-07-31T15:21:15Z + Skip Count1 + Skip Date2020-06-18T07:44:54Z + Release Date2019-04-25T12:00:00Z + Artwork Count1 + Sort AlbumOh My, Valentina. - Single + Sort ArtistRich Kreflo + Sort NameOh My, Valentina. + Persistent IDF31351E83E4E812F + Explicit + Track TypeRemote + Apple Music + + 4577 + + Track ID4577 + NameGenius (feat. Lil Wayne, Sia, Diplo & Labrinth) [Lil Wayne Remix] + ArtistLSD + Album ArtistLSD + ComposerTimothy Mckenzie, Sia Furler, Thomas Pentz, Jr. & Philip Meckseper + AlbumLABRINTH, SIA & DIPLO PRESENT... LSD + GenrePop + KindApple Music AAC audio file + Size5910587 + Total Time162912 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2019 + Date Modified2020-06-18T08:15:49Z + Date Added2020-06-18T08:15:49Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783576297 + Play Date UTC2023-11-23T06:24:57Z + Skip Count1 + Skip Date2022-07-30T15:08:35Z + Release Date2019-01-17T08:00:00Z + Artwork Count1 + Sort AlbumLABRINTH, SIA & DIPLO PRESENT... LSD + Sort ArtistLSD + Sort NameGenius (feat. Lil Wayne, Sia, Diplo & Labrinth) [Lil Wayne Remix] + Persistent ID3C3DAA2A1689DFA0 + Track TypeRemote + Apple Music + + 4579 + + Track ID4579 + NameAgain + Artistgrandson & Zero 9:36 + Album Artistgrandson & Zero 9:36 + ComposerJordan Benjamin, Matthew Cullen & Andrew Migliore + AlbumAgain - Single + GenreRock + KindApple Music AAC audio file + Size7373980 + Total Time207676 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-06-23T09:29:58Z + Date Added2020-06-23T09:29:58Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3770488598 + Play Date UTC2023-06-24T18:56:38Z + Skip Count1 + Skip Date2022-12-08T17:47:35Z + Release Date2020-05-22T12:00:00Z + Artwork Count1 + Sort AlbumAgain - Single + Sort Artistgrandson & Zero 9:36 + Sort NameAgain + Persistent ID5B0DEE9800C97C2E + Track TypeRemote + Apple Music + + 4581 + + Track ID4581 + NameShame on Me + ArtistTyler James Bellinger + Album ArtistTyler James Bellinger + ComposerTyler James Bellinger, Michael MacAllister & Julie Hardy + AlbumSongs for a Younger Me - EP + GenrePop + KindApple Music AAC audio file + Size8177337 + Total Time228333 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2020 + Date Modified2020-06-23T09:43:13Z + Date Added2020-06-23T09:43:13Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3759415092 + Play Date UTC2023-02-16T14:58:12Z + Release Date2020-05-29T12:00:00Z + Artwork Count1 + Sort AlbumSongs for a Younger Me - EP + Sort ArtistTyler James Bellinger + Sort NameShame on Me + Persistent ID1B4B9547C10F1788 + Track TypeRemote + Apple Music + + 4583 + + Track ID4583 + NameGoliath + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid, Ryan Lott & Benjamin Esser + AlbumGoliath - Single + GenreElectronic + KindApple Music AAC audio file + Size8133252 + Total Time228490 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-06-23T09:46:57Z + Date Added2020-06-23T09:46:57Z + Bit Rate256 + Sample Rate44100 + Play Count67 + Play Date3781386635 + Play Date UTC2023-10-28T22:10:35Z + Skip Count5 + Skip Date2022-12-28T07:43:58Z + Release Date2020-04-23T12:00:00Z + Artwork Count1 + Sort AlbumGoliath - Single + Sort ArtistWoodkid + Sort NameGoliath + Persistent ID758BD60039CB31FB + Track TypeRemote + Apple Music + + 4585 + + Track ID4585 + NameEngland In The Sun + ArtistThe Kooks + Album ArtistThe Kooks + ComposerLuke Pritchard + AlbumUnshelved: Pt. II - EP + GenreAlternative + KindApple Music AAC audio file + Size4679921 + Total Time126240 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2020 + Date Modified2020-07-03T20:10:20Z + Date Added2020-07-03T20:10:20Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783775699 + Play Date UTC2023-11-25T13:48:19Z + Skip Count3 + Skip Date2022-09-01T09:29:32Z + Release Date2020-05-08T12:00:00Z + Artwork Count1 + Sort AlbumUnshelved: Pt. II - EP + Sort Album ArtistKooks + Sort ArtistKooks + Sort NameEngland In The Sun + Persistent ID6A7469F4306DF69B + Track TypeRemote + Apple Music + + 4587 + + Track ID4587 + NameMy Best Friend (feat. Coach Party) + ArtistAlfie Templeman + Album ArtistAlfie Templeman + ComposerAlfie Templeman, Guy Page & Jess Eastwood + AlbumHappiness in Liquid Form - EP + GenreAlternative + KindApple Music AAC audio file + Size6253534 + Total Time157374 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2020 + Date Modified2020-07-10T15:43:55Z + Date Added2020-07-10T15:43:55Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count23 + Play Date3769680928 + Play Date UTC2023-06-15T10:35:28Z + Skip Count3 + Skip Date2023-06-15T15:19:34Z + Release Date2020-04-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHappiness in Liquid Form - EP + Sort ArtistAlfie Templeman + Sort NameMy Best Friend (feat. Coach Party) + Persistent IDE2DFFC5FFAAE44BD + Track TypeRemote + Apple Music + + 4589 + + Track ID4589 + NameThe Worst + Artistbenny mayne + Album Artistbenny mayne + ComposerBenajmin Shubert, Steven Haddad, Adam Korbesmeyer, Jerry Lang II & Thomas Sturges + AlbumThe Worst - Single + GenrePop + KindApple Music AAC audio file + Size6984940 + Total Time199989 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-07-10T15:53:45Z + Date Added2020-07-10T15:53:45Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count74 + Play Date3776327897 + Play Date UTC2023-08-31T08:58:17Z + Skip Count2 + Skip Date2022-11-26T15:13:04Z + Release Date2020-06-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWorst - Single + Sort Artistbenny mayne + Sort NameWorst + Persistent IDF2C9F3DE7C112AF9 + Explicit + Track TypeRemote + Apple Music + + 4591 + + Track ID4591 + NameMarauders + ArtistThao & The Get Down Stay Down + Album ArtistThao & The Get Down Stay Down + ComposerThao Nguyen & Adam Thompson + AlbumTemple + GenreAlternative + KindApple Music AAC audio file + Size7387790 + Total Time209433 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2020 + Date Modified2020-08-09T07:36:53Z + Date Added2020-08-09T07:36:53Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781051537 + Play Date UTC2023-10-25T01:05:37Z + Skip Count1 + Skip Date2022-10-15T15:46:31Z + Release Date2020-05-15T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumTemple + Sort ArtistThao & The Get Down Stay Down + Sort NameMarauders + Persistent ID2FA196133F4028DD + Track TypeRemote + Apple Music + + 4593 + + Track ID4593 + NameCiclo Lunar + ArtistCarlos Sadness + Album ArtistCarlos Sadness + ComposerCarlos Sadness + AlbumTropical Jesus + GenrePop Latino + KindApple Music AAC audio file + Size7570252 + Total Time212795 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2020 + Date Modified2020-08-09T14:53:03Z + Date Added2020-08-09T14:53:03Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3771945952 + Play Date UTC2023-07-11T15:45:52Z + Release Date2020-04-03T12:00:00Z + Artwork Count1 + Sort AlbumTropical Jesus + Sort ArtistCarlos Sadness + Sort NameCiclo Lunar + Persistent ID03B36E2564BCE511 + Track TypeRemote + Apple Music + + 4595 + + Track ID4595 + NameThe Garden + ArtistFlower Face + Album ArtistFlower Face + ComposerRuby Mckinnon + AlbumThe Garden - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8487661 + Total Time233424 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-08-09T16:41:55Z + Date Added2020-08-09T16:41:55Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3781600122 + Play Date UTC2023-10-31T09:28:42Z + Release Date2020-04-10T12:00:00Z + Artwork Count1 + Sort AlbumGarden - Single + Sort ArtistFlower Face + Sort NameGarden + Persistent ID83A8B5D6EE8A9A39 + Track TypeRemote + Apple Music + + 4597 + + Track ID4597 + NameSlowdiving + ArtistDuñe, Crayon & Lossapardo + Album ArtistDuñe & Crayon + ComposerSeydou Ndiaye, Vincent Goazempis, Lorenzo Larue, Lossapardo & Crayon + AlbumHundred Fifty Roses + GenreR&B/Soul + KindApple Music AAC audio file + Size6978043 + Total Time194157 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2020 + Date Modified2020-08-09T16:51:25Z + Date Added2020-08-09T16:51:25Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3779313491 + Play Date UTC2023-10-04T22:18:11Z + Skip Count3 + Skip Date2021-09-23T20:01:34Z + Release Date2020-05-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHundred Fifty Roses + Sort ArtistDuñe, Crayon & Lossapardo + Sort NameSlowdiving + Persistent ID2C6E9157B47A4A73 + Track TypeRemote + Apple Music + + 4599 + + Track ID4599 + NameWall + ArtistLVRA + Album ArtistLVRA + AlbumLVCID - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size6318345 + Total Time157668 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2020 + Date Modified2020-08-09T17:14:00Z + Date Added2020-08-09T17:14:00Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3773757568 + Play Date UTC2023-08-01T14:59:28Z + Skip Count1 + Skip Date2020-08-12T22:15:39Z + Release Date2020-05-07T12:00:00Z + Artwork Count1 + Sort AlbumLVCID - EP + Sort ArtistLVRA + Sort NameWall + Persistent ID5F0E2BBF5251C97B + Track TypeRemote + Apple Music + + 4601 + + Track ID4601 + NameAlways Look for the Helpers + ArtistAkira the Don + Album ArtistAkira the Don + ComposerAdam Narkiewicz + AlbumAlways Look for the Helpers - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6864280 + Total Time191068 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-08-09T17:16:38Z + Date Added2020-08-09T17:16:38Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count28 + Play Date3783412514 + Play Date UTC2023-11-21T08:55:14Z + Skip Count4 + Skip Date2023-02-15T11:17:16Z + Release Date2020-04-17T12:00:00Z + Artwork Count1 + Sort AlbumAlways Look for the Helpers - Single + Sort ArtistAkira the Don + Sort NameAlways Look for the Helpers + Persistent IDC035539D7BEBB806 + Track TypeRemote + Apple Music + + 4603 + + Track ID4603 + NameInto the Surf + ArtistFoals + Album ArtistFoals + ComposerFoals + AlbumEverything Not Saved Will Be Lost Part II + GenreAlternative + KindApple Music AAC audio file + Size9615197 + Total Time271338 + Disc Number1 + Disc Count2 + Track Number9 + Track Count10 + Year2019 + Date Modified2020-08-12T16:33:44Z + Date Added2020-08-12T16:33:44Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3781385752 + Play Date UTC2023-10-28T21:55:52Z + Skip Count1 + Skip Date2022-07-21T06:58:57Z + Release Date2019-10-18T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumEverything Not Saved Will Be Lost Part II + Sort ArtistFoals + Sort NameInto the Surf + Persistent IDD162D3AF1D8DD889 + Track TypeRemote + Apple Music + + 4605 + + Track ID4605 + NameBad Connection + ArtistJaden + Album ArtistJaden + ComposerJaden, Omarr Rambert & Tremeine Winfrey + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4130571 + Total Time104493 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T22:22:05Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781449005 + Play Date UTC2023-10-29T15:30:05Z + Skip Count3 + Skip Date2022-08-19T16:09:22Z + Release Date2020-08-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameBad Connection + Persistent ID4DFF308C5FB57A2A + Explicit + Track TypeRemote + Apple Music + + 4607 + + Track ID4607 + NameDrops of Sun + ArtistJaden + Album ArtistJaden + ComposerJaden, Nick Stoubis & James Rim + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5172064 + Total Time140229 + Disc Number1 + Disc Count1 + Track Number12 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3783694720 + Play Date UTC2023-11-24T15:18:40Z + Skip Count1 + Skip Date2022-10-24T16:54:22Z + Release Date2020-08-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameDrops of Sun + Persistent ID99FEA632AA51A453 + Track TypeRemote + Apple Music + + 4609 + + Track ID4609 + NamePhotograph + ArtistJaden + Album ArtistJaden + ComposerJaden, Brian Lee & Odessa Adlon + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5268756 + Total Time141303 + Disc Number1 + Disc Count1 + Track Number11 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3772366483 + Play Date UTC2023-07-16T12:34:43Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NamePhotograph + Persistent IDBF642B026C0A742C + Track TypeRemote + Apple Music + + 4611 + + Track ID4611 + NameSunburnt + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell & Omarr Rambert + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6904985 + Total Time188763 + Disc Number1 + Disc Count1 + Track Number13 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3767693667 + Play Date UTC2023-05-23T10:34:27Z + Skip Count1 + Skip Date2022-04-28T18:47:41Z + Release Date2020-08-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameSunburnt + Persistent ID3A315B36AABCB4D7 + Explicit + Track TypeRemote + Apple Music + + 4613 + + Track ID4613 + NameEndless Summer (feat. Raury) + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell, Omarr Rambert & Raury Tullis + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7480052 + Total Time209644 + Disc Number1 + Disc Count1 + Track Number15 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3780907144 + Play Date UTC2023-10-23T08:59:04Z + Skip Date2020-08-28T16:04:08Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameEndless Summer (feat. Raury) + Persistent IDFC5F96A6A9FB96AA + Explicit + Track TypeRemote + Apple Music + + 4615 + + Track ID4615 + NameDeep End + ArtistJaden + Album ArtistJaden + ComposerJaden & Brian Lee + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8502886 + Total Time239641 + Disc Number1 + Disc Count1 + Track Number14 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3758386212 + Play Date UTC2023-02-04T17:10:12Z + Skip Count3 + Skip Date2021-08-19T17:29:19Z + Release Date2020-08-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameDeep End + Persistent ID251167FE80251FFE + Track TypeRemote + Apple Music + + 4617 + + Track ID4617 + NameRainbow Bap + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell, Nick Stoubis, James Rim, Omarr Rambert & Brian Lee + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9912372 + Total Time280308 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-15T15:56:17Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780844655 + Play Date UTC2023-10-22T15:37:35Z + Release Date2020-08-14T07:00:00Z + Loved + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameRainbow Bap + Persistent ID7BA73C55D9F03ABA + Explicit + Track TypeRemote + Apple Music + + 4619 + + Track ID4619 + NameFalling for You (feat. Justin Bieber) + ArtistJaden + Album ArtistJaden + ComposerJaden, Justin Bieber, Josiah Bell, Nick Stoubis, Omarr Rambert & Jason Boyd + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8037884 + Total Time222717 + Disc Number1 + Disc Count1 + Track Number2 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T22:22:05Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3772522701 + Play Date UTC2023-07-18T07:58:21Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameFalling for You (feat. Justin Bieber) + Persistent ID37447F05C9E52835 + Track TypeRemote + Apple Music + + 4621 + + Track ID4621 + NameLUCY! + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell, Nick Stoubis & Omarr Rambert + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4811363 + Total Time127838 + Disc Number1 + Disc Count1 + Track Number4 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T22:22:05Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3776169375 + Play Date UTC2023-08-29T12:56:15Z + Skip Count1 + Skip Date2020-08-28T15:33:32Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameLUCY! + Persistent ID964D253ED393BBEA + Track TypeRemote + Apple Music + + 4623 + + Track ID4623 + NameMuted Sunrise + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell, Nick Stoubis & Omarr Rambert + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5272802 + Total Time142650 + Disc Number1 + Disc Count1 + Track Number8 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783585964 + Play Date UTC2023-11-23T09:06:04Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameMuted Sunrise + Persistent ID04089102E8E74EE9 + Track TypeRemote + Apple Music + + 4625 + + Track ID4625 + NameCabin Fever + ArtistJaden + Album ArtistJaden + ComposerJaden & Matthew Burns + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7019658 + Total Time195215 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-15T15:56:17Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3782978071 + Play Date UTC2023-11-16T08:14:31Z + Release Date2020-07-23T07:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameCabin Fever + Persistent IDBA005BCBCD76D1B5 + Track TypeRemote + Apple Music + + 4627 + + Track ID4627 + NameYoung in Love + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell & Omarr Rambert + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10279506 + Total Time291298 + Disc Number1 + Disc Count1 + Track Number9 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3760293697 + Play Date UTC2023-02-26T19:01:37Z + Skip Count1 + Skip Date2022-03-16T07:53:19Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameYoung in Love + Persistent ID3052D0E2F99F1BE5 + Explicit + Track TypeRemote + Apple Music + + 4629 + + Track ID4629 + NameIn the Hills + ArtistJaden + Album ArtistJaden + ComposerJaden, Nick Stoubis & Mateo Arias + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5689137 + Total Time152677 + Disc Number1 + Disc Count1 + Track Number6 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T22:22:05Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3779191262 + Play Date UTC2023-10-03T12:21:02Z + Skip Count2 + Skip Date2023-10-22T15:28:26Z + Release Date2020-08-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameIn the Hills + Persistent IDBA71CE4AEE02DE5C + Explicit + Track TypeRemote + Apple Music + + 4631 + + Track ID4631 + NameEverything + ArtistJaden + Album ArtistJaden + ComposerJaden, Ashley Turner, Kevin Colquhoun, Matthew Jehu & Jahaan Sweet + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6213840 + Total Time168901 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T22:22:05Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3752303121 + Play Date UTC2022-11-26T07:25:21Z + Skip Count1 + Skip Date2022-07-14T17:15:02Z + Release Date2020-08-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameEverything + Persistent IDC57FD8815DB2ABBC + Explicit + Track TypeRemote + Apple Music + + 4633 + + Track ID4633 + NameCirca 2015 + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell & Omarr Rambert + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4959445 + Total Time131715 + Disc Number1 + Disc Count1 + Track Number1 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3758189497 + Play Date UTC2023-02-02T10:31:37Z + Skip Count1 + Skip Date2022-08-13T10:09:32Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameCirca 2015 + Persistent ID32AA00F60A4E110A + Explicit + Track TypeRemote + Apple Music + + 4635 + + Track ID4635 + NameThe Birth of SYRE + ArtistJaden + Album ArtistJaden + ComposerJaden & Nick Stoubis + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4953110 + Total Time133967 + Disc Number1 + Disc Count1 + Track Number16 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780776440 + Play Date UTC2023-10-21T20:40:40Z + Skip Count1 + Skip Date2021-04-03T14:31:07Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameBirth of SYRE + Persistent IDDA46124DA84A18FA + Explicit + Track TypeRemote + Apple Music + + 4637 + + Track ID4637 + NameBoys and Girls + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell & Omarr Rambert + AlbumCTV3: Cool Tape Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8098653 + Total Time222033 + Disc Number1 + Disc Count1 + Track Number17 + Track Count17 + Year2020 + Date Modified2020-08-15T15:56:17Z + Date Added2020-08-27T21:10:07Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3782979882 + Play Date UTC2023-11-16T08:44:42Z + Release Date2020-08-28T12:00:00Z + Artwork Count1 + Sort AlbumCTV3: Cool Tape Vol. 3 + Sort ArtistJaden + Sort NameBoys and Girls + Persistent IDA4C659CD97973001 + Track TypeRemote + Apple Music + + 4639 + + Track ID4639 + NameOver Now + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Andrew Watt, Tommy Lee & Austin Post + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8837423 + Total Time246987 + Disc Number1 + Disc Count1 + Track Number7 + Track Count18 + Year2018 + Date Modified2020-09-02T13:26:11Z + Date Added2020-09-02T13:26:11Z + Bit Rate256 + Sample Rate44100 + Play Count63 + Play Date3783059698 + Play Date UTC2023-11-17T06:54:58Z + Skip Count2 + Skip Date2023-01-08T22:32:58Z + Release Date2018-04-27T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameOver Now + Persistent IDE4D6115A10B068F5 + Explicit + Track TypeRemote + Apple Music + + 4641 + + Track ID4641 + Nameedge of the world + Artistsophie meiers + Album Artistsophie meiers + Composersophie meiers & Tom Stafford + Albumyou and me again - EP + GenreAlternative + KindApple Music AAC audio file + Size7551753 + Total Time219544 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year2020 + Date Modified2020-09-06T08:41:27Z + Date Added2020-09-06T08:41:27Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3781705629 + Play Date UTC2023-11-01T14:47:09Z + Skip Count2 + Skip Date2021-09-02T19:17:39Z + Release Date2020-08-19T12:00:00Z + Artwork Count1 + Sort Albumyou and me again - EP + Sort Artistsophie meiers + Sort Nameedge of the world + Persistent ID4F6A77C84B6A5E79 + Track TypeRemote + Apple Music + + 4643 + + Track ID4643 + NameNOTHING 4 FREE (feat. NAV) + ArtistGunna + Album ArtistGunna + ComposerAndrew Franklin, Everett Romano, Navraj Goraya, Rex Kudo & Sergio Kitchens + AlbumWUNNA (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6056138 + Total Time165013 + Disc Number1 + Disc Count1 + Track Number14 + Track Count26 + Year2020 + Date Modified2020-09-13T12:21:56Z + Date Added2020-09-13T12:21:56Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3782981286 + Play Date UTC2023-11-16T09:08:06Z + Skip Count2 + Skip Date2022-08-21T12:17:22Z + Release Date2020-05-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWUNNA (Deluxe) + Sort ArtistGunna + Sort NameNOTHING 4 FREE (feat. NAV) + Persistent IDB79247608AC89327 + Explicit + Track TypeRemote + Apple Music + + 4645 + + Track ID4645 + NamePull Me Under + ArtistDan D'Lion + Album ArtistDan D'Lion + ComposerDan Bartlett & Patrick James Pearson + AlbumWhen One Thing Leads To Another + GenreAlternative + KindApple Music AAC audio file + Size6774216 + Total Time190400 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2020 + Date Modified2020-09-13T12:39:03Z + Date Added2020-09-13T12:39:03Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3781685499 + Play Date UTC2023-11-01T09:11:39Z + Release Date2020-07-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWhen One Thing Leads To Another + Sort ArtistDan D'Lion + Sort NamePull Me Under + Persistent ID7C72473C01FD80A7 + Track TypeRemote + Apple Music + + 4647 + + Track ID4647 + NameThey Ain't You + ArtistTyla Yaweh + Album ArtistTyla Yaweh + ComposerTyler Brown, Jessie Lauren & Charles Edward Hugo + AlbumHeart Full of Rage + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6110268 + Total Time167996 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2019 + Date Modified2020-09-16T08:16:17Z + Date Added2020-09-16T08:16:17Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3770537095 + Play Date UTC2023-06-25T08:24:55Z + Release Date2019-02-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHeart Full of Rage + Sort ArtistTyla Yaweh + Sort NameThey Ain't You + Persistent IDE0A693233F3EF8B7 + Explicit + Track TypeRemote + Apple Music + + 4649 + + Track ID4649 + Name4:44Am + ArtistTyla Yaweh + Album ArtistTyla Yaweh + ComposerTyla Yaweh + Album4:44Am - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5364250 + Total Time146992 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2020-09-16T09:09:44Z + Date Added2020-09-16T09:09:44Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count28 + Play Date3772718118 + Play Date UTC2023-07-20T14:15:18Z + Skip Count3 + Skip Date2021-11-01T14:31:18Z + Release Date2017-06-26T12:00:00Z + Artwork Count1 + Sort Album4:44Am - Single + Sort ArtistTyla Yaweh + Sort Name4:44Am + Persistent IDBBC80BD4194E78B3 + Explicit + Track TypeRemote + Apple Music + + 4651 + + Track ID4651 + NameI Fall Apart + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, Carlo Montagnese & Billy Walsh + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7996692 + Total Time223350 + Disc Number1 + Disc Count1 + Track Number7 + Track Count18 + Year2016 + Date Modified2020-09-24T07:58:34Z + Date Added2020-09-24T07:58:34Z + Bit Rate256 + Sample Rate44100 + Play Count99 + Play Date3783006510 + Play Date UTC2023-11-16T16:08:30Z + Skip Count1 + Skip Date2020-11-26T23:02:50Z + Release Date2016-12-09T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameI Fall Apart + Persistent IDFEDC9623E3F1495A + Explicit + Track TypeRemote + Apple Music + + 4653 + + Track ID4653 + NameSpoil My Night (feat. Swae Lee) + ArtistPost Malone + Album ArtistPost Malone + ComposerTeddy Walton, Louis Bell, Austin Post, Khalif Brown & Adam Feeney + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7035164 + Total Time194553 + Disc Number1 + Disc Count1 + Track Number2 + Track Count18 + Year2018 + Date Modified2020-09-24T08:02:30Z + Date Added2020-09-24T08:02:30Z + Bit Rate256 + Sample Rate44100 + Play Count77 + Play Date3783059894 + Play Date UTC2023-11-17T06:58:14Z + Skip Count3 + Skip Date2022-03-24T10:52:50Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameSpoil My Night (feat. Swae Lee) + Persistent IDC2AA05BE9942D20A + Explicit + Track TypeRemote + Apple Music + + 4655 + + Track ID4655 + NameHigh Right Now + ArtistTyla Yaweh + Album ArtistTyla Yaweh + ComposerTyler Brown, Nasri Tony Atweh, Ramiro Padilla, Daniel Padilla, Fernando Garibay & Jason Wilkinson + AlbumHeart Full of Rage + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5955849 + Total Time163168 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2019 + Date Modified2020-09-28T09:38:54Z + Date Added2020-09-28T09:38:54Z + Bit Rate256 + Sample Rate44100 + Play Count92 + Play Date3780916229 + Play Date UTC2023-10-23T11:30:29Z + Skip Count3 + Skip Date2022-12-14T05:01:43Z + Release Date2019-02-22T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumHeart Full of Rage + Sort ArtistTyla Yaweh + Sort NameHigh Right Now + Persistent IDA554B51CF5A9EFEF + Explicit + Track TypeRemote + Apple Music + + 4657 + + Track ID4657 + NameWho Shot Johnny? + ArtistTyla Yaweh + Album ArtistTyla Yaweh + ComposerTyler Brown, Charles Misodi Njapa, Ramiro Padilla, Brittany Chykira Barber, Fernando Garibay & Jason Wilkinson + AlbumHeart Full of Rage + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5964645 + Total Time165869 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2019 + Date Modified2020-09-28T12:56:20Z + Date Added2020-09-28T12:56:20Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3760209415 + Play Date UTC2023-02-25T19:36:55Z + Skip Date2021-09-20T17:42:21Z + Release Date2019-02-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumHeart Full of Rage + Sort ArtistTyla Yaweh + Sort NameWho Shot Johnny? + Persistent ID8A4517F0BBC35B9D + Explicit + Track TypeRemote + Apple Music + + 4659 + + Track ID4659 + NameGo Flex + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, Ryan Vojtesak, Idan Kalai & Rex Kudo + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6556985 + Total Time179603 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2016 + Date Modified2020-09-28T13:54:33Z + Date Added2020-09-28T13:54:33Z + Bit Rate256 + Sample Rate44100 + Play Count126 + Play Date3783008602 + Play Date UTC2023-11-16T16:43:22Z + Release Date2016-04-21T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameGo Flex + Persistent ID63437470185F19D3 + Explicit + Track TypeRemote + Apple Music + + 4661 + + Track ID4661 + NameCongratulations (feat. Quavo) + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, Louis Bell, Adam Feeney, Quavious Marshall & Leland Wayne + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7953443 + Total Time220285 + Disc Number1 + Disc Count1 + Track Number12 + Track Count18 + Year2016 + Date Modified2020-09-28T13:54:34Z + Date Added2020-09-28T13:54:34Z + Bit Rate256 + Sample Rate44100 + Play Count90 + Play Date3783322109 + Play Date UTC2023-11-20T07:48:29Z + Skip Count1 + Skip Date2020-11-26T23:07:20Z + Release Date2016-11-04T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameCongratulations (feat. Quavo) + Persistent ID280CBE2FF7614A04 + Explicit + Track TypeRemote + Apple Music + + 4663 + + Track ID4663 + NameIn Your Likeness + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid & Ryan Lott + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size12195710 + Total Time357400 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:09Z + Date Added2020-10-15T21:06:40Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3781386109 + Play Date UTC2023-10-28T22:01:49Z + Release Date2020-10-16T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameIn Your Likeness + Persistent IDD9C805A6F8571317 + Track TypeRemote + Apple Music + + 4665 + + Track ID4665 + NameHorizons Into Battlegrounds + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid & Tanguy Detable + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size7790950 + Total Time221827 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:10Z + Date Added2020-09-29T21:23:10Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3762587739 + Play Date UTC2023-03-25T08:15:39Z + Skip Count2 + Skip Date2022-12-04T10:50:19Z + Release Date2020-10-16T12:00:00Z + Loved + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameHorizons Into Battlegrounds + Persistent ID3702760E07F7F643 + Track TypeRemote + Apple Music + + 4667 + + Track ID4667 + NameSo Handsome Hello + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size7985291 + Total Time227493 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:10Z + Date Added2020-10-15T21:06:40Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3761637445 + Play Date UTC2023-03-14T08:17:25Z + Release Date2020-10-16T12:00:00Z + Loved + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameSo Handsome Hello + Persistent ID3F632A0705264F00 + Track TypeRemote + Apple Music + + 4669 + + Track ID4669 + NameShift + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size7826004 + Total Time230840 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:10Z + Date Added2020-10-15T21:06:40Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3780685643 + Play Date UTC2023-10-20T19:27:23Z + Release Date2020-10-16T12:00:00Z + Loved + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameShift + Persistent IDD7607C52B9769800 + Track TypeRemote + Apple Music + + 4671 + + Track ID4671 + NameDrawn to You + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size8786064 + Total Time250293 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:10Z + Date Added2020-10-15T21:06:40Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3776238516 + Play Date UTC2023-08-30T08:08:36Z + Skip Count1 + Skip Date2022-06-21T05:37:49Z + Release Date2020-10-16T12:00:00Z + Loved + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameDrawn to You + Persistent IDDF0850D2BE0D845B + Track TypeRemote + Apple Music + + 4673 + + Track ID4673 + NameMinus Sixty One + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size11010861 + Total Time316213 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:10Z + Date Added2020-10-15T21:06:40Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3776150280 + Play Date UTC2023-08-29T07:38:00Z + Skip Count4 + Skip Date2023-06-15T12:46:01Z + Release Date2020-10-16T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameMinus Sixty One + Persistent ID910EF1F53EE78E20 + Track TypeRemote + Apple Music + + 4675 + + Track ID4675 + NameHighway 27 + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid & Ryan Lott + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size8247324 + Total Time235653 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:10Z + Date Added2020-10-15T21:06:40Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3783753145 + Play Date UTC2023-11-25T07:32:25Z + Skip Count3 + Skip Date2022-07-16T13:53:48Z + Release Date2020-10-16T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameHighway 27 + Persistent ID4F878678ACCDFBF1 + Track TypeRemote + Apple Music + + 4677 + + Track ID4677 + NameEnemy + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid, Ryan Lott & Benjamin Esser + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size8543907 + Total Time244760 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:10Z + Date Added2020-10-15T21:06:40Z + Bit Rate256 + Sample Rate44100 + Play Count50 + Play Date3771944418 + Play Date UTC2023-07-11T15:20:18Z + Release Date2020-10-16T12:00:00Z + Loved + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameEnemy + Persistent ID376EC5A14A7B6A4D + Track TypeRemote + Apple Music + + 4679 + + Track ID4679 + NamePale Yellow + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size8871768 + Total Time250040 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2020 + Date Modified2020-09-29T21:23:10Z + Date Added2020-09-29T21:23:10Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3783413194 + Play Date UTC2023-11-21T09:06:34Z + Skip Count1 + Skip Date2022-03-24T09:59:41Z + Release Date2020-06-12T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NamePale Yellow + Persistent ID4630B2EAE2A8B10A + Track TypeRemote + Apple Music + + 4681 + + Track ID4681 + Namesay my name + Artistbenny mayne + Album Artistbenny mayne + ComposerBenjamin Shubert + Albumsay my name - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size6948961 + Total Time193579 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2020-10-01T10:04:35Z + Date Added2020-10-01T10:04:35Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count18 + Play Date3767520935 + Play Date UTC2023-05-21T10:35:35Z + Release Date2018-06-08T12:00:00Z + Loved + Artwork Count1 + Sort Albumsay my name - Single + Sort Artistbenny mayne + Sort Namesay my name + Persistent IDCC30AEA87E3CFC67 + Explicit + Track TypeRemote + Apple Music + + 4683 + + Track ID4683 + NamePope Is a Rockstar + ArtistSALES + Album ArtistSALES + AlbumSales Lp + GenrePop + KindApple Music AAC audio file + Size6598318 + Total Time187333 + Disc Number1 + Disc Count1 + Track Number6 + Track Count15 + Year2016 + Date Modified2020-10-04T06:26:50Z + Date Added2020-10-04T06:26:50Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3780846165 + Play Date UTC2023-10-22T16:02:45Z + Skip Count2 + Skip Date2021-11-09T14:25:46Z + Release Date2016-04-20T12:00:00Z + Artwork Count1 + Sort AlbumSales Lp + Sort ArtistSALES + Sort NamePope Is a Rockstar + Persistent IDA51A33AF975090A7 + Track TypeRemote + Apple Music + + 4685 + + Track ID4685 + Name3WW + Artistalt-J + Album Artistalt-J + AlbumRELAXER + GenreAlternative + KindAAC audio file + Size11166700 + Total Time300107 + Disc Number1 + Disc Count1 + Track Number1 + Track Count8 + Year2017 + Date Modified2020-10-05T17:46:33Z + Date Added2020-10-05T17:46:33Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3782979004 + Play Date UTC2023-11-16T08:30:04Z + Skip Count2 + Skip Date2021-09-24T19:53:31Z + Release Date2017-03-06T12:00:00Z + Artwork Count1 + Sort AlbumRELAXER + Sort Artistalt-J + Sort Name3WW + Persistent ID6F9EA574BA2EF4E4 + Track TypeRemote + Apple Music + + 4687 + + Track ID4687 + NameEvery Other Freckle + Artistalt-J + Album Artistalt-J + AlbumThis Is All Yours + GenreAlternative + KindAAC audio file + Size7771826 + Total Time216004 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2014 + Date Modified2020-10-05T17:52:23Z + Date Added2020-10-05T17:52:23Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3783411971 + Play Date UTC2023-11-21T08:46:11Z + Release Date2014-08-13T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumThis Is All Yours + Sort Artistalt-J + Sort NameEvery Other Freckle + Persistent IDE95DF4D832971C6F + Track TypeRemote + Apple Music + + 4689 + + Track ID4689 + NameHunger of the Pine + Artistalt-J + Album Artistalt-J + AlbumThis Is All Yours + GenreAlternative + KindAAC audio file + Size10621808 + Total Time299711 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2014 + Date Modified2020-10-05T17:54:36Z + Date Added2020-10-05T17:54:36Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3736496364 + Play Date UTC2022-05-27T08:39:24Z + Release Date2014-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumThis Is All Yours + Sort Artistalt-J + Sort NameHunger of the Pine + Persistent IDCD663F2EEF8AB732 + Track TypeRemote + Apple Music + + 4691 + + Track ID4691 + NameBUFFALO (feat. Shane Powers) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCherry Bomb + Instrumentals + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6073125 + Total Time159964 + Disc Number1 + Disc Count2 + Track Number2 + Track Count13 + Year2015 + Date Modified2020-10-06T08:49:51Z + Date Added2020-10-06T08:49:51Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3781317674 + Play Date UTC2023-10-28T03:01:14Z + Skip Count4 + Skip Date2023-10-12T16:42:24Z + Release Date2015-04-13T07:00:00Z + Artwork Count1 + Sort AlbumCherry Bomb + Instrumentals + Sort ArtistTyler, The Creator + Sort NameBUFFALO (feat. Shane Powers) + Persistent ID488E173A6BED61C9 + Explicit + Track TypeRemote + Apple Music + + 4693 + + Track ID4693 + NameCHERRY BOMB + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCherry Bomb + Instrumentals + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9996015 + Total Time269352 + Disc Number1 + Disc Count2 + Track Number6 + Track Count13 + Year2015 + Date Modified2020-10-06T09:06:08Z + Date Added2020-10-06T09:06:08Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3772085869 + Play Date UTC2023-07-13T06:37:49Z + Release Date2015-04-13T07:00:00Z + Artwork Count1 + Sort AlbumCherry Bomb + Instrumentals + Sort ArtistTyler, The Creator + Sort NameCHERRY BOMB + Persistent IDBE7429ECD06E4168 + Explicit + Track TypeRemote + Apple Music + + 4695 + + Track ID4695 + NameStart a Riot + ArtistDUCKWRTH & Shaboozey + Album ArtistVarious Artists + ComposerBreyan Isaac, Jared Lee, Collins Chibueze & Alec Appoloni + AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size6327964 + Total Time171465 + Disc Number1 + Disc Count1 + Track Number6 + Track Count13 + Year2018 + Date Modified2020-10-07T06:52:11Z + Date Added2020-10-07T06:52:11Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3778764096 + Play Date UTC2023-09-28T13:41:36Z + Skip Count2 + Skip Date2020-12-01T19:50:19Z + Release Date2018-12-14T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumSpider-Man: Into the Spider-Verse (Soundtrack From & Inspired by the Motion Picture) + Sort ArtistDUCKWRTH & Shaboozey + Sort NameStart a Riot + Persistent ID5372C14C7365F078 + Track TypeRemote + Apple Music + + 4697 + + Track ID4697 + NameWhere This Flower Blooms (feat. Frank Ocean) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma & Frank Ocean + AlbumFlower Boy + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7097140 + Total Time194934 + Disc Number1 + Disc Count1 + Track Number2 + Track Count14 + Year2017 + Date Modified2020-10-08T08:31:30Z + Date Added2020-10-08T08:31:30Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3781617144 + Play Date UTC2023-10-31T14:12:24Z + Skip Count1 + Skip Date2020-12-23T07:00:14Z + Release Date2017-07-21T12:00:00Z + Artwork Count1 + Sort AlbumFlower Boy + Sort ArtistTyler, The Creator + Sort NameWhere This Flower Blooms (feat. Frank Ocean) + Persistent ID40C3F492C28508DC + Explicit + Track TypeRemote + Apple Music + + 4699 + + Track ID4699 + NameI Ain't Got Time! + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumFlower Boy + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7416600 + Total Time206267 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2017 + Date Modified2020-10-08T12:47:40Z + Date Added2020-10-08T12:47:40Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783493795 + Play Date UTC2023-11-22T07:29:55Z + Skip Count2 + Skip Date2023-07-19T15:16:26Z + Release Date2017-07-19T07:00:00Z + Artwork Count1 + Sort AlbumFlower Boy + Sort ArtistTyler, The Creator + Sort NameI Ain't Got Time! + Persistent IDD0DF8BB7F3533078 + Explicit + Track TypeRemote + Apple Music + + 4701 + + Track ID4701 + Name911 / Mr. Lonely (feat. Frank Ocean and Steve Lacy) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerRaymond Calhoun, See Sub-songs, Tyler Okonma & Frank Ocean + AlbumFlower Boy + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9179655 + Total Time255651 + Disc Number1 + Disc Count1 + Track Number10 + Track Count14 + Year2017 + Date Modified2020-10-08T12:48:32Z + Date Added2020-10-08T12:48:32Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3783595585 + Play Date UTC2023-11-23T11:46:25Z + Skip Count3 + Skip Date2021-01-22T16:04:18Z + Release Date2017-07-06T07:00:00Z + Artwork Count1 + Sort AlbumFlower Boy + Sort ArtistTyler, The Creator + Sort Name911 / Mr. Lonely (feat. Frank Ocean and Steve Lacy) + Persistent IDD34D5307E7D19800 + Explicit + Track TypeRemote + Apple Music + + 4703 + + Track ID4703 + NameForeword (feat. Rex Orange County) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerMichael Karoli, Jaki Liebezeit, Irmin Schmidt, Schuering, Damo Suzuki, Tyler Okonma & Alex O'Connor + AlbumFlower Boy + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7255639 + Total Time194070 + Disc Number1 + Disc Count1 + Track Number1 + Track Count14 + Year2017 + Date Modified2020-10-09T09:08:22Z + Date Added2020-10-09T09:08:22Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3779239202 + Play Date UTC2023-10-04T01:40:02Z + Skip Count2 + Skip Date2022-09-17T05:41:33Z + Release Date2017-07-21T12:00:00Z + Artwork Count1 + Sort AlbumFlower Boy + Sort ArtistTyler, The Creator + Sort NameForeword (feat. Rex Orange County) + Persistent IDBE78B64FCF1002CD + Explicit + Track TypeRemote + Apple Music + + 4705 + + Track ID4705 + NameBoredom (feat. Rex Orange County and Anna of the North) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumFlower Boy + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11218201 + Total Time320730 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2017 + Date Modified2020-10-09T09:36:31Z + Date Added2020-10-09T09:36:31Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3766770155 + Play Date UTC2023-05-12T18:02:35Z + Skip Count1 + Skip Date2022-09-04T16:06:23Z + Release Date2017-07-12T07:00:00Z + Artwork Count1 + Sort AlbumFlower Boy + Sort ArtistTyler, The Creator + Sort NameBoredom (feat. Rex Orange County and Anna of the North) + Persistent IDB591D4E74750F4B5 + Explicit + Track TypeRemote + Apple Music + + 4707 + + Track ID4707 + NameHoly + ArtistLil Wayne + Album ArtistLil Wayne + ComposerDwayne Carter, Daryl Harleaux & John Fitch + AlbumTha Carter V (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8450306 + Total Time235769 + Disc Number1 + Disc Count1 + Track Number2 + Track Count33 + Year2020 + Date Modified2020-10-31T13:05:01Z + Date Added2020-10-31T13:05:01Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3780133535 + Play Date UTC2023-10-14T10:05:35Z + Release Date2020-09-25T07:00:00Z + Artwork Count1 + Sort AlbumTha Carter V (Deluxe) + Sort ArtistLil Wayne + Sort NameHoly + Persistent ID4F7A6C80BCF89B1C + Explicit + Track TypeRemote + Apple Music + + 4709 + + Track ID4709 + NameDead Butterflies (feat. Kano and Roxani Arias) + ArtistGorillaz + Album ArtistGorillaz + ComposerD. Albarn, D. Gayle, K. Robinson, M. Middlebrooks, M. Williams, R. ARIAS & R. Kabaka Jr. + AlbumSong Machine, Season One: Strange Timez (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size9619061 + Total Time273627 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2020 + Date Modified2020-10-31T13:11:32Z + Date Added2020-10-31T13:11:32Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3780485362 + Play Date UTC2023-10-18T11:49:22Z + Skip Count2 + Skip Date2021-09-23T19:30:00Z + Release Date2020-10-23T12:00:00Z + Artwork Count1 + Sort AlbumSong Machine, Season One: Strange Timez (Deluxe) + Sort ArtistGorillaz + Sort NameDead Butterflies (feat. Kano and Roxani Arias) + Persistent ID29990E805B871493 + Explicit + Track TypeRemote + Apple Music + + 4711 + + Track ID4711 + NameTake Me Apart + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumChill - EP + GenreAlternative + KindApple Music AAC audio file + Size8579615 + Total Time240130 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2019 + Date Modified2020-10-31T14:48:56Z + Date Added2020-10-31T14:48:56Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3780393697 + Play Date UTC2023-10-17T10:21:37Z + Skip Count1 + Skip Date2023-02-14T19:49:29Z + Release Date2019-11-29T12:00:00Z + Artwork Count1 + Sort AlbumChill - EP + Sort ArtistSYML + Sort NameTake Me Apart + Persistent ID776BB941F0D3CB76 + Track TypeRemote + Apple Music + + 4713 + + Track ID4713 + NameSaid N Done + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerShe'yaa Bin Abraham-Joseph, Leland Wayne, Terry Alexander, Barry Eastmond, Wayne Braithwaite & Stephanie Mills + AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8347510 + Total Time231831 + Disc Number2 + Disc Count2 + Track Number15 + Track Count15 + Year2020 + Date Modified2020-11-01T10:30:28Z + Date Added2020-11-01T10:30:28Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3781203598 + Play Date UTC2023-10-26T19:19:58Z + Release Date2020-10-02T07:00:00Z + Artwork Count1 + Sort AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + Sort Artist21 Savage & Metro Boomin + Sort NameSaid N Done + Persistent ID19BB7BC5FFBEB880 + Explicit + Track TypeRemote + Apple Music + + 4715 + + Track ID4715 + NameWin, Lose or Draw (feat. Quentin Miller) + ArtistGucci Mane + Album ArtistGucci Mane + ComposerQuentin Miller, Radric Davis & Samuel Gloade + AlbumSo Icy Gang, Vol. 1 + GenreHip-Hop/Rap + KindAAC audio file + Size6193970 + Total Time168580 + Disc Number1 + Disc Count1 + Track Number13 + Track Count19 + Year2020 + Date Modified2020-11-01T10:36:27Z + Date Added2020-11-01T10:36:27Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3741467790 + Play Date UTC2022-07-23T21:36:30Z + Skip Count1 + Skip Date2021-09-20T17:33:36Z + Release Date2020-10-15T12:00:00Z + Artwork Count1 + Sort AlbumSo Icy Gang, Vol. 1 + Sort ArtistGucci Mane + Sort NameWin, Lose or Draw (feat. Quentin Miller) + Persistent IDBAC41C08B2E08655 + Explicit + Track TypeRemote + + 4717 + + Track ID4717 + NameI Wish I Was A... + ArtistNOISY + Album ArtistNOISY + ComposerCody Matthews, Connor Cheetham & Spencer Tobias-Williams + AlbumI Wish I Was A... - EP + GenreAlternative + KindApple Music AAC audio file + Size6953180 + Total Time195247 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2020 + Date Modified2020-11-01T10:43:53Z + Date Added2020-11-01T10:43:53Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3772717505 + Play Date UTC2023-07-20T14:05:05Z + Skip Count2 + Skip Date2023-05-31T17:02:05Z + Release Date2020-10-16T12:00:00Z + Artwork Count1 + Sort AlbumI Wish I Was A... - EP + Sort ArtistNOISY + Sort NameI Wish I Was A... + Persistent ID0FD5814776E3ED66 + Track TypeRemote + Apple Music + + 4719 + + Track ID4719 + NameReactor + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumS16 + GenreAlternative + KindApple Music AAC audio file + Size11692270 + Total Time339467 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2020 + Date Modified2020-11-01T11:58:21Z + Date Added2020-11-01T11:58:21Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3781200687 + Play Date UTC2023-10-26T18:31:27Z + Skip Count5 + Skip Date2022-10-17T13:55:58Z + Release Date2020-10-16T12:00:00Z + Loved + Album Loved + Normalization3437 + Artwork Count1 + Sort AlbumS16 + Sort ArtistWoodkid + Sort NameReactor + Persistent IDAF900803A2C5FF47 + Track TypeRemote + Apple Music + + 4721 + + Track ID4721 + NameJb + Artistnobody.one + Album Artistnobody.one + AlbumHead Movies + GenreRock + KindApple Music AAC audio file + Size10708970 + Total Time306907 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2010 + Date Modified2020-11-08T12:12:07Z + Date Added2020-11-08T12:12:07Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783358702 + Play Date UTC2023-11-20T17:58:22Z + Release Date2010-10-21T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHead Movies + Sort Artistnobody.one + Sort NameJb + Persistent ID9F1B04F578C3EE52 + Track TypeRemote + Apple Music + + 4723 + + Track ID4723 + NameJamba (feat. Hodgy Beats) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma & Gerard Long + AlbumWolf + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7583123 + Total Time212500 + Disc Number1 + Disc Count1 + Track Number2 + Track Count18 + Year2013 + Date Modified2020-11-09T08:41:59Z + Date Added2020-11-09T08:41:59Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3773540736 + Play Date UTC2023-07-30T02:45:36Z + Release Date2013-04-01T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumWolf + Sort ArtistTyler, The Creator + Sort NameJamba (feat. Hodgy Beats) + Persistent ID83AB2443B8FCE505 + Explicit + Track TypeRemote + Apple Music + + 4725 + + Track ID4725 + NameAirplane + ArtistWYS & Ouska + Album ArtistWYS + ComposerValentin Chauveau & Valentin Villarubias + AlbumAirplane - Single + GenreHip-Hop + KindApple Music AAC audio file + Size5126638 + Total Time138857 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-11-09T22:07:01Z + Date Added2020-11-09T22:07:01Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3783664497 + Play Date UTC2023-11-24T06:54:57Z + Skip Count2 + Skip Date2020-12-06T21:28:14Z + Release Date2020-10-30T12:00:00Z + Artwork Count1 + Sort AlbumAirplane - Single + Sort ArtistWYS & Ouska + Sort NameAirplane + Persistent ID3F48ACBE9D3FF87E + Track TypeRemote + Apple Music + + 4727 + + Track ID4727 + NameMind Games + ArtistVerzache + Album ArtistVerzache + ComposerVerzache + AlbumThought Pool + GenreAlternative + KindApple Music AAC audio file + Size6876296 + Total Time196710 + Disc Number1 + Disc Count1 + Track Number8 + Track Count8 + Year2018 + Date Modified2020-11-10T13:26:15Z + Date Added2020-11-10T13:26:15Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3767077350 + Play Date UTC2023-05-16T07:22:30Z + Release Date2018-10-19T12:00:00Z + Artwork Count1 + Sort AlbumThought Pool + Sort ArtistVerzache + Sort NameMind Games + Persistent ID284BC8AFC800FF80 + Track TypeRemote + Apple Music + + 4729 + + Track ID4729 + NamePeso + ArtistA$AP Rocky + Album ArtistA$AP Rocky + ComposerJames Harris, Rakim Mayers, Terry Lewis & Tyshaun Holloway + AlbumPeso - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6114978 + Total Time170307 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2011 + Date Modified2020-11-11T18:26:11Z + Date Added2020-11-11T18:26:11Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781531634 + Play Date UTC2023-10-30T14:27:14Z + Skip Count1 + Skip Date2021-09-20T17:22:55Z + Release Date2011-10-31T07:00:00Z + Artwork Count1 + Sort AlbumPeso - Single + Sort ArtistA$AP Rocky + Sort NamePeso + Persistent IDCC7ABF88034F6D1C + Explicit + Track TypeRemote + Apple Music + + 4731 + + Track ID4731 + NameSam (Is Dead) [feat. Domo Genesis & Tyler, The Creator] + ArtistOdd Future + Album ArtistOdd Future + ComposerD. Cole & Tyler Okonma + AlbumThe OF Tape, Vol. 2 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7244038 + Total Time202067 + Disc Number1 + Disc Count1 + Track Number15 + Track Count18 + Year2012 + Date Modified2020-11-11T18:28:31Z + Date Added2020-11-11T18:28:31Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3757273400 + Play Date UTC2023-01-22T20:03:20Z + Skip Count2 + Skip Date2023-10-26T16:13:18Z + Release Date2012-03-16T12:00:00Z + Artwork Count1 + Sort AlbumOF Tape, Vol. 2 + Sort ArtistOdd Future + Sort NameSam (Is Dead) [feat. Domo Genesis & Tyler, The Creator] + Persistent ID07C539955AB903B3 + Explicit + Track TypeRemote + Apple Music + + 4733 + + Track ID4733 + NameGHOST (feat. Christian Rich) + ArtistJaden + Album ArtistJaden + ComposerJaden, Omarr Rambert, Kehinde Hassan, Taiwo Hassan, Michael Mule, Isaac DeBoni & Justin Lewis Elwin + AlbumGHOST (feat. Christian Rich) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4786624 + Total Time129730 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2020-11-11T18:56:01Z + Date Added2020-11-11T18:56:01Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3773533837 + Play Date UTC2023-07-30T00:50:37Z + Skip Count3 + Skip Date2020-12-05T09:46:55Z + Release Date2018-06-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGHOST (feat. Christian Rich) - Single + Sort ArtistJaden + Sort NameGHOST (feat. Christian Rich) + Persistent ID8D184DCB246D837E + Explicit + Track TypeRemote + Apple Music + + 4735 + + Track ID4735 + NameThe Calling + ArtistZack Hemsey + Album ArtistZack Hemsey + AlbumThe Way + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7190650 + Total Time202318 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2011 + Date Modified2020-11-13T10:38:13Z + Date Added2020-11-13T10:38:13Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783593067 + Play Date UTC2023-11-23T11:04:27Z + Skip Count1 + Skip Date2022-02-10T14:50:02Z + Release Date2011-06-30T12:00:00Z + Artwork Count1 + Sort AlbumWay + Sort ArtistZack Hemsey + Sort NameCalling + Persistent ID07B8F0612BEB7434 + Track TypeRemote + Apple Music + + 4737 + + Track ID4737 + NameFuck it I love you + ArtistLana Del Rey + Album ArtistLana Del Rey + ComposerLana Del Rey & Jack Antonoff + AlbumNorman Fucking Rockwell! + GenreAlternative + KindApple Music AAC audio file + Size7792202 + Total Time218288 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2019 + Date Modified2020-11-13T11:15:23Z + Date Added2020-11-13T11:15:23Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3766235996 + Play Date UTC2023-05-06T13:39:56Z + Skip Count1 + Skip Date2022-04-16T23:15:54Z + Release Date2019-08-16T07:00:00Z + Loved + Artwork Count1 + Sort AlbumNorman Fucking Rockwell! + Sort ArtistLana Del Rey + Sort NameFuck it I love you + Persistent ID126C0005A0EB1647 + Explicit + Track TypeRemote + Apple Music + + 4739 + + Track ID4739 + NameSunset + ArtistThe xx + Album ArtistThe xx + ComposerOliver Sim & Romy Madley Croft + AlbumCoexist + GenreAlternative + KindApple Music AAC audio file + Size7851255 + Total Time218587 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2012 + Date Modified2020-11-13T14:09:37Z + Date Added2020-11-13T14:09:37Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3782993397 + Play Date UTC2023-11-16T12:29:57Z + Release Date2012-09-05T07:00:00Z + Rating60 + Album Rating60 + Album Rating Computed + Artwork Count1 + Sort AlbumCoexist + Sort Album Artistxx + Sort Artistxx + Sort NameSunset + Persistent IDA1490CB2D8DC5CB1 + Track TypeRemote + Apple Music + + 4741 + + Track ID4741 + NameLitost + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh, Casey Harris & Adam Levin + AlbumLove Songs Drug Songs - EP + GenreAlternative + KindApple Music AAC audio file + Size11126942 + Total Time321107 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year2013 + Date Modified2020-11-13T14:21:59Z + Date Added2020-11-13T14:21:59Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783667342 + Play Date UTC2023-11-24T07:42:22Z + Skip Count1 + Skip Date2021-09-29T09:27:17Z + Release Date2012-01-11T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLove Songs Drug Songs - EP + Sort ArtistX Ambassadors + Sort NameLitost + Persistent ID14A594AD012B88E1 + Track TypeRemote + Apple Music + + 4743 + + Track ID4743 + NameThe Deep, The Dark + ArtistTamer + Album ArtistTamer + ComposerBrian Grayson Sanders + AlbumThe Deep, The Dark - Single + GenreAlternative + KindApple Music AAC audio file + Size5026042 + Total Time136000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2020-11-13T15:32:05Z + Date Added2020-11-13T15:32:05Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3767611855 + Play Date UTC2023-05-22T11:50:55Z + Skip Count1 + Skip Date2022-06-24T11:46:37Z + Release Date2019-09-10T12:00:00Z + Artwork Count1 + Sort AlbumDeep, The Dark - Single + Sort ArtistTamer + Sort NameDeep, The Dark + Persistent ID00A9943247FDDDE6 + Track TypeRemote + Apple Music + + 4745 + + Track ID4745 + NameBâtard + ArtistStromae + Album ArtistStromae + ComposerStromae + AlbumRacine carrée + GenreFrench Pop + KindApple Music AAC audio file + Size7518962 + Total Time208878 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2013 + Date Modified2020-11-13T19:04:44Z + Date Added2020-11-13T19:04:44Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3782885774 + Play Date UTC2023-11-15T06:36:14Z + Skip Count4 + Skip Date2022-09-12T05:46:59Z + Release Date2013-01-01T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumRacine carrée + Sort ArtistStromae + Sort NameBâtard + Persistent IDA8F5AA63AA6CC60F + Track TypeRemote + Apple Music + + 4747 + + Track ID4747 + NameFormidable + ArtistStromae + Album ArtistStromae + ComposerStromae + AlbumFormidable - Single + GenreFrench Pop + KindApple Music AAC audio file + Size7716582 + Total Time214678 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2013 + Date Modified2020-11-13T20:13:16Z + Date Added2020-11-13T20:13:16Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3768289993 + Play Date UTC2023-05-30T08:13:13Z + Skip Count3 + Skip Date2023-05-17T16:13:14Z + Release Date2013-01-01T12:00:00Z + Artwork Count1 + Sort AlbumFormidable - Single + Sort ArtistStromae + Sort NameFormidable + Persistent ID9B0D4EE1175D03B4 + Explicit + Track TypeRemote + Apple Music + + 4749 + + Track ID4749 + NameGodzilla (feat. Juice WRLD) + ArtistEminem + Album ArtistEminem + ComposerM. Mathers, L. Resto, D. Doman, J. Higgins & A. Villasana + AlbumMusic To Be Murdered By + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7497305 + Total Time210800 + Disc Number1 + Disc Count1 + Track Number7 + Track Count20 + Year2020 + Date Modified2020-11-13T21:24:41Z + Date Added2020-11-13T21:24:41Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3770537922 + Play Date UTC2023-06-25T08:38:42Z + Skip Count1 + Skip Date2021-04-02T21:53:06Z + Release Date2020-01-17T08:00:00Z + Artwork Count1 + Sort AlbumMusic To Be Murdered By + Sort ArtistEminem + Sort NameGodzilla (feat. Juice WRLD) + Persistent IDBD5AE8E100A67395 + Explicit + Track TypeRemote + Apple Music + + 4751 + + Track ID4751 + NameLife Is Short + ArtistSki Mask the Slump God + Album ArtistSki Mask the Slump God + AlbumLife Is Short - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5352962 + Total Time140657 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2020-11-14T20:14:34Z + Date Added2020-11-14T20:14:34Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3776241861 + Play Date UTC2023-08-30T09:04:21Z + Skip Count2 + Skip Date2022-05-25T11:20:32Z + Release Date2016-11-04T07:00:00Z + Artwork Count1 + Sort AlbumLife Is Short - Single + Sort ArtistSki Mask the Slump God + Sort NameLife Is Short + Persistent IDCDB014DE7B538217 + Explicit + Track TypeRemote + Apple Music + + 4753 + + Track ID4753 + NameWassup Bro! + ArtistCraig Xen + Album ArtistXXXTENTACION + AlbumXXXTENTACION Presents: Members Only, Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5217912 + Total Time137107 + Disc Number1 + Disc Count1 + Track Number4 + Track Count23 + Year2017 + Date Modified2020-11-15T15:34:54Z + Date Added2020-11-15T15:34:54Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count15 + Play Date3768502721 + Play Date UTC2023-06-01T19:18:41Z + Skip Count5 + Skip Date2023-02-06T09:11:42Z + Release Date2017-06-26T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXXTENTACION Presents: Members Only, Vol. 3 + Sort ArtistCraig Xen + Sort NameWassup Bro! + Persistent ID2F23B250C83C5770 + Explicit + Track TypeRemote + Apple Music + + 4755 + + Track ID4755 + NameSunflower + ArtistRex Orange County + Album ArtistRex Orange County + ComposerBen Ash & Alex O'Connor + AlbumSunflower - Single + GenreAlternative + KindApple Music AAC audio file + Size8915734 + Total Time252231 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2020-11-19T14:23:07Z + Date Added2020-11-19T14:23:07Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count23 + Play Date3773847595 + Play Date UTC2023-08-02T15:59:55Z + Skip Count2 + Skip Date2022-10-13T08:10:21Z + Release Date2017-03-22T12:00:00Z + Artwork Count1 + Sort AlbumSunflower - Single + Sort ArtistRex Orange County + Sort NameSunflower + Persistent ID72929614297E81B7 + Explicit + Track TypeRemote + Apple Music + + 4757 + + Track ID4757 + NameSnail + ArtistBENEE + Album ArtistBENEE + ComposerStella Rose Bennett & Josh Fountain + AlbumHey u x + GenreAlternative + KindApple Music AAC audio file + Size6527858 + Total Time180357 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2020 + Date Modified2020-11-22T18:20:31Z + Date Added2020-11-22T18:20:31Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3783671032 + Play Date UTC2023-11-24T08:43:52Z + Release Date2020-08-10T07:00:00Z + Artwork Count1 + Sort AlbumHey u x + Sort ArtistBENEE + Sort NameSnail + Persistent ID4338C14FA7AD5464 + Track TypeRemote + Apple Music + + 4759 + + Track ID4759 + NameZack and Codeine + ArtistPost Malone + Album ArtistPost Malone + ComposerScott Storch, Diego Ave, Louis Bell & Austin Post + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7365135 + Total Time204355 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2018 + Date Modified2020-11-29T11:20:00Z + Date Added2020-11-29T11:20:00Z + Bit Rate256 + Sample Rate44100 + Play Count110 + Play Date3783781971 + Play Date UTC2023-11-25T15:32:51Z + Skip Count6 + Skip Date2022-04-16T22:47:25Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameZack and Codeine + Persistent IDB3FE25BAF76C747F + Explicit + Track TypeRemote + Apple Music + + 4761 + + Track ID4761 + NameBUTTERFLY EFFECT + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster, Shane Lindstrom & Donald Paton + AlbumASTROWORLD + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7032654 + Total Time190557 + Disc Number1 + Disc Count1 + Track Number15 + Track Count17 + Year2017 + Date Modified2020-12-01T13:32:43Z + Date Added2020-12-01T13:32:43Z + Bit Rate256 + Sample Rate44100 + Play Count70 + Play Date3783683570 + Play Date UTC2023-11-24T12:12:50Z + Skip Count3 + Skip Date2022-01-03T18:37:03Z + Release Date2017-05-15T07:00:00Z + Loved + Artwork Count1 + Sort AlbumASTROWORLD + Sort ArtistTravis Scott + Sort NameBUTTERFLY EFFECT + Persistent ID5960D3DB6823C57A + Track TypeRemote + Apple Music + + 4763 + + Track ID4763 + NameCHopstix + ArtistScHoolboy Q & Travis Scott + Album ArtistScHoolboy Q + ComposerQ. Hanley, J. Webster II, K. Duckworth & D. Natche + AlbumCrasH Talk + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6574831 + Total Time180449 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2019 + Date Modified2020-12-05T06:56:18Z + Date Added2020-12-05T06:56:18Z + Bit Rate256 + Sample Rate44100 + Play Count55 + Play Date3778772333 + Play Date UTC2023-09-28T15:58:53Z + Skip Count4 + Skip Date2022-10-09T14:13:02Z + Release Date2019-04-07T07:00:00Z + Artwork Count1 + Sort AlbumCrasH Talk + Sort ArtistScHoolboy Q & Travis Scott + Sort NameCHopstix + Persistent ID3FD77274114B2F3F + Clean + Track TypeRemote + Apple Music + + 4765 + + Track ID4765 + Namegoosebumps + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster, Kendrick Duckworth, Ronald LaTour, Tim Gomringer, Kevin Gomringer & Daveon Jackson + AlbumBirds in the Trap Sing McKnight + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8606720 + Total Time243837 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2016 + Date Modified2020-12-05T07:24:23Z + Date Added2020-12-05T07:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3781355571 + Play Date UTC2023-10-28T13:32:51Z + Skip Count2 + Skip Date2022-10-09T15:18:33Z + Release Date2016-09-02T07:00:00Z + Loved + Artwork Count1 + Sort AlbumBirds in the Trap Sing McKnight + Sort ArtistTravis Scott + Sort Namegoosebumps + Persistent ID8C4476C48D789BC9 + Clean + Track TypeRemote + Apple Music + + 4767 + + Track ID4767 + NameSmile + ArtistJuice WRLD & The Weeknd + Album ArtistJuice WRLD + ComposerNick Mira, Abel Tesfaye, Cody Rounds, Danny L Snodgrass & Jarad Higgins + AlbumLegends Never Die + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7106482 + Total Time196180 + Disc Number1 + Disc Count1 + Track Number7 + Track Count22 + Year2020 + Date Modified2020-12-05T07:29:21Z + Date Added2020-12-05T07:29:21Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3767209061 + Play Date UTC2023-05-17T19:57:41Z + Release Date2020-08-07T07:00:00Z + Loved + Artwork Count1 + Sort AlbumLegends Never Die + Sort ArtistJuice WRLD & The Weeknd + Sort NameSmile + Persistent ID69C791727FD09C97 + Clean + Track TypeRemote + Apple Music + + 4769 + + Track ID4769 + NameBorrowed Love (feat. Swae Lee & Wizkid) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerLeland Wayne, Khalif Malikibnsham Brown, Ayodeji Balogun, Mary Lou Cross & Johnnie Lee Frierson + AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8123996 + Total Time230234 + Disc Number1 + Disc Count2 + Track Number10 + Track Count13 + Year2018 + Date Modified2020-12-05T08:30:26Z + Date Added2020-12-05T08:30:26Z + Bit Rate256 + Sample Rate44100 + Play Count160 + Play Date3776256929 + Play Date UTC2023-08-30T13:15:29Z + Skip Count6 + Skip Date2022-11-10T19:15:20Z + Release Date2018-11-02T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + Sort ArtistMetro Boomin + Sort NameBorrowed Love (feat. Swae Lee & Wizkid) + Persistent IDC86441EF8555AB7D + Clean + Track TypeRemote + Apple Music + + 4771 + + Track ID4771 + NameEveryday (feat. Rod Stewart, Miguel & Mark Ronson) + ArtistA$AP Rocky + Album ArtistVarious Artists + ComposerMark Ronson, Rakim Mayers & David Keith Bentley + AlbumKeep Calm & Chillout + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9078689 + Total Time261027 + Disc Number1 + Disc Count2 + Track Number6 + Track Count20 + Year2015 + Date Modified2020-12-05T09:44:41Z + Date Added2020-12-05T09:44:41Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3778767602 + Play Date UTC2023-09-28T14:40:02Z + Skip Count2 + Skip Date2022-07-28T10:37:15Z + Release Date2015-05-08T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumKeep Calm & Chillout + Sort ArtistA$AP Rocky + Sort NameEveryday (feat. Rod Stewart, Miguel & Mark Ronson) + Persistent IDFD52722A818B53F7 + Clean + Track TypeRemote + Apple Music + + 4773 + + Track ID4773 + NameL$D + ArtistA$AP Rocky + Album ArtistA$AP Rocky + ComposerN/A + AlbumAT.LONG.LAST.A$AP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8606043 + Total Time238314 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2015 + Date Modified2020-12-05T10:20:04Z + Date Added2020-12-05T10:20:04Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3781437662 + Play Date UTC2023-10-29T12:21:02Z + Skip Count2 + Skip Date2021-07-09T16:33:27Z + Release Date2015-05-21T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAT.LONG.LAST.A$AP + Sort ArtistA$AP Rocky + Sort NameL$D + Persistent ID36AFE2FB4F35961F + Explicit + Track TypeRemote + Apple Music + + 4775 + + Track ID4775 + NameRic Flair Drip + ArtistOffset & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerKiari Cephus, Leland Wayne & Bijan + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6219925 + Total Time172800 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2017 + Date Modified2020-12-05T10:33:06Z + Date Added2020-12-05T10:33:06Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3780564596 + Play Date UTC2023-10-19T09:49:56Z + Skip Count2 + Skip Date2022-08-06T10:32:38Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumWithout Warning + Sort ArtistOffset & Metro Boomin + Sort NameRic Flair Drip + Persistent IDBE6F17207F90AB65 + Explicit + Track TypeRemote + Apple Music + + 4777 + + Track ID4777 + NameGhostface Killers (feat. Travis Scott) + Artist21 Savage, Offset & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerShayaa Joseph, Kiari Cephus, Leland Wayne & Jacques Webster + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9386314 + Total Time268933 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2017 + Date Modified2020-12-05T10:35:51Z + Date Added2020-12-05T10:35:51Z + Bit Rate256 + Sample Rate44100 + Play Count73 + Play Date3767985881 + Play Date UTC2023-05-26T19:44:41Z + Skip Count8 + Skip Date2022-06-01T14:16:12Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWithout Warning + Sort Artist21 Savage, Offset & Metro Boomin + Sort NameGhostface Killers (feat. Travis Scott) + Persistent ID1BCB2961D6CE8379 + Explicit + Track TypeRemote + Apple Music + + 4779 + + Track ID4779 + NameLittle Deaths + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumLittle Deaths - Single + GenreAlternative + KindApple Music AAC audio file + Size9568983 + Total Time256920 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-12-05T23:30:04Z + Date Added2020-12-05T23:30:04Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3783679874 + Play Date UTC2023-11-24T11:11:14Z + Skip Count2 + Skip Date2022-08-18T19:54:12Z + Release Date2020-12-04T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLittle Deaths - Single + Sort ArtistSir Sly + Sort NameLittle Deaths + Persistent ID8572C3B271DB3910 + Track TypeRemote + Apple Music + + 4781 + + Track ID4781 + NameGOTTI + Artist6ix9ine + Album Artist6ix9ine + Composer6ix9ine + AlbumDAY69: Graduation Day + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5956532 + Total Time166852 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2018 + Date Modified2020-12-06T22:09:08Z + Date Added2020-12-06T22:09:08Z + Bit Rate256 + Sample Rate44100 + Play Count71 + Play Date3773753656 + Play Date UTC2023-08-01T13:54:16Z + Skip Count7 + Skip Date2022-10-09T15:06:21Z + Release Date2018-02-23T12:00:00Z + Artwork Count1 + Sort AlbumDAY69: Graduation Day + Sort Artist6ix9ine + Sort NameGOTTI + Persistent IDBA9925EFDB916C26 + Explicit + Track TypeRemote + + 4783 + + Track ID4783 + NameBig City Life + ArtistMattafix + Album ArtistMattafix + AlbumSigns of a Struggle + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8444633 + Total Time240893 + Disc Number1 + Disc Count1 + Track Number2 + Track Count14 + Year2005 + Date Modified2020-12-06T22:22:48Z + Date Added2020-12-06T22:22:48Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count25 + Play Date3761065007 + Play Date UTC2023-03-07T17:16:47Z + Skip Count1 + Skip Date2021-02-28T16:21:12Z + Release Date2005-10-30T07:00:00Z + Artwork Count1 + Sort AlbumSigns of a Struggle + Sort ArtistMattafix + Sort NameBig City Life + Persistent ID4400C6D87770520C + Track TypeRemote + Apple Music + + 4785 + + Track ID4785 + NameMj + ArtistLund + Album ArtistLund + ComposerRobert Lund + AlbumGold + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6394055 + Total Time180984 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2016 + Date Modified2020-12-06T22:54:11Z + Date Added2020-12-06T22:54:11Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3780827203 + Play Date UTC2023-10-22T10:46:43Z + Skip Count1 + Skip Date2021-09-07T18:01:16Z + Release Date2016-10-23T12:00:00Z + Artwork Count1 + Sort AlbumGold + Sort ArtistLund + Sort NameMj + Persistent IDC39061A0F8E5D265 + Explicit + Track TypeRemote + Apple Music + + 4787 + + Track ID4787 + NameHOLIDAY + ArtistLil Nas X + GenrePop + KindMPEG-4 video file + Size38173907 + Total Time168083 + Year2020 + Date Modified2020-12-08T08:17:38Z + Date Added2020-12-08T08:17:38Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3758664861 + Play Date UTC2023-02-07T22:34:21Z + Skip Count3 + Skip Date2023-02-16T05:31:36Z + Release Date2020-11-13T08:00:00Z + Artwork Count1 + Sort ArtistLil Nas X + Sort NameHOLIDAY + Persistent ID31185A1C681A8BC1 + Explicit + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 4789 + + Track ID4789 + NameApple Music Presents: Tyler, The Creator + ArtistTyler, The Creator + GenreHip-Hop/Rap + KindMPEG-4 video file + Size774855577 + Total Time3471167 + Year2019 + Date Modified2020-12-08T09:58:04Z + Date Added2020-12-08T09:58:04Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3760962291 + Play Date UTC2023-03-06T12:44:51Z + Skip Count3 + Skip Date2021-12-12T23:11:58Z + Release Date2019-08-13T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort ArtistTyler, The Creator + Sort NameApple Music Presents: Tyler, The Creator + Persistent IDA02F350D35BB17F0 + Explicit + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 4791 + + Track ID4791 + NameHAD ENOUGH (feat. Quavo & Offset) + ArtistDon Toliver + Album ArtistJACKBOYS & Travis Scott + ComposerCaleb Zackery Toliver, Quavious Marshall, Kiari Cephus & Ebony Oshunrinde + AlbumJACKBOYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5746441 + Total Time157133 + Disc Number1 + Disc Count1 + Track Number4 + Track Count7 + Year2019 + Date Modified2020-12-08T13:09:18Z + Date Added2020-12-08T13:09:18Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3781867636 + Play Date UTC2023-11-03T11:47:16Z + Release Date2019-12-27T12:00:00Z + Artwork Count1 + Sort AlbumJACKBOYS + Sort ArtistDon Toliver + Sort NameHAD ENOUGH (feat. Quavo & Offset) + Persistent ID21203194259C7767 + Explicit + Track TypeRemote + Apple Music + + 4793 + + Track ID4793 + NameOUT WEST (feat. Young Thug) + ArtistJACKBOYS & Travis Scott + Album ArtistJACKBOYS & Travis Scott + ComposerJacques Webster, Ty-Ron Douglas, Jason Baker & Jeffrey Williams + AlbumJACKBOYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5779110 + Total Time157712 + Disc Number1 + Disc Count1 + Track Number5 + Track Count7 + Year2019 + Date Modified2020-12-08T13:09:18Z + Date Added2020-12-08T13:09:18Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781572155 + Play Date UTC2023-10-31T01:42:35Z + Skip Count1 + Skip Date2022-08-19T16:05:06Z + Release Date2019-12-27T12:00:00Z + Artwork Count1 + Sort AlbumJACKBOYS + Sort ArtistJACKBOYS & Travis Scott + Sort NameOUT WEST (feat. Young Thug) + Persistent IDEA20BAA2DB84D1F8 + Explicit + Track TypeRemote + Apple Music + + 4795 + + Track ID4795 + NameGATTI + ArtistJACKBOYS, Pop Smoke & Travis Scott + Album ArtistJACKBOYS & Travis Scott + ComposerJacques Webster, Bashar Jackson, Andre Loblack, Abdul-aziz Manalla Yusuf & MIKE DEAN + AlbumJACKBOYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6622055 + Total Time181145 + Disc Number1 + Disc Count1 + Track Number7 + Track Count7 + Year2019 + Date Modified2020-12-08T13:09:18Z + Date Added2020-12-08T13:09:18Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3781094090 + Play Date UTC2023-10-25T12:54:50Z + Skip Count3 + Skip Date2023-09-26T09:04:58Z + Release Date2019-12-27T12:00:00Z + Artwork Count1 + Sort AlbumJACKBOYS + Sort ArtistJACKBOYS, Pop Smoke & Travis Scott + Sort NameGATTI + Persistent ID4EEE10DB9D098BA5 + Explicit + Track TypeRemote + Apple Music + + 4797 + + Track ID4797 + NameJACKBOYS + ArtistJACKBOYS + Album ArtistJACKBOYS & Travis Scott + ComposerJacques Webster, MIKE DEAN & Ebony Oshunrinde + AlbumJACKBOYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size2109051 + Total Time46837 + Disc Number1 + Disc Count1 + Track Number2 + Track Count7 + Year2019 + Date Modified2020-12-08T13:09:18Z + Date Added2020-12-08T13:09:18Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3759923501 + Play Date UTC2023-02-22T12:11:41Z + Release Date2019-12-27T12:00:00Z + Artwork Count1 + Sort AlbumJACKBOYS + Sort ArtistJACKBOYS + Sort NameJACKBOYS + Persistent ID25CF50CBC09FCC37 + Explicit + Track TypeRemote + Apple Music + + 4799 + + Track ID4799 + NameGANG GANG + ArtistJACKBOYS & Sheck Wes + Album ArtistJACKBOYS & Travis Scott + ComposerJacques Webster, Khadimoul Fall, Caleb Zackery Toliver, Lawrence Taylor, Ebony Oshunrinde & Ugur Tig + AlbumJACKBOYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8691277 + Total Time244761 + Disc Number1 + Disc Count1 + Track Number3 + Track Count7 + Year2019 + Date Modified2020-12-08T13:09:18Z + Date Added2020-12-08T13:09:18Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3769695939 + Play Date UTC2023-06-15T14:45:39Z + Skip Count2 + Skip Date2022-08-11T12:59:25Z + Release Date2019-12-27T12:00:00Z + Artwork Count1 + Sort AlbumJACKBOYS + Sort ArtistJACKBOYS & Sheck Wes + Sort NameGANG GANG + Persistent ID966B2294996376D7 + Explicit + Track TypeRemote + Apple Music + + 4801 + + Track ID4801 + NameNo Idea + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, Ebony Naomi Oshunrinde, Tim Gomringer & Kevin Gomringer + AlbumNo Idea - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5613385 + Total Time154424 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2020-12-08T13:27:28Z + Date Added2020-12-08T13:27:28Z + Bit Rate256 + Sample Rate44100 + Play Count61 + Play Date3778772582 + Play Date UTC2023-09-28T16:03:02Z + Skip Count5 + Skip Date2022-04-23T21:02:56Z + Release Date2019-05-29T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNo Idea - Single + Sort ArtistDon Toliver + Sort NameNo Idea + Persistent ID14DE44CCD29C91A5 + Track TypeRemote + Apple Music + + 4803 + + Track ID4803 + NameNo Regrets (feat. Don Toliver) + ArtistEminem + Album ArtistEminem + ComposerM. Mathers, D. Doman, D. Kostov, J. Thomas & A. Olofsson + AlbumMusic To Be Murdered By + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7195196 + Total Time200947 + Disc Number1 + Disc Count1 + Track Number18 + Track Count20 + Year2020 + Date Modified2020-12-08T14:05:08Z + Date Added2020-12-08T14:05:08Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3783767332 + Play Date UTC2023-11-25T11:28:52Z + Skip Count2 + Skip Date2023-10-28T07:56:42Z + Release Date2020-01-17T08:00:00Z + Artwork Count1 + Sort AlbumMusic To Be Murdered By + Sort ArtistEminem + Sort NameNo Regrets (feat. Don Toliver) + Persistent ID7FE6212004ABF885 + Explicit + Track TypeRemote + Apple Music + + 4805 + + Track ID4805 + NameMystery Lady + ArtistMasego & Don Toliver + Album ArtistMasego & Don Toliver + ComposerDon Toliver, Sam Gelliatry, Andrew Maxwell Hunter, WondaGurl, Micah Davis & Kojo Asamoah + AlbumMystery Lady - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size8304616 + Total Time228453 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-12-08T14:16:20Z + Date Added2020-12-08T14:16:20Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3783779449 + Play Date UTC2023-11-25T14:50:49Z + Skip Count4 + Skip Date2022-10-28T09:47:03Z + Release Date2020-11-10T12:00:00Z + Artwork Count1 + Sort AlbumMystery Lady - Single + Sort ArtistMasego & Don Toliver + Sort NameMystery Lady + Persistent IDA9487481EF434DD8 + Track TypeRemote + Apple Music + + 4807 + + Track ID4807 + NameBlackout + ArtistJaden + Album ArtistJaden + ComposerJaden & Hugo Chan + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size13853189 + Total Time400666 + Disc Number1 + Disc Count2 + Track Number12 + Track Count17 + Year2019 + Date Modified2020-12-08T15:38:38Z + Date Added2020-12-08T15:38:38Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3762003733 + Play Date UTC2023-03-18T14:02:13Z + Skip Count2 + Skip Date2023-10-25T01:05:50Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameBlackout + Persistent IDB43AF1502DA20E9B + Explicit + Track TypeRemote + Apple Music + + 4809 + + Track ID4809 + NameBecky + ArtistAminé + Album ArtistAminé + ComposerAdam Aminé Daniel, Charlie Brown, Madison Appleby Stewart & Irvin Mejia + AlbumLimbo (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7862302 + Total Time220651 + Disc Number1 + Disc Count1 + Track Number19 + Track Count21 + Year2020 + Date Modified2020-12-08T16:00:39Z + Date Added2020-12-08T16:00:39Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781706705 + Play Date UTC2023-11-01T15:05:05Z + Release Date2020-08-07T12:00:00Z + Artwork Count1 + Sort AlbumLimbo (Deluxe) + Sort ArtistAminé + Sort NameBecky + Persistent ID5BD6FE5510C48ABA + Explicit + Track TypeRemote + Apple Music + + 4811 + + Track ID4811 + NameLollipop (feat. Static Major) + ArtistLil Wayne + Album ArtistLil Wayne + ComposerD. Carter, S. Garrett, J. Scheffer & D. Harrison + AlbumTha Carter III (Deluxe Revised) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10568728 + Total Time299333 + Disc Number1 + Disc Count2 + Track Number12 + Track Count16 + Year2008 + Date Modified2020-12-09T16:14:02Z + Date Added2020-12-09T16:14:02Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3767786544 + Play Date UTC2023-05-24T12:22:24Z + Release Date2008-03-13T07:00:00Z + Artwork Count1 + Sort AlbumTha Carter III (Deluxe Revised) + Sort ArtistLil Wayne + Sort NameLollipop (feat. Static Major) + Persistent ID5137FEDE1F949FF9 + Explicit + Track TypeRemote + Apple Music + + 4813 + + Track ID4813 + NameSky Walker (feat. Travis Scott) + ArtistMiguel + Album ArtistMiguel + ComposerMiguel, Nathan Perez, Jacques Webster & Roget Chahayed + AlbumSky Walker (feat. Travis Scott) - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size9203202 + Total Time260077 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2020-12-10T13:32:44Z + Date Added2020-12-10T13:32:44Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3776171527 + Play Date UTC2023-08-29T13:32:07Z + Release Date2017-08-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSky Walker (feat. Travis Scott) - Single + Sort ArtistMiguel + Sort NameSky Walker (feat. Travis Scott) + Persistent ID3A11ABA0CE31A4BD + Explicit + Track TypeRemote + Apple Music + + 4815 + + Track ID4815 + NameDreamcatcher (feat. Swae Lee & Travis Scott) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerAllen Ritter, Leland Wayne, Khalif Malikibnsham Brown & Jacques Webster + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7653986 + Total Time211920 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2018 + Date Modified2020-12-10T14:12:28Z + Date Added2020-12-10T14:12:28Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783694000 + Play Date UTC2023-11-24T15:06:40Z + Skip Count1 + Skip Date2023-02-14T19:26:11Z + Release Date2018-11-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameDreamcatcher (feat. Swae Lee & Travis Scott) + Persistent ID081BD874098217D1 + Explicit + Track TypeRemote + Apple Music + + 4817 + + Track ID4817 + NameTaro + Artistalt-J + Album Artistalt-J + ComposerJoe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green + AlbumAn Awesome Wave + GenreAlternative + KindAAC audio file + Size10616718 + Total Time314987 + Disc Number1 + Disc Count1 + Track Number13 + Track Count14 + Year2012 + Date Modified2020-12-11T18:57:53Z + Date Added2020-12-11T18:57:53Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count16 + Play Date3783451653 + Play Date UTC2023-11-21T19:47:33Z + Release Date2012-05-25T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumAwesome Wave + Sort Artistalt-J + Sort NameTaro + Persistent ID1B2AC7D4833FDB9F + Track TypeRemote + Apple Music + + 4819 + + Track ID4819 + NameStay + ArtistPost Malone + Album ArtistPost Malone + ComposerAndrew Watt, Louis Bell & Austin Post + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7462219 + Total Time204431 + Disc Number1 + Disc Count1 + Track Number12 + Track Count18 + Year2018 + Date Modified2020-12-12T20:54:52Z + Date Added2020-12-12T20:54:52Z + Bit Rate256 + Sample Rate44100 + Play Count75 + Play Date3783011352 + Play Date UTC2023-11-16T17:29:12Z + Skip Count2 + Skip Date2022-06-28T16:25:56Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameStay + Persistent IDD19F7AB1D45881F0 + Explicit + Track TypeRemote + Apple Music + + 4821 + + Track ID4821 + Nameall my friends + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph, Austin Post & Louis Bell + Albumi am > i was + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7514854 + Total Time211785 + Disc Number1 + Disc Count1 + Track Number7 + Track Count15 + Year2018 + Date Modified2020-12-12T21:29:16Z + Date Added2020-12-12T21:29:16Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3771052091 + Play Date UTC2023-07-01T07:28:11Z + Skip Count2 + Skip Date2021-01-22T16:04:34Z + Release Date2018-12-21T12:00:00Z + Rating60 + Album Rating60 + Album Rating Computed + Artwork Count1 + Sort Albumi am > i was + Sort Artist21 Savage + Sort Nameall my friends + Persistent ID7EC54B3CBB1092BB + Explicit + Track TypeRemote + Apple Music + + 4823 + + Track ID4823 + NameToo Young + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, Michael Hernandez, Carlos Suarez & Justin Mosley + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8372365 + Total Time237154 + Disc Number1 + Disc Count1 + Track Number11 + Track Count18 + Year2015 + Date Modified2020-12-14T06:38:24Z + Date Added2020-12-14T06:38:24Z + Bit Rate256 + Sample Rate44100 + Play Count78 + Play Date3783678366 + Play Date UTC2023-11-24T10:46:06Z + Skip Count1 + Skip Date2021-07-26T11:28:20Z + Release Date2015-10-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameToo Young + Persistent IDF6051EFB32216DDA + Explicit + Track TypeRemote + Apple Music + + 4825 + + Track ID4825 + NameHit This Hard + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, Carlo Montagnese & Billy Walsh + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8955779 + Total Time249026 + Disc Number1 + Disc Count1 + Track Number16 + Track Count18 + Year2016 + Date Modified2020-12-14T06:56:04Z + Date Added2020-12-14T06:56:04Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3783011601 + Play Date UTC2023-11-16T17:33:21Z + Skip Count3 + Skip Date2022-05-21T20:48:33Z + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameHit This Hard + Persistent ID1442D12B39A991E7 + Explicit + Track TypeRemote + Apple Music + + 4827 + + Track ID4827 + NameHive (feat. Vince Staples & Casey Veggies) + ArtistEarl Sweatshirt + Album ArtistEarl Sweatshirt + ComposerVince Staples, Thebe Kgositsile & Casey Jones + AlbumDoris + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9696409 + Total Time277240 + Disc Number1 + Disc Count1 + Track Number5 + Track Count15 + Year2013 + Date Modified2020-12-17T09:29:57Z + Date Added2020-12-17T09:29:57Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3783682053 + Play Date UTC2023-11-24T11:47:33Z + Skip Count1 + Skip Date2023-02-01T09:47:38Z + Release Date2013-07-23T12:00:00Z + Artwork Count1 + Sort AlbumDoris + Sort ArtistEarl Sweatshirt + Sort NameHive (feat. Vince Staples & Casey Veggies) + Persistent ID786BA28EDADFB3FA + Explicit + Track TypeRemote + Apple Music + + 4829 + + Track ID4829 + NameSpirits + ArtistThe Strumbellas + Album ArtistThe Strumbellas + ComposerThe Strumbellas & Brian Pickett + AlbumHope + GenreAlternative + KindAAC audio file + Size7727487 + Total Time203653 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2015 + Date Modified2020-12-17T09:33:20Z + Date Added2020-12-17T09:33:20Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count7 + Play Date3748450613 + Play Date UTC2022-10-12T17:16:53Z + Release Date2015-01-22T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumHope + Sort Album ArtistStrumbellas + Sort ArtistStrumbellas + Sort ComposerStrumbellas & Brian Pickett + Sort NameSpirits + Persistent ID7240985720441635 + Track TypeRemote + + 4831 + + Track ID4831 + NameTequila Shots + ArtistKid Cudi + Album ArtistKid Cudi + ComposerScott Mescudi, Oladipo Omishore, David Biral & Denzel Baptiste + AlbumMan On the Moon III: The Chosen + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7149864 + Total Time193293 + Disc Number1 + Disc Count1 + Track Number2 + Track Count18 + Year2020 + Date Modified2020-12-17T13:15:08Z + Date Added2020-12-17T13:15:08Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783781081 + Play Date UTC2023-11-25T15:18:01Z + Skip Count1 + Skip Date2020-12-18T09:04:09Z + Release Date2020-12-11T12:00:00Z + Artwork Count1 + Sort AlbumMan On the Moon III: The Chosen + Sort ArtistKid Cudi + Sort NameTequila Shots + Persistent ID5D456D3C41BD332F + Explicit + Track TypeRemote + Apple Music + + 4833 + + Track ID4833 + NameShe Knows This + ArtistKid Cudi + Album ArtistKid Cudi + ComposerScott Mescudi, Oladipo Omishore, Julian Gramma, Michael Mule & Isaac De Boni + AlbumMan On the Moon III: The Chosen + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7784520 + Total Time216560 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2020 + Date Modified2020-12-17T13:17:02Z + Date Added2020-12-17T13:17:02Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3783594194 + Play Date UTC2023-11-23T11:23:14Z + Skip Count1 + Skip Date2021-06-01T11:14:42Z + Release Date2020-12-11T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMan On the Moon III: The Chosen + Sort ArtistKid Cudi + Sort NameShe Knows This + Persistent IDA2EF725A74D93A3A + Explicit + Track TypeRemote + Apple Music + + 4835 + + Track ID4835 + NameMother Fuck + ArtistJul & SCH + Album ArtistJul & SCH + ComposerJul & SCH + AlbumMother Fuck - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7764567 + Total Time216867 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-12-17T13:21:59Z + Date Added2020-12-17T13:21:59Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3783492440 + Play Date UTC2023-11-22T07:07:20Z + Release Date2020-12-11T12:00:00Z + Artwork Count1 + Sort AlbumMother Fuck - Single + Sort ArtistJul & SCH + Sort NameMother Fuck + Persistent IDCED41621955F4501 + Explicit + Track TypeRemote + Apple Music + + 4837 + + Track ID4837 + NameSHAWTY + ArtistLuciano + Album ArtistLuciano + ComposerGhana Beats & geenaro + AlbumSHAWTY - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6580584 + Total Time183733 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-12-17T13:27:18Z + Date Added2020-12-17T13:27:18Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3760191450 + Play Date UTC2023-02-25T14:37:30Z + Release Date2020-12-10T12:00:00Z + Artwork Count1 + Sort AlbumSHAWTY - Single + Sort ArtistLuciano + Sort NameSHAWTY + Persistent ID5F4306D1602B9CC3 + Track TypeRemote + Apple Music + + 4839 + + Track ID4839 + Name4 Thangs (feat. Big Sean & Hit-Boy) + ArtistFreddie Gibbs + Album ArtistFreddie Gibbs + ComposerBig Sean & Freddie Gibbs + Album4 Thangs (feat. Big Sean & Hit-Boy) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4029191 + Total Time104912 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2020-12-17T13:45:09Z + Date Added2020-12-17T13:45:09Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3779900716 + Play Date UTC2023-10-11T17:25:16Z + Release Date2020-10-30T12:00:00Z + Artwork Count1 + Sort Album4 Thangs (feat. Big Sean & Hit-Boy) - Single + Sort ArtistFreddie Gibbs + Sort Name4 Thangs (feat. Big Sean & Hit-Boy) + Persistent ID4B13E8E3E45E96BD + Explicit + Track TypeRemote + Apple Music + + 4841 + + Track ID4841 + NameRed Roses (feat. Landon Cube) + ArtistLil Skies + Album ArtistLil Skies + ComposerAmin Elamin, Kimetruis Foose & Landon Von Cube + AlbumLife of a Dark Rose + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9738871 + Total Time262544 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2018 + Date Modified2020-12-18T21:31:54Z + Date Added2020-12-18T21:31:54Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3773760954 + Play Date UTC2023-08-01T15:55:54Z + Skip Count1 + Skip Date2022-11-11T18:26:09Z + Release Date2018-01-10T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLife of a Dark Rose + Sort ArtistLil Skies + Sort NameRed Roses (feat. Landon Cube) + Persistent IDE9362892B92DBE7E + Explicit + Track TypeRemote + Apple Music + + 4843 + + Track ID4843 + NameNOIZE (feat. Tyler, The Creator) + ArtistJaden + Album ArtistJaden + ComposerJaden, Omarr Rambert, Austin Owens, Keanu Torres, James Foye III "Keyz" & Tyler Okonma + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8935619 + Total Time247758 + Disc Number1 + Disc Count2 + Track Number5 + Track Count17 + Year2019 + Date Modified2020-12-19T13:26:26Z + Date Added2020-12-19T13:26:26Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3776178799 + Play Date UTC2023-08-29T15:33:19Z + Skip Count6 + Skip Date2022-11-25T22:19:25Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameNOIZE (feat. Tyler, The Creator) + Persistent ID28D05163018B61D9 + Explicit + Track TypeRemote + Apple Music + + 4845 + + Track ID4845 + NameSLOW DANCING IN THE DARK + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller & Jonathan Patrick Wimberly + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size7406381 + Total Time209274 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2018 + Date Modified2020-12-20T09:05:07Z + Date Added2020-12-20T09:05:07Z + Bit Rate256 + Sample Rate44100 + Play Count113 + Play Date3781341515 + Play Date UTC2023-10-28T09:38:35Z + Skip Count1 + Skip Date2020-12-31T13:46:30Z + Release Date2018-09-12T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization4559 + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameSLOW DANCING IN THE DARK + Persistent IDAAA7E51B26025FE1 + Explicit + Track TypeRemote + Apple Music + + 4847 + + Track ID4847 + NameYEAH RIGHT + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size6261358 + Total Time174358 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2018 + Date Modified2020-12-20T09:05:09Z + Date Added2020-12-20T09:05:09Z + Bit Rate256 + Sample Rate44100 + Play Count118 + Play Date3781342227 + Play Date UTC2023-10-28T09:50:27Z + Skip Count2 + Skip Date2021-09-29T19:56:37Z + Release Date2018-03-26T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization2005 + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameYEAH RIGHT + Persistent IDBA7630C37260D80D + Explicit + Track TypeRemote + Apple Music + + 4849 + + Track ID4849 + NameWHY AM I STILL IN LA (feat. Shlohmo & D33J) + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size6986355 + Total Time199709 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count94 + Play Date3782982213 + Play Date UTC2023-11-16T09:23:33Z + Release Date2018-10-26T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameWHY AM I STILL IN LA (feat. Shlohmo & D33J) + Persistent ID93FC9093E3561BFD + Explicit + Track TypeRemote + Apple Music + + 4851 + + Track ID4851 + NameCAN'T GET OVER YOU (feat. Clams Casino) + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size4101472 + Total Time107077 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count106 + Play Date3781342052 + Play Date UTC2023-10-28T09:47:32Z + Skip Count1 + Skip Date2021-02-27T01:07:41Z + Release Date2018-10-02T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameCAN'T GET OVER YOU (feat. Clams Casino) + Persistent IDBDAAEFAD405A1619 + Track TypeRemote + Apple Music + + 4853 + + Track ID4853 + NameTEST DRIVE + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size6250536 + Total Time179423 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count107 + Play Date3781341694 + Play Date UTC2023-10-28T09:41:34Z + Skip Count5 + Skip Date2022-10-27T09:16:48Z + Release Date2018-10-16T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameTEST DRIVE + Persistent ID84E3ED0C42252F29 + Explicit + Track TypeRemote + Apple Music + + 4855 + + Track ID4855 + NameWANTED U + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size8826862 + Total Time251015 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count93 + Play Date3781341945 + Play Date UTC2023-10-28T09:45:45Z + Skip Count1 + Skip Date2021-05-22T18:11:54Z + Release Date2018-10-26T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameWANTED U + Persistent ID2335AFC7DBF72A6E + Explicit + Track TypeRemote + Apple Music + + 4857 + + Track ID4857 + NameI'LL SEE YOU IN 40 + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size8678692 + Total Time253781 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count82 + Play Date3782805855 + Play Date UTC2023-11-14T08:24:15Z + Skip Count3 + Skip Date2021-09-28T16:19:24Z + Release Date2018-10-26T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameI'LL SEE YOU IN 40 + Persistent ID146FCFFCAFAAED3B + Explicit + Track TypeRemote + Apple Music + + 4859 + + Track ID4859 + NameXNXX + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller & John Durham + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size4726180 + Total Time127318 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count91 + Play Date3781347041 + Play Date UTC2023-10-28T11:10:41Z + Release Date2018-10-26T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameXNXX + Persistent ID2A6FF4D9F8AAC4F7 + Explicit + Track TypeRemote + Apple Music + + 4861 + + Track ID4861 + NameATTENTION + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size4771823 + Total Time128888 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count128 + Play Date3781447676 + Play Date UTC2023-10-29T15:07:56Z + Skip Count4 + Skip Date2022-03-22T08:19:44Z + Release Date2018-10-26T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization1164 + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameATTENTION + Persistent ID7DE473DD54CE71E6 + Explicit + Track TypeRemote + Apple Music + + 4863 + + Track ID4863 + NameCOME THRU + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size5544510 + Total Time153169 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count91 + Play Date3781342748 + Play Date UTC2023-10-28T09:59:08Z + Skip Count1 + Skip Date2022-05-08T15:22:22Z + Release Date2018-10-26T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameCOME THRU + Persistent ID451E2E763B6D2932 + Explicit + Track TypeRemote + Apple Music + + 4865 + + Track ID4865 + NameNO FUN + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size6080565 + Total Time168418 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count88 + Play Date3783776057 + Play Date UTC2023-11-25T13:54:17Z + Skip Count4 + Skip Date2022-07-18T11:06:44Z + Release Date2018-10-26T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameNO FUN + Persistent ID03200DF7649BD02E + Explicit + Track TypeRemote + Apple Music + + 4867 + + Track ID4867 + NameR.I.P. (feat. Trippie Redd) + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller + AlbumBALLADS 1 + GenreR&B/Soul + KindApple Music AAC audio file + Size5731487 + Total Time158726 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2018 + Date Modified2020-12-20T16:25:06Z + Date Added2020-12-20T16:25:06Z + Bit Rate256 + Sample Rate44100 + Play Count62 + Play Date3776153730 + Play Date UTC2023-08-29T08:35:30Z + Skip Count4 + Skip Date2022-11-23T10:17:05Z + Release Date2018-10-26T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBALLADS 1 + Sort ArtistJoji + Sort NameR.I.P. (feat. Trippie Redd) + Persistent ID1E7CEDF9A2361F93 + Explicit + Track TypeRemote + Apple Music + + 4869 + + Track ID4869 + NameMai + ArtistVideoclub + Album ArtistVideoclub + ComposerMatthieu Reynaud & Adèle Castillon + AlbumMai - Single + GenrePop + KindAAC audio file + Size7701929 + Total Time218707 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2020-12-21T16:46:15Z + Date Added2020-12-21T16:46:15Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3732556221 + Play Date UTC2022-04-11T18:10:21Z + Skip Date2022-01-03T08:54:02Z + Release Date2019-11-28T12:00:00Z + Loved + Sort AlbumMai - Single + Sort ArtistVideoclub + Sort NameMai + Persistent IDEBE72B11FF3015ED + Track TypeRemote + + 4871 + + Track ID4871 + NamePiano Concerto No. 26 in D, K. 537 "Coronation": 2. (Larghetto) + ArtistAlfred Brendel, Sir Neville Marriner & Academy of St Martin in the Fields + Album ArtistAcademy of St Martin in the Fields, Alfred Brendel & Sir Neville Marriner + ComposerWolfgang Amadeus Mozart + AlbumMozart: Piano Concertos No. 21 & 26 + GroupingPiano Concerto No. 26 in D, K. 537 "Coronation" + GenreClassical + KindApple Music AAC audio file + Size12873514 + Total Time373000 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year1990 + Date Modified2021-01-02T13:48:53Z + Date Added2021-01-02T13:48:53Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3773534712 + Play Date UTC2023-07-30T01:05:12Z + Skip Count1 + Skip Date2023-04-18T09:47:45Z + Release Date1990-01-01T12:00:00Z + Artwork Count1 + Sort AlbumMozart: Piano Concertos No. 21 & 26 + Sort ArtistAlfred Brendel, Sir Neville Marriner & Academy of St Martin in the Fields + Sort NamePiano Concerto No. 26 in D, K. 537 "Coronation": 2. (Larghetto) + Persistent IDEF579BCCC4486A81 + Track TypeRemote + Apple Music + + 4873 + + Track ID4873 + NameSymphony No. 25 in G Minor, K. 183: I. Allegro con brio + ArtistBerlin Philharmonic & Karl Böhm + Album ArtistBerlin Philharmonic & Karl Böhm + ComposerWolfgang Amadeus Mozart + AlbumMozart: Symphonies Nos. 25, 29 & 31, "Pariser" + GroupingSymphony No. 25 in G Minor, K.183 + GenreClassical + KindApple Music AAC audio file + Size18944696 + Total Time522427 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year1996 + Date Modified2021-01-02T14:05:58Z + Date Added2021-01-02T14:05:58Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3781398927 + Play Date UTC2023-10-29T01:35:27Z + Skip Count2 + Skip Date2023-03-28T06:55:54Z + Release Date1996-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMozart: Symphonies Nos. 25, 29 & 31, "Pariser" + Sort ArtistBerlin Philharmonic & Karl Böhm + Sort NameSymphony No. 25 in G Minor, K. 183: I. Allegro con brio + Persistent IDFBCB9A483E07E3AD + Track TypeRemote + Apple Music + + 4875 + + Track ID4875 + NameI Laugh at Myself + ArtistBlue October + Album ArtistBlue October + ComposerJustin Furstenfeld + AlbumThis is What I Live For + GenreAlternative + KindApple Music AAC audio file + Size7316038 + Total Time204787 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2020 + Date Modified2021-01-05T11:36:48Z + Date Added2021-01-05T11:36:48Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3759916624 + Play Date UTC2023-02-22T10:17:04Z + Skip Count1 + Skip Date2022-05-24T11:18:53Z + Release Date2020-10-22T12:00:00Z + Artwork Count1 + Sort ArtistBlue October + Sort NameI Laugh at Myself + Persistent IDC5CE47700B50AE76 + Track TypeRemote + Apple Music + + 4877 + + Track ID4877 + NameThe Way I Used to Love You + ArtistBlue October + Album ArtistBlue October + ComposerJustin Furstenfeld & Eric D. Holtz + AlbumThis is What I Live For + GenreAlternative + KindApple Music AAC audio file + Size8655364 + Total Time244067 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2020 + Date Modified2021-01-05T11:39:16Z + Date Added2021-01-05T11:39:16Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3779312654 + Play Date UTC2023-10-04T22:04:14Z + Skip Count2 + Skip Date2022-05-24T11:17:41Z + Release Date2020-10-22T12:00:00Z + Artwork Count1 + Sort ArtistBlue October + Sort NameWay I Used to Love You + Persistent ID2DDC198BB26BBD8A + Track TypeRemote + Apple Music + + 4879 + + Track ID4879 + NameLove Stupid (feat. Karen Hover) + ArtistBlue October + Album ArtistBlue October + ComposerJustin Furstenfeld & Steve Schiltz + AlbumThis is What I Live For + GenreAlternative + KindApple Music AAC audio file + Size9679530 + Total Time271653 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2020 + Date Modified2021-01-05T11:44:23Z + Date Added2021-01-05T11:44:23Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3775211792 + Play Date UTC2023-08-18T10:56:32Z + Skip Count2 + Skip Date2022-05-24T11:17:43Z + Release Date2020-10-22T12:00:00Z + Loved + Artwork Count1 + Sort ArtistBlue October + Sort NameLove Stupid (feat. Karen Hover) + Persistent IDED64A0E1147E6669 + Track TypeRemote + Apple Music + + 4881 + + Track ID4881 + NamePimpin Ain't Eazy + ArtistKodak Black + Album ArtistKodak Black + ComposerBill K. Kapri, Charlie Handsome & Nick Mira + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6210209 + Total Time177000 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2019 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3781435217 + Play Date UTC2023-10-29T11:40:17Z + Release Date2019-03-01T08:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NamePimpin Ain't Eazy + Persistent IDF202787AF4BB43C2 + Explicit + Track TypeRemote + Apple Music + + 4883 + + Track ID4883 + NameSpain (feat. Tory Lanez and Jackboy) + ArtistKodak Black + Album ArtistKodak Black + ComposerBill K. Kapri, Daystar Peterson, Hector Chaparro, John McGee, pierre delince & Xeryus Gittens + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9847825 + Total Time285531 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2020 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3782900847 + Play Date UTC2023-11-15T10:47:27Z + Release Date2020-11-11T12:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NameSpain (feat. Tory Lanez and Jackboy) + Persistent IDEE26AD4992CF8403 + Explicit + Track TypeRemote + Apple Music + + 4885 + + Track ID4885 + NameThe Fire + ArtistKodak Black + Album ArtistKodak Black + ComposerBill K. Kapri, Derek Garcia, Ian Mckee & Russell Pochop + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5978209 + Total Time158797 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2020 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3766652906 + Play Date UTC2023-05-11T09:28:26Z + Release Date2020-11-11T12:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NameFire + Persistent IDD0CA461F7BFF75FC + Explicit + Track TypeRemote + Apple Music + + 4887 + + Track ID4887 + NameEeny, Meeny, Miny, Moe + ArtistKodak Black + Album ArtistKodak Black + ComposerAaron Lockhart, Bill K. Kapri & Latroy Garrett + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7752262 + Total Time219596 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2020 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781623565 + Play Date UTC2023-10-31T15:59:25Z + Skip Count3 + Skip Date2023-02-26T10:23:38Z + Release Date2020-11-11T12:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NameEeny, Meeny, Miny, Moe + Persistent IDB2CF718485137A9C + Explicit + Track TypeRemote + Apple Music + + 4889 + + Track ID4889 + NameI Wanna Live + ArtistKodak Black + Album ArtistKodak Black + ComposerBenny Workman, Bill K. Kapri, Brittany Chi Coney & Denisia "Blu June" Andrews + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4325938 + Total Time112813 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2020 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3782903200 + Play Date UTC2023-11-15T11:26:40Z + Skip Count1 + Skip Date2022-08-19T16:11:23Z + Release Date2020-11-11T12:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NameI Wanna Live + Persistent ID6E6208110505D4AB + Explicit + Track TypeRemote + Apple Music + + 4891 + + Track ID4891 + NameRemember the Times + ArtistKodak Black + Album ArtistKodak Black + ComposerBill Kapri & Lester Williams + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7329656 + Total Time203892 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2020 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3783771451 + Play Date UTC2023-11-25T12:37:31Z + Skip Count1 + Skip Date2022-08-21T11:46:30Z + Release Date2020-11-11T12:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NameRemember the Times + Persistent ID676B90579D575D31 + Explicit + Track TypeRemote + Apple Music + + 4893 + + Track ID4893 + NameFeeling Myself Today + ArtistKodak Black + Album ArtistKodak Black + ComposerBennett W Pepple, Bill K. Kapri & Isaac Earl Bynum + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6832356 + Total Time188075 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2020 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3780415459 + Play Date UTC2023-10-17T16:24:19Z + Release Date2020-11-11T12:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NameFeeling Myself Today + Persistent ID3B7F3A817416E8C6 + Explicit + Track TypeRemote + Apple Music + + 4895 + + Track ID4895 + NameMake a Hit (feat. Lil Yachty) + ArtistKodak Black + Album ArtistKodak Black + ComposerBill K. Kapri, Derek Garcia & Miles Parks McCollum + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7637978 + Total Time211948 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2020 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3777369731 + Play Date UTC2023-09-12T10:22:11Z + Skip Count3 + Skip Date2022-10-21T11:33:29Z + Release Date2020-11-11T12:00:00Z + Rating20 + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NameMake a Hit (feat. Lil Yachty) + Persistent IDB6F06075684F1716 + Explicit + Track TypeRemote + Apple Music + + 4897 + + Track ID4897 + NameI Knew It (feat. Gucci Mane & CBE) + ArtistKodak Black + Album ArtistKodak Black + AlbumBill Israel + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4958482 + Total Time133645 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2020 + Date Modified2021-01-05T12:01:48Z + Date Added2021-01-05T12:01:48Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3769682056 + Play Date UTC2023-06-15T10:54:16Z + Skip Count2 + Skip Date2022-03-28T11:38:55Z + Release Date2020-11-11T12:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumBill Israel + Sort ArtistKodak Black + Sort NameI Knew It (feat. Gucci Mane & CBE) + Persistent IDBBF4AFA0A295F9CB + Explicit + Track TypeRemote + Apple Music + + 4899 + + Track ID4899 + NameBeautiful Crime + ArtistTamer + Album ArtistTamer + AlbumBeautiful Crime - Single + GenreAlternative + KindApple Music AAC audio file + Size9213786 + Total Time272000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2021-01-07T11:50:55Z + Date Added2021-01-07T11:50:55Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3782476284 + Play Date UTC2023-11-10T12:51:24Z + Release Date2015-04-09T12:00:00Z + Artwork Count1 + Sort AlbumBeautiful Crime - Single + Sort ArtistTamer + Sort NameBeautiful Crime + Persistent IDB0306E728AF79990 + Track TypeRemote + Apple Music + + 4901 + + Track ID4901 + NameToo Many Chances + ArtistTravis + Album ArtistTravis + AlbumToo Many Chances - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7649109 + Total Time217060 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-01-07T23:46:39Z + Date Added2021-01-07T23:46:39Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3767987373 + Play Date UTC2023-05-26T20:09:33Z + Skip Count1 + Skip Date2022-02-02T10:49:33Z + Release Date2018-07-25T12:00:00Z + Artwork Count1 + Sort AlbumToo Many Chances - Single + Sort ArtistTravis + Sort NameToo Many Chances + Persistent ID5E61E4FBFC074B56 + Track TypeRemote + Apple Music + + 4903 + + Track ID4903 + Name10AM / Save the World (feat. Gucci Mane) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerLeland Wayne, Radric Davis, Andre Proctor, Joseph Froese & Gladys Williams Givens + AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8113372 + Total Time226320 + Disc Number1 + Disc Count2 + Track Number1 + Track Count13 + Year2018 + Date Modified2021-01-08T20:10:05Z + Date Added2021-01-08T20:10:05Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3768409498 + Play Date UTC2023-05-31T17:24:58Z + Skip Count5 + Skip Date2023-11-02T13:51:58Z + Release Date2018-11-02T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + Sort ArtistMetro Boomin + Sort Name10AM / Save the World (feat. Gucci Mane) + Persistent ID6508C11E5994156A + Explicit + Track TypeRemote + Apple Music + + 4905 + + Track ID4905 + NameDOOWEE + Artist6ix9ine + Album Artist6ix9ine + Composer6ix9ine + AlbumDAY69: Graduation Day + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4842410 + Total Time133058 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2018 + Date Modified2021-01-08T20:33:40Z + Date Added2021-01-08T20:33:40Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3779630604 + Play Date UTC2023-10-08T14:23:24Z + Release Date2018-02-23T12:00:00Z + Artwork Count1 + Sort AlbumDAY69: Graduation Day + Sort Artist6ix9ine + Sort NameDOOWEE + Persistent ID714D43F6B21E9D0E + Explicit + Track TypeRemote + + 4907 + + Track ID4907 + NameBizarro + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size7933488 + Total Time214361 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3770131037 + Play Date UTC2023-06-20T15:37:17Z + Skip Count1 + Skip Date2021-02-24T21:27:06Z + Release Date2020-02-13T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort NameBizarro + Persistent IDCD8EBF10BB8B3620 + Explicit + Track TypeRemote + Apple Music + + 4909 + + Track ID4909 + NameWhat the Fuck Is Happening + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size4003760 + Total Time106341 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781173676 + Play Date UTC2023-10-26T11:01:16Z + Skip Count1 + Skip Date2023-06-01T11:25:57Z + Release Date2020-02-13T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort NameWhat the Fuck Is Happening + Persistent IDE3D63853E6D8445C + Explicit + Track TypeRemote + Apple Music + + 4911 + + Track ID4911 + NameThat Just Isn't Empirically Possible + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size4642464 + Total Time123902 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3775744850 + Play Date UTC2023-08-24T15:00:50Z + Skip Count1 + Skip Date2021-09-17T11:46:18Z + Release Date2020-02-13T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort NameThat Just Isn't Empirically Possible + Persistent IDA57378A7C9282D8A + Explicit + Track TypeRemote + Apple Music + + 4913 + + Track ID4913 + Name...And To Those I Love, Thanks For Sticking Around + Artist$uicideboy$ + Album ArtistVarious Artists + Composer$uicideboy$ + AlbumGaming Hits 2020 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6126347 + Total Time168490 + Disc Number1 + Disc Count1 + Track Number29 + Track Count29 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780191517 + Play Date UTC2023-10-15T02:11:57Z + Release Date2020-02-13T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Compilation + Artwork Count1 + Sort AlbumGaming Hits 2020 + Sort Artist$uicideboy$ + Sort Name...And To Those I Love, Thanks For Sticking Around + Persistent ID69F3821B4602362A + Explicit + Track TypeRemote + Apple Music + + 4915 + + Track ID4915 + NameScope Set + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumScope Set - Single + GenreHip-Hop + KindApple Music AAC audio file + Size3586169 + Total Time93423 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3772016325 + Play Date UTC2023-07-12T11:18:45Z + Release Date2019-12-20T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumScope Set - Single + Sort Artist$uicideboy$ + Sort NameScope Set + Persistent ID098545A59E52B1C5 + Explicit + Track TypeRemote + Apple Music + + 4917 + + Track ID4917 + NameFuck Your Culture + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumFuck Your Culture - Single + GenreHip-Hop + KindApple Music AAC audio file + Size3908151 + Total Time102060 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count85 + Play Date3761911443 + Play Date UTC2023-03-17T12:24:03Z + Skip Count4 + Skip Date2023-07-26T13:25:29Z + Release Date2019-12-20T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFuck Your Culture - Single + Sort Artist$uicideboy$ + Sort NameFuck Your Culture + Persistent IDC3B6C178640B34C6 + Explicit + Track TypeRemote + Apple Music + + 4919 + + Track ID4919 + NameOne Last Look at the Damage + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size3798520 + Total Time97672 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3783669499 + Play Date UTC2023-11-24T08:18:19Z + Skip Count1 + Skip Date2021-09-28T07:16:58Z + Release Date2020-02-13T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort NameOne Last Look at the Damage + Persistent ID0A3209D8B9E9AA45 + Explicit + Track TypeRemote + Apple Music + + 4921 + + Track ID4921 + NameI Wanna Be Romanticized + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size5011725 + Total Time133747 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3762590369 + Play Date UTC2023-03-25T08:59:29Z + Skip Count2 + Skip Date2021-09-17T11:43:39Z + Release Date2020-02-13T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort NameI Wanna Be Romanticized + Persistent ID9102C4BC3EF0E467 + Explicit + Track TypeRemote + Apple Music + + 4923 + + Track ID4923 + NameAll Dogs Go to Heaven + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size5597734 + Total Time153652 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count71 + Play Date3767988154 + Play Date UTC2023-05-26T20:22:34Z + Skip Count4 + Skip Date2022-10-15T17:04:19Z + Release Date2020-02-13T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort NameAll Dogs Go to Heaven + Persistent IDBF7174BD7231DFAA + Explicit + Track TypeRemote + Apple Music + + 4925 + + Track ID4925 + NamePutrid Pride + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size4049442 + Total Time106971 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3781356125 + Play Date UTC2023-10-28T13:42:05Z + Skip Count2 + Skip Date2022-08-19T16:11:45Z + Release Date2020-02-13T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort NamePutrid Pride + Persistent ID35EFB294F50D3D08 + Explicit + Track TypeRemote + Apple Music + + 4927 + + Track ID4927 + NameMega Zeph + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size3786183 + Total Time101799 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count57 + Play Date3783454714 + Play Date UTC2023-11-21T20:38:34Z + Skip Count1 + Skip Date2022-04-16T23:38:49Z + Release Date2020-02-13T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort NameMega Zeph + Persistent ID91319BC9F9055559 + Explicit + Track TypeRemote + Apple Music + + 4929 + + Track ID4929 + Name[whispers Indistinctly] + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumStop Staring at the Shadows + GenreHip-Hop + KindApple Music AAC audio file + Size5990911 + Total Time164624 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2020 + Date Modified2021-01-10T09:29:09Z + Date Added2021-01-10T09:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3758753239 + Play Date UTC2023-02-08T23:07:19Z + Skip Date2022-07-21T08:39:51Z + Release Date2020-02-13T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStop Staring at the Shadows + Sort Artist$uicideboy$ + Sort Name[whispers Indistinctly] + Persistent IDA26D3101D4299773 + Explicit + Track TypeRemote + Apple Music + + 4931 + + Track ID4931 + NameCar Radio + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumVessel + GenreAlternative + KindApple Music AAC audio file + Size9733572 + Total Time267733 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2011 + Date Modified2021-01-10T15:06:24Z + Date Added2021-01-10T15:06:24Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3760514217 + Play Date UTC2023-03-01T08:16:57Z + Release Date2011-07-08T07:00:00Z + Artwork Count1 + Sort AlbumVessel + Sort Artisttwenty one pilots + Sort NameCar Radio + Persistent ID14D6547B81F42F2A + Track TypeRemote + Apple Music + + 4933 + + Track ID4933 + NameNew York + ArtistAndrew Belle + Album ArtistAndrew Belle + AlbumDive Deep + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8529799 + Total Time240493 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2017 + Date Modified2021-01-10T15:56:30Z + Date Added2021-01-10T15:56:30Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3762324076 + Play Date UTC2023-03-22T07:01:16Z + Release Date2017-08-25T12:00:00Z + Artwork Count1 + Sort AlbumDive Deep + Sort ArtistAndrew Belle + Sort NameNew York + Persistent IDC0C6E263BEF78389 + Track TypeRemote + Apple Music + + 4935 + + Track ID4935 + NameMr. Sandman + ArtistSYML + Album ArtistSYML + AlbumMr. Sandman - Single + GenreAlternative + KindApple Music AAC audio file + Size7188369 + Total Time206493 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2017 + Date Modified2021-01-10T19:44:17Z + Date Added2021-01-10T19:44:17Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3776166504 + Play Date UTC2023-08-29T12:08:24Z + Skip Count9 + Skip Date2022-11-11T18:03:16Z + Release Date2017-05-12T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMr. Sandman - Single + Sort ArtistSYML + Sort NameMr. Sandman + Persistent ID46F69C5859424ED3 + Track TypeRemote + Apple Music + + 4937 + + Track ID4937 + NameThe Dark + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumThe Dark - Single + GenreAlternative + KindApple Music AAC audio file + Size10498303 + Total Time298483 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-12T13:15:18Z + Date Added2021-01-12T13:15:18Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3781536692 + Play Date UTC2023-10-30T15:51:32Z + Skip Count2 + Skip Date2022-11-25T22:10:51Z + Release Date2020-07-31T12:00:00Z + Artwork Count1 + Sort AlbumDark - Single + Sort ArtistSYML + Sort NameDark + Persistent IDE5AF5F3523DBC4A3 + Track TypeRemote + Apple Music + + 4939 + + Track ID4939 + NameMooo! + ArtistDoja Cat + Album ArtistDoja Cat + ComposerAmala Zandile Dlamini, Antwoine Collins, Chad Hugo, Pharrell Williams, Craig Lawson, Bobby Sandimanie, Jonathan Smith & Michael Tyler + AlbumAmala (Deluxe Version) + GenreR&B/Soul + KindApple Music AAC audio file + Size10068689 + Total Time285139 + Disc Number1 + Disc Count1 + Track Number16 + Track Count16 + Year2020 + Date Modified2021-01-14T12:53:06Z + Date Added2021-01-14T12:53:06Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3762943155 + Play Date UTC2023-03-29T10:59:15Z + Skip Count2 + Skip Date2022-06-01T11:24:51Z + Release Date2018-08-31T12:00:00Z + Artwork Count1 + Sort AlbumAmala (Deluxe Version) + Sort ArtistDoja Cat + Sort NameMooo! + Persistent IDFD515FE0C0811598 + Explicit + Track TypeRemote + Apple Music + + 4941 + + Track ID4941 + NameLettuce Sandwich + ArtistLil Skies + Album ArtistLil Skies + ComposerAmin Elamin & Kimetrius Foose + AlbumLife of a Dark Rose + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7041234 + Total Time195032 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2018 + Date Modified2021-01-14T20:05:15Z + Date Added2021-01-14T20:05:15Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3776333420 + Play Date UTC2023-08-31T10:30:20Z + Release Date2018-01-10T12:00:00Z + Artwork Count1 + Sort AlbumLife of a Dark Rose + Sort ArtistLil Skies + Sort NameLettuce Sandwich + Persistent IDD5A826DBA5E5F878 + Explicit + Track TypeRemote + Apple Music + + 4943 + + Track ID4943 + NameCandy + ArtistDoja Cat + Album ArtistDoja Cat + ComposerAmala Zandile Dlamini, David Sprecher, Joshua Karp & Cameron Bartolini + AlbumAmala + GenreR&B/Soul + KindApple Music AAC audio file + Size6867512 + Total Time190927 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2018 + Date Modified2021-01-14T21:46:15Z + Date Added2021-01-14T21:46:15Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3773210829 + Play Date UTC2023-07-26T07:07:09Z + Skip Count4 + Skip Date2022-03-30T16:12:32Z + Release Date2018-03-23T07:00:00Z + Loved + Artwork Count1 + Sort AlbumAmala + Sort ArtistDoja Cat + Sort NameCandy + Persistent ID54E0FF3EF33C796A + Explicit + Track TypeRemote + Apple Music + + 4945 + + Track ID4945 + NameBetter Days + ArtistOneRepublic + Album ArtistOneRepublic + ComposerRyan Tedder, Brent Kutzle & John Nathaniel + AlbumHuman (Deluxe) + GenrePop + KindApple Music AAC audio file + Size5314112 + Total Time144546 + Disc Number1 + Disc Count1 + Track Number12 + Track Count16 + Year2020 + Date Modified2021-01-15T18:35:34Z + Date Added2021-01-15T18:35:34Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3783681775 + Play Date UTC2023-11-24T11:42:55Z + Release Date2020-09-25T12:00:00Z + Artwork Count1 + Sort AlbumHuman (Deluxe) + Sort ArtistOneRepublic + Sort NameBetter Days + Persistent IDC782F6642A40C55B + Track TypeRemote + Apple Music + + 4947 + + Track ID4947 + NameGOOBA + Artist6ix9ine + Album Artist6ix9ine + AlbumGOOBA - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4952490 + Total Time132303 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-16T10:21:52Z + Date Added2021-01-16T10:21:52Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count40 + Play Date3780758961 + Play Date UTC2023-10-21T15:49:21Z + Skip Count1 + Skip Date2021-04-04T08:20:02Z + Release Date2018-02-23T12:00:00Z + Normalization4044 + Artwork Count1 + Sort AlbumGOOBA - Single + Sort Artist6ix9ine + Sort NameGOOBA + Persistent ID475EC2D60E8BE61B + Explicit + Track TypeRemote + Apple Music + + 4949 + + Track ID4949 + NameMagazine + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumRadical $uicide - EP + GenreHip-Hop + KindAAC audio file + Size4864659 + Total Time131370 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2016 + Date Modified2021-01-16T10:40:03Z + Date Added2021-01-16T10:40:03Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3747934727 + Play Date UTC2022-10-06T17:58:47Z + Skip Count3 + Skip Date2022-08-13T09:45:51Z + Release Date2016-07-22T12:00:00Z + Artwork Count1 + Sort AlbumRadical $uicide - EP + Sort Artist$uicideboy$ + Sort NameMagazine + Persistent IDF10D98FF9BB53E21 + Explicit + Track TypeRemote + + 4951 + + Track ID4951 + NameRide + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumBlurryface + GenreAlternative + KindApple Music AAC audio file + Size7736695 + Total Time214505 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2015 + Date Modified2021-01-18T19:00:36Z + Date Added2021-01-18T19:00:36Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3763107808 + Play Date UTC2023-03-31T08:43:28Z + Skip Count4 + Skip Date2022-11-11T15:28:15Z + Release Date2015-05-12T07:00:00Z + Artwork Count1 + Sort AlbumBlurryface + Sort Artisttwenty one pilots + Sort NameRide + Persistent ID896941829540BD57 + Track TypeRemote + Apple Music + + 4953 + + Track ID4953 + NameChampion of Death + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumRadical $uicide - EP + GenreHip-Hop + KindAAC audio file + Size4873836 + Total Time116114 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2016 + Date Modified2021-01-19T20:04:30Z + Date Added2021-01-19T20:04:30Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3748457669 + Play Date UTC2022-10-12T19:14:29Z + Skip Count3 + Skip Date2022-06-01T11:03:14Z + Release Date2016-07-22T12:00:00Z + Artwork Count1 + Sort AlbumRadical $uicide - EP + Sort Artist$uicideboy$ + Sort NameChampion of Death + Persistent IDB4E97255ED11764B + Explicit + Track TypeRemote + + 4955 + + Track ID4955 + Name2nd Hand + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumKILL YOURSELF Part XII: The Dark Glacier Saga - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4439034 + Total Time123469 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2017 + Date Modified2021-01-19T20:12:03Z + Date Added2021-01-19T20:12:03Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3783076815 + Play Date UTC2023-11-17T11:40:15Z + Skip Count2 + Skip Date2022-11-25T21:58:36Z + Release Date2017-05-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumKILL YOURSELF Part XII: The Dark Glacier Saga - Single + Sort Artist$uicideboy$ + Sort Name2nd Hand + Persistent IDF3B277DBAE8AF3DA + Explicit + Track TypeRemote + Apple Music + + 4957 + + Track ID4957 + Name2 Hot 4 U (feat. $Uicdeboy$) + ArtistFat Nick + Album ArtistFat Nick + AlbumWhen the Lean Runs Out + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7132219 + Total Time199106 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2016 + Date Modified2021-01-19T21:58:13Z + Date Added2021-01-19T21:58:13Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3783492640 + Play Date UTC2023-11-22T07:10:40Z + Release Date2016-05-31T12:00:00Z + Artwork Count1 + Sort AlbumWhen the Lean Runs Out + Sort ArtistFat Nick + Sort Name2 Hot 4 U (feat. $Uicdeboy$) + Persistent ID639506DB9C1CDC6B + Explicit + Track TypeRemote + Apple Music + + 4959 + + Track ID4959 + Name33rd Blakk Glass + ArtistCity Morgue, ZillaKami & SosMula + Album ArtistCity Morgue, ZillaKami & SosMula + ComposerVinicius Sosa, Junius Rogers & Bouabdallah Nehari + AlbumCITY MORGUE VOL 1: HELL OR HIGH WATER + GenreMetal + KindApple Music AAC audio file + Size5514265 + Total Time150214 + Disc Number1 + Disc Count1 + Track Number13 + Track Count14 + Year2018 + Date Modified2021-01-20T11:17:12Z + Date Added2021-01-20T11:17:12Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3779176313 + Play Date UTC2023-10-03T08:11:53Z + Skip Count8 + Skip Date2022-10-22T09:10:42Z + Release Date2018-03-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumCITY MORGUE VOL 1: HELL OR HIGH WATER + Sort ArtistCity Morgue, ZillaKami & SosMula + Sort Name33rd Blakk Glass + Persistent IDAC4A5E598E03F3CC + Explicit + Track TypeRemote + Apple Music + + 4961 + + Track ID4961 + Name5000 Miles + ArtistLUI HILL + Album ArtistLUI HILL + ComposerPhilipp Rittmannsperger + AlbumLui Hill (Deluxe Edition) + GenreAlternative + KindApple Music AAC audio file + Size7864261 + Total Time222000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count16 + Year2017 + Date Modified2021-01-21T14:25:59Z + Date Added2021-01-21T14:25:59Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3781198136 + Play Date UTC2023-10-26T17:48:56Z + Skip Count1 + Skip Date2021-03-21T23:52:48Z + Release Date2017-11-17T12:00:00Z + Artwork Count1 + Sort AlbumLui Hill (Deluxe Edition) + Sort ArtistLUI HILL + Sort Name5000 Miles + Persistent IDFF798BD6E9DD6F9A + Track TypeRemote + Apple Music + + 4963 + + Track ID4963 + NameI'm Not the Only One + ArtistSam Smith + Album ArtistSam Smith + ComposerSam Smith & James Napier + AlbumIn the Lonely Hour + GenrePop + KindApple Music AAC audio file + Size8561348 + Total Time239317 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2014 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3783668057 + Play Date UTC2023-11-24T07:54:17Z + Skip Count3 + Skip Date2022-10-24T14:09:25Z + Release Date2014-01-01T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumIn the Lonely Hour + Sort ArtistSam Smith + Sort NameI'm Not the Only One + Persistent ID091707D9A26B9C9D + Track TypeRemote + Apple Music + + 4965 + + Track ID4965 + NameEverything + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom (Deluxe Video Edition) + GenreSinger/Songwriter + KindApple Music AAC audio file + Size10498159 + Total Time285507 + Disc Number1 + Disc Count1 + Track Number4 + Track Count17 + Year2011 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781534686 + Play Date UTC2023-10-30T15:18:06Z + Skip Count5 + Skip Date2022-12-08T12:56:20Z + Release Date2011-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumEvery Kingdom (Deluxe Video Edition) + Sort ArtistBen Howard + Sort NameEverything + Persistent ID35D1E7E9D4DFE672 + Track TypeRemote + Apple Music + + 4967 + + Track ID4967 + NameThe Central Hotel of Mine + ArtistFreddy Madson + Album ArtistFreddy Madson + ComposerFrederik Schultz Madsen & Rasmus Elk Olsen + AlbumRocket for Your Skyline - EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size6667772 + Total Time190849 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2015 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783711713 + Play Date UTC2023-11-24T20:01:53Z + Release Date2015-08-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRocket for Your Skyline - EP + Sort ArtistFreddy Madson + Sort NameCentral Hotel of Mine + Persistent IDF26AC3DA0927D7AC + Track TypeRemote + Apple Music + + 4969 + + Track ID4969 + NameDon't + ArtistEd Sheeran + Album ArtistEd Sheeran + ComposerBenjamin Levin & Ed Sheeran + Albumx (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size7851016 + Total Time219840 + Disc Number1 + Disc Count1 + Track Number4 + Track Count16 + Year2014 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3757407359 + Play Date UTC2023-01-24T09:15:59Z + Skip Count1 + Skip Date2023-01-16T14:47:14Z + Release Date2014-06-20T07:00:00Z + Artwork Count1 + Sort Albumx (Deluxe Edition) + Sort ArtistEd Sheeran + Sort NameDon't + Persistent ID67D4A0956A8048BB + Track TypeRemote + Apple Music + + 4971 + + Track ID4971 + NameI’m So Sorry + ArtistImagine Dragons + Album ArtistImagine Dragons + ComposerImagine Dragons + AlbumSmoke + Mirrors (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size8292347 + Total Time230347 + Disc Number1 + Disc Count1 + Track Number4 + Track Count21 + Year2015 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3779310133 + Play Date UTC2023-10-04T21:22:13Z + Skip Count3 + Skip Date2022-10-31T18:03:19Z + Release Date2014-09-18T12:00:00Z + Artwork Count1 + Sort AlbumSmoke + Mirrors (Deluxe) + Sort ArtistImagine Dragons + Sort NameI’m So Sorry + Persistent ID5B7CEFF8AB8623B5 + Track TypeRemote + Apple Music + + 4973 + + Track ID4973 + NameCancer + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerBob Bryar, Frank Iero, Gerard Way, Michael Way & Ramond Toro + AlbumCancer - Single + GenreAlternative + KindApple Music AAC audio file + Size8114684 + Total Time236827 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3780492730 + Play Date UTC2023-10-18T13:52:10Z + Release Date2016-09-14T07:00:00Z + Artwork Count1 + Sort AlbumCancer - Single + Sort Artisttwenty one pilots + Sort NameCancer + Persistent ID35A0ADF2F7B7EC30 + Track TypeRemote + Apple Music + + 4975 + + Track ID4975 + NameLet It Go + ArtistThe Neighbourhood + Album ArtistThe Neighbourhood + ComposerEmile Haynie, Jesse, Jeremiah Freedman, Zachary Abels, Bryan Sammis & Michael Margott + AlbumI Love You. + GenreAlternative + KindApple Music AAC audio file + Size7122075 + Total Time197267 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2013 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3779200516 + Play Date UTC2023-10-03T14:55:16Z + Skip Count1 + Skip Date2021-03-21T09:44:31Z + Release Date2013-01-14T08:00:00Z + Artwork Count1 + Sort AlbumI Love You. + Sort Album ArtistNeighbourhood + Sort ArtistNeighbourhood + Sort NameLet It Go + Persistent ID5E13D26367EFA042 + Track TypeRemote + Apple Music + + 4977 + + Track ID4977 + NameSweater Weather + ArtistThe Neighbourhood + Album ArtistThe Neighbourhood + ComposerJesse, Zachary Abels & Jeremiah Freedman + AlbumI Love You. + GenreAlternative + KindApple Music AAC audio file + Size8588251 + Total Time240400 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2012 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3783778335 + Play Date UTC2023-11-25T14:32:15Z + Release Date2012-12-03T08:00:00Z + Artwork Count1 + Sort AlbumI Love You. + Sort Album ArtistNeighbourhood + Sort ArtistNeighbourhood + Sort NameSweater Weather + Persistent ID8992299521DB2616 + Track TypeRemote + Apple Music + + 4979 + + Track ID4979 + NameW.D.Y.W.F.M? + ArtistThe Neighbourhood + Album ArtistThe Neighbourhood + ComposerJesse, Emile Haynie, Zachary Abels, Jeremiah Freedman, Michael Margott & Bryan Sammis + AlbumI Love You. + GenreAlternative + KindApple Music AAC audio file + Size9319337 + Total Time259413 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2013 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3781205563 + Play Date UTC2023-10-26T19:52:43Z + Release Date2013-04-22T07:00:00Z + Artwork Count1 + Sort AlbumI Love You. + Sort Album ArtistNeighbourhood + Sort ArtistNeighbourhood + Sort NameW.D.Y.W.F.M? + Persistent IDD8E880CAA130D649 + Track TypeRemote + Apple Music + + 4981 + + Track ID4981 + NameTalking To the Moon + ArtistBruno Mars + Album ArtistBruno Mars + ComposerAlbert Winkler, Ari Levine, Bruno Mars, Jeff Bhasker & Philip Lawrence + AlbumDoo-Wops & Hooligans + GenrePop + KindApple Music AAC audio file + Size8213190 + Total Time217867 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2010 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3783669245 + Play Date UTC2023-11-24T08:14:05Z + Skip Count1 + Skip Date2023-06-19T15:22:06Z + Release Date2010-10-04T07:00:00Z + Artwork Count1 + Sort AlbumDoo-Wops & Hooligans + Sort ArtistBruno Mars + Sort NameTalking To the Moon + Persistent IDFA66547502F35429 + Track TypeRemote + Apple Music + + 4983 + + Track ID4983 + NameSedated + ArtistHozier + Album ArtistHozier + ComposerAndrew Hozier-Byrne + AlbumHozier + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7430961 + Total Time207669 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2014 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3783775133 + Play Date UTC2023-11-25T13:38:53Z + Release Date2014-05-20T12:00:00Z + Artwork Count1 + Sort AlbumHozier + Sort ArtistHozier + Sort NameSedated + Persistent ID6C45E2675162D67F + Track TypeRemote + Apple Music + + 4985 + + Track ID4985 + NameTrouble + ArtistColdplay + Album ArtistColdplay + ComposerGuy Berryman, Will Champion, Chris Martin, Jon Buckland & Jonny Buckland + AlbumParachutes + GenreAlternative + KindApple Music AAC audio file + Size9642045 + Total Time270731 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2000 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3780294917 + Play Date UTC2023-10-16T06:55:17Z + Skip Count1 + Skip Date2021-02-28T16:22:35Z + Release Date2000-07-10T07:00:00Z + Loved + Artwork Count1 + Sort AlbumParachutes + Sort ArtistColdplay + Sort NameTrouble + Persistent ID14F206A7E892BCF1 + Track TypeRemote + Apple Music + + 4987 + + Track ID4987 + NameThree Tree Town + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumOld Pine - EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7615142 + Total Time216024 + Disc Number1 + Disc Count1 + Track Number4 + Track Count4 + Year2011 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3781202261 + Play Date UTC2023-10-26T18:57:41Z + Release Date2011-01-01T12:00:00Z + Artwork Count1 + Sort AlbumOld Pine - EP + Sort ArtistBen Howard + Sort NameThree Tree Town + Persistent ID822A0056DD4C7204 + Track TypeRemote + Apple Music + + 4989 + + Track ID4989 + NameRiot Van + ArtistArctic Monkeys + Album ArtistArctic Monkeys + ComposerArctic Monkeys + AlbumWhatever People Say I Am, That's What I'm Not + GenreAlternative + KindApple Music AAC audio file + Size4918767 + Total Time134933 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2006 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3779310268 + Play Date UTC2023-10-04T21:24:28Z + Release Date2006-01-23T12:00:00Z + Artwork Count1 + Sort AlbumWhatever People Say I Am, That's What I'm Not + Sort ArtistArctic Monkeys + Sort NameRiot Van + Persistent ID76DF166C8E28F25A + Track TypeRemote + Apple Music + + 4991 + + Track ID4991 + NameThe Scientist + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Will Champion, Guy Berryman & Jonny Buckland + AlbumA Rush of Blood to the Head + GenreAlternative + KindApple Music AAC audio file + Size11491964 + Total Time308930 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2002 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781384102 + Play Date UTC2023-10-28T21:28:22Z + Release Date2002-08-26T07:00:00Z + Loved + Artwork Count1 + Sort AlbumRush of Blood to the Head + Sort ArtistColdplay + Sort NameScientist + Persistent IDB33CE404D31E1C35 + Track TypeRemote + Apple Music + + 4993 + + Track ID4993 + NameAlways In My Head + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumGhost Stories + GenreAlternative + KindApple Music AAC audio file + Size8182968 + Total Time216633 + Disc Number1 + Disc Count1 + Track Number1 + Track Count9 + Year2014 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3770102198 + Play Date UTC2023-06-20T07:36:38Z + Skip Count1 + Skip Date2021-09-11T21:50:18Z + Release Date2014-05-19T07:00:00Z + Artwork Count1 + Sort AlbumGhost Stories + Sort ArtistColdplay + Sort NameAlways In My Head + Persistent ID320B312EB85BC874 + Track TypeRemote + Apple Music + + 4995 + + Track ID4995 + NameTo Be Alone + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumBurgh Island - EP + GenreSinger/Songwriter + KindApple Music AAC audio file + Size11748858 + Total Time337802 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2011 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3767793365 + Play Date UTC2023-05-24T14:16:05Z + Skip Count1 + Skip Date2023-05-31T15:26:03Z + Release Date2011-10-03T12:00:00Z + Artwork Count1 + Sort AlbumBurgh Island - EP + Sort ArtistBen Howard + Sort NameTo Be Alone + Persistent IDEBE27333DC52F277 + Track TypeRemote + Apple Music + + 4997 + + Track ID4997 + NameMama Said + ArtistMetallica + Album ArtistMetallica + ComposerLars Ulrich & James Hetfield + AlbumLoad + GenreMetal + KindApple Music AAC audio file + Size11868348 + Total Time319707 + Disc Number1 + Disc Count1 + Track Number11 + Track Count14 + Year1996 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3770982204 + Play Date UTC2023-06-30T12:03:24Z + Release Date1996-06-01T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLoad + Sort ArtistMetallica + Sort NameMama Said + Persistent IDC804911417FE3DD3 + Track TypeRemote + Apple Music + + 4999 + + Track ID4999 + NameI Wanna Be Yours + ArtistArctic Monkeys + Album ArtistArctic Monkeys + ComposerArctic Monkeys & John Cooper Clarke + AlbumAM + GenreAlternative + KindApple Music AAC audio file + Size6752729 + Total Time184019 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2013 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3780134900 + Play Date UTC2023-10-14T10:28:20Z + Skip Count2 + Skip Date2021-05-05T20:24:32Z + Release Date2013-09-09T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumAM + Sort ArtistArctic Monkeys + Sort NameI Wanna Be Yours + Persistent ID8C3967FDE80470BE + Track TypeRemote + Apple Music + + 5001 + + Track ID5001 + NameDown With Me + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh, Casey Harris & Adam Levin + AlbumLove Songs Drug Songs - EP + GenreAlternative + KindApple Music AAC audio file + Size8266868 + Total Time217893 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2013 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3779311388 + Play Date UTC2023-10-04T21:43:08Z + Release Date2013-01-01T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLove Songs Drug Songs - EP + Sort ArtistX Ambassadors + Sort NameDown With Me + Persistent ID16BF7D7E2A29D70D + Track TypeRemote + Apple Music + + 5003 + + Track ID5003 + NameHeathens + Artisttwenty one pilots + Album ArtistVarious Artists + AlbumSuicide Squad: The Album + GenreAlternative + KindApple Music AAC audio file + Size7478635 + Total Time195920 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2016 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3780772932 + Play Date UTC2023-10-21T19:42:12Z + Skip Count1 + Skip Date2022-05-22T22:00:06Z + Release Date2016-06-16T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Compilation + Artwork Count1 + Sort AlbumSuicide Squad: The Album + Sort Artisttwenty one pilots + Sort NameHeathens + Persistent IDCC570DC22873B092 + Track TypeRemote + Apple Music + + 5005 + + Track ID5005 + NameI've Told You Now + ArtistSam Smith + Album ArtistSam Smith + ComposerSam Smith & Eg White + AlbumIn the Lonely Hour (Drowning Shadows Videos Edition) + GenrePop + KindApple Music AAC audio file + Size7747298 + Total Time210369 + Disc Number1 + Disc Count1 + Track Number6 + Track Count23 + Year2014 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3781616948 + Play Date UTC2023-10-31T14:09:08Z + Skip Count1 + Skip Date2023-02-12T20:16:07Z + Release Date2014-05-26T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumIn the Lonely Hour (Drowning Shadows Videos Edition) + Sort ArtistSam Smith + Sort NameI've Told You Now + Persistent IDE41B9BC9803EA339 + Track TypeRemote + Apple Music + + 5007 + + Track ID5007 + NameWires + ArtistThe Neighbourhood + Album ArtistThe Neighbourhood + ComposerJesse, Zachary Abels & Jeremy Freedman + AlbumI'm Sorry... - Single + GenreAlternative + KindApple Music AAC audio file + Size6939238 + Total Time193080 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2012 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3783665618 + Play Date UTC2023-11-24T07:13:38Z + Release Date2012-05-07T12:00:00Z + Artwork Count1 + Sort AlbumI'm Sorry... - Single + Sort Album ArtistNeighbourhood + Sort ArtistNeighbourhood + Sort NameWires + Persistent IDF6FEFE9EEF6F0721 + Track TypeRemote + Apple Music + + 5009 + + Track ID5009 + NameDo I Wanna Know? + ArtistArctic Monkeys + Album ArtistArctic Monkeys + ComposerArctic Monkeys + AlbumAM + GenreAlternative + KindApple Music AAC audio file + Size9826650 + Total Time272394 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2013 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783753417 + Play Date UTC2023-11-25T07:36:57Z + Skip Count2 + Skip Date2022-08-19T16:07:52Z + Release Date2013-06-19T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAM + Sort ArtistArctic Monkeys + Sort NameDo I Wanna Know? + Persistent ID9EE77D103C0796EE + Track TypeRemote + Apple Music + + 5011 + + Track ID5011 + NameAll Night + Artistmishlawi + Album Artistmishlawi + ComposerTarik Mishlawi & Zach Gayden + AlbumAll Night - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6267135 + Total Time174555 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3781194138 + Play Date UTC2023-10-26T16:42:18Z + Skip Count1 + Skip Date2021-09-27T21:49:19Z + Release Date2016-01-03T12:00:00Z + Artwork Count1 + Sort AlbumAll Night - Single + Sort Artistmishlawi + Sort NameAll Night + Persistent ID6D0D0971FB83A57B + Explicit + Track TypeRemote + Apple Music + + 5013 + + Track ID5013 + NameNothing Else Matters + ArtistMetallica + Album ArtistMetallica + ComposerJames Hetfield & Lars Ulrich + AlbumMetallica + GenreMetal + KindApple Music AAC audio file + Size13313505 + Total Time388733 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year1991 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3778760326 + Play Date UTC2023-09-28T12:38:46Z + Skip Count1 + Skip Date2021-03-21T18:52:20Z + Release Date1991-08-12T12:00:00Z + Artwork Count1 + Sort AlbumMetallica + Sort ArtistMetallica + Sort NameNothing Else Matters + Persistent ID03C40896EF81ED01 + Track TypeRemote + Apple Music + + 5015 + + Track ID5015 + NameShining + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh, Casey Harris, Adam Levin & Alex Da Kid + AlbumThe Reason - EP + GenreAlternative + KindApple Music AAC audio file + Size7859419 + Total Time220964 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year2014 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3780498631 + Play Date UTC2023-10-18T15:30:31Z + Skip Count3 + Skip Date2022-08-19T16:08:08Z + Release Date2014-01-24T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumReason - EP + Sort ArtistX Ambassadors + Sort NameShining + Persistent ID4B88F70B81A39703 + Track TypeRemote + Apple Music + + 5017 + + Track ID5017 + NameJust Take My Heart + ArtistMr. Big + Album ArtistMr. Big + ComposerAlex Call, Andre Pessis & Eric Martin + AlbumBig, Bigger, Biggest! The Best of Mr. Big + GenreHard Rock + KindApple Music AAC audio file + Size9218159 + Total Time263427 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year1991 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783494346 + Play Date UTC2023-11-22T07:39:06Z + Skip Count1 + Skip Date2022-04-23T21:00:27Z + Release Date1991-03-12T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumBig, Bigger, Biggest! The Best of Mr. Big + Sort ArtistMr. Big + Sort NameJust Take My Heart + Persistent ID44968C739E4F4149 + Track TypeRemote + Apple Music + + 5019 + + Track ID5019 + NameGrenade + ArtistBruno Mars + Album ArtistBruno Mars + ComposerAndrew Wyatt, Ari Levine, Brody Brown, Bruno Mars, Claude Kelly & Philip Lawrence + AlbumDoo-Wops & Hooligans (Deluxe Version) + GenrePop + KindApple Music AAC audio file + Size7860808 + Total Time222091 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2010 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3779316419 + Play Date UTC2023-10-04T23:06:59Z + Skip Count3 + Skip Date2022-03-15T17:40:13Z + Release Date2010-09-28T07:00:00Z + Loved + Artwork Count1 + Sort AlbumDoo-Wops & Hooligans (Deluxe Version) + Sort ArtistBruno Mars + Sort NameGrenade + Persistent IDF0CA3DEE155A1862 + Track TypeRemote + Apple Music + + 5021 + + Track ID5021 + Name505 + ArtistArctic Monkeys + Album ArtistArctic Monkeys + ComposerArctic Monkeys + AlbumFavourite Worst Nightmare + GenreAlternative + KindApple Music AAC audio file + Size9511222 + Total Time253587 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2007 + Date Modified2021-01-22T14:53:07Z + Date Added2021-01-22T14:53:07Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3780854483 + Play Date UTC2023-10-22T18:21:23Z + Skip Count1 + Skip Date2022-03-15T18:00:04Z + Release Date2007-04-20T07:00:00Z + Loved + Artwork Count1 + Sort AlbumFavourite Worst Nightmare + Sort ArtistArctic Monkeys + Sort Name505 + Persistent ID836D280A30A2BCFA + Track TypeRemote + Apple Music + + 5023 + + Track ID5023 + NameCocoa Hooves + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDavid Bayley + AlbumLeaflings - EP + GenreAlternative + KindAAC audio file + Size8807132 + Total Time252907 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2012 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3770488178 + Play Date UTC2023-06-24T18:49:38Z + Skip Count1 + Skip Date2021-09-12T19:42:17Z + Release Date2012-05-28T07:00:00Z + Album Loved + Artwork Count1 + Sort AlbumLeaflings - EP + Sort ArtistGlass Animals + Sort NameCocoa Hooves + Persistent ID2625D246624DBE6E + Track TypeRemote + + 5025 + + Track ID5025 + NameCollider + ArtistX Ambassadors & Tom Morello + Album ArtistX Ambassadors + ComposerTom Morello, Sam Harris, Adam Levin, Noah Feldshuh & Casey Harris + AlbumVHS 2.0 + GenreAlternative + KindApple Music AAC audio file + Size7234872 + Total Time198973 + Disc Number1 + Disc Count1 + Track Number16 + Track Count18 + Year2016 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3758185130 + Play Date UTC2023-02-02T09:18:50Z + Skip Count3 + Skip Date2022-11-29T09:07:23Z + Release Date2016-06-10T12:00:00Z + Rating60 + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumVHS 2.0 + Sort ArtistX Ambassadors & Tom Morello + Sort NameCollider + Persistent ID095DC8C7F4F8A089 + Track TypeRemote + Apple Music + + 5027 + + Track ID5027 + NameToes + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDavid Bayley + AlbumZaba + GenreAlternative + KindApple Music AAC audio file + Size9074049 + Total Time254640 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2014 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3781186349 + Play Date UTC2023-10-26T14:32:29Z + Release Date2014-01-01T12:00:00Z + Artwork Count1 + Sort AlbumZABA + Sort ArtistGlass Animals + Sort NameToes + Persistent IDAB91CDCA65939409 + Track TypeRemote + Apple Music + + 5029 + + Track ID5029 + NameAs You Are + ArtistRag'n'Bone Man + Album ArtistRag'n'Bone Man + ComposerRory Graham, Jamie Scott & Jonny Coffer + AlbumHuman (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size8052372 + Total Time228510 + Disc Number1 + Disc Count1 + Track Number11 + Track Count19 + Year2017 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3779902974 + Play Date UTC2023-10-11T18:02:54Z + Release Date2017-02-10T08:00:00Z + Artwork Count1 + Sort AlbumHuman (Deluxe) + Sort ArtistRag'n'Bone Man + Sort NameAs You Are + Persistent ID609A26BBDF163D3C + Track TypeRemote + Apple Music + + 5031 + + Track ID5031 + NameLook On Down from the Bridge + ArtistMazzy Star + Album ArtistMazzy Star + AlbumAmong My Swan + GenreRock + KindApple Music AAC audio file + Size10313931 + Total Time287893 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year1996 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3781615617 + Play Date UTC2023-10-31T13:46:57Z + Skip Count1 + Skip Date2021-09-11T21:31:28Z + Release Date1996-01-01T12:00:00Z + Artwork Count1 + Sort AlbumAmong My Swan + Sort ArtistMazzy Star + Sort NameLook On Down from the Bridge + Persistent ID14CA0B0167C53FDF + Track TypeRemote + Apple Music + + 5033 + + Track ID5033 + NameEye of the Storm + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh, Casey Harris & Adam Levin + AlbumVHS 2.0 + GenreAlternative + KindApple Music AAC audio file + Size8083128 + Total Time226480 + Disc Number1 + Disc Count1 + Track Number18 + Track Count18 + Year2016 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3771828470 + Play Date UTC2023-07-10T07:07:50Z + Skip Count1 + Skip Date2022-10-02T17:28:45Z + Release Date2016-06-10T12:00:00Z + Rating100 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumVHS 2.0 + Sort ArtistX Ambassadors + Sort NameEye of the Storm + Persistent IDFC30810084FF4647 + Track TypeRemote + Apple Music + + 5035 + + Track ID5035 + NameNara + Artistalt-J + Album Artistalt-J + AlbumThis Is All Yours + GenreAlternative + KindAAC audio file + Size10913503 + Total Time296058 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2014 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count39 + Play Date3734976371 + Play Date UTC2022-05-09T18:26:11Z + Release Date2014-09-22T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization2762 + Artwork Count1 + Sort AlbumThis Is All Yours + Sort Artistalt-J + Sort NameNara + Persistent IDCCFAD98BE1DC15D8 + Track TypeRemote + Apple Music + + 5037 + + Track ID5037 + NameDon't Stay + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Ryan Tedder, Casey Harris, Adam Levine & Zach Skelton + AlbumDon’t Stay - Single + GenreAlternative + KindApple Music AAC audio file + Size6925092 + Total Time189800 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781181907 + Play Date UTC2023-10-26T13:18:27Z + Release Date2018-02-02T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumDon’t Stay - Single + Sort ArtistX Ambassadors + Sort NameDon't Stay + Persistent ID6DB6994067CDF74E + Track TypeRemote + Apple Music + + 5039 + + Track ID5039 + NameGet Home + ArtistBastille + Album ArtistBastille + ComposerDan Smith + AlbumAll This Bad Blood + GenreAlternative + KindApple Music AAC audio file + Size6732024 + Total Time191187 + Disc Number1 + Disc Count2 + Track Number12 + Track Count12 + Year2011 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3781057961 + Play Date UTC2023-10-25T02:52:41Z + Skip Count1 + Skip Date2021-09-25T06:23:52Z + Release Date2011-11-14T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumAll This Bad Blood + Sort ArtistBastille + Sort NameGet Home + Persistent ID0527182A3D27421B + Track TypeRemote + Apple Music + + 5041 + + Track ID5041 + NameWonderful Life + ArtistSmith & Burrows + Album ArtistSmith & Burrows + ComposerColin Vearncombe + AlbumFunny Looking Angels + GenreAlternative + KindApple Music AAC audio file + Size9905863 + Total Time262867 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2011 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count42 + Play Date3783409380 + Play Date UTC2023-11-21T08:03:00Z + Skip Count2 + Skip Date2022-10-27T15:12:44Z + Release Date2011-11-25T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumFunny Looking Angels + Sort ArtistSmith & Burrows + Sort NameWonderful Life + Persistent ID42995F82DD5ACA0C + Track TypeRemote + Apple Music + + 5043 + + Track ID5043 + NameLove Lockdown + ArtistGlass Animals + Album ArtistGlass Animals + ComposerKanye West, Jeff Bhasker, Jenny-Bea Englishman, Malik Yusef Jones & LaNeah + AlbumPools - EP + GenreAlternative + KindApple Music AAC audio file + Size5934550 + Total Time161893 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2014 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3773206687 + Play Date UTC2023-07-26T05:58:07Z + Skip Date2022-10-17T05:42:20Z + Release Date2014-01-01T12:00:00Z + Artwork Count1 + Sort AlbumPools - EP + Sort ArtistGlass Animals + Sort NameLove Lockdown + Persistent IDAE4D1900EF4EB923 + Track TypeRemote + Apple Music + + 5045 + + Track ID5045 + NameMatilda + Artistalt-J + Album Artistalt-J + ComposerJoe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green/Charlie Andrew + AlbumAn Awesome Wave + GenreAlternative + KindAAC audio file + Size8240114 + Total Time228711 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2012 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count45 + Play Date3783712240 + Play Date UTC2023-11-24T20:10:40Z + Skip Count6 + Skip Date2022-03-29T12:32:35Z + Release Date2012-01-01T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Loved + Normalization2887 + Artwork Count1 + Sort AlbumAwesome Wave + Sort Artistalt-J + Sort NameMatilda + Persistent IDD1E1142E584FE7FD + Track TypeRemote + Apple Music + + 5047 + + Track ID5047 + NameShe Will Be Loved + ArtistMaroon 5 + Album ArtistMaroon 5 + ComposerAdam Levine & James Valentine + AlbumSongs About Jane + GenreRock + KindApple Music AAC audio file + Size9322028 + Total Time258469 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2002 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783776814 + Play Date UTC2023-11-25T14:06:54Z + Release Date2002-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSongs About Jane + Sort ArtistMaroon 5 + Sort NameShe Will Be Loved + Persistent ID7A5096D679A427EF + Track TypeRemote + Apple Music + + 5049 + + Track ID5049 + NameDeadcrush + Artistalt-J + Album Artistalt-J + AlbumRELAXER + GenreAlternative + KindAAC audio file + Size8194156 + Total Time232013 + Disc Number1 + Disc Count1 + Track Number5 + Track Count8 + Year2017 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3782990681 + Play Date UTC2023-11-16T11:44:41Z + Skip Count2 + Skip Date2021-12-10T13:47:57Z + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumRELAXER + Sort Artistalt-J + Sort NameDeadcrush + Persistent IDD2C1F66AFDB31D67 + Track TypeRemote + Apple Music + + 5051 + + Track ID5051 + NameWDWGILY + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumSYML + GenreAlternative + KindApple Music AAC audio file + Size7847350 + Total Time218312 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2018 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3781621360 + Play Date UTC2023-10-31T15:22:40Z + Release Date2018-08-31T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSYML + Sort ArtistSYML + Sort NameWDWGILY + Persistent IDD97E169325C28364 + Track TypeRemote + Apple Music + + 5053 + + Track ID5053 + NameYuNg BrAtZ + ArtistXXXTENTACION + Album ArtistXXXTENTACION + AlbumRevenge + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3895548 + Total Time101851 + Disc Number1 + Disc Count1 + Track Number6 + Track Count7 + Year2016 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count25 + Play Date3781397219 + Play Date UTC2023-10-29T01:06:59Z + Release Date2016-07-04T07:00:00Z + Artwork Count1 + Sort AlbumRevenge + Sort ArtistXXXTENTACION + Sort NameYuNg BrAtZ + Persistent IDE00E44632BA97C86 + Explicit + Track TypeRemote + Apple Music + + 5055 + + Track ID5055 + NameExxus + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDavid Bayley + AlbumGlass Animals - EP + GenreAlternative + KindApple Music AAC audio file + Size8960052 + Total Time256042 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2013 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3781093759 + Play Date UTC2023-10-25T12:49:19Z + Release Date2013-01-01T12:00:00Z + Artwork Count1 + Sort AlbumGlass Animals - EP + Sort ArtistGlass Animals + Sort NameExxus + Persistent ID31D476CAFFC2C245 + Track TypeRemote + Apple Music + + 5057 + + Track ID5057 + NameThis Wild Darkness + ArtistMoby + Album ArtistMoby + ComposerMoby + AlbumEverything Was Beautiful, and Nothing Hurt + GenreElectronic + KindApple Music AAC audio file + Size8726175 + Total Time249280 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2018 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3780295167 + Play Date UTC2023-10-16T06:59:27Z + Skip Count1 + Skip Date2021-05-11T19:33:32Z + Release Date2018-03-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumEverything Was Beautiful, and Nothing Hurt + Sort ArtistMoby + Sort NameThis Wild Darkness + Persistent ID29469BEB8922F254 + Track TypeRemote + Apple Music + + 5059 + + Track ID5059 + NameUnconsolable + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh, Casey Harris & Adam Levin + AlbumLove Songs Drug Songs - EP + GenreAlternative + KindApple Music AAC audio file + Size8087595 + Total Time216720 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2013 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3776232606 + Play Date UTC2023-08-30T06:30:06Z + Release Date2013-01-01T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLove Songs Drug Songs - EP + Sort ArtistX Ambassadors + Sort NameUnconsolable + Persistent ID21BD5A1390AEEDF2 + Track TypeRemote + Apple Music + + 5061 + + Track ID5061 + NameMagic + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumGhost Stories + GenreAlternative + KindApple Music AAC audio file + Size10059722 + Total Time285014 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2014 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3765361640 + Play Date UTC2023-04-26T10:47:20Z + Release Date2014-03-03T08:00:00Z + Artwork Count1 + Sort AlbumGhost Stories + Sort ArtistColdplay + Sort NameMagic + Persistent ID810D913FA93AD3DA + Track TypeRemote + Apple Music + + 5063 + + Track ID5063 + NameLeipzig + ArtistBalthazar + Album ArtistBalthazar + ComposerMaarten Devoldere and Jinte Deprez + AlbumLeipzig - Single + GenreAlternative + KindApple Music AAC audio file + Size6178401 + Total Time160382 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2014 + Date Modified2021-01-22T14:53:09Z + Date Added2021-01-22T14:53:09Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3780499020 + Play Date UTC2023-10-18T15:37:00Z + Skip Count1 + Skip Date2021-11-02T15:51:13Z + Release Date2014-01-13T12:00:00Z + Artwork Count1 + Sort AlbumLeipzig - Single + Sort ArtistBalthazar + Sort NameLeipzig + Persistent IDD267AF67B14F7E8B + Track TypeRemote + Apple Music + + 5065 + + Track ID5065 + NameDinosaurs in Love (feat. Tom Rosenthal) + ArtistFenn Rosenthal + Album ArtistFenn Rosenthal + ComposerTom Rosenthal + AlbumDinosaurs in Love (feat. Tom Rosenthal) - Single + GenreChildren's Music + KindApple Music AAC audio file + Size2628647 + Total Time66570 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-22T19:27:25Z + Date Added2021-01-22T19:27:25Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3779630848 + Play Date UTC2023-10-08T14:27:28Z + Skip Count5 + Skip Date2022-10-23T10:52:25Z + Release Date2020-01-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDinosaurs in Love (feat. Tom Rosenthal) - Single + Sort ArtistFenn Rosenthal + Sort NameDinosaurs in Love (feat. Tom Rosenthal) + Persistent IDDD0EE02D4545EB88 + Track TypeRemote + Apple Music + + 5067 + + Track ID5067 + NameInnocent Man + ArtistRag'n'Bone Man + Album ArtistRag'n'Bone Man + ComposerRory Graham, Simon Aldred & Ben Ash + AlbumHuman (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size6619386 + Total Time186657 + Disc Number1 + Disc Count1 + Track Number2 + Track Count19 + Year2017 + Date Modified2021-01-22T19:28:27Z + Date Added2021-01-22T19:28:27Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781208350 + Play Date UTC2023-10-26T20:39:10Z + Skip Count1 + Skip Date2023-11-25T13:28:37Z + Release Date2017-02-10T08:00:00Z + Artwork Count1 + Sort AlbumHuman (Deluxe) + Sort ArtistRag'n'Bone Man + Sort NameInnocent Man + Persistent IDD93AED08CA8B0E01 + Track TypeRemote + Apple Music + + 5069 + + Track ID5069 + NameLive Life + ArtistMatt Easton + Album ArtistMatt Easton + AlbumLive Life - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9459806 + Total Time269636 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2010 + Date Modified2021-01-22T19:34:31Z + Date Added2021-01-22T19:34:31Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3779897834 + Play Date UTC2023-10-11T16:37:14Z + Release Date2010-01-01T12:00:00Z + Artwork Count1 + Sort AlbumLive Life - Single + Sort ArtistMatt Easton + Sort NameLive Life + Persistent ID3550DD9C0307B549 + Explicit + Track TypeRemote + Apple Music + + 5071 + + Track ID5071 + NameWith My Friends + ArtistChris Travis + Album ArtistChris Travis + ComposerChris Travis + AlbumArt of Destruction + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4854863 + Total Time132015 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2015 + Date Modified2021-01-23T09:44:43Z + Date Added2021-01-23T09:44:43Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781208616 + Play Date UTC2023-10-26T20:43:36Z + Skip Count1 + Skip Date2021-09-09T21:53:51Z + Release Date2015-08-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumArt of Destruction + Sort ArtistChris Travis + Sort NameWith My Friends + Persistent IDF66914BDD18DF876 + Explicit + Track TypeRemote + Apple Music + + 5073 + + Track ID5073 + NameBrooklyn + ArtistWoodkid + Album ArtistWoodkid + ComposerWoodkid + AlbumIron EP + GenreAlternative + KindApple Music AAC audio file + Size7514210 + Total Time210440 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2011 + Date Modified2021-01-23T09:47:04Z + Date Added2021-01-23T09:47:04Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3770288262 + Play Date UTC2023-06-22T11:17:42Z + Release Date2011-03-28T12:00:00Z + Artwork Count1 + Sort AlbumIron EP + Sort ArtistWoodkid + Sort NameBrooklyn + Persistent ID5396C90F5541A4A1 + Track TypeRemote + Apple Music + + 5075 + + Track ID5075 + NameLost It To Trying + ArtistSon Lux + Album ArtistSon Lux + AlbumLanterns + GenreAlternative + KindApple Music AAC audio file + Size10727830 + Total Time282587 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2013 + Date Modified2021-01-23T09:59:36Z + Date Added2021-01-23T09:59:36Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781621644 + Play Date UTC2023-10-31T15:27:24Z + Release Date2013-10-29T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLanterns + Sort ArtistSon Lux + Sort NameLost It To Trying + Persistent ID6A3ACE7E9D4E8091 + Track TypeRemote + Apple Music + + 5077 + + Track ID5077 + NameDirty + Artistgrandson + Album Artistgrandson + ComposerChester Krupa Carbone, Gabe Simon, Jordan Benjamin & Kevin Hissink + AlbumDeath Of An Optimist + GenreAlternative + KindApple Music AAC audio file + Size7475653 + Total Time208296 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2020 + Date Modified2021-01-23T13:49:51Z + Date Added2021-01-23T13:49:51Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3769667454 + Play Date UTC2023-06-15T06:50:54Z + Skip Count1 + Skip Date2023-10-12T16:38:38Z + Release Date2020-09-23T07:00:00Z + Artwork Count1 + Sort AlbumDeath Of An Optimist + Sort Artistgrandson + Sort NameDirty + Persistent ID5F7211A69529DB38 + Track TypeRemote + Apple Music + + 5079 + + Track ID5079 + NameHalf Italian (Live from 2020) + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumAngel Miners & the Lightning Riders Live from 2020 + GenreAlternative + KindApple Music AAC audio file + Size9418790 + Total Time263750 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2020 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3767676330 + Play Date UTC2023-05-23T05:45:30Z + Skip Count2 + Skip Date2022-11-24T20:31:46Z + Release Date2020-11-20T12:00:00Z + Artwork Count1 + Sort AlbumAngel Miners & the Lightning Riders Live from 2020 + Sort ArtistAWOLNATION + Sort NameHalf Italian (Live from 2020) + Persistent ID8964E442640DD0AA + Explicit + Track TypeRemote + Apple Music + + 5081 + + Track ID5081 + NameSelf Care + ArtistMac Miller + Album ArtistMac Miller + ComposerDacoury Natche, Destin Route, Devonte Hynes, E. Dan, Erica Wright, Jahmal Cantero, Malcolm McCormick, Peter Mudge & Tyler Mason + AlbumSwimming + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12108495 + Total Time345119 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2018 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3781570104 + Play Date UTC2023-10-31T01:08:24Z + Release Date2018-07-13T07:00:00Z + Artwork Count1 + Sort AlbumSwimming + Sort ArtistMac Miller + Sort NameSelf Care + Persistent IDCE23CFDAEC726B5D + Explicit + Track TypeRemote + Apple Music + + 5083 + + Track ID5083 + NameHigh Enough + ArtistK.Flay + Album ArtistK.Flay + ComposerKristine Flaherty & Mike Elizondo + AlbumEvery Where Is Some Where + GenreAlternative + KindApple Music AAC audio file + Size8142365 + Total Time231600 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2017 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781352094 + Play Date UTC2023-10-28T12:34:54Z + Skip Count2 + Skip Date2023-06-07T15:13:35Z + Release Date2017-04-04T12:00:00Z + Artwork Count1 + Sort AlbumEvery Where Is Some Where + Sort ArtistK.Flay + Sort NameHigh Enough + Persistent IDA48DD12D4CB10BEC + Track TypeRemote + Apple Music + + 5085 + + Track ID5085 + NameThe Trouble with Us + ArtistMarcus Marr & Chet Faker + Album ArtistMarcus Marr & Chet Faker + ComposerMarcus Annesley & Nick Murphy + AlbumWork - EP + GenreElectronic + KindApple Music AAC audio file + Size7902265 + Total Time222067 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2015 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3767091800 + Play Date UTC2023-05-16T11:23:20Z + Skip Count1 + Skip Date2021-01-23T14:55:37Z + Release Date2015-10-16T12:00:00Z + Artwork Count1 + Sort AlbumWork - EP + Sort ArtistMarcus Marr & Chet Faker + Sort NameTrouble with Us + Persistent IDE84DD64CC923BA66 + Track TypeRemote + Apple Music + + 5087 + + Track ID5087 + NameFocus (feat. 21 Savage) + ArtistBazzi + Album ArtistBazzi + Composer21 Savage, Andrew Bazzi, David Guy, Kevin White, Leon Michels, Mike Woods & Thomas Brenneck + AlbumSoul Searching + GenrePop + KindApple Music AAC audio file + Size5630074 + Total Time155134 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2019 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3781319402 + Play Date UTC2023-10-28T03:30:02Z + Release Date2019-06-13T07:00:00Z + Artwork Count1 + Sort AlbumSoul Searching + Sort ArtistBazzi + Sort NameFocus (feat. 21 Savage) + Persistent ID3CE675A3A94C2BF9 + Explicit + Track TypeRemote + Apple Music + + 5089 + + Track ID5089 + NameFOOL'S GOLD + ArtistAries + Album ArtistAries + ComposerAries, Tim Aspan & Henry Nichols + AlbumFOOL'S GOLD - Single + GenrePop + KindApple Music AAC audio file + Size5488883 + Total Time149843 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3783782121 + Play Date UTC2023-11-25T15:35:21Z + Skip Count1 + Skip Date2022-06-24T12:42:43Z + Release Date2020-11-06T12:00:00Z + Artwork Count1 + Sort AlbumFOOL'S GOLD - Single + Sort ArtistAries + Sort NameFOOL'S GOLD + Persistent IDCB6B03011661996C + Track TypeRemote + Apple Music + + 5091 + + Track ID5091 + NameIn My Head + ArtistPeter Manos + Album ArtistPeter Manos + ComposerPeter Manos + AlbumIn My Head - Single + GenreAlternative + KindApple Music AAC audio file + Size7673658 + Total Time214533 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3783002636 + Play Date UTC2023-11-16T15:03:56Z + Skip Count1 + Skip Date2021-09-25T19:00:55Z + Release Date2017-05-24T07:00:00Z + Loved + Artwork Count1 + Sort AlbumIn My Head - Single + Sort ArtistPeter Manos + Sort NameIn My Head + Persistent ID2C725D3CCACD505C + Track TypeRemote + Apple Music + + 5093 + + Track ID5093 + NameSailor Moon + ArtistAirospace + Album ArtistAirospace + ComposerAirospace + AlbumSailor Moon - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8385802 + Total Time240010 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3783077782 + Play Date UTC2023-11-17T11:56:22Z + Release Date2020-11-17T12:00:00Z + Artwork Count1 + Sort AlbumSailor Moon - Single + Sort ArtistAirospace + Sort NameSailor Moon + Persistent IDA8C9FD0ED59C4FC3 + Explicit + Track TypeRemote + Apple Music + + 5095 + + Track ID5095 + NameFalling + ArtistTrevor Daniel + Album ArtistTrevor Daniel + ComposerTrevor Daniel Neill, Danny Snodgrass Jr., Ryan Vojtesak, Kim Candilora II, Tristan Norton & Martin Kottmeier + AlbumNicotine + GenrePop + KindApple Music AAC audio file + Size5944499 + Total Time159382 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2018 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3782905133 + Play Date UTC2023-11-15T11:58:53Z + Release Date2018-10-05T12:00:00Z + Artwork Count1 + Sort AlbumNicotine + Sort ArtistTrevor Daniel + Sort NameFalling + Persistent IDC94ADD705C8F133B + Track TypeRemote + Apple Music + + 5097 + + Track ID5097 + NameHollow Life + ArtistCoast Modern + Album ArtistCoast Modern + AlbumCoast Modern + GenreRock + KindApple Music AAC audio file + Size8485142 + Total Time237880 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2015 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3768410055 + Play Date UTC2023-05-31T17:34:15Z + Skip Count2 + Skip Date2022-12-08T15:04:29Z + Release Date2015-10-02T12:00:00Z + Artwork Count1 + Sort AlbumCoast Modern + Sort ArtistCoast Modern + Sort NameHollow Life + Persistent IDA990B1C33407D374 + Track TypeRemote + Apple Music + + 5099 + + Track ID5099 + NameWISH YOU WELL + ArtistAmir Obè + ComposerMadhi Ahmed & A. Obie + AlbumNone of the Clocks Work + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6835668 + Total Time192612 + Disc Number1 + Disc Count1 + Track Number3 + Track Count7 + Year2017 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783672355 + Play Date UTC2023-11-24T09:05:55Z + Skip Count2 + Skip Date2022-06-21T04:58:16Z + Release Date2017-03-09T12:00:00Z + Sort AlbumNone of the Clocks Work + Sort ArtistAmir Obè + Sort NameWISH YOU WELL + Persistent IDA1702E3FA5EDB48A + Explicit + Track TypeRemote + Apple Music + + 5101 + + Track ID5101 + NameRunning Miles + ArtistHippie Sabotage + Album ArtistHippie Sabotage + ComposerJ. Saurer & K. Saurer + AlbumRunning Miles - Single + GenreElectronic + KindApple Music AAC audio file + Size8863527 + Total Time255530 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3779240576 + Play Date UTC2023-10-04T02:02:56Z + Release Date2017-12-15T12:00:00Z + Artwork Count1 + Sort AlbumRunning Miles - Single + Sort ArtistHippie Sabotage + Sort NameRunning Miles + Persistent IDC92BE06E6561AE9D + Explicit + Track TypeRemote + Apple Music + + 5103 + + Track ID5103 + NameLet U Know + ArtistVIC MENSA & Jesse + Album ArtistVIC MENSA & Jesse + ComposerVictor Mensah, Edward Davis, Jesse, Donald Breedlove & Napoleon Crayton + AlbumLet U Know - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5860085 + Total Time159196 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3779317289 + Play Date UTC2023-10-04T23:21:29Z + Skip Count2 + Skip Date2022-08-16T14:57:18Z + Release Date2019-08-02T12:00:00Z + Artwork Count1 + Sort AlbumLet U Know - Single + Sort ArtistVIC MENSA & Jesse + Sort NameLet U Know + Persistent ID590F4E1470AB72A8 + Explicit + Track TypeRemote + Apple Music + + 5105 + + Track ID5105 + NameNippy + ArtistStudent 1 + Album ArtistStudent 1 + ComposerLulseged Afework + AlbumNippy - Single + GenreAlternative + KindApple Music AAC audio file + Size6895488 + Total Time189904 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3781193565 + Play Date UTC2023-10-26T16:32:45Z + Release Date2020-04-08T12:00:00Z + Artwork Count1 + Sort AlbumNippy - Single + Sort ArtistStudent 1 + Sort NameNippy + Persistent ID2A929AD185413EE2 + Explicit + Track TypeRemote + Apple Music + + 5107 + + Track ID5107 + NameWho Dat Boy (feat. A$AP Rocky) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma & Rakim Mayers + AlbumFlower Boy + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7426784 + Total Time205095 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2017 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3780905689 + Play Date UTC2023-10-23T08:34:49Z + Skip Count3 + Skip Date2023-01-08T22:31:58Z + Release Date2017-07-06T07:00:00Z + Loved + Artwork Count1 + Sort AlbumFlower Boy + Sort ArtistTyler, The Creator + Sort NameWho Dat Boy (feat. A$AP Rocky) + Persistent ID0A7C38E3155915D7 + Explicit + Track TypeRemote + Apple Music + + 5109 + + Track ID5109 + NameCandy (feat. Trippie Redd) + ArtistMachine Gun Kelly + Album ArtistMachine Gun Kelly + ComposerAnton Göransson, Colson Baker, Michael Lamar White IV, Thomas Brown, Issabella Sjöstrand, Charles Anderson & Michael Foster + AlbumHotel Diablo + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5801130 + Total Time156719 + Disc Number1 + Disc Count1 + Track Number11 + Track Count14 + Year2019 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3779863889 + Play Date UTC2023-10-11T07:11:29Z + Skip Count6 + Skip Date2022-11-25T21:54:14Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumHotel Diablo + Sort ArtistMachine Gun Kelly + Sort NameCandy (feat. Trippie Redd) + Persistent ID3D7D3551C52EE5C5 + Explicit + Track TypeRemote + Apple Music + + 5111 + + Track ID5111 + Name100 Rounds + ArtistFRVRFRIDAY + Album ArtistFRVRFRIDAY + ComposerTommy Ruhingubugi & Jausont David + Album100 Rounds - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4881233 + Total Time132739 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-23T14:36:08Z + Date Added2021-01-23T14:36:08Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783807076 + Play Date UTC2023-11-25T22:31:16Z + Release Date2020-03-12T12:00:00Z + Artwork Count1 + Sort Album100 Rounds - Single + Sort ArtistFRVRFRIDAY + Sort Name100 Rounds + Persistent ID479A2F1E41BE527D + Explicit + Track TypeRemote + Apple Music + + 5113 + + Track ID5113 + NameKeep On Keeping On' (feat. Brendon Urie) + ArtistTravie McCoy + Album ArtistTravie McCoy + ComposerButch Walker, Khari Cain & Travis McCoy + AlbumKeep On Keeping On (feat. Brendon Urie) - Single + GenrePop + KindApple Music AAC audio file + Size8747180 + Total Time245514 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2014 + Date Modified2021-01-23T15:55:13Z + Date Added2021-01-23T15:55:13Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3778571251 + Play Date UTC2023-09-26T08:07:31Z + Release Date2014-03-24T12:00:00Z + Artwork Count1 + Sort AlbumKeep On Keeping On (feat. Brendon Urie) - Single + Sort ArtistTravie McCoy + Sort NameKeep On Keeping On' (feat. Brendon Urie) + Persistent IDB3CA7BECC3781C76 + Track TypeRemote + Apple Music + + 5115 + + Track ID5115 + NameOidar + ArtistHether + Album ArtistHether + ComposerWilliam perliter + AlbumSticky Thumb + GenreAlternative + KindApple Music AAC audio file + Size7435482 + Total Time208500 + Disc Number1 + Disc Count1 + Track Number6 + Track Count8 + Year2021 + Date Modified2021-01-25T19:29:30Z + Date Added2021-01-25T19:29:30Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3779241890 + Play Date UTC2023-10-04T02:24:50Z + Release Date2021-01-15T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSticky Thumb + Sort ArtistHether + Sort NameOidar + Persistent ID79FF0577AD158BA7 + Track TypeRemote + Apple Music + + 5117 + + Track ID5117 + NameAmber + ArtistUnusual Demont + Album ArtistUnusual Demont + ComposerUnusual Demont + AlbumAmber - Single + GenrePop + KindApple Music AAC audio file + Size7677004 + Total Time211865 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-01-25T21:02:41Z + Date Added2021-01-25T21:02:41Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3760189350 + Play Date UTC2023-02-25T14:02:30Z + Skip Count4 + Skip Date2023-05-17T08:58:17Z + Release Date2020-08-11T12:00:00Z + Artwork Count1 + Sort AlbumAmber - Single + Sort ArtistUnusual Demont + Sort NameAmber + Persistent ID6E68FD86482D3CBC + Track TypeRemote + Apple Music + + 5119 + + Track ID5119 + NameThe Load + ArtistBarbarossa + Album ArtistBarbarossa + AlbumBloodlines + GenreAlternative + KindApple Music AAC audio file + Size8723774 + Total Time244760 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2012 + Date Modified2021-01-26T17:04:06Z + Date Added2021-01-26T17:04:06Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3780069528 + Play Date UTC2023-10-13T16:18:48Z + Release Date2012-09-09T12:00:00Z + Artwork Count1 + Sort AlbumBloodlines + Sort ArtistBarbarossa + Sort NameLoad + Persistent ID970BC3FCA37A0474 + Track TypeRemote + Apple Music + + 5121 + + Track ID5121 + NameNo Good in Goodbye + ArtistThe Script + Album ArtistThe Script + ComposerDaniel O'Donoghue, Mark Sheehan & James Barry + AlbumNo Sound Without Silence + GenrePop + KindApple Music AAC audio file + Size10903322 + Total Time307680 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2014 + Date Modified2021-01-28T16:34:27Z + Date Added2021-01-28T16:34:27Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3781079725 + Play Date UTC2023-10-25T08:55:25Z + Skip Date2022-10-05T20:42:59Z + Release Date2014-09-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNo Sound Without Silence + Sort Album ArtistScript + Sort ArtistScript + Sort NameNo Good in Goodbye + Persistent ID09EE8046F215A2A2 + Track TypeRemote + Apple Music + + 5123 + + Track ID5123 + NameStreets + ArtistDoja Cat + Album ArtistDoja Cat + ComposerAmala Zandile Dlamini, Dominique Logan, Darius Logan, Omari Grandberry, Christopher jefferies, Lydia Asrat, David Sprecher, Demarie Sheki & Theron Otis Feemster + AlbumHot Pink + GenreR&B/Soul + KindApple Music AAC audio file + Size8074080 + Total Time226978 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2019 + Date Modified2021-02-01T21:21:36Z + Date Added2021-02-01T21:21:36Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3770298160 + Play Date UTC2023-06-22T14:02:40Z + Skip Count4 + Skip Date2022-10-28T18:28:26Z + Release Date2019-11-07T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHot Pink + Sort ArtistDoja Cat + Sort NameStreets + Persistent ID5484CC7071EA7552 + Explicit + Track TypeRemote + Apple Music + + 5125 + + Track ID5125 + NameFriday, January 1st, 2021 + ArtistGurtyBeats + Album ArtistGurtyBeats + ComposerGurty Beats + AlbumFriday, January 1st, 2021 - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4740561 + Total Time129207 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-02-05T19:47:53Z + Date Added2021-02-05T19:47:53Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3767045475 + Play Date UTC2023-05-15T22:31:15Z + Release Date2021-01-01T12:00:00Z + Artwork Count1 + Sort AlbumFriday, January 1st, 2021 - Single + Sort ArtistGurtyBeats + Sort NameFriday, January 1st, 2021 + Persistent ID48C15EF9CBDFCAC4 + Track TypeRemote + Apple Music + + 5127 + + Track ID5127 + NameSummertime Sadness + ArtistLana Del Rey + Album ArtistLana Del Rey + ComposerLana Del Rey & Rick Nowels + AlbumBorn to Die - The Paradise Edition + GenreAlternative + KindApple Music AAC audio file + Size9173069 + Total Time265427 + Disc Number1 + Disc Count2 + Track Number11 + Track Count15 + Year2012 + Date Modified2021-02-06T22:14:23Z + Date Added2021-02-06T22:14:23Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3781267091 + Play Date UTC2023-10-27T12:58:11Z + Skip Count3 + Skip Date2022-11-23T17:48:49Z + Release Date2011-01-01T12:00:00Z + Artwork Count1 + Sort AlbumBorn to Die - The Paradise Edition + Sort ArtistLana Del Rey + Sort NameSummertime Sadness + Persistent ID9CE623DC69938D6B + Track TypeRemote + Apple Music + + 5129 + + Track ID5129 + NameHero + Artistpivargo & Marie + Album Artistpivargo & Marie + ComposerMario Eßwein + AlbumHero - Single + GenreHip-Hop/Rap + KindAAC audio file + Size7051287 + Total Time199170 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-02-07T14:28:17Z + Date Added2021-02-07T14:28:17Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3713892519 + Play Date UTC2021-09-07T17:48:39Z + Release Date2020-05-01T12:00:00Z + Artwork Count1 + Sort AlbumHero - Single + Sort Artistpivargo & Marie + Sort NameHero + Persistent IDC224275B7A80F935 + Explicit + Track TypeRemote + + 5131 + + Track ID5131 + NameDome (feat. Caleb Jacob) + ArtistState of Bliss + Album ArtistState of Bliss + ComposerAdam Gold + AlbumDome (feat. Caleb Jacob) - Single + GenreHip-Hop/Rap + KindAAC audio file + Size5880749 + Total Time163200 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-02-07T15:58:47Z + Date Added2021-02-07T15:58:47Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3715684772 + Play Date UTC2021-09-28T11:39:32Z + Skip Count1 + Skip Date2021-02-08T22:14:10Z + Release Date2020-02-08T12:00:00Z + Artwork Count1 + Sort AlbumDome (feat. Caleb Jacob) - Single + Sort ArtistState of Bliss + Sort NameDome (feat. Caleb Jacob) + Persistent ID8F0FC4A6B7BF3C26 + Explicit + Track TypeRemote + + 5133 + + Track ID5133 + NameRedbone + ArtistChildish Gambino + Album ArtistChildish Gambino + ComposerDonald Glover & Ludwig Göransson + Album"Awaken, My Love!" + GenreR&B/Soul + KindApple Music AAC audio file + Size11817848 + Total Time326933 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2016 + Date Modified2021-02-08T18:04:33Z + Date Added2021-02-08T18:04:33Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count15 + Play Date3783360017 + Play Date UTC2023-11-20T18:20:17Z + Skip Count8 + Skip Date2023-11-05T01:55:58Z + Release Date2016-11-17T12:00:00Z + Artwork Count1 + Sort Album"Awaken, My Love!" + Sort ArtistChildish Gambino + Sort NameRedbone + Persistent IDB13A8BB47605E366 + Explicit + Track TypeRemote + Apple Music + + 5135 + + Track ID5135 + NameCome Get Her + ArtistRae Sremmurd + Album ArtistRae Sremmurd + ComposerMike Williams, A. Hogan, A.Brown & K. Brown + AlbumSremmLife + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8578938 + Total Time212947 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2015 + Date Modified2021-02-09T06:39:43Z + Date Added2021-02-09T06:39:43Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781853395 + Play Date UTC2023-11-03T07:49:55Z + Skip Count1 + Skip Date2022-10-28T18:28:09Z + Release Date2015-01-06T12:00:00Z + Artwork Count1 + Sort AlbumSremmLife + Sort ArtistRae Sremmurd + Sort NameCome Get Her + Persistent IDD23BE335FD928D63 + Explicit + Track TypeRemote + Apple Music + + 5137 + + Track ID5137 + NameRolls Royce Umbrella (feat. Chris Brown) + ArtistClever + Album ArtistClever + ComposerJoshua Huie, JJ Stevens, Londn Blue & Karltin Bankz + AlbumRolls Royce Umbrella (feat. Chris Brown) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8234912 + Total Time233987 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-02-14T10:25:55Z + Date Added2021-02-14T10:25:55Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3781530209 + Play Date UTC2023-10-30T14:03:29Z + Skip Count4 + Skip Date2021-06-01T11:13:19Z + Release Date2021-02-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRolls Royce Umbrella (feat. Chris Brown) - Single + Sort ArtistClever + Sort NameRolls Royce Umbrella (feat. Chris Brown) + Persistent ID38246F5E4832D3AB + Explicit + Track TypeRemote + Apple Music + + 5139 + + Track ID5139 + NameA Little Opus + ArtistLittle Comets + Album ArtistLittle Comets + ComposerR. Coles & M. Coles + AlbumLife Is Elsewhere + GenreAlternative + KindApple Music AAC audio file + Size8491231 + Total Time227360 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2012 + Date Modified2021-02-15T05:10:21Z + Date Added2021-02-15T05:10:21Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3780910707 + Play Date UTC2023-10-23T09:58:27Z + Release Date2012-10-15T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLife Is Elsewhere + Sort ArtistLittle Comets + Sort NameLittle Opus + Persistent ID3D246A229809CFE9 + Track TypeRemote + Apple Music + + 5141 + + Track ID5141 + NameOut For You + ArtistColyer + Album ArtistColyer + ComposerSteven Colyer + AlbumOut For You - Single + GenreAlternative + KindApple Music AAC audio file + Size7129783 + Total Time196854 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2021-02-15T05:14:30Z + Date Added2021-02-15T05:14:30Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3776238190 + Play Date UTC2023-08-30T08:03:10Z + Skip Count1 + Skip Date2022-06-19T08:01:56Z + Release Date2015-08-25T12:00:00Z + Artwork Count1 + Sort AlbumOut For You - Single + Sort ArtistColyer + Sort NameOut For You + Persistent IDD7B788BB5E164938 + Track TypeRemote + Apple Music + + 5143 + + Track ID5143 + NameRosenrot + ArtistRammstein + GenreHeavy Metal + KindMPEG-4 video file + Size56111152 + Total Time247360 + Year2005 + Date Modified2021-02-15T21:57:12Z + Date Added2021-02-15T21:57:12Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3762331887 + Play Date UTC2023-03-22T09:11:27Z + Release Date2005-12-16T08:00:00Z + Artwork Count1 + Sort ArtistRammstein + Sort NameRosenrot + Persistent ID94DD56FC6C7AFF68 + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 5145 + + Track ID5145 + NameMein Herz brennt + ArtistRammstein + Album ArtistRammstein + ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel + AlbumMutter + GenreMetal + KindApple Music AAC audio file + Size10391081 + Total Time279893 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2001 + Date Modified2021-02-16T05:46:57Z + Date Added2021-02-16T05:46:57Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3782382619 + Play Date UTC2023-11-09T10:50:19Z + Release Date2001-04-02T12:00:00Z + Artwork Count1 + Sort AlbumMutter + Sort ArtistRammstein + Sort NameMein Herz brennt + Persistent ID4EA158B293932EFE + Track TypeRemote + Apple Music + + 5147 + + Track ID5147 + NameSonne + ArtistRammstein + Album ArtistRammstein + ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel + AlbumMutter + GenreMetal + KindApple Music AAC audio file + Size9815617 + Total Time272440 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2001 + Date Modified2021-02-16T05:53:34Z + Date Added2021-02-16T05:53:34Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3780907916 + Play Date UTC2023-10-23T09:11:56Z + Release Date2001-02-12T12:00:00Z + Artwork Count1 + Sort AlbumMutter + Sort ArtistRammstein + Sort NameSonne + Persistent IDBD6CA231188CF9D8 + Track TypeRemote + Apple Music + + 5149 + + Track ID5149 + NameIch will + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Till Lindemann, Paul Landers, Doktor Christian Lorenz, Christoph Doom Schneider & Oliver Riedel + AlbumMutter + GenreMetal + KindApple Music AAC audio file + Size8199020 + Total Time217107 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2001 + Date Modified2021-02-16T12:11:35Z + Date Added2021-02-16T12:11:35Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3782382835 + Play Date UTC2023-11-09T10:53:55Z + Skip Count4 + Skip Date2022-08-18T21:36:34Z + Release Date2001-04-02T12:00:00Z + Artwork Count1 + Sort AlbumMutter + Sort ArtistRammstein + Sort NameIch will + Persistent IDDCAB505154F0956F + Track TypeRemote + Apple Music + + 5151 + + Track ID5151 + NameMann gegen Mann + ArtistRammstein + Album ArtistRammstein + ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel + AlbumRosenrot + GenreMetal + KindApple Music AAC audio file + Size8983997 + Total Time230560 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2005 + Date Modified2021-02-16T12:23:07Z + Date Added2021-02-16T12:23:07Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3782388547 + Play Date UTC2023-11-09T12:29:07Z + Skip Count3 + Skip Date2023-02-25T18:40:30Z + Release Date2005-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumRosenrot + Sort ArtistRammstein + Sort NameMann gegen Mann + Persistent ID0B0660A07F2AE01A + Track TypeRemote + Apple Music + + 5153 + + Track ID5153 + NameMagnolia (feat. KirbLaGoop) + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumGray/Grey + GenreHip-Hop + KindAAC audio file + Size5741582 + Total Time158824 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2015 + Date Modified2021-02-25T08:20:45Z + Date Added2021-02-25T08:20:45Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3770187668 + Play Date UTC2023-06-21T07:21:08Z + Skip Count2 + Skip Date2022-08-26T19:43:23Z + Release Date2015-03-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGray/Grey + Sort Artist$uicideboy$ + Sort NameMagnolia (feat. KirbLaGoop) + Persistent IDE7A85A52660E05D7 + Explicit + Track TypeRemote + + 5155 + + Track ID5155 + NameGodzilla (feat. Juice WRLD) + ArtistEminem + Album ArtistEminem + ComposerM. Mathers, L. Resto, D. Doman, J. Higgins & A. Villasana + AlbumMusic To Be Murdered By - Side B (Deluxe Edition) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7497305 + Total Time210800 + Disc Number2 + Disc Count2 + Track Number7 + Track Count20 + Year2020 + Date Modified2021-02-25T13:10:30Z + Date Added2021-02-25T13:10:30Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3772781456 + Play Date UTC2023-07-21T07:50:56Z + Skip Count5 + Skip Date2022-12-05T21:41:39Z + Release Date2020-01-17T08:00:00Z + Artwork Count1 + Sort AlbumMusic To Be Murdered By - Side B (Deluxe Edition) + Sort ArtistEminem + Sort NameGodzilla (feat. Juice WRLD) + Persistent IDCAFB2C84D175888A + Explicit + Track TypeRemote + Apple Music + + 5157 + + Track ID5157 + Nameocean eyes + ArtistBillie Eilish + Album ArtistBillie Eilish + ComposerFINNEAS + Albumdont smile at me + GenreAlternative + KindApple Music AAC audio file + Size7182760 + Total Time200379 + Disc Number1 + Disc Count1 + Track Number7 + Track Count9 + Year2016 + Date Modified2021-02-25T23:53:18Z + Date Added2021-02-25T23:53:18Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3780841562 + Play Date UTC2023-10-22T14:46:02Z + Release Date2016-05-18T12:00:00Z + Artwork Count1 + Sort Albumdont smile at me + Sort ArtistBillie Eilish + Sort Nameocean eyes + Persistent IDFCAEFD2A668131A8 + Track TypeRemote + Apple Music + + 5159 + + Track ID5159 + NameHigh (feat. Elton John) + ArtistYoung Thug + Album ArtistYoung Thug + ComposerJeffrey Williams, Rex Kudo & Ryan Vojtesak + AlbumOn the Rvn - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7053757 + Total Time195160 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2018 + Date Modified2021-02-26T11:03:15Z + Date Added2021-02-26T11:03:15Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3783402043 + Play Date UTC2023-11-21T06:00:43Z + Skip Count1 + Skip Date2021-02-26T22:36:23Z + Release Date2018-09-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumOn the Rvn - EP + Sort ArtistYoung Thug + Sort NameHigh (feat. Elton John) + Persistent ID488D6FC84C87D5B1 + Explicit + Track TypeRemote + Apple Music + + 5161 + + Track ID5161 + NameSchnappi, das kleine Krokodil (Kids-Version) + ArtistDas singende Krokodil vom Nil + Album ArtistDas singende Krokodil vom Nil + AlbumDie schönsten Kinderlieder + GenreChildren's Music + KindApple Music AAC audio file + Size4813551 + Total Time128760 + Disc Number1 + Disc Count1 + Track Number1 + Track Count19 + Year2008 + Date Modified2021-03-01T21:41:02Z + Date Added2021-03-01T21:41:02Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count10 + Play Date3782980618 + Play Date UTC2023-11-16T08:56:58Z + Skip Count13 + Skip Date2023-07-26T07:15:10Z + Release Date2005-01-01T12:00:00Z + Artwork Count1 + Sort AlbumDie schönsten Kinderlieder + Sort ArtistDas singende Krokodil vom Nil + Sort NameSchnappi, das kleine Krokodil (Kids-Version) + Persistent IDB463C8113C9ADE5B + Track TypeRemote + Apple Music + + 5163 + + Track ID5163 + NameSurf Club + ArtistSAINt JHN + Album ArtistSAINt JHN + ComposerCarlos St. John & Lee Stashenko + AlbumCollection One + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8595628 + Total Time240761 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2018 + Date Modified2021-03-04T15:49:05Z + Date Added2021-03-04T15:49:05Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3776431172 + Play Date UTC2023-09-01T13:39:32Z + Skip Count2 + Skip Date2021-12-06T20:10:53Z + Release Date2018-03-30T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Compilation + Artwork Count1 + Sort AlbumCollection One + Sort ArtistSAINt JHN + Sort NameSurf Club + Persistent ID4AE80D5993E81606 + Explicit + Track TypeRemote + Apple Music + + 5165 + + Track ID5165 + NameNeeded Me + ArtistRihanna + Album ArtistRihanna + ComposerDijon McFarlane, Robyn Rihanna Fenty, Nick Audino, Lewis Hughes, Khaled Rohaim, Adam Feeney, B. Hazard, T. Warbrick, C. Hinshaw & D. Rachel + AlbumANTI (Deluxe) + GenrePop + KindApple Music AAC audio file + Size6793764 + Total Time191605 + Disc Number1 + Disc Count1 + Track Number7 + Track Count16 + Year2016 + Date Modified2021-03-04T16:16:58Z + Date Added2021-03-04T16:16:58Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3765359340 + Play Date UTC2023-04-26T10:09:00Z + Skip Count1 + Skip Date2021-04-02T10:10:37Z + Release Date2016-01-28T08:00:00Z + Artwork Count1 + Sort AlbumANTI (Deluxe) + Sort ArtistRihanna + Sort NameNeeded Me + Persistent IDE9BCE256E3C172F1 + Explicit + Track TypeRemote + Apple Music + + 5167 + + Track ID5167 + NameRoses + ArtistSAINt JHN + Album ArtistSAINt JHN + ComposerCarlos St. John, Lee Stashenko, PHILLIPS CARLOS ST. JOHN & STANSHENKO LEE + AlbumCollection One + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6379062 + Total Time173611 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2016 + Date Modified2021-03-04T16:26:10Z + Date Added2021-03-04T16:26:10Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3774742131 + Play Date UTC2023-08-13T00:28:51Z + Skip Count1 + Skip Date2021-03-06T15:08:37Z + Release Date2016-07-22T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Compilation + Artwork Count1 + Sort AlbumCollection One + Sort ArtistSAINt JHN + Sort NameRoses + Persistent IDBF62B480B975AA40 + Explicit + Track TypeRemote + Apple Music + + 5169 + + Track ID5169 + NameFRANCHISE (feat. Young Thug & M.I.A.) + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster, Jeffery Williams, Mathangi Arulpragasam, Teddy Walton, Chase Benjamin, Bernard Leverette, Gerald Tiller, Jamall Willingham & Maurice Gleaton + AlbumFRANCHISE (feat. Young Thug & M.I.A.) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7215143 + Total Time202795 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-03-07T17:32:38Z + Date Added2021-03-07T17:32:38Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3783340923 + Play Date UTC2023-11-20T13:02:03Z + Skip Count2 + Skip Date2022-02-01T12:31:30Z + Release Date2020-09-25T12:00:00Z + Artwork Count1 + Sort AlbumFRANCHISE (feat. Young Thug & M.I.A.) - Single + Sort ArtistTravis Scott + Sort NameFRANCHISE (feat. Young Thug & M.I.A.) + Persistent ID5BE63F0187E89B25 + Explicit + Track TypeRemote + Apple Music + + 5171 + + Track ID5171 + NameDoubt + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumBlurryface + GenreAlternative + KindApple Music AAC audio file + Size6892675 + Total Time191486 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2015 + Date Modified2021-03-07T17:36:25Z + Date Added2021-03-07T17:36:25Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781449600 + Play Date UTC2023-10-29T15:40:00Z + Skip Count2 + Skip Date2022-09-30T07:08:04Z + Release Date2015-05-17T07:00:00Z + Artwork Count1 + Sort AlbumBlurryface + Sort Artisttwenty one pilots + Sort NameDoubt + Persistent IDF70996C667E631D8 + Track TypeRemote + Apple Music + + 5173 + + Track ID5173 + NameGOD BLESS THE RATCHETS + ArtistSAINt JHN + Album ArtistSAINt JHN + ComposerCarlos St. John, hue: & Sham Joseph + AlbumCollection One + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7882711 + Total Time224681 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2018 + Date Modified2021-03-08T00:06:53Z + Date Added2021-03-08T00:06:53Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781394935 + Play Date UTC2023-10-29T00:28:55Z + Skip Count2 + Skip Date2022-04-30T07:26:48Z + Release Date2018-03-30T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumCollection One + Sort ArtistSAINt JHN + Sort NameGOD BLESS THE RATCHETS + Persistent ID194739C3D1A9E1AC + Explicit + Track TypeRemote + Apple Music + + 5175 + + Track ID5175 + NameWhen Winter Begins + Artistgrayera + Album Artistgrayera + ComposerJonathan Schlumper + AlbumWraith - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7146232 + Total Time209455 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2016 + Date Modified2021-03-08T10:06:22Z + Date Added2021-03-08T10:06:22Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3779201862 + Play Date UTC2023-10-03T15:17:42Z + Skip Count5 + Skip Date2022-11-11T18:24:22Z + Release Date2016-08-16T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWraith - EP + Sort Artistgrayera + Sort NameWhen Winter Begins + Persistent IDA05720EED6461D66 + Track TypeRemote + Apple Music + + 5177 + + Track ID5177 + NameLovenote + ArtistBladee + Album ArtistBladee + AlbumEversince + GenreAlternative + KindApple Music AAC audio file + Size7198808 + Total Time195720 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2016 + Date Modified2021-03-08T10:35:42Z + Date Added2021-03-08T10:35:42Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count27 + Play Date3780854678 + Play Date UTC2023-10-22T18:24:38Z + Release Date2016-05-25T12:00:00Z + Artwork Count1 + Sort AlbumEversince + Sort ArtistBladee + Sort NameLovenote + Persistent ID185155B69FF9B88C + Track TypeRemote + Apple Music + + 5179 + + Track ID5179 + NameNeverSaidItWouldBeEasy + ArtistSurrenderDorothy + Album ArtistSurrenderDorothy + AlbumBreathingExercise + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7852189 + Total Time226000 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2018 + Date Modified2021-03-08T10:57:29Z + Date Added2021-03-08T10:57:29Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3770297932 + Play Date UTC2023-06-22T13:58:52Z + Release Date2018-06-08T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBreathingExercise + Sort ArtistSurrenderDorothy + Sort NameNeverSaidItWouldBeEasy + Persistent IDEEAA4019E4F0B59D + Track TypeRemote + Apple Music + + 5181 + + Track ID5181 + NameOne Day at a Time (feat. BONES) + ArtistDrew The Architect + Album ArtistDrew The Architect + ComposerDrew The Architect + AlbumOne Day at a Time (feat. BONES) - Single + GenrePop + KindApple Music AAC audio file + Size6515768 + Total Time186667 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-03-08T12:17:48Z + Date Added2021-03-08T12:17:48Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3781079179 + Play Date UTC2023-10-25T08:46:19Z + Skip Count2 + Skip Date2021-04-02T21:14:36Z + Release Date2019-12-10T12:00:00Z + Artwork Count1 + Sort AlbumOne Day at a Time (feat. BONES) - Single + Sort ArtistDrew The Architect + Sort NameOne Day at a Time (feat. BONES) + Persistent IDE206908C545EA1EF + Track TypeRemote + Apple Music + + 5183 + + Track ID5183 + NameDamp + ArtistRozz Dyliams + Album ArtistRozz Dyliams + ComposerRozz Dyliams + AlbumDylvia Roska + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8876617 + Total Time253283 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2017 + Date Modified2021-03-08T12:42:58Z + Date Added2021-03-08T12:42:58Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3761060179 + Play Date UTC2023-03-07T15:56:19Z + Skip Count10 + Skip Date2023-03-27T08:53:06Z + Release Date2017-01-12T12:00:00Z + Artwork Count1 + Sort AlbumDylvia Roska + Sort ArtistRozz Dyliams + Sort NameDamp + Persistent ID70DE13C03FF1D071 + Explicit + Track TypeRemote + Apple Music + + 5185 + + Track ID5185 + NameWhatCouldPossiblyGoWrong + ArtistSurrenderDorothy + Album ArtistSurrenderDorothy + AlbumNobodyWantsMe - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4293331 + Total Time114440 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2001 + Date Modified2021-03-08T18:11:54Z + Date Added2021-03-08T18:11:54Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3760858290 + Play Date UTC2023-03-05T07:51:30Z + Release Date2018-06-08T12:00:00Z + Artwork Count1 + Sort AlbumNobodyWantsMe - EP + Sort ArtistSurrenderDorothy + Sort NameWhatCouldPossiblyGoWrong + Persistent IDC942ED0ED278A93F + Track TypeRemote + Apple Music + + 5187 + + Track ID5187 + NameMorning Sex + ArtistRalph Castelli + Album ArtistRalph Castelli + ComposerCole Carmody & Iler Stoe + AlbumLong Distance - EP + GenreAlternative + KindApple Music AAC audio file + Size6202049 + Total Time175313 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2019 + Date Modified2021-03-09T08:30:10Z + Date Added2021-03-09T08:30:10Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783450325 + Play Date UTC2023-11-21T19:25:25Z + Skip Count1 + Skip Date2022-10-10T13:34:36Z + Release Date2019-06-07T12:00:00Z + Artwork Count1 + Sort AlbumLong Distance - EP + Sort ArtistRalph Castelli + Sort NameMorning Sex + Persistent ID8CF9925CF870B2A0 + Track TypeRemote + Apple Music + + 5189 + + Track ID5189 + NameStuck + ArtistImagine Dragons + Album ArtistImagine Dragons + ComposerJayson Dezuzio, Alexander Grant, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman + AlbumOrigins (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size6881362 + Total Time190850 + Disc Number1 + Disc Count1 + Track Number11 + Track Count15 + Year2018 + Date Modified2021-03-09T08:40:04Z + Date Added2021-03-09T08:40:04Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3779311170 + Play Date UTC2023-10-04T21:39:30Z + Release Date2018-11-09T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumOrigins (Deluxe) + Sort ArtistImagine Dragons + Sort NameStuck + Persistent ID61C4E41AA310B87C + Track TypeRemote + Apple Music + + 5191 + + Track ID5191 + NameCome Over (feat. James Fauntleroy) + ArtistNipsey Hussle + Album ArtistNipsey Hussle + AlbumCrenshaw + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7808386 + Total Time219733 + Disc Number1 + Disc Count1 + Track Number16 + Track Count21 + Year2013 + Date Modified2021-03-09T12:27:46Z + Date Added2021-03-09T12:27:46Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3776346462 + Play Date UTC2023-08-31T14:07:42Z + Release Date2013-10-08T12:00:00Z + Artwork Count1 + Sort AlbumCrenshaw + Sort ArtistNipsey Hussle + Sort NameCome Over (feat. James Fauntleroy) + Persistent ID35ADE0A8AA649ABA + Explicit + Track TypeRemote + Apple Music + + 5193 + + Track ID5193 + NameSign of the Times + ArtistHarry Styles + Album ArtistHarry Styles + ComposerHarry Styles, Jeff Bhasker, Mitch Rowland, Ryan Nasci, Alex Salibian & Tyler Johnson + AlbumHarry Styles + GenrePop + KindApple Music AAC audio file + Size11794676 + Total Time340707 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2017 + Date Modified2021-03-11T13:02:21Z + Date Added2021-03-11T13:02:21Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781317514 + Play Date UTC2023-10-28T02:58:34Z + Release Date2017-04-07T07:00:00Z + Artwork Count1 + Sort AlbumHarry Styles + Sort ArtistHarry Styles + Sort NameSign of the Times + Persistent ID31C7454475435EF0 + Track TypeRemote + Apple Music + + 5195 + + Track ID5195 + NameFallen + ArtistJaden + Album ArtistJaden + ComposerJaden & T. Thompson + AlbumSYRE + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9324424 + Total Time262474 + Disc Number1 + Disc Count1 + Track Number13 + Track Count17 + Year2016 + Date Modified2021-03-16T17:10:00Z + Date Added2021-03-16T17:10:00Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3772018778 + Play Date UTC2023-07-12T11:59:38Z + Skip Count1 + Skip Date2022-06-24T12:42:28Z + Release Date2016-12-05T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSYRE + Sort ArtistJaden + Sort NameFallen + Persistent IDA19EE98DEE3177FC + Track TypeRemote + Apple Music + + 5197 + + Track ID5197 + NameAntidote + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster, Ebony Oshunrinde, Bryan Van Mierlo, Thomas Brenneck, David Guy, Leon Michels, Nicholas Movshon & Homer Steinweiss + AlbumRodeo (Expanded Edition) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9259062 + Total Time262705 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2015 + Date Modified2021-03-16T23:21:14Z + Date Added2021-03-16T23:21:14Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3761500722 + Play Date UTC2023-03-12T18:18:42Z + Release Date2015-07-29T07:00:00Z + Artwork Count1 + Sort AlbumRodeo (Expanded Edition) + Sort ArtistTravis Scott + Sort NameAntidote + Persistent IDF103A74AA4F6D49A + Explicit + Track TypeRemote + Apple Music + + 5199 + + Track ID5199 + NameWest Coast + ArtistThe Neighbourhood + Album ArtistThe Neighbourhood + ComposerJesse, Zachary Abels, Jeremy Freedman, Michael Margott & Bryan Sammis + AlbumThe Love Collection - Single + GenreAlternative + KindApple Music AAC audio file + Size8897057 + Total Time253520 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2013 + Date Modified2021-03-17T07:47:12Z + Date Added2021-03-17T07:47:12Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783683987 + Play Date UTC2023-11-24T12:19:47Z + Skip Count2 + Skip Date2022-08-06T07:02:39Z + Release Date2013-12-10T08:00:00Z + Artwork Count1 + Sort AlbumLove Collection - Single + Sort Album ArtistNeighbourhood + Sort ArtistNeighbourhood + Sort NameWest Coast + Persistent ID3E69C5DC18B54AAC + Track TypeRemote + Apple Music + + 5201 + + Track ID5201 + NameNow I'm up to My Neck with Offers + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumKILL YOURSELF Part XX: The Infinity Saga - Single + GenreHip-Hop + KindApple Music AAC audio file + Size6142376 + Total Time167015 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2017 + Date Modified2021-03-17T14:39:59Z + Date Added2021-03-17T14:39:59Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3780309551 + Play Date UTC2023-10-16T10:59:11Z + Release Date2017-09-11T12:00:00Z + Artwork Count1 + Sort AlbumKILL YOURSELF Part XX: The Infinity Saga - Single + Sort Artist$uicideboy$ + Sort NameNow I'm up to My Neck with Offers + Persistent IDD294F5E50B943282 + Explicit + Track TypeRemote + Apple Music + + 5203 + + Track ID5203 + NameNightmare + ArtistHalsey + Album ArtistHalsey + ComposerAshley Frangipane, Benjamin Levin, Magnus August Hoiberg, Nathan Perez, Elena Kiper, Martin Kierszenbaum, Sergio Galoyan & Trevor Horn + AlbumNightmare - Single + GenreAlternative + KindApple Music AAC audio file + Size8287264 + Total Time231999 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-03-19T13:16:31Z + Date Added2021-03-19T13:16:31Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3782981518 + Play Date UTC2023-11-16T09:11:58Z + Skip Count1 + Skip Date2021-03-31T17:56:02Z + Release Date2019-05-17T12:00:00Z + Artwork Count1 + Sort AlbumNightmare - Single + Sort ArtistHalsey + Sort NameNightmare + Persistent ID502A39C6F6C954F2 + Explicit + Track TypeRemote + Apple Music + + 5205 + + Track ID5205 + NameStarboy (feat. Daft Punk) + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerAbel Tesfaye, Thomas Bangalter, Guy-Manuel de Homem-Christo, Martin McKinney, Henry Walter & Jason Quenneville + AlbumStarboy + GenreR&B/Soul + KindApple Music AAC audio file + Size8184214 + Total Time230461 + Disc Number1 + Disc Count1 + Track Number1 + Track Count18 + Year2016 + Date Modified2021-03-19T13:46:46Z + Date Added2021-03-19T13:46:46Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3772618528 + Play Date UTC2023-07-19T10:35:28Z + Skip Count1 + Skip Date2021-03-20T22:38:25Z + Release Date2016-09-21T12:00:00Z + Artwork Count1 + Sort AlbumStarboy + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort NameStarboy (feat. Daft Punk) + Persistent ID8E58E9F944E254A0 + Explicit + Track TypeRemote + Apple Music + + 5207 + + Track ID5207 + NameThe Yawning Grave + ArtistLord Huron + Album ArtistLord Huron + ComposerLord Huron + AlbumStrange Trails + GenreAlternative + KindApple Music AAC audio file + Size7355840 + Total Time192906 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2015 + Date Modified2021-03-22T20:23:15Z + Date Added2021-03-22T20:23:15Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3770217489 + Play Date UTC2023-06-21T15:38:09Z + Release Date2015-04-07T12:00:00Z + Loved + Artwork Count1 + Sort AlbumStrange Trails + Sort ArtistLord Huron + Sort NameYawning Grave + Persistent IDEB9AB053B84F3A25 + Track TypeRemote + Apple Music + + 5209 + + Track ID5209 + NameOh No Pedro + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumFenn + GenreContemporary Singer/Songwriter + KindApple Music AAC audio file + Size5872289 + Total Time162005 + Disc Number1 + Disc Count1 + Track Number6 + Track Count15 + Year2017 + Date Modified2021-03-22T20:26:56Z + Date Added2021-03-22T20:26:56Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783708747 + Play Date UTC2023-11-24T19:12:27Z + Skip Count3 + Skip Date2021-09-11T21:15:44Z + Release Date2017-05-26T12:00:00Z + Artwork Count1 + Sort AlbumFenn + Sort ArtistTom Rosenthal + Sort NameOh No Pedro + Persistent ID5C41A15B4C58D940 + Track TypeRemote + Apple Music + + 5211 + + Track ID5211 + NameCigarette Duet + ArtistPrincess Chelsea + Album ArtistPrincess Chelsea + ComposerRR + AlbumLil' Golden Book + GenreAlternative + KindApple Music AAC audio file + Size10530084 + Total Time260013 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2011 + Date Modified2021-03-29T04:45:39Z + Date Added2021-03-29T04:45:39Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3781176181 + Play Date UTC2023-10-26T11:43:01Z + Skip Count2 + Skip Date2021-03-31T18:58:52Z + Release Date2011-05-02T12:00:00Z + Normalization2690 + Artwork Count1 + Sort AlbumLil' Golden Book + Sort ArtistPrincess Chelsea + Sort NameCigarette Duet + Persistent IDF69AB2B603A1836F + Track TypeRemote + Apple Music + + 5213 + + Track ID5213 + NameMoby Dick + ArtistJakey + Album ArtistJakey + ComposerJacob Matthew Christensen + AlbumMoby Dick - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7005426 + Total Time195491 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2021-03-29T06:00:51Z + Date Added2021-03-29T06:00:51Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3781397630 + Play Date UTC2023-10-29T01:13:50Z + Skip Count8 + Skip Date2022-08-19T15:22:30Z + Release Date2017-09-29T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMoby Dick - Single + Sort ArtistJakey + Sort NameMoby Dick + Persistent IDC99DBDCBD8A295CB + Explicit + Track TypeRemote + Apple Music + + 5215 + + Track ID5215 + NameChill Bill (feat. J. Davi$ & Spooks) + ArtistRob $tone + Album ArtistRob $tone + ComposerJaylen Robinson, Javan Davis, Antonio Carrillo, Bernard Herrmann & Christopher Rowe + AlbumChill Bill (feat. J. Davi$ & Spooks) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6477181 + Total Time177184 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2021-03-30T21:54:18Z + Date Added2021-03-30T21:54:18Z + Bit Rate256 + Sample Rate44100 + Play Count104 + Play Date3774099429 + Play Date UTC2023-08-05T13:57:09Z + Skip Count1 + Skip Date2021-09-05T20:41:33Z + Release Date2016-06-17T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumChill Bill (feat. J. Davi$ & Spooks) - Single + Sort ArtistRob $tone + Sort NameChill Bill (feat. J. Davi$ & Spooks) + Persistent IDEA64B6A19A22E528 + Explicit + Track TypeRemote + Apple Music + + 5217 + + Track ID5217 + NameMine + ArtistBazzi + Album ArtistBazzi + ComposerAndrew Bazzi, Kevin White & Mike Woods + AlbumCOSMIC + GenrePop + KindApple Music AAC audio file + Size4934385 + Total Time131064 + Disc Number1 + Disc Count1 + Track Number14 + Track Count16 + Year2017 + Date Modified2021-03-31T19:00:10Z + Date Added2021-03-31T19:00:10Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783669377 + Play Date UTC2023-11-24T08:16:17Z + Skip Count1 + Skip Date2021-04-02T15:41:21Z + Release Date2017-10-12T07:00:00Z + Artwork Count1 + Sort AlbumCOSMIC + Sort ArtistBazzi + Sort NameMine + Persistent ID9F732F855E335871 + Explicit + Track TypeRemote + Apple Music + + 5219 + + Track ID5219 + NameI'm No Good + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + GenreAlternative + KindAAC audio file + Size7227704 + Total Time193306 + Disc Number1 + Disc Count1 + Track Number16 + Track Count41 + Year2021 + Date Modified2021-04-01T10:27:16Z + Date Added2021-04-01T10:27:16Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3727468082 + Play Date UTC2022-02-11T20:48:02Z + Release Date2021-03-15T07:00:00Z + Sort AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + Sort ArtistAWOLNATION + Sort NameI'm No Good + Persistent ID621BF6E13692E352 + Track TypeRemote + + 5221 + + Track ID5221 + NameThiskidsnotalright + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + GenreAlternative + KindAAC audio file + Size5961657 + Total Time161200 + Disc Number1 + Disc Count1 + Track Number18 + Track Count41 + Year2011 + Date Modified2021-04-01T12:12:40Z + Date Added2021-04-01T12:12:40Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3733771384 + Play Date UTC2022-04-25T19:43:04Z + Release Date2011-03-15T12:00:00Z + Artwork Count1 + Sort AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + Sort ArtistAWOLNATION + Sort NameThiskidsnotalright + Persistent ID589FE605A64EC055 + Explicit + Track TypeRemote + + 5223 + + Track ID5223 + NameCannibals + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + GenreAlternative + KindAAC audio file + Size5400064 + Total Time148372 + Disc Number1 + Disc Count1 + Track Number15 + Track Count41 + Year2021 + Date Modified2021-04-01T12:16:16Z + Date Added2021-04-01T12:16:16Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3735140810 + Play Date UTC2022-05-11T16:06:50Z + Release Date2021-03-15T07:00:00Z + Sort AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + Sort ArtistAWOLNATION + Sort NameCannibals + Persistent ID58357345FFE49B7C + Track TypeRemote + + 5225 + + Track ID5225 + NameSwinging from the Castles + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno & Cameron Duddy + AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + GenreAlternative + KindApple Music AAC audio file + Size6755744 + Total Time184507 + Disc Number1 + Disc Count1 + Track Number22 + Track Count41 + Year2011 + Date Modified2021-04-01T12:31:02Z + Date Added2021-04-01T12:31:02Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783668242 + Play Date UTC2023-11-24T07:57:22Z + Skip Count2 + Skip Date2021-04-27T13:15:12Z + Release Date2011-03-15T07:00:00Z + Artwork Count1 + Sort AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + Sort ArtistAWOLNATION + Sort NameSwinging from the Castles + Persistent IDADB6DF4C316749DE + Track TypeRemote + Apple Music + + 5227 + + Track ID5227 + NameSail (Live in Columbus) + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + GenreAlternative + KindAAC audio file + Size19474745 + Total Time572305 + Disc Number1 + Disc Count1 + Track Number26 + Track Count41 + Year2021 + Date Modified2021-04-01T14:12:46Z + Date Added2021-04-01T14:12:46Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3733165976 + Play Date UTC2022-04-18T19:32:56Z + Skip Count2 + Skip Date2021-09-13T17:15:17Z + Release Date2021-03-15T07:00:00Z + Loved + Sort AlbumMegalithic Symphony (10th Anniversary Deluxe Edition) + Sort ArtistAWOLNATION + Sort NameSail (Live in Columbus) + Persistent IDFBCE39E26A5EA9C9 + Track TypeRemote + + 5229 + + Track ID5229 + NameThe Drive + ArtistEveryone You Know + Album ArtistEveryone You Know + ComposerHarvey Kirkby & Rhys Kirkby-Cox + AlbumThe Drive - Single + GenreAlternative + KindApple Music AAC audio file + Size8139396 + Total Time229217 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-04-02T14:57:49Z + Date Added2021-04-02T14:57:49Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3780134226 + Play Date UTC2023-10-14T10:17:06Z + Skip Count1 + Skip Date2021-04-03T16:06:04Z + Release Date2019-05-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDrive - Single + Sort ArtistEveryone You Know + Sort NameDrive + Persistent IDFF372180C9B9CD53 + Explicit + Track TypeRemote + Apple Music + + 5231 + + Track ID5231 + NameAdeline + Artistalt-J + Album Artistalt-J + AlbumRELAXER + GenreAlternative + KindAAC audio file + Size12435169 + Total Time350493 + Disc Number1 + Disc Count1 + Track Number6 + Track Count8 + Year2017 + Date Modified2021-04-03T19:38:42Z + Date Added2021-04-03T19:38:42Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3783669917 + Play Date UTC2023-11-24T08:25:17Z + Skip Count2 + Skip Date2022-04-06T08:29:55Z + Release Date2017-05-24T12:00:00Z + Artwork Count1 + Sort AlbumRELAXER + Sort Artistalt-J + Sort NameAdeline + Persistent IDDBD9C3EC2716EEAD + Track TypeRemote + Apple Music + + 5233 + + Track ID5233 + NameZuccenberg (feat. $uicideboy$ & Diplo) + ArtistTommy Cash + Album ArtistTommy Cash + ComposerThomas Wesley Pentz, Umru Rothenberg, Tomas Tammemets, Aristos Norman Petrou & Scott Anthony Arceneux Jr. + AlbumZuccenberg (feat. $uicideboy$ & Diplo) - Single + GenreAlternative Rap + KindApple Music AAC audio file + Size6539225 + Total Time172000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-04-08T08:27:36Z + Date Added2021-04-08T08:27:36Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3780760333 + Play Date UTC2023-10-21T16:12:13Z + Skip Count2 + Skip Date2023-02-16T06:47:13Z + Release Date2021-04-02T12:00:00Z + Artwork Count1 + Sort AlbumZuccenberg (feat. $uicideboy$ & Diplo) - Single + Sort ArtistTommy Cash + Sort NameZuccenberg (feat. $uicideboy$ & Diplo) + Persistent ID5F3BB2834E6875A4 + Explicit + Track TypeRemote + Apple Music + + 5235 + + Track ID5235 + NameKrewe Du Vieux (Comedy & Tragedy) + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerAristos Petrou & Scott Arceneaux Jr. + AlbumI Want to Die in New Orleans + GenreHip-Hop + KindApple Music AAC audio file + Size4188850 + Total Time104472 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2018 + Date Modified2021-04-08T09:36:51Z + Date Added2021-04-08T09:36:51Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3777020415 + Play Date UTC2023-09-08T09:20:15Z + Skip Count3 + Skip Date2023-02-08T19:06:21Z + Release Date2018-09-07T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumI Want to Die in New Orleans + Sort Artist$uicideboy$ + Sort NameKrewe Du Vieux (Comedy & Tragedy) + Persistent ID46F34F3DFE77B0A1 + Explicit + Track TypeRemote + Apple Music + + 5237 + + Track ID5237 + NameWho Are We? + Artistjherz + Album Artistjherz + ComposerJ Herz + AlbumWho Are We? - Single + GenreAlternative + KindAAC audio file + Size7368398 + Total Time210104 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-04-09T16:31:20Z + Date Added2021-04-09T16:31:20Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3703362744 + Play Date UTC2021-05-08T20:52:24Z + Release Date2021-03-18T12:00:00Z + Artwork Count1 + Sort AlbumWho Are We? - Single + Sort Artistjherz + Sort NameWho Are We? + Persistent IDDE14F5CC716EC1A7 + Explicit + Track TypeRemote + + 5239 + + Track ID5239 + NameThe Fall + ArtistCharles + Album ArtistCharles + ComposerCharlotte Foret, Nina Sampermans & Wouter Hardy + AlbumFalling While Rising - EP + GenrePop + KindApple Music AAC audio file + Size6532486 + Total Time180240 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2021 + Date Modified2021-04-09T16:53:12Z + Date Added2021-04-09T16:53:12Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3782992051 + Play Date UTC2023-11-16T12:07:31Z + Release Date2021-04-02T12:00:00Z + Artwork Count1 + Sort AlbumFalling While Rising - EP + Sort ArtistCharles + Sort NameFall + Persistent ID0EBC4D2AC92DCD06 + Track TypeRemote + Apple Music + + 5241 + + Track ID5241 + NameJoe + ArtistAJR + Album ArtistAJR + ComposerRyan Met, Jack Met & Adam Met + AlbumOK ORCHESTRA + GenrePop + KindApple Music AAC audio file + Size8074260 + Total Time212427 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2021 + Date Modified2021-04-09T16:57:14Z + Date Added2021-04-09T16:57:14Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3759763113 + Play Date UTC2023-02-20T15:38:33Z + Release Date2021-03-26T12:00:00Z + Artwork Count1 + Sort AlbumOK ORCHESTRA + Sort ArtistAJR + Sort NameJoe + Persistent ID0537C8685DE13FE9 + Track TypeRemote + Apple Music + + 5243 + + Track ID5243 + NameNot the Same (feat. Lil Skies) + ArtistLil Gnar + Album ArtistLil Gnar + ComposerLil Skies & Caleb Sheppard + AlbumNot the Same (feat. Lil Skies) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6980212 + Total Time194858 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-04-09T17:16:54Z + Date Added2021-04-09T17:16:54Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count29 + Play Date3770489543 + Play Date UTC2023-06-24T19:12:23Z + Skip Count1 + Skip Date2021-09-11T21:11:45Z + Release Date2021-04-02T07:00:00Z + Artwork Count1 + Sort AlbumNot the Same (feat. Lil Skies) - Single + Sort ArtistLil Gnar + Sort NameNot the Same (feat. Lil Skies) + Persistent ID3CF55D583B78BC17 + Explicit + Track TypeRemote + Apple Music + + 5245 + + Track ID5245 + NameWriting's On the Wall + ArtistSam Smith + Album ArtistSam Smith + ComposerSam Smith & James Napier + AlbumWriting's On the Wall - Single + GenrePop + KindApple Music AAC audio file + Size9826677 + Total Time278987 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2021-04-23T13:43:59Z + Date Added2021-04-23T13:43:59Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3772518168 + Play Date UTC2023-07-18T06:42:48Z + Skip Count1 + Skip Date2023-07-06T06:04:58Z + Release Date2015-09-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWriting's On the Wall - Single + Sort ArtistSam Smith + Sort NameWriting's On the Wall + Persistent IDC011A75DF3020F63 + Track TypeRemote + Apple Music + + 5247 + + Track ID5247 + NameRien que toi et moi (feat. Oscar Anton) + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerOscar Anton, Tom Rosenthal & Alex Brenchley + AlbumRien que toi et moi (feat. Oscar Anton) - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size5845624 + Total Time162137 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-04-23T19:33:14Z + Date Added2021-04-23T19:33:14Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3766832528 + Play Date UTC2023-05-13T11:22:08Z + Skip Count3 + Skip Date2022-07-06T10:02:18Z + Release Date2021-04-01T12:00:00Z + Artwork Count1 + Sort AlbumRien que toi et moi (feat. Oscar Anton) - Single + Sort ArtistTom Rosenthal + Sort NameRien que toi et moi (feat. Oscar Anton) + Persistent IDB6AE5F7568188622 + Track TypeRemote + Apple Music + + 5249 + + Track ID5249 + NameBloodflood, Pt. II + Artistalt-J + Album Artistalt-J + AlbumThis Is All Yours + GenreAlternative + KindAAC audio file + Size11497669 + Total Time319498 + Disc Number1 + Disc Count1 + Track Number12 + Track Count14 + Year2014 + Date Modified2021-04-23T19:37:15Z + Date Added2021-04-23T19:37:15Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count9 + Play Date3782983041 + Play Date UTC2023-11-16T09:37:21Z + Skip Count1 + Skip Date2021-10-06T13:54:42Z + Release Date2014-09-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumThis Is All Yours + Sort Artistalt-J + Sort NameBloodflood, Pt. II + Persistent IDF74DAD0F8F6E0A02 + Track TypeRemote + Apple Music + + 5251 + + Track ID5251 + NameHugging You (Acoustic) + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumZ-Sides + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8612762 + Total Time233557 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2018 + Date Modified2021-04-23T20:14:23Z + Date Added2021-04-23T20:14:23Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3767039825 + Play Date UTC2023-05-15T20:57:05Z + Release Date2018-10-26T12:00:00Z + Artwork Count1 + Sort AlbumZ-Sides + Sort ArtistTom Rosenthal + Sort NameHugging You (Acoustic) + Persistent IDB0384E1228ECD12A + Track TypeRemote + Apple Music + + 5253 + + Track ID5253 + NameUranus + ArtistSleeping At Last + Album ArtistSleeping At Last + AlbumAtlas: Space 2 - EP + GenreAlternative + KindApple Music AAC audio file + Size8860178 + Total Time259915 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2013 + Date Modified2021-04-23T20:18:22Z + Date Added2021-04-23T20:18:22Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3779319196 + Play Date UTC2023-10-04T23:53:16Z + Skip Count1 + Skip Date2022-08-12T08:31:19Z + Release Date2013-12-10T08:00:00Z + Artwork Count1 + Sort AlbumAtlas: Space 2 - EP + Sort ArtistSleeping At Last + Sort NameUranus + Persistent IDDBAFE5D0FA19AC5C + Track TypeRemote + Apple Music + + 5255 + + Track ID5255 + NameDawn + ArtistThe Cinematic Orchestra + Album ArtistThe Cinematic Orchestra + AlbumMan With a Movie Camera + GenreElectronic + KindApple Music AAC audio file + Size9352217 + Total Time240893 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2003 + Date Modified2021-04-23T20:28:03Z + Date Added2021-04-23T20:28:03Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3759997420 + Play Date UTC2023-02-23T08:43:40Z + Skip Count2 + Skip Date2021-09-29T09:30:04Z + Release Date2003-05-26T12:00:00Z + Artwork Count1 + Sort AlbumMan With a Movie Camera + Sort Album ArtistCinematic Orchestra + Sort ArtistCinematic Orchestra + Sort NameDawn + Persistent IDBC11B346CBC0602E + Track TypeRemote + Apple Music + + 5257 + + Track ID5257 + NameThe Night We Met (feat. Phoebe Bridgers) + ArtistLord Huron + Album ArtistSelena Gomez, OneRepublic & YUNGBLUD + ComposerBen Schneider + Album13 Reasons Why (Season 2) + GenreAlternative + KindApple Music AAC audio file + Size7420598 + Total Time208173 + Disc Number1 + Disc Count1 + Track Number5 + Track Count20 + Year2018 + Date Modified2021-04-23T21:01:57Z + Date Added2021-04-23T21:01:57Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783765980 + Play Date UTC2023-11-25T11:06:20Z + Skip Count1 + Skip Date2021-05-02T16:19:22Z + Release Date2018-05-18T12:00:00Z + Artwork Count1 + Sort Album13 Reasons Why (Season 2) + Sort ArtistLord Huron + Sort NameNight We Met (feat. Phoebe Bridgers) + Persistent ID3AA93F3F3945DA35 + Track TypeRemote + Apple Music + + 5259 + + Track ID5259 + NameWhere's My Love + ArtistSYML + Album ArtistSYML + ComposerSYML & Brian Fennell + AlbumSYML + GenreAlternative + KindApple Music AAC audio file + Size7295119 + Total Time202010 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2017 + Date Modified2021-04-24T11:37:21Z + Date Added2021-04-24T11:37:21Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3768286214 + Play Date UTC2023-05-30T07:10:14Z + Skip Count1 + Skip Date2021-05-15T17:02:04Z + Release Date2017-02-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumSYML + Sort ArtistSYML + Sort NameWhere's My Love + Persistent ID46E19168037F574D + Track TypeRemote + Apple Music + + 5261 + + Track ID5261 + NameHome + ArtistEdith Whiskers + Album ArtistEdith Whiskers + ComposerJade Castrinos & Alex Ebert + AlbumStop Stealing the Covers! + GenreSinger/Songwriter + KindApple Music AAC audio file + Size6950799 + Total Time197360 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2020 + Date Modified2021-04-24T11:48:59Z + Date Added2021-04-24T11:48:59Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3761052092 + Play Date UTC2023-03-07T13:41:32Z + Skip Count1 + Skip Date2021-06-01T11:12:40Z + Release Date2020-10-16T12:00:00Z + Normalization1964 + Artwork Count1 + Sort AlbumStop Stealing the Covers! + Sort ArtistEdith Whiskers + Sort NameHome + Persistent IDCCFB200F8A84CA49 + Track TypeRemote + Apple Music + + 5263 + + Track ID5263 + NameYou Only Need You (Acoustic) + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerTom Rosenthal + AlbumZ-Sides + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7927062 + Total Time223067 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2018 + Date Modified2021-04-24T11:51:16Z + Date Added2021-04-24T11:51:16Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3783763347 + Play Date UTC2023-11-25T10:22:27Z + Release Date2018-10-26T12:00:00Z + Artwork Count1 + Sort AlbumZ-Sides + Sort ArtistTom Rosenthal + Sort NameYou Only Need You (Acoustic) + Persistent ID5A88CE66637D4C43 + Track TypeRemote + Apple Music + + 5265 + + Track ID5265 + NameGoing To Be Wonderful + ArtistTom Rosenthal + Album ArtistTom Rosenthal + AlbumThe Pleasant Trees - EP + GenreFolk + KindApple Music AAC audio file + Size6476749 + Total Time177690 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2014 + Date Modified2021-04-24T12:32:13Z + Date Added2021-04-24T12:32:13Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3767703836 + Play Date UTC2023-05-23T13:23:56Z + Skip Count3 + Skip Date2021-06-09T20:11:16Z + Release Date2014-03-14T12:00:00Z + Artwork Count1 + Sort AlbumPleasant Trees - EP + Sort ArtistTom Rosenthal + Sort NameGoing To Be Wonderful + Persistent ID6DF73C49F314F573 + Track TypeRemote + Apple Music + + 5267 + + Track ID5267 + NameJe Te Laisserai Des Mots + ArtistPatrick Watson + Album ArtistPatrick Watson + ComposerPatrick Watson + AlbumJe Te Laisserai Des Mots - Single + GenreAlternative + KindApple Music AAC audio file + Size5850340 + Total Time160853 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2010 + Date Modified2021-04-24T15:03:49Z + Date Added2021-04-24T15:03:49Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3773672024 + Play Date UTC2023-07-31T15:13:44Z + Release Date2010-09-10T12:00:00Z + Artwork Count1 + Sort AlbumJe Te Laisserai Des Mots - Single + Sort ArtistPatrick Watson + Sort NameJe Te Laisserai Des Mots + Persistent IDBB7D039DB723B2D8 + Track TypeRemote + Apple Music + + 5269 + + Track ID5269 + NameMan With the Movie Camera + ArtistThe Cinematic Orchestra + Album ArtistThe Cinematic Orchestra + AlbumMan With a Movie Camera + GenreElectronic + KindApple Music AAC audio file + Size18690976 + Total Time549933 + Disc Number1 + Disc Count1 + Track Number8 + Track Count17 + Year2002 + Date Modified2021-04-24T15:43:30Z + Date Added2021-04-24T15:43:30Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3763580389 + Play Date UTC2023-04-05T19:59:49Z + Skip Count5 + Skip Date2022-11-23T20:00:36Z + Release Date2002-05-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMan With a Movie Camera + Sort Album ArtistCinematic Orchestra + Sort ArtistCinematic Orchestra + Sort NameMan With the Movie Camera + Persistent ID046758A0DF2FAFDD + Track TypeRemote + Apple Music + + 5271 + + Track ID5271 + NameWithout You + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size7996526 + Total Time224740 + Disc Number1 + Disc Count1 + Track Number8 + Track Count15 + Year2015 + Date Modified2021-04-24T16:31:16Z + Date Added2021-04-24T16:31:16Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3781192821 + Play Date UTC2023-10-26T16:20:21Z + Skip Count6 + Skip Date2022-10-28T18:25:23Z + Release Date2015-09-04T12:00:00Z + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameWithout You + Persistent ID8A3FACE9DE99F6F3 + Track TypeRemote + Apple Music + + 5273 + + Track ID5273 + NameToo Quick + ArtistMadeinTYO + Album ArtistMadeinTYO + AlbumTrue's World - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6553317 + Total Time183640 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2017 + Date Modified2021-04-25T11:27:34Z + Date Added2021-04-25T11:27:34Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3781537214 + Play Date UTC2023-10-30T16:00:14Z + Release Date2017-08-25T12:00:00Z + Artwork Count1 + Sort AlbumTrue's World - EP + Sort ArtistMadeinTYO + Sort NameToo Quick + Persistent ID7C1038FD17BCEFE6 + Explicit + Track TypeRemote + Apple Music + + 5275 + + Track ID5275 + NameSleep Like Owls + ArtistDerek Pope + Album ArtistDerek Pope + AlbumWe're All Strangers + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7521697 + Total Time212468 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2018 + Date Modified2021-04-26T13:41:14Z + Date Added2021-04-26T13:41:14Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3773843679 + Play Date UTC2023-08-02T14:54:39Z + Skip Count3 + Skip Date2021-11-23T21:03:36Z + Release Date2018-02-16T12:00:00Z + Artwork Count1 + Sort AlbumWe're All Strangers + Sort ArtistDerek Pope + Sort NameSleep Like Owls + Persistent ID144AFCC21E37A4EB + Explicit + Track TypeRemote + Apple Music + + 5277 + + Track ID5277 + NameSee You Again (feat. Kali Uchis) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumFlower Boy + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6779436 + Total Time180384 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2017 + Date Modified2021-04-27T05:57:49Z + Date Added2021-04-27T05:57:49Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3783808260 + Play Date UTC2023-11-25T22:51:00Z + Skip Count2 + Skip Date2021-06-12T22:31:03Z + Release Date2017-07-21T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFlower Boy + Sort ArtistTyler, The Creator + Sort NameSee You Again (feat. Kali Uchis) + Persistent ID6FBF1C8EC76588BE + Explicit + Track TypeRemote + Apple Music + + 5279 + + Track ID5279 + Namedurag activity + ArtistBaby Keem & Travis Scott + Album ArtistBaby Keem & Travis Scott + ComposerTravis Scott, Hykeem Carter & Brick + Albumdurag activity - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8048177 + Total Time225020 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-04-30T08:46:24Z + Date Added2021-04-30T08:46:24Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3753035041 + Play Date UTC2022-12-04T18:44:01Z + Skip Count2 + Skip Date2021-05-02T16:07:39Z + Release Date2021-04-30T12:00:00Z + Artwork Count1 + Sort Albumdurag activity - Single + Sort ArtistBaby Keem & Travis Scott + Sort Namedurag activity + Persistent IDF7F7DB6F1569E113 + Explicit + Track TypeRemote + Apple Music + + 5281 + + Track ID5281 + NameMachine + ArtistImagine Dragons + Album ArtistImagine Dragons + ComposerAlexander Grant, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman + AlbumOrigins + GenreAlternative + KindApple Music AAC audio file + Size6691475 + Total Time181886 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2018 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3781466602 + Play Date UTC2023-10-29T20:23:22Z + Release Date2018-11-09T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumOrigins + Sort ArtistImagine Dragons + Sort NameMachine + Persistent IDB8FD8994778A3BED + Track TypeRemote + Apple Music + + 5283 + + Track ID5283 + NameIntro/History Song (Live In the Apple Store, NYC) + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerThe Good, the Bad & the Queen + AlbumLive From Soho EP + GenrePop + KindApple Music AAC audio file + Size9875987 + Total Time283493 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2007 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3773819787 + Play Date UTC2023-08-02T08:16:27Z + Skip Count2 + Skip Date2022-11-07T10:21:14Z + Release Date2007-03-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLive From Soho EP + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort ComposerGood, the Bad & the Queen + Sort NameIntro/History Song (Live In the Apple Store, NYC) + Persistent ID71A2511995EBA61E + Track TypeRemote + Apple Music + + 5285 + + Track ID5285 + NameStuck + ArtistImagine Dragons + Album ArtistImagine Dragons + ComposerJayson Dezuzio, Alexander Grant, Dan Reynolds, Wayne Sermon, Ben McKee & Daniel Platzman + AlbumOrigins + GenreAlternative + KindApple Music AAC audio file + Size6881191 + Total Time190850 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2018 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3778596584 + Play Date UTC2023-09-26T15:09:44Z + Release Date2018-11-09T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumOrigins + Sort ArtistImagine Dragons + Sort NameStuck + Persistent IDD547032011F82654 + Track TypeRemote + Apple Music + + 5287 + + Track ID5287 + NameSupermassive Black Hole + ArtistMuse + Album ArtistMuse + ComposerMatthew Bellamy + AlbumBlack Holes and Revelations + GenreAlternative + KindApple Music AAC audio file + Size8144672 + Total Time208852 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2006 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3783684196 + Play Date UTC2023-11-24T12:23:16Z + Skip Count4 + Skip Date2022-11-15T20:40:32Z + Release Date2006-06-19T07:00:00Z + Loved + Artwork Count1 + Sort AlbumBlack Holes and Revelations + Sort ArtistMuse + Sort NameSupermassive Black Hole + Persistent ID1424390C0F538F91 + Track TypeRemote + Apple Music + + 5289 + + Track ID5289 + NameRole Models + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size7041594 + Total Time192174 + Disc Number1 + Disc Count1 + Track Number15 + Track Count17 + Year2017 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3780480889 + Play Date UTC2023-10-18T10:34:49Z + Skip Count1 + Skip Date2022-11-25T23:28:44Z + Release Date2017-06-09T12:00:00Z + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameRole Models + Persistent ID086EFB0F474A8F31 + Track TypeRemote + Apple Music + + 5291 + + Track ID5291 + NameIWearYourLove,EveryPlaceIGo + ArtistSurrenderDorothy + Album ArtistSurrenderDorothy + AlbumNobodyWantsMe - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3577072 + Total Time94040 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2001 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3783710215 + Play Date UTC2023-11-24T19:36:55Z + Skip Count1 + Skip Date2021-09-02T21:08:25Z + Release Date2018-06-08T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNobodyWantsMe - EP + Sort ArtistSurrenderDorothy + Sort NameIWearYourLove,EveryPlaceIGo + Persistent ID227478349E712012 + Track TypeRemote + Apple Music + + 5293 + + Track ID5293 + NameInto the Surf + ArtistFoals + Album ArtistFoals + ComposerFoals + AlbumEverything Not Saved Will Be Lost Part II + GenreAlternative + KindApple Music AAC audio file + Size9615197 + Total Time271338 + Disc Number1 + Disc Count2 + Track Number9 + Track Count10 + Year2019 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783755129 + Play Date UTC2023-11-25T08:05:29Z + Skip Count5 + Skip Date2023-01-22T15:03:14Z + Release Date2019-10-18T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumEverything Not Saved Will Be Lost Part II + Sort ArtistFoals + Sort NameInto the Surf + Persistent ID263BEB01FF005E6A + Track TypeRemote + Apple Music + + 5295 + + Track ID5295 + NameBurn the House Down + ArtistAJR + Album ArtistAJR + ComposerRyan Met, Jack Met & Adam Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size7756163 + Total Time212689 + Disc Number1 + Disc Count1 + Track Number14 + Track Count17 + Year2017 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3758874934 + Play Date UTC2023-02-10T08:55:34Z + Skip Count4 + Skip Date2023-05-23T05:49:39Z + Release Date2017-06-09T12:00:00Z + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameBurn the House Down + Persistent IDFAEF1E288C973A1F + Explicit + Track TypeRemote + Apple Music + + 5297 + + Track ID5297 + NameSun - Star (I Can't) + ArtistFifty Grand + Album ArtistFifty Grand + ComposerElliott Onofrio + AlbumTears of Blood - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7897038 + Total Time224318 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2009 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3768298450 + Play Date UTC2023-05-30T10:34:10Z + Release Date2019-08-14T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTears of Blood - EP + Sort ArtistFifty Grand + Sort NameSun - Star (I Can't) + Persistent ID56657B2853874BD7 + Track TypeRemote + Apple Music + + 5299 + + Track ID5299 + NameBud Like You + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size8300445 + Total Time230918 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2017 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3766228039 + Play Date UTC2023-05-06T11:27:19Z + Skip Count4 + Skip Date2023-03-03T05:19:51Z + Release Date2017-06-02T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameBud Like You + Persistent IDAE2063F6D931D247 + Track TypeRemote + Apple Music + + 5301 + + Track ID5301 + NameDrama + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size7265813 + Total Time204424 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2017 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3771687330 + Play Date UTC2023-07-08T15:55:30Z + Skip Count1 + Skip Date2022-07-18T11:06:33Z + Release Date2017-05-12T12:00:00Z + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameDrama + Persistent ID4722F09C4854667D + Explicit + Track TypeRemote + Apple Music + + 5303 + + Track ID5303 + NameTurning Out + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size9304011 + Total Time260961 + Disc Number1 + Disc Count1 + Track Number6 + Track Count17 + Year2016 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3767784088 + Play Date UTC2023-05-24T11:41:28Z + Release Date2016-09-16T12:00:00Z + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameTurning Out + Persistent IDD59D91DE6061CBA6 + Track TypeRemote + Apple Music + + 5305 + + Track ID5305 + NameFly + ArtistLudovico Einaudi + Album ArtistLudovico Einaudi + ComposerLudovico Einaudi + AlbumDivenire + GenreClassical + KindApple Music AAC audio file + Size9700730 + Total Time278933 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2006 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count57 + Play Date3767771122 + Play Date UTC2023-05-24T08:05:22Z + Skip Count1 + Skip Date2021-05-05T21:28:45Z + Release Date2006-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDivenire + Sort ArtistLudovico Einaudi + Sort NameFly + Persistent IDFF67902FE5DD8CE0 + Track TypeRemote + Apple Music + + 5307 + + Track ID5307 + NameCome Hang Out + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size9593670 + Total Time266256 + Disc Number1 + Disc Count1 + Track Number13 + Year2016 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3769670754 + Play Date UTC2023-06-15T07:45:54Z + Skip Count1 + Skip Date2021-05-02T14:07:59Z + Release Date2016-09-16T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameCome Hang Out + Persistent IDD273974AF28FADB7 + Track TypeRemote + Apple Music + + 5309 + + Track ID5309 + NameI'm Not Famous + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size8156946 + Total Time220457 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2016 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3748502170 + Play Date UTC2022-10-13T07:36:10Z + Skip Count3 + Skip Date2022-08-19T15:48:18Z + Release Date2016-03-25T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameI'm Not Famous + Persistent ID8EE15DBE1159534D + Explicit + Track TypeRemote + Apple Music + + 5311 + + Track ID5311 + NameNetflix Trip + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click + GenrePop + KindApple Music AAC audio file + Size8439054 + Total Time237787 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2017 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3769683010 + Play Date UTC2023-06-15T11:10:10Z + Release Date2017-06-02T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumClick + Sort ArtistAJR + Sort NameNetflix Trip + Persistent IDD9D8D81C5F9D246A + Track TypeRemote + Apple Music + + 5313 + + Track ID5313 + NameOverture + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size7835306 + Total Time214407 + Disc Number1 + Disc Count1 + Track Number1 + Track Count17 + Year2017 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3779916314 + Play Date UTC2023-10-11T21:45:14Z + Skip Count2 + Skip Date2023-03-07T09:34:14Z + Release Date2017-06-02T12:00:00Z + Disliked + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameOverture + Persistent IDDDA3D850E2D51D16 + Track TypeRemote + Apple Music + + 5315 + + Track ID5315 + NameWeak (Remix) + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size7196550 + Total Time201159 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2016 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3783678112 + Play Date UTC2023-11-24T10:41:52Z + Release Date2016-03-09T12:00:00Z + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameWeak (Remix) + Persistent ID498101A2B39FCD8E + Track TypeRemote + Apple Music + + 5317 + + Track ID5317 + Nameinfinity (888) [feat. Joey Bada$$] + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJahseh Onfroy, Jo Vaughn Virginie & Brandon Mychael Jameel Beazer + Album? (Deluxe) + GenrePop + KindApple Music AAC audio file + Size6440427 + Total Time176591 + Disc Number1 + Disc Count3 + Track Number8 + Year2018 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3783592274 + Play Date UTC2023-11-23T10:51:14Z + Skip Count2 + Skip Date2022-10-28T18:25:33Z + Release Date2018-03-16T07:00:00Z + Loved + Artwork Count1 + Sort Album? (Deluxe) + Sort ArtistXXXTENTACION + Sort Nameinfinity (888) [feat. Joey Bada$$] + Persistent IDC809A4135C84ACF9 + Explicit + Track TypeRemote + Apple Music + + 5319 + + Track ID5319 + NameThe Good Part + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size8140304 + Total Time227267 + Disc Number1 + Disc Count1 + Track Number2 + Track Count17 + Year2017 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3783409797 + Play Date UTC2023-11-21T08:09:57Z + Skip Count2 + Skip Date2022-07-14T10:47:06Z + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameGood Part + Persistent ID0C0D3453D203CB2E + Track TypeRemote + Apple Music + + 5321 + + Track ID5321 + NameSober Up (feat. Rivers Cuomo) + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Jack Met & Ryan Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size7844402 + Total Time218763 + Disc Number1 + Disc Count1 + Track Number4 + Track Count17 + Year2017 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3760715380 + Play Date UTC2023-03-03T16:09:40Z + Skip Count3 + Skip Date2023-11-02T08:11:58Z + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameSober Up (feat. Rivers Cuomo) + Persistent ID8F983D36A6FC949C + Track TypeRemote + Apple Music + + 5323 + + Track ID5323 + NameWorst Nites + ArtistFoster the People + Album ArtistFoster the People + ComposerTom Schleiter, Garrett Borns, Ryan Tedder & Mark Foster + AlbumWorst Nites - Single + GenreAlternative + KindApple Music AAC audio file + Size8065483 + Total Time211920 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3780492942 + Play Date UTC2023-10-18T13:55:42Z + Skip Count2 + Skip Date2022-10-04T13:06:41Z + Release Date2018-11-09T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWorst Nites - Single + Sort ArtistFoster the People + Sort NameWorst Nites + Persistent IDFA1F730779DB5862 + Track TypeRemote + Apple Music + + 5325 + + Track ID5325 + NameYouth + ArtistGlass Animals + Album ArtistGlass Animals + ComposerGlass Animals & Dave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size8378472 + Total Time230693 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2016 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3780904303 + Play Date UTC2023-10-23T08:11:43Z + Skip Count1 + Skip Date2021-04-30T23:08:59Z + Release Date2016-07-27T07:00:00Z + Rating80 + Rating Computed + Album Rating80 + Loved + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NameYouth + Persistent ID370B3BEA05B290E4 + Track TypeRemote + Apple Music + + 5327 + + Track ID5327 + NameI'm Not Famous + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size8166938 + Total Time220457 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2016 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3783668841 + Play Date UTC2023-11-24T08:07:21Z + Skip Count1 + Skip Date2022-11-15T21:00:55Z + Release Date2016-03-25T12:00:00Z + Normalization9674 + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameI'm Not Famous + Persistent ID8E3311CEADDA01AE + Explicit + Track TypeRemote + Apple Music + + 5329 + + Track ID5329 + NameUnsteady + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Adam Levin & Casey Harris + AlbumThe Reason - EP + GenreAlternative + KindApple Music AAC audio file + Size6950812 + Total Time191518 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2014 + Date Modified2021-04-30T22:42:02Z + Date Added2021-04-30T22:42:02Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3783770023 + Play Date UTC2023-11-25T12:13:43Z + Release Date2014-01-24T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumReason - EP + Sort ArtistX Ambassadors + Sort NameUnsteady + Persistent ID1E7DABCE824A420E + Track TypeRemote + Apple Music + + 5331 + + Track ID5331 + NameChoker + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size7946092 + Total Time223066 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2021 + Date Modified2021-04-30T22:51:13Z + Date Added2021-04-30T22:51:13Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780837790 + Play Date UTC2023-10-22T13:43:10Z + Skip Count4 + Skip Date2022-12-21T20:02:36Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameChoker + Persistent IDF2A3DE5061F80300 + Track TypeRemote + Apple Music + + 5333 + + Track ID5333 + NameKiss Me More (feat. SZA) + ArtistDoja Cat + Album ArtistDoja Cat + ComposerAmala Zandile Dlamini, David Sprecher, Roget Chahayed, Carter Lang, Gerard A. Powell II & Solana Rowe + AlbumKiss Me More (feat. SZA) - Single + GenrePop + KindApple Music AAC audio file + Size7512577 + Total Time208867 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-04-30T22:52:45Z + Date Added2021-04-30T22:52:45Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3780391262 + Play Date UTC2023-10-17T09:41:02Z + Skip Count1 + Skip Date2021-05-15T17:31:57Z + Release Date2021-04-09T12:00:00Z + Artwork Count1 + Sort AlbumKiss Me More (feat. SZA) - Single + Sort ArtistDoja Cat + Sort NameKiss Me More (feat. SZA) + Persistent ID82A2A708266D2179 + Explicit + Track TypeRemote + Apple Music + + 5335 + + Track ID5335 + NameBack In the Summer + ArtistMax Frost + Album ArtistMax Frost + ComposerMax Frost & Grant Yarber + AlbumBack In the Summer - Single + GenreAlternative + KindApple Music AAC audio file + Size6582909 + Total Time180040 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-04-30T23:16:17Z + Date Added2021-04-30T23:16:17Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3773527367 + Play Date UTC2023-07-29T23:02:47Z + Skip Count4 + Skip Date2021-06-11T11:45:20Z + Release Date2020-01-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBack In the Summer - Single + Sort ArtistMax Frost + Sort NameBack In the Summer + Persistent ID63CC6BEB09C872FA + Track TypeRemote + Apple Music + + 5337 + + Track ID5337 + NameTell Me How (Coca-Cola Commercial) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumTell Me How (Coca-Cola Commercial) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4982488 + Total Time135173 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-05-01T18:25:17Z + Date Added2021-05-01T18:25:17Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3780844790 + Play Date UTC2023-10-22T15:39:50Z + Skip Count2 + Skip Date2023-07-19T06:22:20Z + Release Date2021-03-05T12:00:00Z + Artwork Count1 + Sort AlbumTell Me How (Coca-Cola Commercial) - Single + Sort ArtistTyler, The Creator + Sort NameTell Me How (Coca-Cola Commercial) + Persistent ID2DB32E84E41D8BF3 + Track TypeRemote + Apple Music + + 5339 + + Track ID5339 + NameInfinity + ArtistThe xx + Album ArtistThe xx + ComposerOliver Sim & Romy Madley Croft + Albumxx + GenreAlternative + KindApple Music AAC audio file + Size10892783 + Total Time313387 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2009 + Date Modified2021-05-05T20:57:16Z + Date Added2021-05-05T20:57:16Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3766070026 + Play Date UTC2023-05-04T15:33:46Z + Skip Count2 + Skip Date2021-09-23T19:34:31Z + Release Date2009-08-14T07:00:00Z + Artwork Count1 + Sort Albumxx + Sort Album Artistxx + Sort Artistxx + Sort NameInfinity + Persistent IDBFA0598AD71BAF52 + Track TypeRemote + Apple Music + + 5341 + + Track ID5341 + NameHUMBLE. + ArtistKendrick Lamar + Album ArtistKendrick Lamar + ComposerKendrick Lamar, A. Hogan, Michael L. Williams II & K. Duckworth + AlbumDAMN. + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6378907 + Total Time177000 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2017 + Date Modified2021-05-05T22:06:03Z + Date Added2021-05-05T22:06:03Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3780914017 + Play Date UTC2023-10-23T10:53:37Z + Skip Count1 + Skip Date2022-04-16T23:24:25Z + Release Date2017-03-30T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDAMN. + Sort ArtistKendrick Lamar + Sort NameHUMBLE. + Persistent ID14ADE4C80633C22E + Explicit + Track TypeRemote + Apple Music + + 5343 + + Track ID5343 + NameDNA. + ArtistKendrick Lamar + Album ArtistKendrick Lamar + ComposerK. Duckworth & M. Williams II + AlbumDAMN. + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6737296 + Total Time185947 + Disc Number1 + Disc Count1 + Track Number2 + Track Count14 + Year2017 + Date Modified2021-05-05T22:07:28Z + Date Added2021-05-05T22:07:28Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3780850457 + Play Date UTC2023-10-22T17:14:17Z + Skip Count1 + Skip Date2021-05-21T14:04:38Z + Release Date2017-04-14T12:00:00Z + Artwork Count1 + Sort AlbumDAMN. + Sort ArtistKendrick Lamar + Sort NameDNA. + Persistent IDA4F70772534EB763 + Explicit + Track TypeRemote + Apple Music + + 5345 + + Track ID5345 + NameFree Lunch + ArtistIsaiah Rashad + Album ArtistIsaiah Rashad + AlbumThe Sun's Tirade + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6864233 + Total Time192029 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2016 + Date Modified2021-05-06T00:24:47Z + Date Added2021-05-06T00:24:47Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783681609 + Play Date UTC2023-11-24T11:40:09Z + Skip Count3 + Skip Date2023-10-09T10:00:05Z + Release Date2016-08-07T07:00:00Z + Artwork Count1 + Sort AlbumSun's Tirade + Sort ArtistIsaiah Rashad + Sort NameFree Lunch + Persistent ID6025C039A3BE2C2F + Explicit + Track TypeRemote + Apple Music + + 5347 + + Track ID5347 + NameMICHUUL. + ArtistDUCKWRTH + Album ArtistDUCKWRTH + ComposerJared Lee, Alexander Manzano & Sheldon Young + AlbumAn XTRA UUGLY Mixtape + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6761931 + Total Time186213 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2017 + Date Modified2021-05-06T08:34:51Z + Date Added2021-05-06T08:34:51Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3767607711 + Play Date UTC2023-05-22T10:41:51Z + Skip Count3 + Skip Date2022-01-13T18:07:35Z + Release Date2017-08-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumXTRA UUGLY Mixtape + Sort ArtistDUCKWRTH + Sort NameMICHUUL. + Persistent ID77C085777E044FE7 + Explicit + Track TypeRemote + Apple Music + + 5349 + + Track ID5349 + NameImmortal + Artist21 Savage + Album Artist21 Savage + Composer21 Savage & Ahmar Bailey + AlbumImmortal - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8886649 + Total Time254723 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-05-06T08:49:12Z + Date Added2021-05-06T08:49:12Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783277948 + Play Date UTC2023-11-19T19:32:28Z + Skip Count3 + Skip Date2021-05-09T18:10:12Z + Release Date2019-10-31T12:00:00Z + Artwork Count1 + Sort AlbumImmortal - Single + Sort Artist21 Savage + Sort NameImmortal + Persistent IDC96697AFF8EE81E9 + Explicit + Track TypeRemote + Apple Music + + 5351 + + Track ID5351 + NamePlain Jane + ArtistA$AP Ferg + Album ArtistA$AP Ferg + ComposerDarold Brown, Kirlan Labarrie, Paul Beauregard & Jordan Houston + AlbumStill Striving + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6272431 + Total Time173602 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2017 + Date Modified2021-05-06T08:49:53Z + Date Added2021-05-06T08:49:53Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3781861450 + Play Date UTC2023-11-03T10:04:10Z + Skip Count5 + Skip Date2022-12-15T08:55:54Z + Release Date2017-08-04T07:00:00Z + Artwork Count1 + Sort AlbumStill Striving + Sort ArtistA$AP Ferg + Sort NamePlain Jane + Persistent ID784D012887668C50 + Explicit + Track TypeRemote + Apple Music + + 5353 + + Track ID5353 + NameGeorge Jeff + ArtistJaden + Album ArtistJaden + ComposerJaden & Tramaine Winfrey + AlbumSYRE + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5106393 + Total Time137617 + Disc Number1 + Disc Count1 + Track Number15 + Track Count17 + Year2017 + Date Modified2021-05-06T08:54:32Z + Date Added2021-05-06T08:54:32Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781619136 + Play Date UTC2023-10-31T14:45:36Z + Skip Count2 + Skip Date2021-05-06T11:48:16Z + Release Date2017-11-17T12:00:00Z + Artwork Count1 + Sort AlbumSYRE + Sort ArtistJaden + Sort NameGeorge Jeff + Persistent ID1185C06B4B95E0AA + Explicit + Track TypeRemote + Apple Music + + 5355 + + Track ID5355 + NameAstronaut In The Ocean + ArtistMasked Wolf + Album ArtistMasked Wolf + AlbumAstronaut In The Ocean - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4988357 + Total Time132780 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-05-06T10:15:05Z + Date Added2021-05-06T10:15:05Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3781319055 + Play Date UTC2023-10-28T03:24:15Z + Skip Count5 + Skip Date2022-07-25T13:51:26Z + Release Date2019-06-06T12:00:00Z + Artwork Count1 + Sort AlbumAstronaut In The Ocean - Single + Sort ArtistMasked Wolf + Sort NameAstronaut In The Ocean + Persistent ID504BA0996A3558D6 + Explicit + Track TypeRemote + Apple Music + + 5357 + + Track ID5357 + NameMulberry Street + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size8247444 + Total Time224398 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-20T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3780132850 + Play Date UTC2023-10-14T09:54:10Z + Skip Count2 + Skip Date2023-05-21T09:37:46Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameMulberry Street + Persistent ID9D5136BCE517D830 + Track TypeRemote + Apple Music + + 5359 + + Track ID5359 + NameNever Take It + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size7657572 + Total Time212706 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-20T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3767707557 + Play Date UTC2023-05-23T14:25:57Z + Skip Count1 + Skip Date2021-05-22T16:27:16Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameNever Take It + Persistent ID66CE370BE881F097 + Track TypeRemote + Apple Music + + 5361 + + Track ID5361 + NameSaturday + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size6470684 + Total Time172232 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-18T16:01:05Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3754385023 + Play Date UTC2022-12-20T09:43:43Z + Skip Count3 + Skip Date2022-08-30T06:47:46Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameSaturday + Persistent IDEC730F2F2D07BE22 + Track TypeRemote + Apple Music + + 5363 + + Track ID5363 + NameThe Outside + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size7739757 + Total Time216759 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-20T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3768285087 + Play Date UTC2023-05-30T06:51:27Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameOutside + Persistent ID752CFFAE89057F97 + Track TypeRemote + Apple Music + + 5365 + + Track ID5365 + NameShy Away + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size6603987 + Total Time175044 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-06T15:05:02Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783692373 + Play Date UTC2023-11-24T14:39:33Z + Skip Count1 + Skip Date2021-05-06T19:28:06Z + Release Date2021-04-07T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameShy Away + Persistent ID8DEACD3E12DB22BC + Track TypeRemote + Apple Music + + 5367 + + Track ID5367 + NameRedecorate + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size8642223 + Total Time245843 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-20T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3773545211 + Play Date UTC2023-07-30T04:00:11Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameRedecorate + Persistent ID871240387515DA21 + Track TypeRemote + Apple Music + + 5369 + + Track ID5369 + NameNo Chances + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size8109675 + Total Time226449 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-20T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780828194 + Play Date UTC2023-10-22T11:03:14Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameNo Chances + Persistent IDAC0B6743E3694F05 + Track TypeRemote + Apple Music + + 5371 + + Track ID5371 + NameBounce Man + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size6721034 + Total Time185438 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-20T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781157491 + Play Date UTC2023-10-26T06:31:31Z + Skip Count4 + Skip Date2022-04-27T12:54:27Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameBounce Man + Persistent ID9604F79147E591D7 + Track TypeRemote + Apple Music + + 5373 + + Track ID5373 + NameGood Day + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size7348001 + Total Time204401 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-20T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3776154593 + Play Date UTC2023-08-29T08:49:53Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameGood Day + Persistent IDA2DD532BF6E12586 + Track TypeRemote + Apple Music + + 5375 + + Track ID5375 + NameFormidable + Artisttwenty one pilots + Album Artisttwenty one pilots + ComposerTyler Joseph + AlbumScaled And Icy + GenreAlternative + KindApple Music AAC audio file + Size6518705 + Total Time176325 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2021 + Date Modified2021-05-06T15:05:02Z + Date Added2021-05-20T21:09:29Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3771745914 + Play Date UTC2023-07-09T08:11:54Z + Skip Count1 + Skip Date2021-09-22T18:07:02Z + Release Date2021-05-21T07:00:00Z + Artwork Count1 + Sort AlbumScaled And Icy + Sort Artisttwenty one pilots + Sort NameFormidable + Persistent ID8FF2D3C131B05BB8 + Track TypeRemote + Apple Music + + 5377 + + Track ID5377 + NameN + ArtistJaden + Album ArtistJaden + ComposerJaden, Peder Losnegård, Tyler Cole & Mateo Arias + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8170581 + Total Time231034 + Disc Number1 + Disc Count2 + Track Number3 + Track Count17 + Year2019 + Date Modified2021-05-06T15:14:05Z + Date Added2021-05-06T15:14:05Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3767090581 + Play Date UTC2023-05-16T11:03:01Z + Skip Count1 + Skip Date2022-06-28T21:12:29Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameN + Persistent ID7219103A465A02CA + Explicit + Track TypeRemote + Apple Music + + 5379 + + Track ID5379 + NameP + ArtistJaden + Album ArtistJaden + ComposerJaden, Peder Losnegård & Willow Smith + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6108417 + Total Time168286 + Disc Number1 + Disc Count2 + Track Number1 + Track Count17 + Year2019 + Date Modified2021-05-06T20:14:53Z + Date Added2021-05-06T20:14:53Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3769665869 + Play Date UTC2023-06-15T06:24:29Z + Skip Count3 + Skip Date2023-06-21T15:57:19Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameP + Persistent ID2524F83BD271B42E + Explicit + Track TypeRemote + Apple Music + + 5381 + + Track ID5381 + NameSomebody Else + ArtistJaden + Album ArtistJaden + ComposerJaden, Gabe Basso, Nick Stoubis, Tyler Cole, Mateo Arias & Samuel Ray + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7881354 + Total Time222031 + Disc Number2 + Disc Count2 + Track Number2 + Track Count3 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3765392104 + Play Date UTC2023-04-26T19:15:04Z + Skip Count1 + Skip Date2022-07-17T08:47:06Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameSomebody Else + Persistent ID2A1E05777B562A75 + Explicit + Track TypeRemote + Apple Music + + 5383 + + Track ID5383 + Namei-drip-or-is + ArtistJaden + Album ArtistJaden + ComposerJaden, Omarr Rambert, Hugo Chan, Austin Owens, Keanu Torres & James Foye III "Keyz" + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8289294 + Total Time237020 + Disc Number1 + Disc Count2 + Track Number6 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3776154830 + Play Date UTC2023-08-29T08:53:50Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort Namei-drip-or-is + Persistent ID89A4112ACD7F980D + Explicit + Track TypeRemote + Apple Music + + 5385 + + Track ID5385 + NameBeautiful Disruption + ArtistJaden + Album ArtistJaden + ComposerJaden, Omarr Rambert, Kyle Edwards, Damien Leroy & Adam Feeney + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4966008 + Total Time138031 + Disc Number2 + Disc Count2 + Track Number1 + Track Count3 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3780848342 + Play Date UTC2023-10-22T16:39:02Z + Skip Count2 + Skip Date2022-07-18T11:06:40Z + Release Date2019-04-19T07:00:00Z + Normalization7849 + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameBeautiful Disruption + Persistent ID2A6F842A945C32E8 + Explicit + Track TypeRemote + Apple Music + + 5387 + + Track ID5387 + NameAgain (feat. SYRE) + ArtistJaden + Album ArtistJaden + ComposerJaden & Hugo Chan + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9495492 + Total Time269816 + Disc Number1 + Disc Count2 + Track Number7 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3777022568 + Play Date UTC2023-09-08T09:56:08Z + Skip Count2 + Skip Date2021-05-23T18:53:50Z + Release Date2019-07-02T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameAgain (feat. SYRE) + Persistent ID7268E3A9CC5EED22 + Explicit + Track TypeRemote + Apple Music + + 5389 + + Track ID5389 + NameGhost (feat. A$AP Rocky) [Remix] + ArtistJaden + Album ArtistJaden + ComposerJaden, Omarr Rambert, Kehinde Hassan, Taiwo Hassan, Michael Mule, Isaac De Boni, Justin Elwin & Rakim Mayers + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5870603 + Total Time162220 + Disc Number2 + Disc Count2 + Track Number3 + Track Count3 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783683732 + Play Date UTC2023-11-24T12:15:32Z + Skip Count2 + Skip Date2021-06-01T11:11:53Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameGhost (feat. A$AP Rocky) [Remix] + Persistent ID9B5E9E6E9AB6C4C6 + Explicit + Track TypeRemote + Apple Music + + 5391 + + Track ID5391 + NameFire Dept + ArtistJaden + Album ArtistJaden + ComposerJaden, Mike Musselman, Zack Tabori & Hugo Chan + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3785444 + Total Time102342 + Disc Number1 + Disc Count2 + Track Number9 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3780930732 + Play Date UTC2023-10-23T15:32:12Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameFire Dept + Persistent IDC66EC4E29F6C530E + Explicit + Track TypeRemote + Apple Music + + 5393 + + Track ID5393 + NameGot It + ArtistJaden + Album ArtistJaden + ComposerJaden & Brytavious Lakeith Chambers + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3068719 + Total Time76689 + Disc Number1 + Disc Count2 + Track Number8 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3776154169 + Play Date UTC2023-08-29T08:42:49Z + Skip Count1 + Skip Date2022-10-22T09:41:35Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameGot It + Persistent ID52F27DE3D804196D + Explicit + Track TypeRemote + Apple Music + + 5395 + + Track ID5395 + NameSummertime in Paris (feat. Willow) + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell, Tyler Cole, Omarr Rambert, Willow Smith, Mateo Arias & Kris Wu + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9493581 + Total Time270960 + Disc Number1 + Disc Count2 + Track Number11 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781174886 + Play Date UTC2023-10-26T11:21:26Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameSummertime in Paris (feat. Willow) + Persistent IDBD49FFF490B28830 + Explicit + Track TypeRemote + Apple Music + + 5397 + + Track ID5397 + NameMission + ArtistJaden & Trinidad James + Album ArtistJaden + ComposerJaden, Tremaine Winfrey, Omarr Rambert, Hugo Chan & Nicholaus Williams + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8830208 + Total Time251341 + Disc Number1 + Disc Count2 + Track Number10 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3780850709 + Play Date UTC2023-10-22T17:18:29Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden & Trinidad James + Sort NameMission + Persistent ID4C27238251AFBA9E + Explicit + Track TypeRemote + Apple Music + + 5399 + + Track ID5399 + NamePain + ArtistJaden + Album ArtistJaden + ComposerJaden, Tyler Cole, Barbara Pravy, Hugo Chan & Melanie Pereira + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12854365 + Total Time375310 + Disc Number1 + Disc Count2 + Track Number13 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3780500128 + Play Date UTC2023-10-18T15:55:28Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NamePain + Persistent IDB5D0D09EEEDBA59B + Explicit + Track TypeRemote + Apple Music + + 5401 + + Track ID5401 + NameChateau (feat. A$AP Rocky) + ArtistJaden + Album ArtistJaden + ComposerJaden, Tremaine Winfrey, Omarr Rambert, Rakim Mayers & Kuwanna Jasmine Moore + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4845463 + Total Time135889 + Disc Number1 + Disc Count2 + Track Number14 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3780839825 + Play Date UTC2023-10-22T14:17:05Z + Skip Count1 + Skip Date2023-03-28T06:55:49Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameChateau (feat. A$AP Rocky) + Persistent ID4D33B3401862D37E + Explicit + Track TypeRemote + Apple Music + + 5403 + + Track ID5403 + NameOn My Own (feat. Kid Cudi) + ArtistJaden + Album ArtistJaden + ComposerJaden, Kyle Edwards, Omarr Rambert, Scott Mescudi & Darrien Overton + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8528138 + Total Time244715 + Disc Number1 + Disc Count2 + Track Number15 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3767703002 + Play Date UTC2023-05-23T13:10:02Z + Skip Count1 + Skip Date2021-05-26T21:34:43Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameOn My Own (feat. Kid Cudi) + Persistent ID170FF573ABD71F00 + Explicit + Track TypeRemote + Apple Music + + 5405 + + Track ID5405 + NameRiot + ArtistJaden + Album ArtistJaden + ComposerJaden & Hugo Chan + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9657016 + Total Time274988 + Disc Number1 + Disc Count2 + Track Number16 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3778597100 + Play Date UTC2023-09-26T15:18:20Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameRiot + Persistent ID1C79B9744063C42E + Explicit + Track TypeRemote + Apple Music + + 5407 + + Track ID5407 + NameI + ArtistJaden + Album ArtistJaden + ComposerJaden, Jasper Harris & Peder Losnegård + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4850646 + Total Time130345 + Disc Number1 + Disc Count2 + Track Number2 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3776433016 + Play Date UTC2023-09-01T14:10:16Z + Skip Count3 + Skip Date2022-11-27T11:04:11Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameI + Persistent ID26627EA0871B4647 + Explicit + Track TypeRemote + Apple Music + + 5409 + + Track ID5409 + NameERYS + ArtistJaden + Album ArtistJaden + ComposerJaden, Gabe Basso, Nick Stoubis, Tyler Cole, Mateo Arias & Samuel Ray + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size16142848 + Total Time471771 + Disc Number1 + Disc Count2 + Track Number17 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3783778049 + Play Date UTC2023-11-25T14:27:29Z + Release Date2019-07-05T07:00:00Z + Loved + Normalization1963 + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden + Sort NameERYS + Persistent ID4B3B289E0616A2F8 + Explicit + Track TypeRemote + Apple Music + + 5411 + + Track ID5411 + NameK + ArtistJaden & Lido + Album ArtistJaden + ComposerJaden, Peder Losnegård & Harrison Rhodes + AlbumERYS (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9681490 + Total Time280713 + Disc Number1 + Disc Count2 + Track Number4 + Track Count17 + Year2019 + Date Modified2021-05-06T20:19:55Z + Date Added2021-05-06T20:19:55Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3777565673 + Play Date UTC2023-09-14T16:47:53Z + Release Date2019-07-05T07:00:00Z + Loved + Artwork Count1 + Sort AlbumERYS (Deluxe) + Sort ArtistJaden & Lido + Sort NameK + Persistent IDDC92C40F1721A045 + Explicit + Track TypeRemote + Apple Music + + 5413 + + Track ID5413 + NameKiss U Right Now + ArtistDUCKWRTH + Album ArtistDUCKWRTH + ComposerEssancy, Julian Nixon & Jared Lee + AlbumSuperGood + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7038561 + Total Time194776 + Disc Number1 + Disc Count1 + Track Number6 + Track Count16 + Year2020 + Date Modified2021-05-09T14:40:41Z + Date Added2021-05-09T14:40:41Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3765001950 + Play Date UTC2023-04-22T06:52:30Z + Skip Count2 + Skip Date2021-09-29T19:11:30Z + Release Date2020-08-21T12:00:00Z + Artwork Count1 + Sort AlbumSuperGood + Sort ArtistDUCKWRTH + Sort NameKiss U Right Now + Persistent ID2BEB3F1DA3347514 + Explicit + Track TypeRemote + Apple Music + + 5415 + + Track ID5415 + NameHoney + ArtistLAY + Album ArtistLAY + ComposerLAY, Dominique Logan, Darius Logan, SWIFF D, White Shadow, Blaq Tuxedo & DJ White Shadow + AlbumHoney - EP + GenrePop + KindApple Music AAC audio file + Size6742954 + Total Time183693 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2019 + Date Modified2021-05-09T18:55:36Z + Date Added2021-05-09T18:55:36Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3779315408 + Play Date UTC2023-10-04T22:50:08Z + Skip Count3 + Skip Date2023-10-14T08:26:52Z + Release Date2019-06-14T07:00:00Z + Artwork Count1 + Sort AlbumHoney - EP + Sort ArtistLAY + Sort NameHoney + Persistent ID4B8D97866C1AA83E + Track TypeRemote + Apple Music + + 5417 + + Track ID5417 + NameGTG + ArtistFreddie Dredd + Album ArtistFreddie Dredd + ComposerFreddie Dredd + AlbumGTG - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3626934 + Total Time93894 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-05-09T19:05:48Z + Date Added2021-05-09T19:05:48Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3780485777 + Play Date UTC2023-10-18T11:56:17Z + Skip Count2 + Skip Date2023-06-22T08:10:13Z + Release Date2018-08-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumGTG - Single + Sort ArtistFreddie Dredd + Sort NameGTG + Persistent ID73DCC5C3E91AA8CC + Explicit + Track TypeRemote + Apple Music + + 5419 + + Track ID5419 + NameManolo (feat. Lecrae) + ArtistTrip Lee + Album ArtistTrip Lee + ComposerLecrae, Gabriel Azucena, William Barefield III & Jamaal Jones + AlbumRise + GenreHip-Hop + KindApple Music AAC audio file + Size8762239 + Total Time248217 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2014 + Date Modified2021-05-09T19:11:25Z + Date Added2021-05-09T19:11:25Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3781200004 + Play Date UTC2023-10-26T18:20:04Z + Skip Count2 + Skip Date2022-07-24T13:01:46Z + Release Date2014-10-17T12:00:00Z + Artwork Count1 + Sort AlbumRise + Sort ArtistTrip Lee + Sort NameManolo (feat. Lecrae) + Persistent IDAF9E6AFB2A771E1B + Track TypeRemote + Apple Music + + 5421 + + Track ID5421 + NameMartini Blue + ArtistDPR LIVE + Album ArtistDPR LIVE + AlbumHer - EP + GenreK-Pop + KindApple Music AAC audio file + Size6969465 + Total Time195205 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2017 + Date Modified2021-05-10T01:43:22Z + Date Added2021-05-10T01:43:22Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781058910 + Play Date UTC2023-10-25T03:08:30Z + Release Date2017-12-07T12:00:00Z + Artwork Count1 + Sort AlbumHer - EP + Sort ArtistDPR LIVE + Sort NameMartini Blue + Persistent ID4BFFB0A3AC8BF4D3 + Track TypeRemote + Apple Music + + 5423 + + Track ID5423 + Nametorture + ArtistX Ambassadors & Earl St. Clair + Album ArtistX Ambassadors & Earl St. Clair + ComposerAdam Levin, Casey Harris, Earl Johnson & Sam Harris + Albumtorture - Single + GenreAlternative + KindApple Music AAC audio file + Size5928864 + Total Time161669 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-05-11T13:31:33Z + Date Added2021-05-11T13:31:33Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3781618623 + Play Date UTC2023-10-31T14:37:03Z + Release Date2021-03-12T12:00:00Z + Artwork Count1 + Sort Albumtorture - Single + Sort ArtistX Ambassadors & Earl St. Clair + Sort Nametorture + Persistent ID753EF3D95D30C2F5 + Track TypeRemote + Apple Music + + 5425 + + Track ID5425 + NameFlip + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDavid Bayley + AlbumZABA (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size8153396 + Total Time222840 + Disc Number1 + Disc Count1 + Track Number1 + Track Count15 + Year2014 + Date Modified2021-05-11T19:53:39Z + Date Added2021-05-11T19:53:39Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3767206876 + Play Date UTC2023-05-17T19:21:16Z + Skip Count1 + Skip Date2021-05-11T20:11:41Z + Release Date2014-01-01T12:00:00Z + Artwork Count1 + Sort AlbumZABA (Deluxe) + Sort ArtistGlass Animals + Sort NameFlip + Persistent ID6C7730FD1A12C75E + Track TypeRemote + Apple Music + + 5427 + + Track ID5427 + NameGlow Long + ArtistMax Frost + Album ArtistMax Frost + ComposerJoshua Moore & Max Frost + AlbumLow High Low - EP + GenreAlternative + KindApple Music AAC audio file + Size7486119 + Total Time206539 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2013 + Date Modified2021-05-11T20:32:05Z + Date Added2021-05-11T20:32:05Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783672161 + Play Date UTC2023-11-24T09:02:41Z + Skip Count1 + Skip Date2022-10-17T06:26:47Z + Release Date2013-10-08T12:00:00Z + Artwork Count1 + Sort AlbumLow High Low - EP + Sort ArtistMax Frost + Sort NameGlow Long + Persistent ID3661D08583C2D825 + Track TypeRemote + Apple Music + + 5429 + + Track ID5429 + NameJourney + ArtistMarcusb. + Album ArtistMarcusb. + ComposerMarcus Borthwick + AlbumNature - EP + GenreAlternative + KindApple Music AAC audio file + Size4539322 + Total Time121500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2020 + Date Modified2021-05-12T17:22:38Z + Date Added2021-05-12T17:22:38Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781387203 + Play Date UTC2023-10-28T22:20:03Z + Release Date2020-04-20T12:00:00Z + Artwork Count1 + Sort AlbumNature - EP + Sort ArtistMarcusb. + Sort NameJourney + Persistent ID7F500A46AAECA29B + Track TypeRemote + Apple Music + + 5431 + + Track ID5431 + NameWho + ArtistBadKohai + Album ArtistBadKohai + ComposerBadKohai + AlbumWho - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size6193058 + Total Time176089 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-05-12T20:18:21Z + Date Added2021-05-12T20:18:21Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3773752440 + Play Date UTC2023-08-01T13:34:00Z + Release Date2019-03-27T12:00:00Z + Normalization1259 + Artwork Count1 + Sort AlbumWho - Single + Sort ArtistBadKohai + Sort NameWho + Persistent IDD64AF3430FBC94CF + Track TypeRemote + Apple Music + + 5433 + + Track ID5433 + NameAfter Coffee + ArtistJoywave + Album ArtistJoywave + ComposerJoywave & Daniel Armbruster + AlbumAfter Coffee - Single + GenreAlternative + KindAAC audio file + Size7088506 + Total Time196240 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-05-13T14:20:20Z + Date Added2021-05-13T14:20:20Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3741530693 + Play Date UTC2022-07-24T15:04:53Z + Skip Count1 + Skip Date2022-09-20T11:30:43Z + Release Date2021-03-19T12:00:00Z + Artwork Count1 + Sort AlbumAfter Coffee - Single + Sort ArtistJoywave + Sort NameAfter Coffee + Persistent IDC4465A987A8E03DA + Track TypeRemote + + 5435 + + Track ID5435 + NameYkwim? + ArtistYot Club + Album ArtistYot Club + ComposerRyan Kaiser + AlbumBipolar - EP + GenreAlternative + KindApple Music AAC audio file + Size7599633 + Total Time212750 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2019 + Date Modified2021-05-14T09:33:07Z + Date Added2021-05-14T09:33:07Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3780128048 + Play Date UTC2023-10-14T08:34:08Z + Skip Count2 + Skip Date2023-02-05T12:35:51Z + Release Date2019-05-31T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBipolar - EP + Sort ArtistYot Club + Sort NameYkwim? + Persistent ID997938D934F36508 + Track TypeRemote + Apple Music + + 5437 + + Track ID5437 + NamePink + White + ArtistFrank Ocean + Album ArtistFrank Ocean + AlbumBlonde + GenrePop + KindApple Music AAC audio file + Size7076848 + Total Time184516 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2016 + Date Modified2021-05-14T09:34:40Z + Date Added2021-05-14T09:34:40Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783711898 + Play Date UTC2023-11-24T20:04:58Z + Release Date2016-08-20T07:00:00Z + Loved + Normalization2966 + Artwork Count1 + Sort AlbumBlonde + Sort ArtistFrank Ocean + Sort NamePink + White + Persistent ID2DA7EE0807F52C38 + Track TypeRemote + Apple Music + + 5439 + + Track ID5439 + NameGod Damn (feat. Kin$oul) + ArtistBass Santana + Album ArtistXXXTENTACION + AlbumXXXTENTACION Presents: Members Only, Vol. 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5127085 + Total Time139361 + Disc Number1 + Disc Count1 + Track Number16 + Track Count23 + Year2017 + Date Modified2021-05-14T16:16:33Z + Date Added2021-05-14T16:16:33Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3783691951 + Play Date UTC2023-11-24T14:32:31Z + Skip Count2 + Skip Date2023-10-09T10:08:50Z + Release Date2017-06-26T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXXTENTACION Presents: Members Only, Vol. 3 + Sort ArtistBass Santana + Sort NameGod Damn (feat. Kin$oul) + Persistent ID473991BF06BE5490 + Explicit + Track TypeRemote + Apple Music + + 5441 + + Track ID5441 + NameThis Could Be Us + ArtistRae Sremmurd + Album ArtistRae Sremmurd + ComposerM. Williams, A.Brown, K. Brown & M. Middlebrooks + AlbumSremmLife + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7550465 + Total Time206307 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2015 + Date Modified2021-05-14T16:47:49Z + Date Added2021-05-14T16:47:49Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780833079 + Play Date UTC2023-10-22T12:24:39Z + Skip Count3 + Skip Date2022-08-19T16:09:25Z + Release Date2015-01-06T12:00:00Z + Normalization4829 + Artwork Count1 + Sort AlbumSremmLife + Sort ArtistRae Sremmurd + Sort NameThis Could Be Us + Persistent IDB2C8BD5C74C09C0C + Explicit + Track TypeRemote + Apple Music + + 5443 + + Track ID5443 + NameEverglow + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland, Mikkel S. Eriksen, Tor Erik Hermansen & Will Champion + AlbumA Head Full of Dreams + GenreAlternative + KindApple Music AAC audio file + Size10001078 + Total Time282693 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2015 + Date Modified2021-05-14T16:55:03Z + Date Added2021-05-14T16:55:03Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3782978703 + Play Date UTC2023-11-16T08:25:03Z + Skip Count1 + Skip Date2023-06-20T07:24:48Z + Release Date2015-12-04T08:00:00Z + Artwork Count1 + Sort AlbumHead Full of Dreams + Sort ArtistColdplay + Sort NameEverglow + Persistent ID8043792F2C92218A + Track TypeRemote + Apple Music + + 5445 + + Track ID5445 + NameRONDO (feat. Tory Lanez & Young Thug) + Artist6ix9ine + Album Artist6ix9ine + Composer6ix9ine + AlbumDAY69: Graduation Day + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5079887 + Total Time138474 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2018 + Date Modified2021-05-14T17:09:37Z + Date Added2021-05-14T17:09:37Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3759846403 + Play Date UTC2023-02-21T14:46:43Z + Skip Count1 + Skip Date2022-08-19T16:08:30Z + Release Date2018-02-23T12:00:00Z + Artwork Count1 + Sort AlbumDAY69: Graduation Day + Sort Artist6ix9ine + Sort NameRONDO (feat. Tory Lanez & Young Thug) + Persistent ID50A901B956C44802 + Explicit + Track TypeRemote + + 5447 + + Track ID5447 + NameIlluminati + ArtistLil Pump & Anuel AA + Album ArtistLil Pump & Anuel AA + ComposerEmmanuel Gazmey Santiago & Gazzy Garcia + AlbumIlluminati - Single + GenreLatin + KindApple Music AAC audio file + Size7928122 + Total Time224330 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-05-14T17:28:18Z + Date Added2021-05-14T17:28:18Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count25 + Play Date3770542327 + Play Date UTC2023-06-25T09:52:07Z + Skip Count2 + Skip Date2022-03-04T08:04:03Z + Release Date2020-04-24T12:00:00Z + Artwork Count1 + Sort AlbumIlluminati - Single + Sort ArtistLil Pump & Anuel AA + Sort NameIlluminati + Persistent ID8B75649D3FC33266 + Explicit + Track TypeRemote + Apple Music + + 5449 + + Track ID5449 + NameLights Up + ArtistHarry Styles + Album ArtistHarry Styles + ComposerHarry Styles, Tyler Johnson & Thomas Hull + AlbumFine Line + GenrePop + KindApple Music AAC audio file + Size6296340 + Total Time172216 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2019 + Date Modified2021-05-14T17:34:08Z + Date Added2021-05-14T17:34:08Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3767180768 + Play Date UTC2023-05-17T12:06:08Z + Skip Count2 + Skip Date2022-10-28T18:24:29Z + Release Date2019-10-11T12:00:00Z + Artwork Count1 + Sort AlbumFine Line + Sort ArtistHarry Styles + Sort NameLights Up + Persistent ID7E41BA702DD7ABB1 + Track TypeRemote + Apple Music + + 5451 + + Track ID5451 + NameGod's Plan + ArtistDrake + Album ArtistDrake + ComposerMatthew Samuels, Aubrey Graham, N. Shebib, Ron Latour, Daveon Jackson & Brock Korsan + AlbumScorpion + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7074717 + Total Time198973 + Disc Number1 + Disc Count2 + Track Number5 + Track Count12 + Year2018 + Date Modified2021-05-14T20:36:25Z + Date Added2021-05-14T20:36:25Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781381627 + Play Date UTC2023-10-28T20:47:07Z + Skip Count2 + Skip Date2023-04-28T14:01:11Z + Release Date2018-01-19T08:00:00Z + Artwork Count1 + Sort AlbumScorpion + Sort ArtistDrake + Sort NameGod's Plan + Persistent ID2189366D89544DF2 + Explicit + Track TypeRemote + Apple Music + + 5453 + + Track ID5453 + NameMr. Right Now (feat. Drake) + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerShe'yaa Bin Abraham-Joseph, David Ruoff, Leland Wayne, Elias Klughammer, Aubrey Graham, Jocelyn Donald & Tate Kobang + AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7327642 + Total Time193839 + Disc Number2 + Disc Count2 + Track Number4 + Track Count15 + Year2020 + Date Modified2021-05-14T20:39:39Z + Date Added2021-05-14T20:39:39Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3783264165 + Play Date UTC2023-11-19T15:42:45Z + Release Date2020-10-02T07:00:00Z + Artwork Count1 + Sort AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + Sort Artist21 Savage & Metro Boomin + Sort NameMr. Right Now (feat. Drake) + Persistent ID7AF0E0EC6839CE5B + Explicit + Track TypeRemote + Apple Music + + 5455 + + Track ID5455 + NameOxygen + ArtistBONES + Album ArtistBONES + AlbumNoRedeemingQualities + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5145048 + Total Time142056 + Disc Number1 + Disc Count1 + Track Number1 + Track Count14 + Year2017 + Date Modified2021-05-20T10:19:13Z + Date Added2021-05-20T10:19:13Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count39 + Play Date3772805655 + Play Date UTC2023-07-21T14:34:15Z + Skip Count1 + Skip Date2022-08-09T21:02:40Z + Release Date2017-06-16T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNoRedeemingQualities + Sort ArtistBONES + Sort NameOxygen + Persistent ID8F59456A2DD99A33 + Explicit + Track TypeRemote + Apple Music + + 5457 + + Track ID5457 + NameLooseScrew + ArtistBONES & Eddy Baker + Album ArtistBONES & Eddy Baker + AlbumSparrowsCreek + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6126024 + Total Time174375 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2019 + Date Modified2021-05-20T10:22:11Z + Date Added2021-05-20T10:22:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count44 + Play Date3780839254 + Play Date UTC2023-10-22T14:07:34Z + Skip Count2 + Skip Date2021-09-13T17:12:54Z + Release Date2019-02-11T12:00:00Z + Artwork Count1 + Sort AlbumSparrowsCreek + Sort ArtistBONES & Eddy Baker + Sort NameLooseScrew + Persistent ID18E65B513036BAF9 + Explicit + Track TypeRemote + Apple Music + + 5459 + + Track ID5459 + NameTroubledYouth + ArtistBONES + Album ArtistBONES + AlbumTeenWitch + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size2472889 + Total Time52062 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2014 + Date Modified2021-05-20T10:26:50Z + Date Added2021-05-20T10:26:50Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count49 + Play Date3769670488 + Play Date UTC2023-06-15T07:41:28Z + Release Date2014-02-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTeenWitch + Sort ArtistBONES + Sort NameTroubledYouth + Persistent ID08AC2AAF4B1CF54D + Explicit + Track TypeRemote + Apple Music + + 5461 + + Track ID5461 + NameRightClickSaveIt + ArtistBONES + Album ArtistBONES + AlbumTheManInTheRadiator + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4455546 + Total Time116064 + Disc Number1 + Disc Count1 + Track Number13 + Track Count28 + Year2018 + Date Modified2021-05-20T10:34:39Z + Date Added2021-05-20T10:34:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count61 + Play Date3775802274 + Play Date UTC2023-08-25T06:57:54Z + Skip Count2 + Skip Date2022-05-21T18:07:36Z + Release Date2018-11-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTheManInTheRadiator + Sort ArtistBONES + Sort NameRightClickSaveIt + Persistent IDDF33D8620A7CF611 + Explicit + Track TypeRemote + Apple Music + + 5463 + + Track ID5463 + NameDirt + ArtistBONES + Album ArtistBONES + AlbumScumbag + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5125978 + Total Time140251 + Disc Number1 + Disc Count1 + Track Number8 + Track Count19 + Year2013 + Date Modified2021-05-20T14:32:36Z + Date Added2021-05-20T14:32:36Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count46 + Play Date3780827021 + Play Date UTC2023-10-22T10:43:41Z + Skip Count3 + Skip Date2021-05-23T14:18:12Z + Release Date2013-08-08T12:00:00Z + Artwork Count1 + Sort AlbumScumbag + Sort ArtistBONES + Sort NameDirt + Persistent ID8ACE13DB6B9A6059 + Explicit + Track TypeRemote + Apple Music + + 5465 + + Track ID5465 + NameVertigo + ArtistBONES + Album ArtistBONES + AlbumOffline + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5055418 + Total Time137691 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2020 + Date Modified2021-05-20T18:27:17Z + Date Added2021-05-20T18:27:17Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count72 + Play Date3780847775 + Play Date UTC2023-10-22T16:29:35Z + Skip Count3 + Skip Date2021-07-04T15:14:25Z + Release Date2020-02-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumOffline + Sort ArtistBONES + Sort NameVertigo + Persistent ID4A0B32532C2A563A + Explicit + Track TypeRemote + Apple Music + + 5467 + + Track ID5467 + NameWill He + ArtistJoji + Album ArtistJoji + ComposerGeorge Miller & Lawrence Jung + AlbumIn Tongues - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size7210181 + Total Time202103 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2017 + Date Modified2021-05-21T09:58:27Z + Date Added2021-05-21T09:58:27Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count102 + Play Date3781347498 + Play Date UTC2023-10-28T11:18:18Z + Skip Count4 + Skip Date2022-10-26T11:17:44Z + Release Date2017-10-17T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization2166 + Artwork Count1 + Sort AlbumIn Tongues - EP + Sort ArtistJoji + Sort NameWill He + Persistent ID638A14F1D8DF3483 + Explicit + Track TypeRemote + Apple Music + + 5469 + + Track ID5469 + NameEven If I Tried + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6977340 + Total Time196686 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3776350344 + Play Date UTC2023-08-31T15:12:24Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameEven If I Tried + Persistent IDCA7CCF6CCA113B5D + Explicit + Track TypeRemote + Apple Music + + 5471 + + Track ID5471 + NameYesterday + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7895166 + Total Time221949 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count25 + Play Date3781616443 + Play Date UTC2023-10-31T14:00:43Z + Release Date2021-05-14T12:00:00Z + Rating100 + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameYesterday + Persistent ID5ECF91D22357124C + Explicit + Track TypeRemote + Apple Music + + 5473 + + Track ID5473 + NameRan Out Of Miracles + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4320201 + Total Time115460 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count37 + Play Date3772721859 + Play Date UTC2023-07-20T15:17:39Z + Skip Count2 + Skip Date2021-06-05T17:04:36Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameRan Out Of Miracles + Persistent ID1520A3B1CF746DE6 + Explicit + Track TypeRemote + Apple Music + + 5475 + + Track ID5475 + NameHome + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6839211 + Total Time190130 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count39 + Play Date3783708070 + Play Date UTC2023-11-24T19:01:10Z + Skip Count1 + Skip Date2022-10-28T17:14:52Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameHome + Persistent ID57D46CA75CB2E629 + Explicit + Track TypeRemote + Apple Music + + 5477 + + Track ID5477 + NameBlindfold + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7555901 + Total Time217554 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count49 + Play Date3783763565 + Play Date UTC2023-11-25T10:26:05Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Loved + Normalization2171 + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameBlindfold + Persistent ID8900D04AB7C6AE2E + Explicit + Track TypeRemote + Apple Music + + 5479 + + Track ID5479 + NameZoo + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7391197 + Total Time209559 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count27 + Play Date3762330354 + Play Date UTC2023-03-22T08:45:54Z + Skip Count2 + Skip Date2021-09-09T21:25:51Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameZoo + Persistent IDB22808CC28581B89 + Explicit + Track TypeRemote + Apple Music + + 5481 + + Track ID5481 + NameBeen A Really Weird Day So Far + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7532069 + Total Time212132 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count38 + Play Date3781202043 + Play Date UTC2023-10-26T18:54:03Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameBeen A Really Weird Day So Far + Persistent ID6872D4FDAAEFF63D + Explicit + Track TypeRemote + Apple Music + + 5483 + + Track ID5483 + NameGoing Under + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5833591 + Total Time161177 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count38 + Play Date3781449932 + Play Date UTC2023-10-29T15:45:32Z + Skip Count1 + Skip Date2022-02-23T21:21:37Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameGoing Under + Persistent ID35538B4BC2AAE996 + Explicit + Track TypeRemote + Apple Music + + 5485 + + Track ID5485 + NameWater World + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6731225 + Total Time190723 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count65 + Play Date3775745659 + Play Date UTC2023-08-24T15:14:19Z + Skip Count2 + Skip Date2021-11-09T14:22:34Z + Release Date2021-05-14T12:00:00Z + Rating60 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameWater World + Persistent ID03E05CDAE015A4B7 + Explicit + Track TypeRemote + Apple Music + + 5487 + + Track ID5487 + NameEuphoric + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6907907 + Total Time192722 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count37 + Play Date3783074541 + Play Date UTC2023-11-17T11:02:21Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameEuphoric + Persistent ID5D21818DA0B3EBA0 + Explicit + Track TypeRemote + Apple Music + + 5489 + + Track ID5489 + NameGarden Fumes + ArtistDerek Pope + Album ArtistDerek Pope + AlbumMiracle Mile + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5348069 + Total Time147262 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2021 + Date Modified2021-05-22T07:52:39Z + Date Added2021-05-22T07:52:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count35 + Play Date3781093908 + Play Date UTC2023-10-25T12:51:48Z + Release Date2021-05-14T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumMiracle Mile + Sort ArtistDerek Pope + Sort NameGarden Fumes + Persistent ID175133C83E21F1E9 + Explicit + Track TypeRemote + Apple Music + + 5491 + + Track ID5491 + NamePendulum + ArtistHarry Hudson + Album ArtistHarry Hudson + ComposerHarrison Rhodes, Jess Jackson, Nick Eaholtz & David Rosser + AlbumPendulum - Single + GenreAlternative + KindApple Music AAC audio file + Size5060160 + Total Time137455 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-05-25T11:31:43Z + Date Added2021-05-25T11:31:43Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3780129013 + Play Date UTC2023-10-14T08:50:13Z + Skip Count1 + Skip Date2021-05-26T18:12:12Z + Release Date2019-09-13T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumPendulum - Single + Sort ArtistHarry Hudson + Sort NamePendulum + Persistent ID33F31D3058AA3F7A + Track TypeRemote + Apple Music + + 5493 + + Track ID5493 + NameTrue Love + ArtistBalthazar + Album ArtistBalthazar + AlbumThin Walls + GenreAlternative + KindApple Music AAC audio file + Size11514701 + Total Time325383 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2015 + Date Modified2021-05-25T11:47:51Z + Date Added2021-05-25T11:47:51Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count30 + Play Date3780848101 + Play Date UTC2023-10-22T16:35:01Z + Skip Count5 + Skip Date2022-10-01T09:49:43Z + Release Date2015-03-30T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumThin Walls + Sort ArtistBalthazar + Sort NameTrue Love + Persistent IDAC73523E4D21A807 + Track TypeRemote + Apple Music + + 5495 + + Track ID5495 + NameGolden Antlers + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDavid Bayley + AlbumLeaflings - EP + GenreAlternative + KindAAC audio file + Size10384309 + Total Time294920 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2012 + Date Modified2021-05-25T17:38:26Z + Date Added2021-05-25T17:38:26Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3769184273 + Play Date UTC2023-06-09T16:37:53Z + Skip Count1 + Skip Date2021-05-26T21:40:09Z + Release Date2012-05-28T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumLeaflings - EP + Sort ArtistGlass Animals + Sort NameGolden Antlers + Persistent ID79C690CF28FD5CE4 + Track TypeRemote + + 5497 + + Track ID5497 + NameSecrets + ArtistTribe Society + Album ArtistTribe Society + AlbumWe Sell Drugs + GenreAlternative + KindApple Music AAC audio file + Size8791613 + Total Time249364 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2017 + Date Modified2021-05-25T18:07:24Z + Date Added2021-05-25T18:07:24Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count34 + Play Date3781446816 + Play Date UTC2023-10-29T14:53:36Z + Skip Count2 + Skip Date2021-05-29T14:19:24Z + Release Date2017-02-03T12:00:00Z + Album Loved + Normalization3509 + Artwork Count1 + Sort AlbumWe Sell Drugs + Sort ArtistTribe Society + Sort NameSecrets + Persistent IDCD591009B88B14B1 + Track TypeRemote + Apple Music + + 5499 + + Track ID5499 + NameFinesse the Beat + ArtistBlueface + Album ArtistBlueface + AlbumFamous Cryp (Reloaded) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5473267 + Total Time151710 + Disc Number1 + Disc Count1 + Track Number8 + Track Count20 + Year2020 + Date Modified2021-05-28T16:41:27Z + Date Added2021-05-28T16:41:27Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3773541602 + Play Date UTC2023-07-30T03:00:02Z + Skip Count6 + Skip Date2021-09-05T20:33:25Z + Release Date2020-06-26T07:00:00Z + Normalization1947 + Artwork Count1 + Sort AlbumFamous Cryp (Reloaded) + Sort ArtistBlueface + Sort NameFinesse the Beat + Persistent IDFB4210F68F2075E0 + Explicit + Track TypeRemote + Apple Music + + 5501 + + Track ID5501 + NameHair Down (feat. Kendrick Lamar) + ArtistSiR + Album ArtistSiR + ComposerSir Darryl Farris, Kendrick Duckworth, Mike Hector, Jeff Kleinman & Michael Uzowuru + AlbumHair Down (feat. Kendrick Lamar) - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size7794752 + Total Time216933 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-05-28T16:45:22Z + Date Added2021-05-28T16:45:22Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3779914763 + Play Date UTC2023-10-11T21:19:23Z + Skip Count2 + Skip Date2022-10-09T16:15:16Z + Release Date2019-08-30T07:00:00Z + Loved + Normalization1528 + Artwork Count1 + Sort AlbumHair Down (feat. Kendrick Lamar) - Single + Sort ArtistSiR + Sort NameHair Down (feat. Kendrick Lamar) + Persistent ID3F70F2BC6F6227C2 + Explicit + Track TypeRemote + Apple Music + + 5503 + + Track ID5503 + NameX + ArtistScHoolboy Q, 2 Chainz, Saudi + Album ArtistKendrick Lamar, SZA + ComposerKendrick Duckworth, M. Spears, R. Ibanga, Q. Hanley, T. Epps & A. Mbisha + AlbumBlack Panther The Album Music From And Inspired By + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9520538 + Total Time267428 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2018 + Date Modified2021-05-30T13:53:15Z + Date Added2021-05-30T13:53:15Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3755293388 + Play Date UTC2022-12-30T22:03:08Z + Skip Count4 + Skip Date2022-01-18T09:45:38Z + Release Date2018-02-09T12:00:00Z + Artwork Count1 + Sort AlbumBlack Panther The Album Music From And Inspired By + Sort ArtistScHoolboy Q, 2 Chainz, Saudi + Sort NameX + Persistent ID3C652CD75DCC4939 + Explicit + Track TypeRemote + Apple Music + + 5505 + + Track ID5505 + NameMy Heart Goes Bum Bum Bum + ArtistFlatsound + Album ArtistFlatsound + ComposerMitch Welling + AlbumI Clung to You Hoping We'd Both Drown + GenreAlternative + KindApple Music AAC audio file + Size6207434 + Total Time171262 + Disc Number1 + Disc Count1 + Track Number10 + Track Count16 + Year2011 + Date Modified2021-05-31T10:21:31Z + Date Added2021-05-31T10:21:31Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3783781427 + Play Date UTC2023-11-25T15:23:47Z + Skip Count2 + Skip Date2021-12-07T19:48:24Z + Release Date2011-03-11T12:00:00Z + Artwork Count1 + Sort AlbumI Clung to You Hoping We'd Both Drown + Sort ArtistFlatsound + Sort NameMy Heart Goes Bum Bum Bum + Persistent ID8BD115DE478CB5AC + Track TypeRemote + Apple Music + + 5507 + + Track ID5507 + NameAvalon + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerAristos Petrou & Scott Arceneaux Jr. + AlbumAvalon - Single + GenreHip-Hop + KindApple Music AAC audio file + Size5204689 + Total Time140859 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2021 + Date Modified2021-05-31T22:54:16Z + Date Added2021-05-31T22:54:16Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3780988590 + Play Date UTC2023-10-24T07:36:30Z + Skip Count6 + Skip Date2021-09-17T11:53:50Z + Release Date2021-05-21T12:00:00Z + Artwork Count1 + Sort AlbumAvalon - Single + Sort Artist$uicideboy$ + Sort NameAvalon + Persistent IDD7E775B9B2CF0C93 + Explicit + Track TypeRemote + Apple Music + + 5509 + + Track ID5509 + NamePillow Talking (feat. B.Rain) + ArtistLil Dicky + Album ArtistLil Dicky + ComposerDavid Burd & Ryan Vojtesak + AlbumProfessional Rapper + GenreHip-Hop + KindApple Music AAC audio file + Size21786358 + Total Time645876 + Disc Number1 + Disc Count1 + Track Number13 + Track Count20 + Year2015 + Date Modified2021-06-03T12:43:36Z + Date Added2021-06-03T12:43:36Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3770103368 + Play Date UTC2023-06-20T07:56:08Z + Skip Count1 + Skip Date2023-02-16T10:02:45Z + Release Date2015-07-31T12:00:00Z + Artwork Count1 + Sort AlbumProfessional Rapper + Sort ArtistLil Dicky + Sort NamePillow Talking (feat. B.Rain) + Persistent IDCEF49FD268A6F049 + Explicit + Track TypeRemote + Apple Music + + 5511 + + Track ID5511 + NameLife Could Be a Dream + ArtistThe Crew Cuts + Album ArtistVarious Artists + AlbumBalade à Saint-Germain, vol 6. Rue Saint Benoit : Nouvelle vague + GenreFrench Pop + KindApple Music AAC audio file + Size6240272 + Total Time166102 + Disc Number2 + Disc Count2 + Track Number14 + Track Count20 + Year2010 + Date Modified2021-06-05T15:38:04Z + Date Added2021-06-05T15:38:04Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3772083529 + Play Date UTC2023-07-13T05:58:49Z + Skip Count1 + Skip Date2022-12-08T09:27:58Z + Release Date2010-09-01T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumBalade à Saint-Germain, vol 6. Rue Saint Benoit : Nouvelle vague + Sort ArtistCrew Cuts + Sort NameLife Could Be a Dream + Persistent IDA1C4DC3D8CDEFCC3 + Track TypeRemote + Apple Music + + 5513 + + Track ID5513 + NameFini La Comédie + ArtistDalida + Album ArtistDalida + ComposerAngelo La Bionda, Carmelo La Bionda & Karel Ricanek + AlbumChante Le 7ème Art (Parlez-Moi D'Amour) + GenreFrench Pop + KindApple Music AAC audio file + Size7307055 + Total Time204947 + Disc Number1 + Disc Count1 + Track Number10 + Track Count24 + Year1997 + Date Modified2021-06-05T15:47:53Z + Date Added2021-06-05T15:47:53Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3781162654 + Play Date UTC2023-10-26T07:57:34Z + Skip Count1 + Skip Date2021-09-26T22:43:29Z + Release Date1981-06-08T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChante Le 7ème Art (Parlez-Moi D'Amour) + Sort ArtistDalida + Sort NameFini La Comédie + Persistent ID650C250454B5C0FE + Track TypeRemote + Apple Music + + 5515 + + Track ID5515 + NameOn My Own + ArtistDarci + Album ArtistDarci + AlbumOn My Own - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6172363 + Total Time171692 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-06-09T08:25:55Z + Date Added2021-06-09T08:25:55Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3772782087 + Play Date UTC2023-07-21T08:01:27Z + Release Date2018-05-09T12:00:00Z + Artwork Count1 + Sort AlbumOn My Own - Single + Sort ArtistDarci + Sort NameOn My Own + Persistent IDA48E093AB47BB3D8 + Explicit + Track TypeRemote + Apple Music + + 5517 + + Track ID5517 + Namemy vinyl + ArtistJeune Joseph + Album ArtistJeune Joseph + Albummy vinyl - Single + GenreAmbient + KindApple Music AAC audio file + Size4127578 + Total Time108000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-06-09T08:32:57Z + Date Added2021-06-09T08:32:57Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3783588088 + Play Date UTC2023-11-23T09:41:28Z + Skip Count2 + Skip Date2021-06-30T18:00:37Z + Release Date2021-05-28T12:00:00Z + Artwork Count1 + Sort Albummy vinyl - Single + Sort ArtistJeune Joseph + Sort Namemy vinyl + Persistent ID9FF42373BA5EE3F5 + Track TypeRemote + Apple Music + + 5519 + + Track ID5519 + NameEl Invento + ArtistJosé González + Album ArtistJosé González + ComposerJosé González + AlbumLocal Valley + GenreSinger/Songwriter + KindApple Music AAC audio file + Size5887717 + Total Time153413 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2021 + Date Modified2021-06-09T08:34:37Z + Date Added2021-06-09T08:34:37Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3781201672 + Play Date UTC2023-10-26T18:47:52Z + Skip Count1 + Skip Date2021-11-30T09:57:36Z + Release Date2021-02-17T12:00:00Z + Artwork Count1 + Sort AlbumLocal Valley + Sort ArtistJosé González + Sort NameEl Invento + Persistent ID6B59FD18CBBF45B3 + Track TypeRemote + Apple Music + + 5521 + + Track ID5521 + NameMake It Last + ArtistTherr Maitz + Album ArtistTherr Maitz + ComposerAnton Belyaev & Victoria Zhook + AlbumMake It Last - Single + GenreAlternative + KindApple Music AAC audio file + Size7156013 + Total Time209184 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2014 + Date Modified2021-06-09T18:54:09Z + Date Added2021-06-09T18:54:09Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783687449 + Play Date UTC2023-11-24T13:17:29Z + Skip Count3 + Skip Date2021-06-15T16:23:49Z + Release Date2014-02-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMake It Last - Single + Sort ArtistTherr Maitz + Sort NameMake It Last + Persistent ID81192AB3A9109016 + Track TypeRemote + Apple Music + + 5523 + + Track ID5523 + NameAntisocial + ArtistEd Sheeran & Travis Scott + Album ArtistEd Sheeran + ComposerEd Sheeran, Fred Gibson, Jacques Webster & Joseph Saddler + AlbumNo.6 Collaborations Project + GenrePop + KindApple Music AAC audio file + Size5845684 + Total Time161747 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2019 + Date Modified2021-06-12T19:31:47Z + Date Added2021-06-12T19:31:47Z + Bit Rate256 + Sample Rate44100 + Play Count61 + Play Date3769673424 + Play Date UTC2023-06-15T08:30:24Z + Skip Count15 + Skip Date2021-08-01T18:26:08Z + Release Date2019-07-12T07:00:00Z + Artwork Count1 + Sort AlbumNo.6 Collaborations Project + Sort ArtistEd Sheeran & Travis Scott + Sort NameAntisocial + Persistent ID6DBD0A05D615460C + Track TypeRemote + Apple Music + + 5525 + + Track ID5525 + NameMIDDLE CHILD + ArtistPnB Rock & XXXTENTACION + Album ArtistPnB Rock + ComposerDatkidchris, Jahseh Onfroy & PnB Rock + AlbumTrapStar Turnt PopStar + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5598176 + Total Time151574 + Disc Number1 + Disc Count2 + Track Number6 + Track Count9 + Year2019 + Date Modified2021-06-14T12:50:16Z + Date Added2021-06-14T12:50:16Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3768290183 + Play Date UTC2023-05-30T08:16:23Z + Skip Count1 + Skip Date2021-09-26T22:33:28Z + Release Date2019-05-03T07:00:00Z + Artwork Count1 + Sort AlbumTrapStar Turnt PopStar + Sort ArtistPnB Rock & XXXTENTACION + Sort NameMIDDLE CHILD + Persistent IDDDE851DA986639D5 + Explicit + Track TypeRemote + Apple Music + + 5527 + + Track ID5527 + Namewanting is never enough + ArtistSYML & Nathan Kawanishi + Album ArtistSYML & Nathan Kawanishi + ComposerBrian Fennell & Paul Meany + Albumwanting is never enough - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8164326 + Total Time214286 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-06-15T15:05:54Z + Date Added2021-06-15T15:05:54Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3767280366 + Play Date UTC2023-05-18T15:46:06Z + Release Date2021-05-28T12:00:00Z + Artwork Count1 + Sort Albumwanting is never enough - Single + Sort ArtistSYML & Nathan Kawanishi + Sort Namewanting is never enough + Persistent IDFA31916AD8764CD9 + Track TypeRemote + Apple Music + + 5529 + + Track ID5529 + NameF*ck Love + ArtistLund + Album ArtistLund + ComposerRobert Lund + AlbumF*ck Love - Single + GenreAlternative + KindApple Music AAC audio file + Size7036516 + Total Time197368 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-06-15T15:10:25Z + Date Added2021-06-15T15:10:25Z + Bit Rate256 + Sample Rate44100 + Play Count58 + Play Date3781619894 + Play Date UTC2023-10-31T14:58:14Z + Release Date2021-06-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumF*ck Love - Single + Sort ArtistLund + Sort NameF*ck Love + Persistent ID137E0523449C304A + Explicit + Track TypeRemote + Apple Music + + 5531 + + Track ID5531 + NameKing + ArtistXXXTENTACION + Album ArtistXXXTENTACION + AlbumRevenge + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4203974 + Total Time112800 + Disc Number1 + Disc Count1 + Track Number4 + Track Count7 + Year2016 + Date Modified2021-06-15T19:07:20Z + Date Added2021-06-15T19:07:20Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count30 + Play Date3781397117 + Play Date UTC2023-10-29T01:05:17Z + Skip Count2 + Skip Date2021-06-26T23:47:16Z + Release Date2016-04-25T07:00:00Z + Artwork Count1 + Sort AlbumRevenge + Sort ArtistXXXTENTACION + Sort NameKing + Persistent ID5A33E4149B0D0C99 + Explicit + Track TypeRemote + Apple Music + + 5533 + + Track ID5533 + NameHope + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJohn Cunningham & Jahseh Onfroy + Album? + GenrePop + KindApple Music AAC audio file + Size4255477 + Total Time110886 + Disc Number1 + Disc Count1 + Track Number16 + Track Count18 + Year2018 + Date Modified2021-06-15T19:13:49Z + Date Added2021-06-15T19:13:49Z + Bit Rate256 + Sample Rate44100 + Play Count60 + Play Date3780912414 + Play Date UTC2023-10-23T10:26:54Z + Skip Count4 + Skip Date2022-11-11T18:24:09Z + Release Date2018-03-16T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Loved + Normalization2267 + Artwork Count1 + Sort Album? + Sort ArtistXXXTENTACION + Sort NameHope + Persistent ID72E2E0451CD48C62 + Explicit + Track TypeRemote + Apple Music + + 5535 + + Track ID5535 + Namehelp herself + Artistbbno$ & Diamond Pistols + Album Artistbbno$ + ComposerAlex Gumuchian, Christian Dold & Nicco "Neek" Catalano + Albummy oh my - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6849528 + Total Time188571 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2021 + Date Modified2021-06-23T22:59:04Z + Date Added2021-06-23T22:59:04Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780005436 + Play Date UTC2023-10-12T22:30:36Z + Skip Count1 + Skip Date2022-05-16T21:54:23Z + Release Date2021-01-29T12:00:00Z + Loved + Normalization2462 + Artwork Count1 + Sort Albummy oh my - EP + Sort Artistbbno$ & Diamond Pistols + Sort Namehelp herself + Persistent ID04EF56CE91B4186F + Track TypeRemote + Apple Music + + 5537 + + Track ID5537 + NameLalala + ArtistY2K & bbno$ + Album ArtistY2K & bbno$ + ComposerAri Starace & Alex Gumuchian + AlbumLalala - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5848231 + Total Time160627 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-06-23T23:01:21Z + Date Added2021-06-23T23:01:21Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3781384419 + Play Date UTC2023-10-28T21:33:39Z + Skip Count4 + Skip Date2022-11-08T08:43:42Z + Release Date2019-06-07T12:00:00Z + Artwork Count1 + Sort AlbumLalala - Single + Sort ArtistY2K & bbno$ + Sort NameLalala + Persistent ID24454A0FEE9A9696 + Explicit + Track TypeRemote + Apple Music + + 5539 + + Track ID5539 + NameWolf + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumWolf + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4366070 + Total Time110616 + Disc Number1 + Disc Count1 + Track Number1 + Track Count18 + Year2013 + Date Modified2021-06-24T18:45:26Z + Date Added2021-06-24T18:45:26Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3766397171 + Play Date UTC2023-05-08T10:26:11Z + Skip Count1 + Skip Date2021-06-29T14:05:09Z + Release Date2013-04-01T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWolf + Sort ArtistTyler, The Creator + Sort NameWolf + Persistent IDE627570FFD5E0D37 + Explicit + Track TypeRemote + Apple Music + + 5541 + + Track ID5541 + NameMASSA + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7951302 + Total Time223719 + Disc Number1 + Disc Count1 + Track Number7 + Track Count16 + Year2021 + Date Modified2021-06-24T21:58:37Z + Date Added2021-06-24T21:58:37Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3774950637 + Play Date UTC2023-08-15T10:23:57Z + Skip Count1 + Skip Date2022-10-17T14:14:09Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization2656 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameMASSA + Persistent ID0025F4BC13D357D4 + Explicit + Track TypeRemote + Apple Music + + 5543 + + Track ID5543 + NameRUNITUP + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8162989 + Total Time229565 + Disc Number1 + Disc Count1 + Track Number8 + Track Count16 + Year2021 + Date Modified2021-06-24T22:05:12Z + Date Added2021-06-24T22:05:12Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783707879 + Play Date UTC2023-11-24T18:57:59Z + Skip Count2 + Skip Date2022-10-06T10:03:16Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization2458 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameRUNITUP + Persistent ID194E6FFD8DD6B8C7 + Explicit + Track TypeRemote + Apple Music + + 5545 + + Track ID5545 + NameSAFARI + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6367335 + Total Time177743 + Disc Number1 + Disc Count1 + Track Number16 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3783576812 + Play Date UTC2023-11-23T06:33:32Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization3622 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameSAFARI + Persistent ID58667ECFB41A84A8 + Explicit + Track TypeRemote + Apple Music + + 5547 + + Track ID5547 + NameMANIFESTO + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6352153 + Total Time175123 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3782803695 + Play Date UTC2023-11-14T07:48:15Z + Skip Date2021-07-21T13:36:55Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization4716 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameMANIFESTO + Persistent ID889D6B36E1887E84 + Explicit + Track TypeRemote + Apple Music + + 5549 + + Track ID5549 + NameSWEET / I THOUGHT YOU WANTED TO DANCE + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size20418793 + Total Time588139 + Disc Number1 + Disc Count1 + Track Number10 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3778574692 + Play Date UTC2023-09-26T09:04:52Z + Skip Count4 + Skip Date2023-08-29T15:22:33Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization4702 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameSWEET / I THOUGHT YOU WANTED TO DANCE + Persistent ID3314A9175DB387A2 + Explicit + Track TypeRemote + Apple Music + + 5551 + + Track ID5551 + NameMOMMA TALK + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerSpoken Word + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size2978541 + Total Time70927 + Disc Number1 + Disc Count1 + Track Number11 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3781063641 + Play Date UTC2023-10-25T04:27:21Z + Skip Count1 + Skip Date2023-01-11T20:35:57Z + Release Date2021-06-25T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization3208 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameMOMMA TALK + Persistent ID509B9C382FFD70B5 + Explicit + Track TypeRemote + Apple Music + + 5553 + + Track ID5553 + NameSIR BAUDELAIRE + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3461853 + Total Time88625 + Disc Number1 + Disc Count1 + Track Number1 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3783807165 + Play Date UTC2023-11-25T22:32:45Z + Skip Count3 + Skip Date2023-10-14T09:39:27Z + Release Date2021-06-25T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization3102 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameSIR BAUDELAIRE + Persistent ID08667CBFAAF3FCA3 + Explicit + Track TypeRemote + Apple Music + + 5555 + + Track ID5555 + NameLEMONHEAD + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4895154 + Total Time130980 + Disc Number1 + Disc Count1 + Track Number3 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3770541489 + Play Date UTC2023-06-25T09:38:09Z + Skip Count7 + Skip Date2023-02-22T19:07:23Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization4099 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameLEMONHEAD + Persistent IDAFEE40C1E609BCD4 + Explicit + Track TypeRemote + Apple Music + + 5557 + + Track ID5557 + NameCORSO + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5389145 + Total Time146482 + Disc Number1 + Disc Count1 + Track Number2 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3777022714 + Play Date UTC2023-09-08T09:58:34Z + Skip Count1 + Skip Date2023-07-20T10:48:11Z + Release Date2021-06-25T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization5413 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameCORSO + Persistent ID58021FCB4225FA62 + Explicit + Track TypeRemote + Apple Music + + 5559 + + Track ID5559 + NameLUMBERJACK + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma, Larry Willis, Anthony Berkeley, Robert Diggs, Arnold Hamilton & Paul Huston + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5120530 + Total Time138312 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3760188301 + Play Date UTC2023-02-25T13:45:01Z + Skip Count2 + Skip Date2023-04-23T06:55:44Z + Release Date2021-06-16T07:00:00Z + Album Rating100 + Album Rating Computed + Normalization4109 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameLUMBERJACK + Persistent ID8A9B72B05C08441B + Explicit + Track TypeRemote + Apple Music + + 5561 + + Track ID5561 + NameWUSYANAME + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4550861 + Total Time121573 + Disc Number1 + Disc Count1 + Track Number4 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3782976438 + Play Date UTC2023-11-16T07:47:18Z + Skip Count1 + Skip Date2021-06-26T23:47:49Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization4250 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameWUSYANAME + Persistent ID804499FA5BC104C4 + Explicit + Track TypeRemote + Apple Music + + 5563 + + Track ID5563 + NameWILSHIRE + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size18485092 + Total Time515865 + Disc Number1 + Disc Count1 + Track Number15 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3762004249 + Play Date UTC2023-03-18T14:10:49Z + Skip Count5 + Skip Date2023-03-24T20:38:20Z + Release Date2021-06-25T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization2692 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameWILSHIRE + Persistent IDEFB6B6A23B2759A2 + Explicit + Track TypeRemote + Apple Music + + 5565 + + Track ID5565 + NameHOT WIND BLOWS + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5666301 + Total Time155293 + Disc Number1 + Disc Count1 + Track Number6 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3779949278 + Play Date UTC2023-10-12T06:54:38Z + Skip Count3 + Skip Date2023-11-21T06:07:52Z + Release Date2021-06-25T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization5009 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameHOT WIND BLOWS + Persistent IDBE2BDF897223B3B9 + Explicit + Track TypeRemote + Apple Music + + 5567 + + Track ID5567 + NameJUGGERNAUT + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5418380 + Total Time146419 + Disc Number1 + Disc Count1 + Track Number14 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count49 + Play Date3781620398 + Play Date UTC2023-10-31T15:06:38Z + Skip Count3 + Skip Date2023-05-14T12:18:15Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization2520 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameJUGGERNAUT + Persistent ID6E3B01146E3F0381 + Explicit + Track TypeRemote + Apple Music + + 5569 + + Track ID5569 + NameRISE! + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7266871 + Total Time203588 + Disc Number1 + Disc Count1 + Track Number12 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3762333315 + Play Date UTC2023-03-22T09:35:15Z + Skip Count5 + Skip Date2023-05-14T13:06:21Z + Release Date2021-06-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization6307 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameRISE! + Persistent IDF256EB2B4059D5B6 + Explicit + Track TypeRemote + Apple Music + + 5571 + + Track ID5571 + NameBLESSED + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCALL ME IF YOU GET LOST + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size2425481 + Total Time57667 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2021 + Date Modified2021-06-24T22:06:35Z + Date Added2021-06-24T22:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3781766671 + Play Date UTC2023-11-02T07:44:31Z + Skip Count8 + Skip Date2022-10-05T05:48:26Z + Release Date2021-06-25T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization3047 + Artwork Count1 + Sort AlbumCALL ME IF YOU GET LOST + Sort ArtistTyler, The Creator + Sort NameBLESSED + Persistent ID2D34AA4DA4F687B8 + Explicit + Track TypeRemote + Apple Music + + 5573 + + Track ID5573 + NameInLovingMemory + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3908638 + Total Time102452 + Disc Number1 + Disc Count1 + Track Number1 + Track Count17 + Year2021 + Date Modified2021-06-24T23:02:42Z + Date Added2021-06-24T23:02:42Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count63 + Play Date3781866689 + Play Date UTC2023-11-03T11:31:29Z + Skip Count2 + Skip Date2022-12-27T09:11:22Z + Release Date2021-06-18T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Normalization1509 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameInLovingMemory + Persistent IDE78067A3F7C63AA2 + Explicit + Track TypeRemote + Apple Music + + 5575 + + Track ID5575 + NameBYE + ArtistJaden + Album ArtistJaden + ComposerPeder Losnegård & Jaden Smith + AlbumBYE - Single + GenreAlternative + KindApple Music AAC audio file + Size10442811 + Total Time296048 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-06-24T23:04:33Z + Date Added2021-06-24T23:04:33Z + Bit Rate256 + Sample Rate44100 + Play Count51 + Play Date3760953500 + Play Date UTC2023-03-06T10:18:20Z + Skip Count5 + Skip Date2023-05-30T14:54:04Z + Release Date2021-06-22T12:00:00Z + Artwork Count1 + Sort AlbumBYE - Single + Sort ArtistJaden + Sort NameBYE + Persistent ID5727047ED9CDB6B2 + Explicit + Track TypeRemote + Apple Music + + 5577 + + Track ID5577 + NameP250 + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5574531 + Total Time155193 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count72 + Play Date3773527186 + Play Date UTC2023-07-29T22:59:46Z + Release Date2021-06-18T12:00:00Z + Rating80 + Album Rating100 + Album Rating Computed + Loved + Normalization1259 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameP250 + Persistent ID30EFC61BD16969B1 + Explicit + Track TypeRemote + Apple Music + + 5579 + + Track ID5579 + NameDemolitionFreestylePt3 + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4692288 + Total Time128209 + Disc Number1 + Disc Count1 + Track Number6 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count64 + Play Date3770356442 + Play Date UTC2023-06-23T06:14:02Z + Skip Count1 + Skip Date2022-03-01T18:04:46Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1817 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameDemolitionFreestylePt3 + Persistent IDA5243E81111AF141 + Explicit + Track TypeRemote + Apple Music + + 5581 + + Track ID5581 + NameRainCloudsFollowMe + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5619720 + Total Time153182 + Disc Number1 + Disc Count1 + Track Number4 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count81 + Play Date3781061765 + Play Date UTC2023-10-25T03:56:05Z + Skip Count2 + Skip Date2022-04-16T22:48:06Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization1259 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameRainCloudsFollowMe + Persistent IDAEB7934EC19CFB70 + Explicit + Track TypeRemote + Apple Music + + 5583 + + Track ID5583 + NameTwasTheDarkestNight + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3319317 + Total Time85499 + Disc Number1 + Disc Count1 + Track Number17 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count50 + Play Date3780830694 + Play Date UTC2023-10-22T11:44:54Z + Skip Count4 + Skip Date2022-11-18T15:30:37Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization2187 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameTwasTheDarkestNight + Persistent IDCF6AF15E4FFFB044 + Explicit + Track TypeRemote + Apple Music + + 5585 + + Track ID5585 + NameSoulFood + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4177908 + Total Time111909 + Disc Number1 + Disc Count1 + Track Number16 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count54 + Play Date3783712011 + Play Date UTC2023-11-24T20:06:51Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1259 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameSoulFood + Persistent IDEF5FBEAF8BA2CFFE + Explicit + Track TypeRemote + Apple Music + + 5587 + + Track ID5587 + NameGoHardHuh + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3024508 + Total Time76722 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count78 + Play Date3772785182 + Play Date UTC2023-07-21T08:53:02Z + Skip Count2 + Skip Date2021-09-26T16:51:22Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1437 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameGoHardHuh + Persistent ID7C2F2255933FAB40 + Explicit + Track TypeRemote + Apple Music + + 5589 + + Track ID5589 + NameWhiteBoyRick + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3991816 + Total Time105691 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count67 + Play Date3775209084 + Play Date UTC2023-08-18T10:11:24Z + Skip Count2 + Skip Date2022-04-06T08:57:48Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization1259 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameWhiteBoyRick + Persistent ID46420D83F64A15E6 + Explicit + Track TypeRemote + Apple Music + + 5591 + + Track ID5591 + NameAnyLastWords? + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4865130 + Total Time133303 + Disc Number1 + Disc Count1 + Track Number2 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count78 + Play Date3781394050 + Play Date UTC2023-10-29T00:14:10Z + Skip Count7 + Skip Date2022-05-23T09:12:19Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1329 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameAnyLastWords? + Persistent ID1D9115635774FE73 + Explicit + Track TypeRemote + Apple Music + + 5593 + + Track ID5593 + NameSawedOff + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3751164 + Total Time100258 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count57 + Play Date3782903301 + Play Date UTC2023-11-15T11:28:21Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1259 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameSawedOff + Persistent ID2C9D8F08AA801177 + Explicit + Track TypeRemote + Apple Music + + 5595 + + Track ID5595 + NameChatLog + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4315986 + Total Time116323 + Disc Number1 + Disc Count1 + Track Number9 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count68 + Play Date3781354794 + Play Date UTC2023-10-28T13:19:54Z + Skip Count3 + Skip Date2022-07-19T16:33:49Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization1259 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameChatLog + Persistent IDC664C4A1FACA461E + Explicit + Track TypeRemote + Apple Music + + 5597 + + Track ID5597 + NameZippo + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3159354 + Total Time82077 + Disc Number1 + Disc Count1 + Track Number15 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count56 + Play Date3775741896 + Play Date UTC2023-08-24T14:11:36Z + Skip Count1 + Skip Date2022-11-21T15:29:58Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Normalization1853 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameZippo + Persistent ID15C27CF2B4163ED2 + Explicit + Track TypeRemote + Apple Music + + 5599 + + Track ID5599 + NameEverybodysFavoriteScumbag + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3963824 + Total Time101251 + Disc Number1 + Disc Count1 + Track Number11 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count67 + Play Date3777564378 + Play Date UTC2023-09-14T16:26:18Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1555 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameEverybodysFavoriteScumbag + Persistent ID79A3012EF0EAF5A1 + Explicit + Track TypeRemote + Apple Music + + 5601 + + Track ID5601 + NameHitchhiker + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3556387 + Total Time92813 + Disc Number1 + Disc Count1 + Track Number12 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count61 + Play Date3780129949 + Play Date UTC2023-10-14T09:05:49Z + Skip Count2 + Skip Date2023-02-03T12:47:42Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1259 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameHitchhiker + Persistent ID6CAB5BD23DED7B69 + Explicit + Track TypeRemote + Apple Music + + 5603 + + Track ID5603 + NameFocus + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6880873 + Total Time193306 + Disc Number1 + Disc Count1 + Track Number14 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count60 + Play Date3766660689 + Play Date UTC2023-05-11T11:38:09Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1280 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameFocus + Persistent ID0C26CCDBC91AF87E + Explicit + Track TypeRemote + Apple Music + + 5605 + + Track ID5605 + NameIThinkIWillBeOk + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size2979295 + Total Time75180 + Disc Number1 + Disc Count1 + Track Number13 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count60 + Play Date3781435039 + Play Date UTC2023-10-29T11:37:19Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1259 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameIThinkIWillBeOk + Persistent ID5392D932149D1F38 + Explicit + Track TypeRemote + Apple Music + + 5607 + + Track ID5607 + NameBrandNewExpectations + ArtistBONES + Album ArtistBONES + AlbumInLovingMemory + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3176378 + Total Time82678 + Disc Number1 + Disc Count1 + Track Number8 + Track Count17 + Year2021 + Date Modified2021-06-24T23:06:47Z + Date Added2021-06-24T23:06:47Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count68 + Play Date3781437423 + Play Date UTC2023-10-29T12:17:03Z + Skip Count1 + Skip Date2022-07-24T13:01:58Z + Release Date2021-06-18T12:00:00Z + Album Rating100 + Album Rating Computed + Normalization1635 + Artwork Count1 + Sort AlbumInLovingMemory + Sort ArtistBONES + Sort NameBrandNewExpectations + Persistent IDA7ADAEA5FF9938E9 + Explicit + Track TypeRemote + Apple Music + + 5609 + + Track ID5609 + Name$Outh $Ide $Uicide (feat. Pouya) + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerScott Arceneaux Jr. & Aristos Petrou + AlbumHigh Tide in the Snake's Nest + GenreHip-Hop + KindApple Music AAC audio file + Size6070943 + Total Time169169 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2015 + Date Modified2021-06-29T12:35:17Z + Date Added2021-06-29T12:35:17Z + Bit Rate256 + Sample Rate44100 + Play Count54 + Play Date3783354567 + Play Date UTC2023-11-20T16:49:27Z + Skip Count1 + Skip Date2021-12-20T19:54:57Z + Release Date2015-06-15T12:00:00Z + Artwork Count1 + Sort AlbumHigh Tide in the Snake's Nest + Sort Artist$uicideboy$ + Sort Name$Outh $Ide $Uicide (feat. Pouya) + Persistent ID8386A4A3C2953A1C + Explicit + Track TypeRemote + Apple Music + + 5611 + + Track ID5611 + NameBEST INTEREST + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma, Barbara Trotter & Kenneth Chavis + AlbumBEST INTEREST - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4706088 + Total Time127921 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-06-30T23:07:21Z + Date Added2021-06-30T23:07:21Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3781196181 + Play Date UTC2023-10-26T17:16:21Z + Skip Count1 + Skip Date2021-08-24T10:04:49Z + Release Date2020-01-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBEST INTEREST - Single + Sort ArtistTyler, The Creator + Sort NameBEST INTEREST + Persistent ID3BAEE4DE1B73C84D + Explicit + Track TypeRemote + Apple Music + + 5613 + + Track ID5613 + NameEveryday (feat. Rod Stewart x Miguel x Mark Ronson) + ArtistA$AP Rocky + Album ArtistA$AP Rocky + ComposerMark Ronson, Rakim Mayers, Miguel & David Keith Bentley + AlbumAT.LONG.LAST.A$AP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8984115 + Total Time260991 + Disc Number1 + Disc Count1 + Track Number17 + Track Count18 + Year2015 + Date Modified2021-07-08T19:10:27Z + Date Added2021-07-08T19:10:27Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3761057407 + Play Date UTC2023-03-07T15:10:07Z + Skip Count4 + Skip Date2021-09-15T19:04:45Z + Release Date2015-05-08T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumAT.LONG.LAST.A$AP + Sort ArtistA$AP Rocky + Sort NameEveryday (feat. Rod Stewart x Miguel x Mark Ronson) + Persistent IDBD7627FADC0D0140 + Explicit + Track TypeRemote + Apple Music + + 5615 + + Track ID5615 + NameMotley Crew + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post, David Doman, Louis Bell, Ezemdi Chinaecherem Chikwendu, Daniel Kostov & Danny Levin + AlbumMotley Crew - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6646900 + Total Time184213 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-07-13T03:02:11Z + Date Added2021-07-13T03:02:11Z + Bit Rate256 + Sample Rate44100 + Play Count64 + Play Date3783013316 + Play Date UTC2023-11-16T18:01:56Z + Skip Count8 + Skip Date2023-06-25T18:25:09Z + Release Date2021-07-09T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMotley Crew - Single + Sort ArtistPost Malone + Sort NameMotley Crew + Persistent ID76F6ACB888208BF8 + Explicit + Track TypeRemote + Apple Music + + 5617 + + Track ID5617 + NameKick It + ArtistVerzache + Album ArtistVerzache + ComposerVerzache + AlbumThought Pool + GenreAlternative + KindApple Music AAC audio file + Size6049192 + Total Time170542 + Disc Number1 + Disc Count1 + Track Number6 + Track Count8 + Year2018 + Date Modified2021-07-14T12:25:07Z + Date Added2021-07-14T12:25:07Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3766651217 + Play Date UTC2023-05-11T09:00:17Z + Skip Count1 + Skip Date2021-09-20T13:52:48Z + Release Date2018-10-19T12:00:00Z + Artwork Count1 + Sort AlbumThought Pool + Sort ArtistVerzache + Sort NameKick It + Persistent ID94905565F4DC149B + Track TypeRemote + Apple Music + + 5619 + + Track ID5619 + NameT.D (feat. A$AP Rocky & Tyler, The Creator) + ArtistLil Yachty & Tierra Whack + Album ArtistLil Yachty + ComposerTierra Whack, Miles McCollum, Samuel Gloade, Rakim Mayers, Tyler Okonma, Pharrell Williams, Seiji Kameyama, Verbal, RYO-Z & ILMARI + AlbumLil Boat 3 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8298648 + Total Time232839 + Disc Number1 + Disc Count1 + Track Number4 + Track Count19 + Year2020 + Date Modified2021-07-18T16:47:30Z + Date Added2021-07-18T16:47:30Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3760899362 + Play Date UTC2023-03-05T19:16:02Z + Skip Count4 + Skip Date2022-11-24T11:13:13Z + Release Date2020-05-29T12:00:00Z + Album Rating20 + Album Rating Computed + Artwork Count1 + Sort AlbumLil Boat 3 + Sort ArtistLil Yachty & Tierra Whack + Sort NameT.D (feat. A$AP Rocky & Tyler, The Creator) + Persistent IDB21AD1F61ED722FB + Explicit + Track TypeRemote + Apple Music + + 5621 + + Track ID5621 + NameGone (feat. Kimbra) + ArtistSon Lux & Kimbra + Album ArtistSon Lux & Kimbra + AlbumGone (feat. Kimbra) - Single + GenreAlternative + KindApple Music AAC audio file + Size4911651 + Total Time136296 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-07-19T21:56:16Z + Date Added2021-07-19T21:56:16Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3760113425 + Play Date UTC2023-02-24T16:57:05Z + Release Date2021-07-12T12:00:00Z + Artwork Count1 + Sort AlbumGone (feat. Kimbra) - Single + Sort ArtistSon Lux & Kimbra + Sort NameGone (feat. Kimbra) + Persistent ID5EB1B4C95BCEEF46 + Track TypeRemote + Apple Music + + 5623 + + Track ID5623 + NameNenita + ArtistManuel Medrano + Album ArtistManuel Medrano + ComposerManuel Medrano + AlbumNenita - Single + GenrePop Latino + KindApple Music AAC audio file + Size7316942 + Total Time203973 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-07-21T09:47:55Z + Date Added2021-07-21T09:47:55Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3780826608 + Play Date UTC2023-10-22T10:36:48Z + Skip Count2 + Skip Date2022-08-10T18:48:00Z + Release Date2021-06-18T12:00:00Z + Artwork Count1 + Sort AlbumNenita - Single + Sort ArtistManuel Medrano + Sort NameNenita + Persistent ID0671DD80BA49000C + Track TypeRemote + Apple Music + + 5625 + + Track ID5625 + NameDigest + ArtistValentino Khan, wifisfuneral & Almighty Jay + Album ArtistValentino Khan, wifisfuneral & Almighty Jay + ComposerValentino Khan, Isaih Rivera & Jay Bradley + AlbumDigest - Single + GenreHip-Hop + KindApple Music AAC audio file + Size5688603 + Total Time152535 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-07-30T23:38:21Z + Date Added2021-07-30T23:38:21Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3782814198 + Play Date UTC2023-11-14T10:43:18Z + Release Date2021-06-25T12:00:00Z + Artwork Count1 + Sort AlbumDigest - Single + Sort ArtistValentino Khan, wifisfuneral & Almighty Jay + Sort NameDigest + Persistent ID3F885B02E28DE3F9 + Explicit + Track TypeRemote + Apple Music + + 5627 + + Track ID5627 + NameExits + ArtistFoals + Album ArtistFoals + ComposerEdwin Congreave, Jack Bevan, James Smith & Yannis Philippakis + AlbumEverything Not Saved Will Be Lost Part I + GenreAlternative + KindApple Music AAC audio file + Size12294710 + Total Time357419 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2019 + Date Modified2021-08-01T14:24:27Z + Date Added2021-08-01T14:24:27Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3781352452 + Play Date UTC2023-10-28T12:40:52Z + Skip Date2022-11-21T15:18:38Z + Release Date2019-01-21T12:00:00Z + Artwork Count1 + Sort AlbumEverything Not Saved Will Be Lost Part I + Sort ArtistFoals + Sort NameExits + Persistent ID0348E7467C7C393E + Track TypeRemote + Apple Music + + 5629 + + Track ID5629 + NamePDLIF + ArtistBon Iver + Album ArtistBon Iver + ComposerJustin Vernon + AlbumPDLIF - Single + GenreAlternative + KindApple Music AAC audio file + Size6661321 + Total Time177286 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-08-02T21:37:16Z + Date Added2021-08-02T21:37:16Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3782988562 + Play Date UTC2023-11-16T11:09:22Z + Skip Count1 + Skip Date2021-09-04T12:27:00Z + Release Date2020-04-17T12:00:00Z + Artwork Count1 + Sort AlbumPDLIF - Single + Sort ArtistBon Iver + Sort NamePDLIF + Persistent ID4B23D1107CE281E4 + Track TypeRemote + Apple Music + + 5631 + + Track ID5631 + NameThe Runner + ArtistFoals + GenreAlternative + KindMPEG-4 video file + Size61051353 + Total Time273407 + Year2019 + Date Modified2021-08-03T20:53:37Z + Date Added2021-08-03T20:53:37Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3756739251 + Play Date UTC2023-01-16T15:40:51Z + Release Date2019-09-23T07:00:00Z + Artwork Count1 + Sort ArtistFoals + Sort NameRunner + Persistent IDB7DFB6F4FBC0A66E + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 5633 + + Track ID5633 + NameNeptune + ArtistFoals + Album ArtistFoals + ComposerFoals + AlbumEverything Not Saved Will Be Lost Part II + GenreAlternative + KindApple Music AAC audio file + Size21020386 + Total Time618428 + Disc Number1 + Disc Count2 + Track Number10 + Track Count10 + Year2019 + Date Modified2021-08-04T19:23:25Z + Date Added2021-08-04T19:23:25Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3781051328 + Play Date UTC2023-10-25T01:02:08Z + Release Date2019-10-18T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumEverything Not Saved Will Be Lost Part II + Sort ArtistFoals + Sort NameNeptune + Persistent ID0C4153903D1CAF1F + Track TypeRemote + Apple Music + + 5635 + + Track ID5635 + NameBeggin (original Version) + ArtistMadcon + Album ArtistMadcon + AlbumSo Dark the Con of Man + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7691858 + Total Time216147 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2007 + Date Modified2021-08-10T23:48:08Z + Date Added2021-08-10T23:48:08Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3771689582 + Play Date UTC2023-07-08T16:33:02Z + Skip Count2 + Skip Date2021-09-16T20:25:33Z + Release Date2007-10-26T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSo Dark the Con of Man + Sort ArtistMadcon + Sort NameBeggin (original Version) + Persistent ID482B3AE5BAFB048A + Track TypeRemote + Apple Music + + 5637 + + Track ID5637 + NameINDUSTRY BABY + ArtistLil Nas X & Jack Harlow + Album ArtistLil Nas X & Jack Harlow + ComposerJack Harlow, Montero Hill, Kanye West, Denzel Baptiste, Nick Lee & David Biral + AlbumINDUSTRY BABY - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7706225 + Total Time212000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-08-10T23:52:28Z + Date Added2021-08-10T23:52:28Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3773537603 + Play Date UTC2023-07-30T01:53:23Z + Skip Count1 + Skip Date2021-10-06T12:55:25Z + Release Date2021-07-23T12:00:00Z + Artwork Count1 + Sort AlbumINDUSTRY BABY - Single + Sort ArtistLil Nas X & Jack Harlow + Sort NameINDUSTRY BABY + Persistent IDB5EE41D764CC2578 + Explicit + Track TypeRemote + Apple Music + + 5639 + + Track ID5639 + NameMONTERO (Call Me By Your Name) + ArtistLil Nas X + Album ArtistLil Nas X + ComposerMontero Hill, Denzel Baptiste, David Biral, Omer Fedi & Roy Lenzo + AlbumMONTERO (Call Me By Your Name) - Single + GenrePop + KindApple Music AAC audio file + Size5143974 + Total Time137876 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2021 + Date Modified2021-08-10T23:54:05Z + Date Added2021-08-10T23:54:05Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783665757 + Play Date UTC2023-11-24T07:15:57Z + Release Date2021-03-26T07:00:00Z + Artwork Count1 + Sort AlbumMONTERO (Call Me By Your Name) - Single + Sort ArtistLil Nas X + Sort NameMONTERO (Call Me By Your Name) + Persistent ID00377886883820B5 + Explicit + Track TypeRemote + Apple Music + + 5641 + + Track ID5641 + NamePanini + ArtistLil Nas X + Album ArtistLil Nas X + ComposerMontero Lamar Hill, Denzel Baptiste, David Biral, Oladipo Omishore & Kurt Cobain + Album7 - EP + GenreAlternative + KindApple Music AAC audio file + Size4373862 + Total Time114893 + Disc Number1 + Disc Count1 + Track Number2 + Track Count8 + Year2019 + Date Modified2021-08-10T23:55:15Z + Date Added2021-08-10T23:55:15Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3773235463 + Play Date UTC2023-07-26T13:57:43Z + Skip Count1 + Skip Date2021-12-20T19:08:30Z + Release Date2019-06-20T07:00:00Z + Normalization3137 + Artwork Count1 + Sort Album7 - EP + Sort ArtistLil Nas X + Sort NamePanini + Persistent ID1A0A33A9DE6A696A + Track TypeRemote + Apple Music + + 5643 + + Track ID5643 + NameRain (from The Suicide Squad) + Artistgrandson & Jessie Reyez + Album Artistgrandson & Jessie Reyez + ComposerJordan Benjamin, Kevin Hissink, Chester Krupa Carbone & Jessie Reyez + AlbumRain (from The Suicide Squad) - Single + GenreAlternative + KindApple Music AAC audio file + Size8365265 + Total Time236041 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-08-11T00:05:33Z + Date Added2021-08-11T00:05:33Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3779240164 + Play Date UTC2023-10-04T01:56:04Z + Skip Count3 + Skip Date2021-12-02T09:40:16Z + Release Date2021-06-22T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRain (from The Suicide Squad) - Single + Sort Artistgrandson & Jessie Reyez + Sort NameRain (from The Suicide Squad) + Persistent IDFEAAA10AF55F1828 + Track TypeRemote + Apple Music + + 5645 + + Track ID5645 + NamePatient + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post & Louis Bell + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7607161 + Total Time194338 + Disc Number1 + Disc Count1 + Track Number8 + Track Count18 + Year2016 + Date Modified2021-08-11T08:20:18Z + Date Added2021-08-11T08:20:18Z + Bit Rate256 + Sample Rate44100 + Play Count94 + Play Date3783012213 + Play Date UTC2023-11-16T17:43:33Z + Skip Count2 + Skip Date2021-08-25T16:29:02Z + Release Date2016-11-18T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NamePatient + Persistent ID2303449221A522D5 + Explicit + Track TypeRemote + Apple Music + + 5647 + + Track ID5647 + NameAdrenaline + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Casey Harris, Andrew Wells & Adam Levin + AlbumThe Beautiful Liar + GenreAlternative + KindApple Music AAC audio file + Size6105253 + Total Time165992 + Disc Number1 + Disc Count1 + Track Number4 + Track Count16 + Year2021 + Date Modified2021-08-14T20:29:47Z + Date Added2021-08-14T20:29:47Z + Bit Rate256 + Sample Rate44100 + Play Count62 + Play Date3783684785 + Play Date UTC2023-11-24T12:33:05Z + Skip Count2 + Skip Date2023-11-26T10:28:44Z + Release Date2021-08-13T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBeautiful Liar + Sort ArtistX Ambassadors + Sort NameAdrenaline + Persistent IDD43978716C5BDB8F + Track TypeRemote + Apple Music + + 5649 + + Track ID5649 + NameMy Own Monster + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAdam Levin, Casey Harris, Sam Harris, Andrew Wells, Jamie Lidell & Alan Wilkis + AlbumThe Beautiful Liar + GenreAlternative + KindApple Music AAC audio file + Size7027917 + Total Time185585 + Disc Number1 + Disc Count1 + Track Number3 + Track Count16 + Year2021 + Date Modified2021-08-14T20:30:37Z + Date Added2021-08-14T20:30:37Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3767284521 + Play Date UTC2023-05-18T16:55:21Z + Skip Count1 + Skip Date2022-08-10T18:38:45Z + Release Date2021-06-11T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBeautiful Liar + Sort ArtistX Ambassadors + Sort NameMy Own Monster + Persistent ID1594804ABAA94E16 + Track TypeRemote + Apple Music + + 5651 + + Track ID5651 + NameOkay + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAdam Levin, Andrew Jackson, Andrew Wells, Casey Harris, Sam Harris & Tommy English + AlbumThe Beautiful Liar + GenreAlternative + KindApple Music AAC audio file + Size10046469 + Total Time285165 + Disc Number1 + Disc Count1 + Track Number14 + Track Count16 + Year2021 + Date Modified2021-08-14T20:32:44Z + Date Added2021-08-14T20:32:44Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783850117 + Play Date UTC2023-11-26T10:28:37Z + Skip Count4 + Skip Date2021-10-25T13:53:05Z + Release Date2021-07-30T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBeautiful Liar + Sort ArtistX Ambassadors + Sort NameOkay + Persistent ID743B7FF0638393DF + Track TypeRemote + Apple Music + + 5653 + + Track ID5653 + Namedarkness will come (feat. MÒZÂMBÎQÚE) + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumAncient Call - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8752283 + Total Time239500 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2021 + Date Modified2021-08-14T20:55:46Z + Date Added2021-08-14T20:55:46Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3768976654 + Play Date UTC2023-06-07T06:57:34Z + Skip Count3 + Skip Date2023-02-26T10:25:38Z + Release Date2021-07-26T12:00:00Z + Rating100 + Album Rating100 + Loved + Artwork Count1 + Sort AlbumAncient Call - EP + Sort ArtistSYML + Sort Namedarkness will come (feat. MÒZÂMBÎQÚE) + Persistent ID8483FB4AE9BA3F2C + Track TypeRemote + Apple Music + + 5655 + + Track ID5655 + Nameyou can't hide anymore (feat. Hugo Sweet) + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell & Paul Meany + AlbumAncient Call - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7584744 + Total Time215813 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year2021 + Date Modified2021-08-14T20:56:18Z + Date Added2021-08-14T20:56:18Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3776151738 + Play Date UTC2023-08-29T08:02:18Z + Release Date2021-07-23T12:00:00Z + Rating80 + Album Rating100 + Artwork Count1 + Sort AlbumAncient Call - EP + Sort ArtistSYML + Sort Nameyou can't hide anymore (feat. Hugo Sweet) + Persistent IDFE2AE00536709A14 + Track TypeRemote + Apple Music + + 5657 + + Track ID5657 + Namewanting is never enough + ArtistSYML & Nathan Kawanishi + Album ArtistSYML + ComposerBrian Fennell & Paul Meany + AlbumAncient Call - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8164326 + Total Time214286 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2021 + Date Modified2021-08-14T20:56:18Z + Date Added2021-08-14T20:56:18Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3753127314 + Play Date UTC2022-12-05T20:21:54Z + Skip Count3 + Skip Date2022-02-25T18:21:32Z + Release Date2021-05-28T12:00:00Z + Rating80 + Album Rating100 + Artwork Count1 + Sort AlbumAncient Call - EP + Sort ArtistSYML & Nathan Kawanishi + Sort Namewanting is never enough + Persistent ID46669ECBD2816914 + Track TypeRemote + Apple Music + + 5659 + + Track ID5659 + Namejust come home (feat. The Field Tapes & Ezzy) + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumAncient Call - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8080952 + Total Time199330 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2021 + Date Modified2021-08-14T20:56:18Z + Date Added2021-08-14T20:56:18Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3769697436 + Play Date UTC2023-06-15T15:10:36Z + Skip Count1 + Skip Date2022-03-02T08:25:24Z + Release Date2021-07-28T12:00:00Z + Rating80 + Album Rating100 + Artwork Count1 + Sort AlbumAncient Call - EP + Sort ArtistSYML + Sort Namejust come home (feat. The Field Tapes & Ezzy) + Persistent IDD335F2374645911C + Track TypeRemote + Apple Music + + 5661 + + Track ID5661 + Namewho put blood in my drink? + ArtistSYML & sagun + Album ArtistSYML + ComposerBrian Fennell & Paul Meany + AlbumAncient Call - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9300255 + Total Time270011 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2021 + Date Modified2021-08-14T20:56:18Z + Date Added2021-08-14T20:56:18Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3772517127 + Play Date UTC2023-07-18T06:25:27Z + Skip Count2 + Skip Date2023-02-23T20:09:31Z + Release Date2021-06-25T12:00:00Z + Rating80 + Album Rating100 + Artwork Count1 + Sort AlbumAncient Call - EP + Sort ArtistSYML & sagun + Sort Namewho put blood in my drink? + Persistent IDE808CD63F1DBD184 + Track TypeRemote + Apple Music + + 5663 + + Track ID5663 + Nameancient call (feat. Slumberville) + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell & Sebastian Fronda + AlbumAncient Call - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5730224 + Total Time157607 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2021 + Date Modified2021-08-14T20:56:18Z + Date Added2021-08-14T20:56:18Z + Bit Rate256 + Sample Rate44100 + Play Count46 + Play Date3783775857 + Play Date UTC2023-11-25T13:50:57Z + Skip Count2 + Skip Date2022-11-11T18:24:18Z + Release Date2021-07-30T12:00:00Z + Rating100 + Album Rating100 + Loved + Artwork Count1 + Sort AlbumAncient Call - EP + Sort ArtistSYML + Sort Nameancient call (feat. Slumberville) + Persistent IDE54A76C779B85741 + Track TypeRemote + Apple Music + + 5665 + + Track ID5665 + NameI Met Sarah In the Bathroom {Slow//Reverb} + Artistslow//reverb & Ryan Celsius Sounds + Album ArtistRyan Celsius Sounds & slow//reverb + ComposerSlow Reverb + AlbumI Met Sarah In the Bathroom {Slow//Reverb} - Single + GenreAlternative + KindApple Music AAC audio file + Size4988416 + Total Time137858 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-08-29T16:56:30Z + Date Added2021-08-29T16:56:30Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3776429309 + Play Date UTC2023-09-01T13:08:29Z + Skip Count7 + Skip Date2022-09-20T11:02:21Z + Release Date2020-10-05T12:00:00Z + Rating80 + Album Rating80 + Album Rating Computed + Loved + Normalization1631 + Artwork Count1 + Sort AlbumI Met Sarah In the Bathroom {Slow//Reverb} - Single + Sort Artistslow//reverb & Ryan Celsius Sounds + Sort NameI Met Sarah In the Bathroom {Slow//Reverb} + Persistent IDA9F2417F920CDE5F + Track TypeRemote + Apple Music + + 5667 + + Track ID5667 + NameI Need a Dollar + ArtistAloe Blacc + Album ArtistAloe Blacc + AlbumGood Things + GenreR&B/Soul + KindApple Music AAC audio file + Size8601381 + Total Time244287 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2010 + Date Modified2021-08-29T17:39:48Z + Date Added2021-08-29T17:39:48Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3782988221 + Play Date UTC2023-11-16T11:03:41Z + Skip Count3 + Skip Date2022-03-29T05:38:38Z + Release Date2010-03-16T07:00:00Z + Artwork Count1 + Sort AlbumGood Things + Sort ArtistAloe Blacc + Sort NameI Need a Dollar + Persistent ID43813D166559D145 + Track TypeRemote + Apple Music + + 5669 + + Track ID5669 + NameYou Know What? + ArtistMadeline Juno + Album ArtistMadeline Juno + ComposerMadeline Juno, Axel Ehnström & Kim W + AlbumSalvation (Deluxe Version) + GenrePop + KindApple Music AAC audio file + Size6327078 + Total Time177217 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2016 + Date Modified2021-09-13T20:08:46Z + Date Added2021-09-13T20:08:46Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3777369087 + Play Date UTC2023-09-12T10:11:27Z + Skip Count3 + Skip Date2022-03-02T08:24:25Z + Release Date2016-02-26T08:00:00Z + Artwork Count1 + Sort AlbumSalvation (Deluxe Version) + Sort ArtistMadeline Juno + Sort NameYou Know What? + Persistent ID67FA22DE2CF41EF6 + Track TypeRemote + Apple Music + + 5671 + + Track ID5671 + NameBIG PERSONA (feat. Tyler, The Creator) + ArtistMaxo Kream + Album ArtistMaxo Kream + ComposerEmekwanem Ogugua Biosah & Tyler Okonma + AlbumBig Persona (feat. Tyler, The Creator) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5319976 + Total Time145244 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-09-16T17:23:15Z + Date Added2021-09-16T17:23:15Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3780776585 + Play Date UTC2023-10-21T20:43:05Z + Skip Count2 + Skip Date2022-10-01T09:49:51Z + Release Date2021-09-07T12:00:00Z + Artwork Count1 + Sort AlbumBig Persona (feat. Tyler, The Creator) - Single + Sort ArtistMaxo Kream + Sort NameBIG PERSONA (feat. Tyler, The Creator) + Persistent IDB7215E2E59DCE7FC + Explicit + Track TypeRemote + Apple Music + + 5673 + + Track ID5673 + NameTALES OF DOMINICA + ArtistLil Nas X + Album ArtistLil Nas X + ComposerMontero Hill, Denzel Baptiste, David Biral, Omer Fedi & Roy Lenzo + AlbumMONTERO + GenrePop + KindApple Music AAC audio file + Size5444879 + Total Time146006 + Disc Number1 + Disc Count1 + Track Number10 + Track Count15 + Year2021 + Date Modified2021-09-16T21:19:13Z + Date Added2021-09-16T21:19:13Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3783780011 + Play Date UTC2023-11-25T15:00:11Z + Skip Count1 + Skip Date2022-03-02T08:25:35Z + Release Date2021-09-17T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMONTERO + Sort ArtistLil Nas X + Sort NameTALES OF DOMINICA + Persistent ID180FE36EFE7FFBE5 + Track TypeRemote + Apple Music + + 5675 + + Track ID5675 + NameBuku (feat. KirbLaGoop) + ArtistChetta + Album ArtistChetta + ComposerJoshua Marchetta + AlbumSide Effects III + GenreHip-Hop/Rap + KindAAC audio file + Size6194510 + Total Time170473 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2019 + Date Modified2021-09-17T12:06:53Z + Date Added2021-09-17T12:06:53Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3734453758 + Play Date UTC2022-05-03T17:15:58Z + Skip Count2 + Skip Date2021-12-21T18:26:29Z + Release Date2019-01-22T12:00:00Z + Artwork Count1 + Sort AlbumSide Effects III + Sort ArtistChetta + Sort NameBuku (feat. KirbLaGoop) + Persistent ID7F94A93C8B8E2765 + Explicit + Track TypeRemote + + 5677 + + Track ID5677 + NameHome + ArtistMachine Gun Kelly, X Ambassadors & Bebe Rexha + Album ArtistVarious Artists + ComposerDavid Andrew Pramik, David Charles Snyder, David Phelps, Jacob Leslie Hawkes, Richard Colson Baker, Robert Gillies & Sam Harris + AlbumBright: The Album + GenrePop + KindApple Music AAC audio file + Size7379454 + Total Time202805 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2017 + Date Modified2021-09-21T14:47:07Z + Date Added2021-09-21T14:47:07Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3780191347 + Play Date UTC2023-10-15T02:09:07Z + Skip Date2021-09-27T09:03:25Z + Release Date2017-11-16T08:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumBright: The Album + Sort ArtistMachine Gun Kelly, X Ambassadors & Bebe Rexha + Sort NameHome + Persistent ID51A0CC858027D7E5 + Track TypeRemote + Apple Music + + 5679 + + Track ID5679 + NameFoolsong + ArtistStill Woozy + Album ArtistStill Woozy + ComposerSven Eric Gamsky + AlbumLately - EP + GenrePop + KindApple Music AAC audio file + Size6307347 + Total Time173167 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2019 + Date Modified2021-09-21T14:53:34Z + Date Added2021-09-21T14:53:34Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3776143952 + Play Date UTC2023-08-29T05:52:32Z + Skip Count7 + Skip Date2023-02-15T08:33:58Z + Release Date2019-05-03T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLately - EP + Sort ArtistStill Woozy + Sort NameFoolsong + Persistent ID67AF05CFE068D6CB + Explicit + Track TypeRemote + Apple Music + + 5681 + + Track ID5681 + NameWonderwall (Remastered) + ArtistOasis + Album ArtistOasis + ComposerNoel Gallagher + Album(What's the Story) Morning Glory? [Deluxe Edition] [Remastered] + GenreAlternative + KindApple Music AAC audio file + Size10258789 + Total Time258733 + Disc Number1 + Disc Count3 + Track Number3 + Track Count12 + Year1995 + Date Modified2021-09-23T17:08:27Z + Date Added2021-09-23T17:08:27Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3773155696 + Play Date UTC2023-07-25T15:48:16Z + Skip Count2 + Skip Date2021-10-25T13:47:09Z + Release Date1995-10-02T07:00:00Z + Normalization7823 + Artwork Count1 + Sort Album(What's the Story) Morning Glory? [Deluxe Edition] [Remastered] + Sort ArtistOasis + Sort NameWonderwall (Remastered) + Persistent ID6D4655A5DCAC86F6 + Track TypeRemote + Apple Music + + 5683 + + Track ID5683 + NameStay With Me + ArtistSam Smith + Album ArtistSam Smith + ComposerSam Smith, James Napier & William Phillips + AlbumIn the Lonely Hour + GenrePop + KindApple Music AAC audio file + Size6329859 + Total Time172724 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2014 + Date Modified2021-09-24T19:46:33Z + Date Added2021-09-24T19:46:33Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3781615006 + Play Date UTC2023-10-31T13:36:46Z + Release Date2014-01-01T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumIn the Lonely Hour + Sort ArtistSam Smith + Sort NameStay With Me + Persistent ID88D996A528BA411E + Track TypeRemote + Apple Music + + 5685 + + Track ID5685 + NameBeautiful Liar + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAdam Levin, Casey Harris, Sam Harris, Andrew Wells & Ricky Reed + AlbumThe Beautiful Liar + GenreAlternative + KindApple Music AAC audio file + Size9358360 + Total Time249710 + Disc Number1 + Disc Count1 + Track Number2 + Track Count16 + Year2021 + Date Modified2021-09-25T07:33:46Z + Date Added2021-09-25T07:33:46Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3783850376 + Play Date UTC2023-11-26T10:32:56Z + Skip Count1 + Skip Date2021-09-27T08:56:03Z + Release Date2021-09-24T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumBeautiful Liar + Sort ArtistX Ambassadors + Sort NameBeautiful Liar + Persistent ID24988D136E96CDEE + Track TypeRemote + Apple Music + + 5687 + + Track ID5687 + NameTommy Lee (feat. Post Malone) + ArtistTyla Yaweh + Album ArtistTyla Yaweh + ComposerTyler Jamal Brown & Austin Post + AlbumTommy Lee (feat. Post Malone) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7874506 + Total Time224638 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-09-26T11:53:31Z + Date Added2021-09-26T11:53:31Z + Bit Rate256 + Sample Rate44100 + Play Count71 + Play Date3771053058 + Play Date UTC2023-07-01T07:44:18Z + Skip Count5 + Skip Date2023-03-22T10:28:02Z + Release Date2020-06-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTommy Lee (feat. Post Malone) - Single + Sort ArtistTyla Yaweh + Sort NameTommy Lee (feat. Post Malone) + Persistent ID1696032778634B8E + Explicit + Track TypeRemote + Apple Music + + 5689 + + Track ID5689 + NameWalk a Mile + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size13491376 + Total Time389933 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2022-02-10T21:06:05Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3772624429 + Play Date UTC2023-07-19T12:13:49Z + Skip Count2 + Skip Date2023-04-23T16:37:31Z + Release Date2022-02-11T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NameWalk a Mile + Persistent IDBAFF314F8E2EC018 + Track TypeRemote + Apple Music + + 5691 + + Track ID5691 + NamePhiladelphia + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size7743417 + Total Time218093 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2022-02-10T21:06:05Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3774863907 + Play Date UTC2023-08-14T10:18:27Z + Skip Count1 + Skip Date2022-04-16T22:43:45Z + Release Date2022-02-11T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NamePhiladelphia + Persistent IDB0FD4C4910DB283D + Track TypeRemote + Apple Music + + 5693 + + Track ID5693 + NameLosing My Mind + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size9922633 + Total Time282000 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2022-02-10T21:06:05Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3767709819 + Play Date UTC2023-05-23T15:03:39Z + Release Date2022-02-11T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NameLosing My Mind + Persistent ID006A01DF85C76174 + Track TypeRemote + Apple Music + + 5695 + + Track ID5695 + NameDelta + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size2568609 + Total Time60040 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2022-02-10T21:06:05Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3780564209 + Play Date UTC2023-10-19T09:43:29Z + Skip Count1 + Skip Date2022-03-24T11:46:15Z + Release Date2022-02-11T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NameDelta + Persistent IDB92359540064145F + Track TypeRemote + Apple Music + + 5697 + + Track ID5697 + NameU&ME + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size7579637 + Total Time198840 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2021 + Date Modified2021-09-28T12:48:18Z + Date Added2021-09-28T12:48:18Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3772805363 + Play Date UTC2023-07-21T14:29:23Z + Skip Count4 + Skip Date2022-12-15T11:14:33Z + Release Date2021-09-22T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NameU&ME + Persistent ID23D10D2DA81CDFB5 + Track TypeRemote + Apple Music + + 5699 + + Track ID5699 + NameThe Actor + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size8460279 + Total Time240893 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2022-02-07T15:51:05Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3781769838 + Play Date UTC2023-11-02T08:37:18Z + Skip Count1 + Skip Date2022-07-24T14:41:15Z + Release Date2022-02-07T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NameActor + Persistent ID3B2EAAA15945EFBF + Explicit + Track TypeRemote + Apple Music + + 5701 + + Track ID5701 + NameHappier When You're Gone + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size8629038 + Total Time240480 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2022-02-10T21:06:05Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3783596913 + Play Date UTC2023-11-23T12:08:33Z + Skip Count2 + Skip Date2022-06-12T14:42:57Z + Release Date2022-02-11T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NameHappier When You're Gone + Persistent ID6D8EAA76C2A25CDA + Explicit + Track TypeRemote + Apple Music + + 5703 + + Track ID5703 + NamePowders + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size10162258 + Total Time281587 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2022-02-10T21:06:05Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3779701492 + Play Date UTC2023-10-09T10:04:52Z + Release Date2022-02-11T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NamePowders + Persistent ID5D4451D460926281 + Track TypeRemote + Apple Music + + 5705 + + Track ID5705 + NameChicago + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size8345428 + Total Time235387 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2022-02-10T21:06:05Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3780296451 + Play Date UTC2023-10-16T07:20:51Z + Skip Count3 + Skip Date2022-06-02T11:04:05Z + Release Date2022-02-11T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NameChicago + Persistent IDCE1E463B1B902714 + Track TypeRemote + Apple Music + + 5707 + + Track ID5707 + NameGet Better + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Sonny Green + AlbumThe Dream + GenreAlternative + KindApple Music AAC audio file + Size12155873 + Total Time351293 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Date Modified2021-09-28T12:48:18Z + Date Added2021-11-03T17:55:11Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781058552 + Play Date UTC2023-10-25T03:02:32Z + Skip Count5 + Skip Date2022-05-08T15:38:36Z + Release Date2021-11-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDream + Sort Artistalt-J + Sort NameGet Better + Persistent IDD790E1E7D2CF2315 + Track TypeRemote + Apple Music + + 5709 + + Track ID5709 + NameLink Up Time + ArtistDUCKWRTH & Jordan Ward + Album ArtistDUCKWRTH + ComposerTavon Thompson, Mike Hector & Hello Yello + AlbumSG8* + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6000294 + Total Time165517 + Disc Number1 + Disc Count1 + Track Number3 + Track Count8 + Year2021 + Date Modified2021-10-03T16:02:31Z + Date Added2021-10-03T16:02:31Z + Bit Rate256 + Sample Rate44100 + Play Count48 + Play Date3776337418 + Play Date UTC2023-08-31T11:36:58Z + Skip Count1 + Skip Date2022-04-23T18:38:06Z + Release Date2021-09-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSG8* + Sort ArtistDUCKWRTH & Jordan Ward + Sort NameLink Up Time + Persistent ID992C434DCED37451 + Explicit + Track TypeRemote + Apple Music + + 5711 + + Track ID5711 + NameClueless + ArtistDUCKWRTH & DESTIN CONRAD + Album ArtistDUCKWRTH + ComposerJulian Nixon & Sean Cook + AlbumSG8* + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6646304 + Total Time186667 + Disc Number1 + Disc Count1 + Track Number6 + Track Count8 + Year2021 + Date Modified2021-10-03T16:07:54Z + Date Added2021-10-03T16:07:54Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3783712643 + Play Date UTC2023-11-24T20:17:23Z + Skip Count1 + Skip Date2022-07-06T09:51:32Z + Release Date2021-09-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSG8* + Sort ArtistDUCKWRTH & DESTIN CONRAD + Sort NameClueless + Persistent IDD16BDA147B7435BD + Explicit + Track TypeRemote + Apple Music + + 5713 + + Track ID5713 + Name4K + ArtistDUCKWRTH & Phabo + Album ArtistDUCKWRTH + ComposerTavon Thompson + AlbumSG8* + GenreR&B/Soul + KindApple Music AAC audio file + Size6737788 + Total Time187619 + Disc Number1 + Disc Count1 + Track Number7 + Track Count8 + Year2021 + Date Modified2021-10-03T16:09:43Z + Date Added2021-10-03T16:09:43Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3759844512 + Play Date UTC2023-02-21T14:15:12Z + Skip Count3 + Skip Date2021-12-21T18:25:30Z + Release Date2021-09-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSG8* + Sort ArtistDUCKWRTH & Phabo + Sort Name4K + Persistent ID165526DC43AE69A9 + Explicit + Track TypeRemote + Apple Music + + 5715 + + Track ID5715 + NameBumble Bee + ArtistNetherfriends + Album ArtistNetherfriends + ComposerShawn Rosenblatt + AlbumSongs for Bees + GenrePop + KindApple Music AAC audio file + Size3785369 + Total Time97391 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2021 + Date Modified2021-10-06T12:14:11Z + Date Added2021-10-06T12:14:11Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3777371209 + Play Date UTC2023-09-12T10:46:49Z + Skip Count3 + Skip Date2022-08-10T18:40:59Z + Release Date2021-10-01T12:00:00Z + Artwork Count1 + Sort AlbumSongs for Bees + Sort ArtistNetherfriends + Sort NameBumble Bee + Persistent ID16B4EA7A88E9BC37 + Track TypeRemote + Apple Music + + 5717 + + Track ID5717 + NameLovely Day (Bonus Track) + Artistalt-J + Album Artistalt-J + AlbumThis Is All Yours + GenreAlternative + KindAAC audio file + Size8682819 + Total Time241546 + Disc Number1 + Disc Count1 + Track Number14 + Track Count14 + Year2014 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count8 + Play Date3734450311 + Play Date UTC2022-05-03T16:18:31Z + Skip Count1 + Skip Date2021-10-06T19:52:49Z + Release Date2014-09-22T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumThis Is All Yours + Sort Artistalt-J + Sort NameLovely Day (Bonus Track) + Persistent ID91D30323622519BF + Track TypeRemote + Apple Music + + 5719 + + Track ID5719 + NameCobra + ArtistAzizi Gibson + Album ArtistAzizi Gibson + AlbumI'm Good On People + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6321584 + Total Time176286 + Disc Number1 + Disc Count1 + Track Number6 + Track Count7 + Year2017 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3766233006 + Play Date UTC2023-05-06T12:50:06Z + Skip Count1 + Skip Date2022-09-20T11:35:45Z + Release Date2017-11-10T12:00:00Z + Artwork Count1 + Sort AlbumI'm Good On People + Sort ArtistAzizi Gibson + Sort NameCobra + Persistent ID61D8A0E436A53A5F + Explicit + Track TypeRemote + Apple Music + + 5721 + + Track ID5721 + NamePotato Salad + ArtistTyler, The Creator & A$AP Rocky + Album ArtistTyler, The Creator & A$AP Rocky + ComposerTyler Okonma, Rakim Mayers, Craig Brockman, Melissa Elliot, Lee Hatim & Monica Brown + AlbumPotato Salad - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6561800 + Total Time182493 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3772014597 + Play Date UTC2023-07-12T10:49:57Z + Skip Count1 + Skip Date2022-11-25T22:56:35Z + Release Date2018-09-28T12:00:00Z + Normalization3437 + Artwork Count1 + Sort AlbumPotato Salad - Single + Sort ArtistTyler, The Creator & A$AP Rocky + Sort NamePotato Salad + Persistent ID6D937BF876D21978 + Explicit + Track TypeRemote + Apple Music + + 5723 + + Track ID5723 + Nameaffection + ArtistBETWEEN FRIENDS + Album ArtistBETWEEN FRIENDS + ComposerBrandon Hudson, Melanie Fontana, Michel "Lindgren" Schulz & Savannah Hudson + Albumwe just need some time together - EP + GenreAlternative + KindApple Music AAC audio file + Size8557106 + Total Time235226 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2018 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3777015406 + Play Date UTC2023-09-08T07:56:46Z + Release Date2018-04-05T12:00:00Z + Artwork Count1 + Sort Albumwe just need some time together - EP + Sort ArtistBETWEEN FRIENDS + Sort Nameaffection + Persistent ID759C41B3FCFC4514 + Track TypeRemote + Apple Music + + 5725 + + Track ID5725 + NameAlien Blues + ArtistVundabar + Album ArtistVundabar + AlbumGawk + GenreRock + KindApple Music AAC audio file + Size5723835 + Total Time155933 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2015 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783596020 + Play Date UTC2023-11-23T11:53:40Z + Release Date2015-07-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGawk + Sort ArtistVundabar + Sort NameAlien Blues + Persistent ID91F1A0AA373FCE23 + Track TypeRemote + Apple Music + + 5727 + + Track ID5727 + NameHouse of the Rising Sun + Artistalt-J + Album Artistalt-J + AlbumRELAXER + GenreAlternative + KindAAC audio file + Size11515652 + Total Time320667 + Disc Number1 + Disc Count1 + Track Number3 + Track Count8 + Year2017 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3734450069 + Play Date UTC2022-05-03T16:14:29Z + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumRELAXER + Sort Artistalt-J + Sort NameHouse of the Rising Sun + Persistent ID5B9A227F01FA7780 + Track TypeRemote + Apple Music + + 5729 + + Track ID5729 + NameWho Ever + ArtistZigitros + Album ArtistZigitros + ComposerAlban Schelbert & Christian Neuenschwander + AlbumYours Truly - Single + GenreAlternative + KindApple Music AAC audio file + Size10591377 + Total Time295950 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2013 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780493340 + Play Date UTC2023-10-18T14:02:20Z + Skip Count3 + Skip Date2023-02-14T19:44:08Z + Release Date2013-03-19T12:00:00Z + Artwork Count1 + Sort AlbumYours Truly - Single + Sort ArtistZigitros + Sort NameWho Ever + Persistent IDFD1EB1EFD5CAAFC2 + Track TypeRemote + Apple Music + + 5731 + + Track ID5731 + NameGlow (feat. Sauve) [Remix] + ArtistBeing As An Ocean + Album ArtistBeing As An Ocean + ComposerTyler Ross & Desauve Sidle + AlbumGlow (feat. Sauve) [Remix] - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6446687 + Total Time180001 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783770470 + Play Date UTC2023-11-25T12:21:10Z + Skip Count2 + Skip Date2022-10-18T12:01:18Z + Release Date2019-05-17T12:00:00Z + Artwork Count1 + Sort AlbumGlow (feat. Sauve) [Remix] - Single + Sort ArtistBeing As An Ocean + Sort NameGlow (feat. Sauve) [Remix] + Persistent ID754892AC1D01B79C + Explicit + Track TypeRemote + Apple Music + + 5733 + + Track ID5733 + NameTelephone Calls (feat. A$AP Rocky, Tyler, the Creator, Playboi Carti & Yung Gleesh) + ArtistA$AP Mob + Album ArtistA$AP Mob + ComposerN/A + AlbumCozy Tapes, Vol. 1: Friends + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8142830 + Total Time230907 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2016 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3758394934 + Play Date UTC2023-02-04T19:35:34Z + Skip Count6 + Skip Date2022-11-25T23:04:50Z + Release Date2016-10-28T12:00:00Z + Rating40 + Album Rating40 + Album Rating Computed + Normalization3048 + Artwork Count1 + Sort AlbumCozy Tapes, Vol. 1: Friends + Sort ArtistA$AP Mob + Sort NameTelephone Calls (feat. A$AP Rocky, Tyler, the Creator, Playboi Carti & Yung Gleesh) + Persistent ID91B46CEA680ED8EC + Explicit + Track TypeRemote + Apple Music + + 5735 + + Track ID5735 + NameBloodflood (SARM Acoustic Version) + Artistalt-J + Album Artistalt-J + ComposerJoe Newman/ Gus Unger-Hamilton /Gwilym Sainsbury/Thom Green + AlbumAn Awesome Wave (Deluxe Version) + GenreAlternative + KindAAC audio file + Size7604530 + Total Time213682 + Disc Number1 + Disc Count1 + Track Number38 + Track Count41 + Year2012 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3737740629 + Play Date UTC2022-06-10T18:17:09Z + Skip Count1 + Skip Date2021-10-06T14:08:37Z + Release Date2012-05-25T07:00:00Z + Sort AlbumAwesome Wave (Deluxe Version) + Sort Artistalt-J + Sort NameBloodflood (SARM Acoustic Version) + Persistent IDCE4F0D04E6A3244F + Track TypeRemote + + 5737 + + Track ID5737 + NameEasier + ArtistMansionair + Album ArtistMansionair + ComposerAlex Nicholls, Lachlan Bostock & William Froggat + AlbumEasier - Single + GenreAlternative + KindApple Music AAC audio file + Size9514120 + Total Time272681 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count29 + Play Date3783680626 + Play Date UTC2023-11-24T11:23:46Z + Release Date2016-10-17T12:00:00Z + Artwork Count1 + Sort AlbumEasier - Single + Sort ArtistMansionair + Sort NameEasier + Persistent ID4B24DC921E90D2C1 + Track TypeRemote + Apple Music + + 5739 + + Track ID5739 + NameMilk & Coffee + ArtistNoMBe + Album ArtistNoMBe + ComposerNoah McBeth + AlbumThey Might've Even Loved Me + GenreAlternative + KindApple Music AAC audio file + Size8806947 + Total Time235653 + Disc Number1 + Disc Count1 + Track Number17 + Track Count18 + Year2018 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3759932369 + Play Date UTC2023-02-22T14:39:29Z + Release Date2018-03-23T12:00:00Z + Artwork Count1 + Sort AlbumThey Might've Even Loved Me + Sort ArtistNoMBe + Sort NameMilk & Coffee + Persistent ID29992064DF909AFA + Track TypeRemote + Apple Music + + 5741 + + Track ID5741 + NameChoice Kingdom + Artistalt-J + Album Artistalt-J + AlbumThis Is All Yours + GenreAlternative + KindAAC audio file + Size9178061 + Total Time257498 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2014 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count14 + Play Date3737331004 + Play Date UTC2022-06-06T00:30:04Z + Release Date2014-09-16T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumThis Is All Yours + Sort Artistalt-J + Sort NameChoice Kingdom + Persistent IDD3C76D954BF3669D + Track TypeRemote + Apple Music + + 5743 + + Track ID5743 + NameMirrors on the Ceiling + Artistmike. + Album Artistmike. + Album4THEHOMIES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7534004 + Total Time214805 + Disc Number1 + Disc Count1 + Track Number11 + Track Count23 + Year2018 + Date Modified2021-10-06T14:02:27Z + Date Added2021-10-06T14:02:27Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3754393683 + Play Date UTC2022-12-20T12:08:03Z + Skip Count1 + Skip Date2022-07-12T12:56:37Z + Release Date2018-10-22T12:00:00Z + Artwork Count1 + Sort Album4THEHOMIES + Sort Artistmike. + Sort NameMirrors on the Ceiling + Persistent ID03B2803CBC9B0982 + Explicit + Track TypeRemote + Apple Music + + 5745 + + Track ID5745 + NameHigh Enough + ArtistK.Flay + Album ArtistK.Flay + ComposerKristine Flaherty & Mike Elizondo + AlbumEvery Where Is Some Where (Deluxe Version) + GenreAlternative + KindApple Music AAC audio file + Size8142365 + Total Time231600 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2017 + Date Modified2021-10-06T14:06:36Z + Date Added2021-10-06T14:06:36Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3761633560 + Play Date UTC2023-03-14T07:12:40Z + Skip Count3 + Skip Date2022-11-25T22:56:06Z + Release Date2017-04-04T12:00:00Z + Artwork Count1 + Sort AlbumEvery Where Is Some Where (Deluxe Version) + Sort ArtistK.Flay + Sort NameHigh Enough + Persistent ID4AD30FD72A20BA36 + Track TypeRemote + Apple Music + + 5747 + + Track ID5747 + NameFaygo Dreams + Artist6 Dogs + Album Artist6 Dogs + Album6 Dogs + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6180043 + Total Time171907 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2017 + Date Modified2021-10-06T14:06:48Z + Date Added2021-10-06T14:06:48Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3780685815 + Play Date UTC2023-10-20T19:30:15Z + Skip Count1 + Skip Date2022-11-25T22:56:02Z + Release Date2017-07-03T12:00:00Z + Artwork Count1 + Sort Album6 Dogs + Sort Artist6 Dogs + Sort NameFaygo Dreams + Persistent IDCC51EAB81CA8A022 + Explicit + Track TypeRemote + Apple Music + + 5749 + + Track ID5749 + NameUnwind + ArtistHealy + Album ArtistHealy + ComposerEthan Healy, Grant Yarber & Desmond Sanders + AlbumSubluxe + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8256692 + Total Time234998 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2017 + Date Modified2021-10-06T14:06:49Z + Date Added2021-10-06T14:06:49Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3780834070 + Play Date UTC2023-10-22T12:41:10Z + Skip Count4 + Skip Date2022-12-12T11:32:14Z + Release Date2017-06-09T12:00:00Z + Artwork Count1 + Sort AlbumSubluxe + Sort ArtistHealy + Sort NameUnwind + Persistent IDF7E4968D5659A46C + Track TypeRemote + Apple Music + + 5751 + + Track ID5751 + NamePatient + ArtistPost Malone + Album ArtistPost Malone + ComposerAustin Post & Louis Bell + AlbumStoney + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7607261 + Total Time194338 + Disc Number1 + Disc Count1 + Track Number8 + Track Count14 + Year2016 + Date Modified2021-10-06T14:06:49Z + Date Added2021-10-06T14:06:49Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783713147 + Play Date UTC2023-11-24T20:25:47Z + Skip Count2 + Skip Date2023-10-12T22:39:21Z + Release Date2016-11-18T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumStoney + Sort ArtistPost Malone + Sort NamePatient + Persistent IDB194EAECDE5F197A + Explicit + Track TypeRemote + Apple Music + + 5753 + + Track ID5753 + Name3:15 + ArtistBazzi + Album ArtistBazzi + ComposerAndrew Bazzi, Kevin White & Mike Woods + AlbumCOSMIC + GenrePop + KindApple Music AAC audio file + Size6109759 + Total Time167019 + Disc Number1 + Disc Count1 + Track Number6 + Track Count16 + Year2018 + Date Modified2021-10-06T14:06:52Z + Date Added2021-10-06T14:06:52Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3779309402 + Play Date UTC2023-10-04T21:10:02Z + Release Date2018-04-12T07:00:00Z + Artwork Count1 + Sort AlbumCOSMIC + Sort ArtistBazzi + Sort Name3:15 + Persistent ID7542758C2D278273 + Explicit + Track TypeRemote + Apple Music + + 5755 + + Track ID5755 + NameCONVERSATIONS + ArtistAries + Album ArtistAries + ComposerAries, Steven Cabanting, Tim Aspan & Henry Nichols + AlbumCONVERSATIONS - Single + GenrePop + KindApple Music AAC audio file + Size5922874 + Total Time164175 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-10-06T14:06:52Z + Date Added2021-10-06T14:06:52Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3756918372 + Play Date UTC2023-01-18T17:26:12Z + Skip Count2 + Skip Date2022-11-25T22:48:01Z + Release Date2020-12-09T12:00:00Z + Artwork Count1 + Sort AlbumCONVERSATIONS - Single + Sort ArtistAries + Sort NameCONVERSATIONS + Persistent ID3D80C6F48A0E4171 + Track TypeRemote + Apple Music + + 5757 + + Track ID5757 + NameLet It Slide + ArtistJohnny Goth + Album ArtistJohnny Goth + ComposerJohnny Goth + AlbumDemons + GenreAlternative + KindApple Music AAC audio file + Size9769476 + Total Time264375 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2018 + Date Modified2021-10-06T14:06:53Z + Date Added2021-10-06T14:06:53Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3776147850 + Play Date UTC2023-08-29T06:57:30Z + Release Date2018-09-07T12:00:00Z + Artwork Count1 + Sort AlbumDemons + Sort ArtistJohnny Goth + Sort NameLet It Slide + Persistent ID6AE11DF9817C0825 + Track TypeRemote + Apple Music + + 5759 + + Track ID5759 + NameDancing In The Moonlight (feat. NEIMY) + ArtistJubël + Album ArtistJubël + ComposerSherman Kelly + AlbumDancing In The Moonlight (feat. NEIMY) - Single + GenreDance + KindApple Music AAC audio file + Size6366636 + Total Time164010 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-10-06T14:06:54Z + Date Added2021-10-06T14:06:54Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3773233694 + Play Date UTC2023-07-26T13:28:14Z + Skip Count3 + Skip Date2023-11-23T09:00:24Z + Release Date2018-06-22T12:00:00Z + Artwork Count1 + Sort AlbumDancing In The Moonlight (feat. NEIMY) - Single + Sort ArtistJubël + Sort NameDancing In The Moonlight (feat. NEIMY) + Persistent ID60744ED0DBFB1E99 + Track TypeRemote + Apple Music + + 5761 + + Track ID5761 + NameBeautiful + ArtistBazzi + Album ArtistBazzi + ComposerAndrew Bazzi, Kevin White & Mike Woods + AlbumCOSMIC + GenrePop + KindApple Music AAC audio file + Size6441938 + Total Time178242 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2018 + Date Modified2021-10-06T14:06:56Z + Date Added2021-10-06T14:06:56Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783357209 + Play Date UTC2023-11-20T17:33:29Z + Skip Count3 + Skip Date2023-10-29T00:43:12Z + Release Date2017-07-02T07:00:00Z + Artwork Count1 + Sort AlbumCOSMIC + Sort ArtistBazzi + Sort NameBeautiful + Persistent IDFAB0817C28B4DBE5 + Track TypeRemote + Apple Music + + 5763 + + Track ID5763 + NameFast + ArtistJuice WRLD + Album ArtistJuice WRLD + ComposerLouis Bell, Jarad Higgins, Andrew Wotman, Adam Feeney & Carl Rosen + AlbumDeath Race for Love + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7576269 + Total Time208518 + Disc Number1 + Disc Count1 + Track Number5 + Track Count22 + Year2019 + Date Modified2021-10-06T14:06:57Z + Date Added2021-10-06T14:06:57Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3779203712 + Play Date UTC2023-10-03T15:48:32Z + Skip Count1 + Skip Date2022-02-28T11:38:35Z + Release Date2019-03-08T12:00:00Z + Artwork Count1 + Sort AlbumDeath Race for Love + Sort ArtistJuice WRLD + Sort NameFast + Persistent ID00DDC9B92FF4FFD2 + Explicit + Track TypeRemote + Apple Music + + 5765 + + Track ID5765 + NameModern Jesus + ArtistPortugal. The Man + Album ArtistPortugal. The Man + ComposerBrian Burton & Portugal. The Man + AlbumEvil Friends + GenreAlternative + KindApple Music AAC audio file + Size7189032 + Total Time194027 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2013 + Date Modified2021-10-06T14:07:02Z + Date Added2021-10-06T14:07:02Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3781383512 + Play Date UTC2023-10-28T21:18:32Z + Release Date2013-06-04T07:00:00Z + Artwork Count1 + Sort AlbumEvil Friends + Sort ArtistPortugal. The Man + Sort NameModern Jesus + Persistent ID44A68345F26A6452 + Track TypeRemote + Apple Music + + 5767 + + Track ID5767 + NameYour Love (Déjà Vu) + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumYour Love (Déjà Vu) - Single + GenrePop + KindApple Music AAC audio file + Size8606688 + Total Time234372 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-10-06T14:07:03Z + Date Added2021-10-06T14:07:03Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3781075474 + Play Date UTC2023-10-25T07:44:34Z + Skip Count1 + Skip Date2022-11-25T22:36:08Z + Release Date2020-02-19T12:00:00Z + Artwork Count1 + Sort AlbumYour Love (Déjà Vu) - Single + Sort ArtistGlass Animals + Sort NameYour Love (Déjà Vu) + Persistent ID289F51941A4002BA + Track TypeRemote + Apple Music + + 5769 + + Track ID5769 + NameDaylight + ArtistJoji & Diplo + Album ArtistJoji & Diplo + ComposerSarah Aarons, Greg Kurstin, Maximilian Jaeger, Thomas Wesley Pentz & George Miller + AlbumDaylight - Single + GenreAlternative + KindApple Music AAC audio file + Size5982320 + Total Time163906 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-10-06T14:07:06Z + Date Added2021-10-06T14:07:06Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3773821212 + Play Date UTC2023-08-02T08:40:12Z + Release Date2020-08-06T12:00:00Z + Artwork Count1 + Sort AlbumDaylight - Single + Sort ArtistJoji & Diplo + Sort NameDaylight + Persistent IDDD9984F100385F01 + Explicit + Track TypeRemote + Apple Music + + 5771 + + Track ID5771 + NameTokyo Drifting + ArtistGlass Animals & Denzel Curry + Album ArtistVarious Artists + ComposerDenzel Curry, Dave Bayley & Caiphus Semenya + AlbumIndica: Vol. 3 + GenreAlternative + KindApple Music AAC audio file + Size8012955 + Total Time216822 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2019 + Date Modified2021-10-06T14:07:07Z + Date Added2021-10-06T14:07:07Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3781156866 + Play Date UTC2023-10-26T06:21:06Z + Release Date2019-11-13T08:00:00Z + Compilation + Artwork Count1 + Sort AlbumIndica: Vol. 3 + Sort ArtistGlass Animals & Denzel Curry + Sort NameTokyo Drifting + Persistent ID90AA2E9326929F71 + Explicit + Track TypeRemote + Apple Music + + 5773 + + Track ID5773 + NameChemistry + ArtistLeft Boy + Album ArtistLeft Boy + AlbumFerdinand + GenrePop + KindApple Music AAC audio file + Size8216880 + Total Time233326 + Disc Number1 + Disc Count2 + Track Number10 + Track Count11 + Year2018 + Date Modified2021-10-06T14:07:08Z + Date Added2021-10-06T14:07:08Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3782904973 + Play Date UTC2023-11-15T11:56:13Z + Release Date2018-04-06T12:00:00Z + Loved + Normalization1864 + Artwork Count1 + Sort AlbumFerdinand + Sort ArtistLeft Boy + Sort NameChemistry + Persistent ID6E0AB9FE1FC16309 + Explicit + Track TypeRemote + Apple Music + + 5775 + + Track ID5775 + NameOverdrive + ArtistHippie Sabotage + Album ArtistHippie Sabotage + ComposerKevin Saurer & Jeffrey Saurer + AlbumOverdrive - Single + GenreElectronic + KindApple Music AAC audio file + Size9741019 + Total Time280027 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-10-06T14:07:10Z + Date Added2021-10-06T14:07:10Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3780006447 + Play Date UTC2023-10-12T22:47:27Z + Release Date2020-01-24T12:00:00Z + Artwork Count1 + Sort AlbumOverdrive - Single + Sort ArtistHippie Sabotage + Sort NameOverdrive + Persistent IDEA5580D6B8F73B66 + Track TypeRemote + Apple Music + + 5777 + + Track ID5777 + NameTerms and Conditions + ArtistChet Faker + Album ArtistChet Faker + AlbumThinking in Textures + GenreContemporary R&B + KindApple Music AAC audio file + Size7937551 + Total Time222493 + Disc Number1 + Disc Count1 + Track Number2 + Track Count7 + Year2012 + Date Modified2021-10-06T14:07:11Z + Date Added2021-10-06T14:07:11Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3775803805 + Play Date UTC2023-08-25T07:23:25Z + Release Date2012-01-03T12:00:00Z + Artwork Count1 + Sort AlbumThinking in Textures + Sort ArtistChet Faker + Sort NameTerms and Conditions + Persistent ID503A0098080AA41B + Track TypeRemote + Apple Music + + 5779 + + Track ID5779 + NameThe House of the Rising Sun + ArtistThe Animals + Album ArtistThe Animals + ComposerAlan Price & Traditional + AlbumThe Singles Plus + GenreRock + KindApple Music AAC audio file + Size9773069 + Total Time270827 + Disc Number1 + Disc Count1 + Track Number3 + Track Count20 + Year1963 + Date Modified2021-10-06T14:07:12Z + Date Added2021-10-06T14:07:12Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3776149449 + Play Date UTC2023-08-29T07:24:09Z + Skip Count3 + Skip Date2023-06-30T12:47:31Z + Release Date1963-12-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumSingles Plus + Sort Album ArtistAnimals + Sort ArtistAnimals + Sort NameHouse of the Rising Sun + Persistent ID7AD628E039E1D678 + Track TypeRemote + Apple Music + + 5781 + + Track ID5781 + NameTokyo Drifting + ArtistGlass Animals & Denzel Curry + Album ArtistGlass Animals + ComposerDenzel Curry, Dave Bayley & Caiphus Semenya + AlbumDreamland + GenreAlternative + KindApple Music AAC audio file + Size8150196 + Total Time216822 + Disc Number1 + Disc Count1 + Track Number7 + Track Count16 + Year2019 + Date Modified2021-10-06T14:07:14Z + Date Added2021-10-06T14:07:14Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781521625 + Play Date UTC2023-10-30T11:40:25Z + Skip Count1 + Skip Date2021-12-04T07:28:02Z + Release Date2019-11-13T12:00:00Z + Artwork Count1 + Sort AlbumDreamland + Sort ArtistGlass Animals & Denzel Curry + Sort NameTokyo Drifting + Persistent IDD481E022D12EA1DE + Explicit + Track TypeRemote + Apple Music + + 5783 + + Track ID5783 + NameDlz + ArtistTV on the Radio + Album ArtistTV on the Radio + ComposerKyp Malone, Gerard A. Smith, David Sitek & Tunde Adebimpe + AlbumDear Science + GenreAlternative + KindApple Music AAC audio file + Size8731400 + Total Time228707 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2008 + Date Modified2021-10-06T14:07:19Z + Date Added2021-10-06T14:07:19Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783714742 + Play Date UTC2023-11-24T20:52:22Z + Skip Count1 + Skip Date2022-07-30T15:07:24Z + Release Date2008-01-01T12:00:00Z + Artwork Count1 + Sort AlbumDear Science + Sort ArtistTV on the Radio + Sort NameDlz + Persistent IDA56D6D32417E1BDC + Track TypeRemote + Apple Music + + 5785 + + Track ID5785 + NameBlame It On Me + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell & Austin Post + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9333475 + Total Time261805 + Disc Number1 + Disc Count1 + Track Number13 + Track Count18 + Year2018 + Date Modified2021-10-06T14:07:19Z + Date Added2021-10-06T14:07:19Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3783003616 + Play Date UTC2023-11-16T15:20:16Z + Skip Count2 + Skip Date2022-11-21T20:51:54Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameBlame It On Me + Persistent IDBCF8A571F3F93999 + Track TypeRemote + Apple Music + + 5787 + + Track ID5787 + NameIt's That Talk Again + ArtistBroken Bells + Album ArtistBroken Bells + ComposerJames Mercer & Brian Burton + AlbumIt's That Talk Again - Single + GenreAlternative + KindApple Music AAC audio file + Size8473426 + Total Time241333 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2021-10-06T14:07:24Z + Date Added2021-10-06T14:07:24Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3767522251 + Play Date UTC2023-05-21T10:57:31Z + Release Date2015-09-25T12:00:00Z + Artwork Count1 + Sort AlbumIt's That Talk Again - Single + Sort ArtistBroken Bells + Sort NameIt's That Talk Again + Persistent IDE6A2EED091B4260A + Track TypeRemote + Apple Music + + 5789 + + Track ID5789 + NameTreated Like the Weather + ArtistSlum Sociable + Album ArtistSlum Sociable + AlbumSlum Sociable + GenreAlternative + KindAAC audio file + Size8844887 + Total Time250796 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2017 + Date Modified2021-10-06T14:07:26Z + Date Added2021-10-06T14:07:26Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3752404232 + Play Date UTC2022-11-27T11:30:32Z + Release Date2017-11-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSlum Sociable + Sort ArtistSlum Sociable + Sort NameTreated Like the Weather + Persistent IDA8D70835A4DE6156 + Track TypeRemote + + 5791 + + Track ID5791 + NameKingdom of Doom + ArtistThe Good, the Bad & the Queen + Album ArtistThe Good, the Bad & the Queen + ComposerDamon Albarn & Paul Simonon + AlbumKingdom of Doom - EP + GenreAdult Alternative + KindApple Music AAC audio file + Size6159411 + Total Time164013 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2006 + Date Modified2021-10-06T14:07:26Z + Date Added2021-10-06T14:07:26Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3758563719 + Play Date UTC2023-02-06T18:28:39Z + Skip Count1 + Skip Date2021-12-04T07:27:58Z + Release Date2006-11-20T12:00:00Z + Artwork Count1 + Sort AlbumKingdom of Doom - EP + Sort Album ArtistGood, the Bad & the Queen + Sort ArtistGood, the Bad & the Queen + Sort NameKingdom of Doom + Persistent IDBC56AE0076934ED5 + Track TypeRemote + Apple Music + + 5793 + + Track ID5793 + NameOtherside + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell & Austin Post + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8201473 + Total Time228221 + Disc Number1 + Disc Count1 + Track Number11 + Track Count18 + Year2018 + Date Modified2021-10-06T14:07:28Z + Date Added2021-10-06T14:07:28Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3783060333 + Play Date UTC2023-11-17T07:05:33Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameOtherside + Persistent IDFFA165E7526EDB14 + Explicit + Track TypeRemote + Apple Music + + 5795 + + Track ID5795 + NameAt the Door + ArtistThe Strokes + Album ArtistThe Strokes + ComposerThe Strokes & Paul Vassallo + AlbumThe New Abnormal + GenreAlternative + KindApple Music AAC audio file + Size10950697 + Total Time310373 + Disc Number1 + Disc Count1 + Track Number6 + Track Count9 + Year2020 + Date Modified2021-10-06T14:07:31Z + Date Added2021-10-06T14:07:31Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3773759266 + Play Date UTC2023-08-01T15:27:46Z + Skip Count1 + Skip Date2022-08-02T16:54:37Z + Release Date2020-02-11T08:00:00Z + Artwork Count1 + Sort AlbumNew Abnormal + Sort Album ArtistStrokes + Sort ArtistStrokes + Sort ComposerStrokes & Paul Vassallo + Sort NameAt the Door + Persistent ID286607F79FEA6FEB + Track TypeRemote + Apple Music + + 5797 + + Track ID5797 + NameHeroin Song + ArtistJadu Heart + Album ArtistJadu Heart + ComposerAlexander Headford, Diva-Sachy Jeffrey & Sam Knowles + AlbumMelt Away + GenreAlternative + KindApple Music AAC audio file + Size10978263 + Total Time310000 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2019 + Date Modified2021-10-06T14:07:32Z + Date Added2021-10-06T14:07:32Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783779108 + Play Date UTC2023-11-25T14:45:08Z + Release Date2019-08-16T12:00:00Z + Artwork Count1 + Sort AlbumMelt Away + Sort ArtistJadu Heart + Sort NameHeroin Song + Persistent ID543B714D700201EC + Track TypeRemote + Apple Music + + 5799 + + Track ID5799 + NameWDWGILY + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumChill - EP + GenreAlternative + KindApple Music AAC audio file + Size7847350 + Total Time218312 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2018 + Date Modified2021-10-06T14:07:32Z + Date Added2021-10-06T14:07:32Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3766950342 + Play Date UTC2023-05-14T20:05:42Z + Release Date2018-08-31T12:00:00Z + Loved + Artwork Count1 + Sort AlbumChill - EP + Sort ArtistSYML + Sort NameWDWGILY + Persistent IDF974889887743D9D + Track TypeRemote + Apple Music + + 5801 + + Track ID5801 + NameTrouble + ArtistCage the Elephant + Album ArtistCage the Elephant + ComposerCage the Elephant + AlbumTell Me I'm Pretty + GenreAlternative + KindApple Music AAC audio file + Size8051594 + Total Time225981 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2015 + Date Modified2021-10-06T14:07:33Z + Date Added2021-10-06T14:07:33Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3773754693 + Play Date UTC2023-08-01T14:11:33Z + Skip Count1 + Skip Date2021-10-07T20:16:58Z + Release Date2015-12-18T08:00:00Z + Artwork Count1 + Sort AlbumTell Me I'm Pretty + Sort ArtistCage the Elephant + Sort NameTrouble + Persistent IDA92D8038BAF623F8 + Track TypeRemote + Apple Music + + 5803 + + Track ID5803 + NamePhone Numbers + ArtistDominic Fike & Kenny Beats + Album ArtistDominic Fike & Kenny Beats + ComposerDominic Fike, Jared Scharff & Kenny Beats + AlbumPhone Numbers - Single + GenreAlternative + KindApple Music AAC audio file + Size5567649 + Total Time146827 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2021-10-06T14:07:36Z + Date Added2021-10-06T14:07:36Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3776240576 + Play Date UTC2023-08-30T08:42:56Z + Skip Count2 + Skip Date2022-11-17T06:34:15Z + Release Date2019-07-07T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPhone Numbers - Single + Sort ArtistDominic Fike & Kenny Beats + Sort NamePhone Numbers + Persistent IDD55CD06FD356EA76 + Explicit + Track TypeRemote + Apple Music + + 5805 + + Track ID5805 + NameKnow My Rights (feat. Lil Baby) + Artist6LACK + Album Artist6LACK + ComposerRicardo Valdez Valentine Jr., Dominique Jones, Adeyinka Bankole, James Cyr, Trevor Slade & Joseph Reeves + Album6pc Hot EP + GenreR&B/Soul + KindApple Music AAC audio file + Size6893902 + Total Time194396 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2020 + Date Modified2021-10-06T14:07:37Z + Date Added2021-10-06T14:07:37Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3778766275 + Play Date UTC2023-09-28T14:17:55Z + Release Date2020-06-26T12:00:00Z + Artwork Count1 + Sort Album6pc Hot EP + Sort Artist6LACK + Sort NameKnow My Rights (feat. Lil Baby) + Persistent IDE4C9D6EE50E82790 + Explicit + Track TypeRemote + Apple Music + + 5807 + + Track ID5807 + NameGoals (feat. Preme) + ArtistTyla Yaweh + Album ArtistTyla Yaweh + ComposerTyla Yaweh + AlbumGoals (feat. Preme) - Single + GenreHip-Hop + KindApple Music AAC audio file + Size7283062 + Total Time204057 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-10-06T14:07:37Z + Date Added2021-10-06T14:07:37Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783691812 + Play Date UTC2023-11-24T14:30:12Z + Skip Count1 + Skip Date2023-06-20T15:30:43Z + Release Date2018-08-31T12:00:00Z + Artwork Count1 + Sort AlbumGoals (feat. Preme) - Single + Sort ArtistTyla Yaweh + Sort NameGoals (feat. Preme) + Persistent IDEEA963FEDB77F26D + Explicit + Track TypeRemote + Apple Music + + 5809 + + Track ID5809 + NameFantasy + ArtistBazzi + Album ArtistVarious Artists + AlbumLaid Back Hip Hop + GenrePop + KindApple Music AAC audio file + Size5459666 + Total Time148230 + Disc Number1 + Disc Count1 + Track Number24 + Track Count26 + Year2018 + Date Modified2021-10-06T14:07:38Z + Date Added2021-10-06T14:07:38Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780492366 + Play Date UTC2023-10-18T13:46:06Z + Release Date2018-04-12T07:00:00Z + Compilation + Artwork Count1 + Sort AlbumLaid Back Hip Hop + Sort ArtistBazzi + Sort NameFantasy + Persistent IDDFBD92C6C310AC59 + Explicit + Track TypeRemote + Apple Music + + 5811 + + Track ID5811 + NameLoud(y) + ArtistLewis Del Mar + Album ArtistLewis Del Mar + ComposerDaniel Miller & Max Harwood + AlbumLewis Del Mar + GenreAlternative + KindApple Music AAC audio file + Size9063126 + Total Time249573 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2015 + Date Modified2021-10-06T14:07:38Z + Date Added2021-10-06T14:07:38Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3771930509 + Play Date UTC2023-07-11T11:28:29Z + Release Date2015-12-04T12:00:00Z + Artwork Count1 + Sort AlbumLewis Del Mar + Sort ArtistLewis Del Mar + Sort NameLoud(y) + Persistent IDE3A6AB8FEE35D44B + Explicit + Track TypeRemote + Apple Music + + 5813 + + Track ID5813 + NameThe Remains of Rock & Roll + ArtistBroken Bells + Album ArtistBroken Bells + ComposerJames Mercer & Brian Burton + AlbumAfter the Disco + GenreAlternative + KindApple Music AAC audio file + Size10239715 + Total Time294517 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2014 + Date Modified2021-10-06T14:07:40Z + Date Added2021-10-06T14:07:40Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3783355965 + Play Date UTC2023-11-20T17:12:45Z + Release Date2014-01-13T12:00:00Z + Artwork Count1 + Sort AlbumAfter the Disco + Sort ArtistBroken Bells + Sort NameRemains of Rock & Roll + Persistent ID5410A5CDB74BA173 + Track TypeRemote + Apple Music + + 5815 + + Track ID5815 + NameWave(s) + ArtistLewis Del Mar + Album ArtistLewis Del Mar + ComposerDaniel Miller & Max Harwood + AlbumEP + GenreAlternative + KindApple Music AAC audio file + Size8378679 + Total Time238400 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2016 + Date Modified2021-10-06T14:07:41Z + Date Added2021-10-06T14:07:41Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3783684435 + Play Date UTC2023-11-24T12:27:15Z + Skip Count1 + Skip Date2022-11-07T05:06:16Z + Release Date2016-01-15T12:00:00Z + Artwork Count1 + Sort AlbumEP + Sort ArtistLewis Del Mar + Sort NameWave(s) + Persistent ID202A20DF7E771FB4 + Explicit + Track TypeRemote + Apple Music + + 5817 + + Track ID5817 + NameWhen You Die + ArtistMGMT + Album ArtistMGMT + ComposerAndrew VanWyngarden & Ben Goldwasser + AlbumLittle Dark Age + GenreAlternative + KindApple Music AAC audio file + Size9955631 + Total Time263880 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2017 + Date Modified2021-10-06T14:07:43Z + Date Added2021-10-06T14:07:43Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3779198149 + Play Date UTC2023-10-03T14:15:49Z + Release Date2017-12-12T08:00:00Z + Artwork Count1 + Sort AlbumLittle Dark Age + Sort ArtistMGMT + Sort NameWhen You Die + Persistent ID5DADB0C4300C7634 + Explicit + Track TypeRemote + Apple Music + + 5819 + + Track ID5819 + NameSober + ArtistChildish Gambino + Album ArtistChildish Gambino + ComposerDonald Glover & Ludwig Göransson + AlbumKauai + GenreHip-Hop/Rap + KindAAC audio file + Size9065506 + Total Time252027 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2014 + Date Modified2021-10-06T14:07:44Z + Date Added2021-10-06T14:07:44Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count26 + Play Date3749045260 + Play Date UTC2022-10-19T14:27:40Z + Skip Count1 + Skip Date2022-04-23T18:13:38Z + Release Date2014-09-14T07:00:00Z + Loved + Normalization3089 + Artwork Count1 + Sort AlbumKauai + Sort ArtistChildish Gambino + Sort NameSober + Persistent ID3A8C53EE4EE227C5 + Track TypeRemote + + 5821 + + Track ID5821 + NameI Saw You Close Your Eyes + ArtistLocal Natives + Album ArtistLocal Natives + ComposerKelcey Ayer, Matthew Frazier, Nik Ewing, Ryan Hahn & Taylor Rice + AlbumI Saw You Close Your Eyes - Single + GenreAlternative + KindApple Music AAC audio file + Size8058798 + Total Time216840 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2021-10-06T14:07:45Z + Date Added2021-10-06T14:07:45Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3779199080 + Play Date UTC2023-10-03T14:31:20Z + Release Date2017-03-23T12:00:00Z + Artwork Count1 + Sort AlbumI Saw You Close Your Eyes - Single + Sort ArtistLocal Natives + Sort NameI Saw You Close Your Eyes + Persistent ID2FAEAFE6D2CED094 + Track TypeRemote + Apple Music + + 5823 + + Track ID5823 + NameThinking About You + ArtistBig Scary + Album ArtistBig Scary + ComposerTom Iansek & Joanna Syme + AlbumThe Big Scary Four Seasons + GenreAlternative + KindApple Music AAC audio file + Size8142598 + Total Time233587 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2010 + Date Modified2021-10-06T14:07:45Z + Date Added2021-10-06T14:07:45Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3780500781 + Play Date UTC2023-10-18T16:06:21Z + Skip Count4 + Skip Date2022-07-06T13:38:50Z + Release Date2010-12-01T12:00:00Z + Artwork Count1 + Sort AlbumBig Scary Four Seasons + Sort ArtistBig Scary + Sort NameThinking About You + Persistent ID4B66DA53E57FC3DE + Track TypeRemote + Apple Music + + 5825 + + Track ID5825 + NameHey + ArtistPixies + Album ArtistVarious Artists + ComposerBlack Francis + AlbumZack and Miri Make a Porno (Music from the Motion Picture) + GenreSoundtrack + KindApple Music AAC audio file + Size7634038 + Total Time210440 + Disc Number1 + Disc Count1 + Track Number16 + Track Count23 + Year1988 + Date Modified2021-10-06T14:07:48Z + Date Added2021-10-06T14:07:48Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3771829036 + Play Date UTC2023-07-10T07:17:16Z + Release Date1988-03-21T12:00:00Z + Rating80 + Rating Computed + Album Rating80 + Compilation + Artwork Count1 + Sort AlbumZack and Miri Make a Porno (Music from the Motion Picture) + Sort ArtistPixies + Sort NameHey + Persistent IDFD826AEF756F1493 + Explicit + Track TypeRemote + Apple Music + + 5827 + + Track ID5827 + NameMonica Lewinsky (feat. A Boogie Wit da Hoodie) + ArtistSAINt JHN + Album ArtistSAINt JHN + ComposerArtist Julius Dubose, Carlos St. John & Lee Stashenko + AlbumGhetto Lenny's Love Songs + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7240368 + Total Time200475 + Disc Number1 + Disc Count1 + Track Number12 + Track Count14 + Year2019 + Date Modified2021-10-06T14:07:49Z + Date Added2021-10-06T14:07:49Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3772520845 + Play Date UTC2023-07-18T07:27:25Z + Release Date2019-08-23T12:00:00Z + Artwork Count1 + Sort AlbumGhetto Lenny's Love Songs + Sort ArtistSAINt JHN + Sort NameMonica Lewinsky (feat. A Boogie Wit da Hoodie) + Persistent ID527FAAF01EF03BDB + Explicit + Track TypeRemote + Apple Music + + 5829 + + Track ID5829 + NameLotus Eater + ArtistFoster the People + Album ArtistFoster the People + ComposerMark Foster & Isom Innis + AlbumSacred Hearts Club + GenreAlternative + KindApple Music AAC audio file + Size6729599 + Total Time182442 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2017 + Date Modified2021-10-06T14:07:49Z + Date Added2021-10-06T14:07:49Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3763576998 + Play Date UTC2023-04-05T19:03:18Z + Release Date2017-07-21T12:00:00Z + Artwork Count1 + Sort AlbumSacred Hearts Club + Sort ArtistFoster the People + Sort NameLotus Eater + Persistent ID98CC32D9F1B5ECA1 + Track TypeRemote + Apple Music + + 5831 + + Track ID5831 + NameSomething to Believe In + ArtistYoung the Giant + Album ArtistYoung the Giant + ComposerAlex Salibian, Eric Cannata, Francois Comtois, Jacob Tilley, Payam Doostzadeh & Sameer Gadhia + AlbumHome of the Strange + GenreAlternative + KindApple Music AAC audio file + Size8064326 + Total Time228479 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2016 + Date Modified2021-10-06T14:07:51Z + Date Added2021-10-06T14:07:51Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3772622788 + Play Date UTC2023-07-19T11:46:28Z + Skip Count2 + Skip Date2021-10-08T17:22:48Z + Release Date2016-07-07T07:00:00Z + Artwork Count1 + Sort AlbumHome of the Strange + Sort ArtistYoung the Giant + Sort NameSomething to Believe In + Persistent ID8E2CF390109EC310 + Track TypeRemote + Apple Music + + 5833 + + Track ID5833 + NameKeep Your Distance + ArtistAmeer Vann + Album ArtistAmeer Vann + ComposerAmeer Vann, Brandon Kenneth Bell, Daniel Tannenbaum, Sergiu Adrian Gherman, Tyler Reese Melenbacher, Craig Balmoris, Daniel Nathan Krieger, Bri Steves & Marius Feder + AlbumKeep Your Distance - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4402193 + Total Time118628 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-10-06T14:07:53Z + Date Added2021-10-06T14:07:53Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3782903902 + Play Date UTC2023-11-15T11:38:22Z + Skip Count1 + Skip Date2022-05-27T22:30:05Z + Release Date2020-10-15T12:00:00Z + Artwork Count1 + Sort AlbumKeep Your Distance - Single + Sort ArtistAmeer Vann + Sort NameKeep Your Distance + Persistent ID024C2A6AF0DF80B7 + Explicit + Track TypeRemote + Apple Music + + 5835 + + Track ID5835 + NameThe Ceiling + ArtistLewis Del Mar + Album ArtistLewis Del Mar + ComposerMax Harwood, Daniel Miller, Andrew Maury, Daniel Ullmann & johan lenox + AlbumAUGUST + GenreAlternative + KindApple Music AAC audio file + Size6244063 + Total Time174240 + Disc Number1 + Disc Count1 + Track Number3 + Track Count15 + Year2020 + Date Modified2021-10-06T14:07:55Z + Date Added2021-10-06T14:07:55Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3776320120 + Play Date UTC2023-08-31T06:48:40Z + Skip Count2 + Skip Date2022-08-06T07:33:43Z + Release Date2020-05-20T07:00:00Z + Artwork Count1 + Sort AlbumAUGUST + Sort ArtistLewis Del Mar + Sort NameCeiling + Persistent ID292294009EC1505B + Track TypeRemote + Apple Music + + 5837 + + Track ID5837 + NameNinety + ArtistJaden + Album ArtistJaden + ComposerJaden & Peder Losnegård + AlbumSYRE + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size16178807 + Total Time468168 + Disc Number1 + Disc Count1 + Track Number8 + Track Count17 + Year2017 + Date Modified2021-10-06T14:07:59Z + Date Added2021-10-06T14:07:59Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3770988382 + Play Date UTC2023-06-30T13:46:22Z + Release Date2017-11-17T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSYRE + Sort ArtistJaden + Sort NameNinety + Persistent IDF8E4946A1C2FB5D9 + Explicit + Track TypeRemote + Apple Music + + 5839 + + Track ID5839 + NameCabin Fever + ArtistJaden + Album ArtistJaden + ComposerJ. Smith & M. Burns + AlbumCabin Fever - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7016224 + Total Time195535 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2021-10-06T14:08:03Z + Date Added2021-10-06T14:08:03Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3783585821 + Play Date UTC2023-11-23T09:03:41Z + Skip Count1 + Skip Date2022-02-23T20:34:21Z + Release Date2020-07-23T12:00:00Z + Artwork Count1 + Sort AlbumCabin Fever - Single + Sort ArtistJaden + Sort NameCabin Fever + Persistent ID612CB2EA35A2802B + Track TypeRemote + Apple Music + + 5841 + + Track ID5841 + NameBetter Now + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell, Austin Post, Billy Walsh & Adam Feeney + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8305790 + Total Time231261 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2018 + Date Modified2021-10-06T14:08:03Z + Date Added2021-10-06T14:08:03Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3783004935 + Play Date UTC2023-11-16T15:42:15Z + Skip Count2 + Skip Date2022-11-02T14:39:30Z + Release Date2018-04-27T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameBetter Now + Persistent ID7ABB14F52022D82D + Explicit + Track TypeRemote + Apple Music + + 5843 + + Track ID5843 + NameShelter + ArtistBroken Bells + Album ArtistBroken Bells + ComposerJay Mumford, James Mercer & Brian Burton + AlbumShelter - Single + GenreAlternative + KindApple Music AAC audio file + Size8522991 + Total Time239010 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-10-06T14:08:04Z + Date Added2021-10-06T14:08:04Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count27 + Play Date3779984809 + Play Date UTC2023-10-12T16:46:49Z + Skip Count3 + Skip Date2022-10-06T16:19:36Z + Release Date2018-12-07T12:00:00Z + Artwork Count1 + Sort AlbumShelter - Single + Sort ArtistBroken Bells + Sort NameShelter + Persistent ID832B4E6B743E9CEB + Track TypeRemote + Apple Music + + 5845 + + Track ID5845 + NameSeven + ArtistRainbow Kitten Surprise + Album ArtistRainbow Kitten Surprise + AlbumSeven + Mary + GenreAlternative + KindApple Music AAC audio file + Size8157200 + Total Time225413 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2013 + Date Modified2021-10-06T14:08:05Z + Date Added2021-10-06T14:08:05Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3772522927 + Play Date UTC2023-07-18T08:02:07Z + Skip Count3 + Skip Date2022-11-08T08:43:48Z + Release Date2013-11-13T12:00:00Z + Artwork Count1 + Sort AlbumSeven + Mary + Sort ArtistRainbow Kitten Surprise + Sort NameSeven + Persistent ID69AA109C8D08D937 + Track TypeRemote + Apple Music + + 5847 + + Track ID5847 + NameDestroy Me + Artistgrandson + Album Artistgrandson + ComposerChester Krupa Carbone, Jordan Benjamin & Kevin Hissink + Albuma modern tragedy, vol. 3 - EP + GenreAlternative + KindApple Music AAC audio file + Size7992619 + Total Time223150 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2019 + Date Modified2021-10-06T14:08:05Z + Date Added2021-10-06T14:08:05Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783402267 + Play Date UTC2023-11-21T06:04:27Z + Skip Count5 + Skip Date2023-05-30T11:41:45Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort Albummodern tragedy, vol. 3 - EP + Sort Artistgrandson + Sort NameDestroy Me + Persistent IDCD3F46574850CC56 + Explicit + Track TypeRemote + Apple Music + + 5849 + + Track ID5849 + NameFever + ArtistBalthazar + Album ArtistBalthazar + ComposerJinte Deprez & Maarten Devoldere + AlbumFever + GenreAlternative + KindApple Music AAC audio file + Size13559412 + Total Time365080 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2019 + Date Modified2021-10-07T21:46:59Z + Date Added2021-10-07T21:46:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3782991548 + Play Date UTC2023-11-16T11:59:08Z + Skip Count2 + Skip Date2022-02-27T14:53:05Z + Release Date2019-01-25T12:00:00Z + Artwork Count1 + Sort AlbumFever + Sort ArtistBalthazar + Sort NameFever + Persistent ID850BE2E6D9595B52 + Track TypeRemote + Apple Music + + 5851 + + Track ID5851 + NameSICKO MODE + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster + AlbumASTROWORLD + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10908819 + Total Time312820 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2018 + Date Modified2021-10-07T22:00:45Z + Date Added2021-10-07T22:00:45Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3781781745 + Play Date UTC2023-11-02T11:55:45Z + Release Date2018-08-03T12:00:00Z + Loved + Artwork Count1 + Sort AlbumASTROWORLD + Sort ArtistTravis Scott + Sort NameSICKO MODE + Persistent ID519A84575D1294BC + Explicit + Track TypeRemote + Apple Music + + 5853 + + Track ID5853 + NameI Am the Antichrist to You + ArtistKishi Bashi + Album ArtistKishi Bashi + Album151A + GenreAlternative + KindApple Music AAC audio file + Size8868281 + Total Time236246 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2012 + Date Modified2021-10-07T22:25:54Z + Date Added2021-10-07T22:25:54Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3770539260 + Play Date UTC2023-06-25T09:01:00Z + Skip Count1 + Skip Date2022-07-23T17:16:14Z + Release Date2012-04-10T12:00:00Z + Loved + Artwork Count1 + Sort Album151A + Sort ArtistKishi Bashi + Sort NameI Am the Antichrist to You + Persistent ID8A6CB22F80EF6524 + Track TypeRemote + Apple Music + + 5855 + + Track ID5855 + NameWhat You Need + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, Chauncey Hollis, Jr., Dusting James Corbett & Dylan Wiggins + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7815582 + Total Time217609 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783754077 + Play Date UTC2023-11-25T07:47:57Z + Skip Count1 + Skip Date2022-11-17T06:49:13Z + Release Date2021-05-04T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort NameWhat You Need + Persistent ID49FE38188A6963DE + Explicit + Track TypeRemote + Apple Music + + 5857 + + Track ID5857 + NameFlocky Flocky (feat. Travis Scott) + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, Ciaran Mullan, Dylan Cleary-Krell, Jacques Berman Webster II & Ronald LaTour + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6743484 + Total Time183514 + Disc Number1 + Disc Count1 + Track Number4 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3770044239 + Play Date UTC2023-06-19T15:30:39Z + Skip Count1 + Skip Date2021-10-31T19:36:28Z + Release Date2021-10-08T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort NameFlocky Flocky (feat. Travis Scott) + Persistent ID5E01BAF38D32508B + Explicit + Track TypeRemote + Apple Music + + 5859 + + Track ID5859 + Name5X + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, Douglas Ford, Mino Drerup & Ronald LaTour + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5009879 + Total Time132398 + Disc Number1 + Disc Count1 + Track Number2 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3772265825 + Play Date UTC2023-07-15T08:37:05Z + Release Date2021-10-08T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort Name5X + Persistent IDDBDA51248857026D + Explicit + Track TypeRemote + Apple Music + + 5861 + + Track ID5861 + Name2AM + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver & Jahaan Sweet + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6092493 + Total Time165749 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3779313970 + Play Date UTC2023-10-04T22:26:10Z + Release Date2021-10-08T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort Name2AM + Persistent ID5DACCA142F0A2FB4 + Explicit + Track TypeRemote + Apple Music + + 5863 + + Track ID5863 + NameOUTERSPACE (feat. Baby Keem) + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, Dylan Cleary-Krell, Hykeem Carter, Jahaan Sweet, James Austin Cyr, Linda Kopera & MIKE DEAN + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8249311 + Total Time226095 + Disc Number1 + Disc Count1 + Track Number12 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3782976317 + Play Date UTC2023-11-16T07:45:17Z + Release Date2021-10-08T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort NameOUTERSPACE (feat. Baby Keem) + Persistent IDC7689BAC422FBACF + Explicit + Track TypeRemote + Apple Music + + 5865 + + Track ID5865 + NameCompany, Pt. 2 + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, David Ruoff, dennis jüngel, Elias Klughammer, Josh Gottmanns & Leland Tyler Wayne + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7612521 + Total Time211406 + Disc Number1 + Disc Count1 + Track Number11 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3766658089 + Play Date UTC2023-05-11T10:54:49Z + Skip Count2 + Skip Date2021-10-13T13:00:03Z + Release Date2021-10-08T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort NameCompany, Pt. 2 + Persistent IDB91F330D29DDDA32 + Explicit + Track TypeRemote + Apple Music + + 5867 + + Track ID5867 + NameGet Throwed + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, Dijon McFarlane & Omar Perrin + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5986940 + Total Time155132 + Disc Number1 + Disc Count1 + Track Number10 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3782813885 + Play Date UTC2023-11-14T10:38:05Z + Release Date2021-10-08T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort NameGet Throwed + Persistent ID90F3211F6E7EDBE3 + Explicit + Track TypeRemote + Apple Music + + 5869 + + Track ID5869 + NameYou (feat. Travis Scott) + ArtistDon Toliver + Album ArtistDon Toliver + ComposerAllen Ritter, Caleb Toliver, Jacques Berman Webster II & MIKE DEAN + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7934228 + Total Time213637 + Disc Number1 + Disc Count1 + Track Number14 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3773752654 + Play Date UTC2023-08-01T13:37:34Z + Release Date2021-10-08T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort NameYou (feat. Travis Scott) + Persistent ID69162F955603AAE9 + Explicit + Track TypeRemote + Apple Music + + 5871 + + Track ID5871 + NameBOGUS + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, Marcus Fitzgerald Rucker, Pascal Leroy & Ronald LaTour + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7173433 + Total Time199710 + Disc Number1 + Disc Count1 + Track Number16 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count97 + Play Date3783593504 + Play Date UTC2023-11-23T11:11:44Z + Skip Count4 + Skip Date2022-02-09T23:19:18Z + Release Date2021-10-08T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort NameBOGUS + Persistent ID4F32DBCB3F40B956 + Explicit + Track TypeRemote + Apple Music + + 5873 + + Track ID5873 + NameXSCAPE + ArtistDon Toliver + Album ArtistDon Toliver + ComposerCaleb Toliver, Chase Benjamin, Douglas Ford, MIKE DEAN, Mirela, patrick rosario, Shivam Barot & Simon Krichely + AlbumLife of a DON + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6153845 + Total Time156248 + Disc Number1 + Disc Count1 + Track Number1 + Track Count16 + Year2021 + Date Modified2021-10-10T17:11:49Z + Date Added2021-10-10T17:11:49Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3783358859 + Play Date UTC2023-11-20T18:00:59Z + Release Date2021-10-08T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumLife of a DON + Sort ArtistDon Toliver + Sort NameXSCAPE + Persistent ID11D2618CC92C6962 + Explicit + Track TypeRemote + Apple Music + + 5875 + + Track ID5875 + NameI Don't Wanna Talk (I Just Wanna Dance) + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumDreamland (+ Bonus Levels 2.0) + GenreAlternative + KindApple Music AAC audio file + Size7127663 + Total Time195191 + Disc Number1 + Disc Count1 + Track Number17 + Track Count17 + Year2020 + Date Modified2021-10-11T14:24:51Z + Date Added2021-10-11T14:24:51Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783713992 + Play Date UTC2023-11-24T20:39:52Z + Release Date2021-09-10T12:00:00Z + Artwork Count1 + Sort AlbumDreamland (+ Bonus Levels 2.0) + Sort ArtistGlass Animals + Sort NameI Don't Wanna Talk (I Just Wanna Dance) + Persistent ID18EC23A2DF253954 + Clean + Track TypeRemote + Apple Music + + 5877 + + Track ID5877 + NameLose Control + ArtistGlass Animals & Joey Bada$$ + Album ArtistGlass Animals & Joey Bada$$ + ComposerJoey Bada$$ & David Bayley + AlbumLose Control - Single + GenreAlternative + KindApple Music AAC audio file + Size7634638 + Total Time210406 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2021-10-11T14:52:24Z + Date Added2021-10-11T14:52:24Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3769680140 + Play Date UTC2023-06-15T10:22:20Z + Skip Count2 + Skip Date2022-07-29T09:17:39Z + Release Date2015-10-05T12:00:00Z + Artwork Count1 + Sort AlbumLose Control - Single + Sort ArtistGlass Animals & Joey Bada$$ + Sort NameLose Control + Persistent ID3AFC297F5DC2DCD2 + Track TypeRemote + Apple Music + + 5879 + + Track ID5879 + NameIt’s All So Incredibly Loud + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumADULTHOOD - EP + GenreAlternative + KindApple Music AAC audio file + Size9124256 + Total Time259060 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2020 + Date Modified2021-10-11T14:53:44Z + Date Added2021-10-11T14:53:44Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3770987847 + Play Date UTC2023-06-30T13:37:27Z + Release Date2020-07-31T07:00:00Z + Artwork Count1 + Sort AlbumADULTHOOD - EP + Sort ArtistGlass Animals + Sort NameIt’s All So Incredibly Loud + Persistent ID60FAD70FA0AC7EAD + Track TypeRemote + Apple Music + + 5881 + + Track ID5881 + NameWaterfalls Coming Out Your Mouth + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumADOLESCENCE - EP + GenreAlternative + KindApple Music AAC audio file + Size5870072 + Total Time161790 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2020 + Date Modified2021-10-11T14:54:08Z + Date Added2021-10-11T14:54:08Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3780485525 + Play Date UTC2023-10-18T11:52:05Z + Release Date2020-08-07T07:00:00Z + Artwork Count1 + Sort AlbumADOLESCENCE - EP + Sort ArtistGlass Animals + Sort NameWaterfalls Coming Out Your Mouth + Persistent IDDC82B94FEE075341 + Explicit + Track TypeRemote + Apple Music + + 5883 + + Track ID5883 + NameGooey + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDavid Bayley + AlbumZaba + GenreAlternative + KindApple Music AAC audio file + Size10238772 + Total Time289307 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2014 + Date Modified2021-10-11T14:56:50Z + Date Added2021-10-11T14:56:50Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3770216400 + Play Date UTC2023-06-21T15:20:00Z + Skip Count3 + Skip Date2021-12-07T18:21:27Z + Release Date2014-01-01T12:00:00Z + Artwork Count1 + Sort AlbumZABA + Sort ArtistGlass Animals + Sort NameGooey + Persistent ID4B7766D55DF07772 + Track TypeRemote + Apple Music + + 5885 + + Track ID5885 + NameIn Fantasia + ArtistKishi Bashi + Album ArtistKishi Bashi + AlbumLighght (Deluxe Version) + GenreAlternative + KindApple Music AAC audio file + Size15832598 + Total Time429453 + Disc Number1 + Disc Count1 + Track Number11 + Track Count14 + Year2014 + Date Modified2021-10-12T05:10:22Z + Date Added2021-10-12T05:10:22Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3781187345 + Play Date UTC2023-10-26T14:49:05Z + Skip Count2 + Skip Date2022-05-03T05:24:13Z + Release Date2014-04-23T12:00:00Z + Artwork Count1 + Sort AlbumLighght (Deluxe Version) + Sort ArtistKishi Bashi + Sort NameIn Fantasia + Persistent ID52304AF58DB0B0F9 + Track TypeRemote + Apple Music + + 5887 + + Track ID5887 + NameCan’t Let Go, Juno + ArtistKishi Bashi + Album ArtistKishi Bashi + AlbumSonderlust + GenreAlternative + KindApple Music AAC audio file + Size10098237 + Total Time262680 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2016 + Date Modified2021-10-12T05:32:05Z + Date Added2021-10-12T05:32:05Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3759928356 + Play Date UTC2023-02-22T13:32:36Z + Skip Count1 + Skip Date2022-04-16T23:17:01Z + Release Date2016-09-06T07:00:00Z + Loved + Artwork Count1 + Sort AlbumSonderlust + Sort ArtistKishi Bashi + Sort NameCan’t Let Go, Juno + Persistent IDED6471B1C6FF6726 + Track TypeRemote + Apple Music + + 5889 + + Track ID5889 + NameHalfway to Nowhere + ArtistChelou + Album ArtistChelou + AlbumHalfway to Nowhere - Single + GenreAlternative + KindApple Music AAC audio file + Size6490367 + Total Time188405 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Date Modified2021-10-13T16:23:33Z + Date Added2021-10-13T16:23:33Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count34 + Play Date3759845717 + Play Date UTC2023-02-21T14:35:17Z + Release Date2016-11-04T12:00:00Z + Artwork Count1 + Sort AlbumHalfway to Nowhere - Single + Sort ArtistChelou + Sort NameHalfway to Nowhere + Persistent ID69F0D1AB637C16A1 + Track TypeRemote + Apple Music + + 5891 + + Track ID5891 + NameSong 11 + ArtistGames + Album ArtistGames + ComposerJon Coyle + AlbumSugar Mountain + GenreJazz + KindApple Music AAC audio file + Size12487489 + Total Time358080 + Disc Number1 + Disc Count1 + Track Number3 + Track Count7 + Year2007 + Date Modified2021-10-16T08:53:20Z + Date Added2021-10-16T08:53:20Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3765126267 + Play Date UTC2023-04-23T17:24:27Z + Skip Count3 + Skip Date2023-02-14T19:49:11Z + Release Date2007-04-06T12:00:00Z + Artwork Count1 + Sort AlbumSugar Mountain + Sort ArtistGames + Sort NameSong 11 + Persistent IDA7C99A45A3D679FE + Track TypeRemote + Apple Music + + 5893 + + Track ID5893 + NameToss a Coin to Your Witcher + ArtistSonya Belousova, Giona Ostinelli & Joey Batey + Album ArtistSonya Belousova & Giona Ostinelli + ComposerGiona Ostinelli & Sonya Belousova + AlbumThe Witcher (Music from the Netflix Original Series) + GenreSoundtrack + KindApple Music AAC audio file + Size7026023 + Total Time190307 + Disc Number1 + Disc Count1 + Track Number2 + Track Count55 + Year2020 + Date Modified2021-10-17T10:52:40Z + Date Added2021-10-17T10:52:40Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3780129205 + Play Date UTC2023-10-14T08:53:25Z + Skip Count6 + Skip Date2022-12-14T20:02:01Z + Release Date2020-01-24T12:00:00Z + Normalization3316 + Artwork Count1 + Sort AlbumWitcher (Music from the Netflix Original Series) + Sort ArtistSonya Belousova, Giona Ostinelli & Joey Batey + Sort NameToss a Coin to Your Witcher + Persistent ID1559A2FC4100D2C6 + Track TypeRemote + Apple Music + + 5895 + + Track ID5895 + NameRosegold + Artistkerri + Album Artistkerri + ComposerKerri Popowich + AlbumHappy Accidents + GenreR&B/Soul + KindApple Music AAC audio file + Size9104231 + Total Time254415 + Disc Number1 + Disc Count1 + Track Number1 + Track Count9 + Year2018 + Date Modified2021-11-01T14:10:55Z + Date Added2021-11-01T14:10:55Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3772782995 + Play Date UTC2023-07-21T08:16:35Z + Release Date2018-01-05T12:00:00Z + Artwork Count1 + Sort AlbumHappy Accidents + Sort Artistkerri + Sort NameRosegold + Persistent IDE72123C039123452 + Track TypeRemote + Apple Music + + 5897 + + Track ID5897 + NameWhere Do I Go? (feat. Tulpa & Evva) + ArtistVAGUE003 + Album ArtistVAGUE003 + ComposerVAGUE003 + AlbumWhere Do I Go? (feat. Tulpa & Evva) - Single + GenreAlternative + KindAAC audio file + Size7198275 + Total Time207586 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2021-11-01T19:10:44Z + Date Added2021-11-01T19:10:44Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3744178339 + Play Date UTC2022-08-24T06:32:19Z + Release Date2017-05-16T12:00:00Z + Artwork Count1 + Sort AlbumWhere Do I Go? (feat. Tulpa & Evva) - Single + Sort ArtistVAGUE003 + Sort NameWhere Do I Go? (feat. Tulpa & Evva) + Persistent ID2C6B51FDD17F244B + Track TypeRemote + + 5899 + + Track ID5899 + Nameit's ok, you're ok + Artistbonjr + Album Artistbonjr + Albumit's ok, you're ok - Single + GenreElectronic + KindApple Music AAC audio file + Size7612292 + Total Time215510 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2021-11-01T19:34:54Z + Date Added2021-11-01T19:34:54Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3780833673 + Play Date UTC2023-10-22T12:34:33Z + Skip Count1 + Skip Date2022-05-08T15:38:55Z + Release Date2018-03-20T12:00:00Z + Artwork Count1 + Sort Albumit's ok, you're ok - Single + Sort Artistbonjr + Sort Nameit's ok, you're ok + Persistent IDE69C8A1DFFD7BC92 + Track TypeRemote + Apple Music + + 5901 + + Track ID5901 + NameChaplan Candy + Artistrei brown + Album Artistrei brown + Composerrei brown + AlbumLovers II - EP + GenreAlternative + KindApple Music AAC audio file + Size9286303 + Total Time261500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2018 + Date Modified2021-11-01T19:57:33Z + Date Added2021-11-01T19:57:33Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3770104820 + Play Date UTC2023-06-20T08:20:20Z + Skip Count2 + Skip Date2022-03-10T11:29:51Z + Release Date2018-03-22T12:00:00Z + Artwork Count1 + Sort AlbumLovers II - EP + Sort Artistrei brown + Sort NameChaplan Candy + Persistent ID25EB3D1DE3B58921 + Track TypeRemote + Apple Music + + 5903 + + Track ID5903 + NameStarkCounty + ArtistBONES & Cat Soup + Album ArtistBONES & Cat Soup + AlbumForbiddenImage + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5245768 + Total Time143935 + Disc Number1 + Disc Count1 + Track Number10 + Track Count13 + Year2021 + Date Modified2021-11-20T17:06:33Z + Date Added2021-11-20T17:06:33Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count35 + Play Date3781448030 + Play Date UTC2023-10-29T15:13:50Z + Release Date2021-10-15T12:00:00Z + Artwork Count1 + Sort AlbumForbiddenImage + Sort ArtistBONES & Cat Soup + Sort NameStarkCounty + Persistent ID7E7DC7CA4F03BF56 + Explicit + Track TypeRemote + Apple Music + + 5905 + + Track ID5905 + NameBang + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Hayden Coplen & Jason Suwito + AlbumBang - Single + GenreRock + KindApple Music AAC audio file + Size5169811 + Total Time131440 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2021-11-20T17:23:06Z + Date Added2021-11-20T17:23:06Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3775208828 + Play Date UTC2023-08-18T10:07:08Z + Skip Count1 + Skip Date2021-12-05T08:10:41Z + Release Date2021-11-12T12:00:00Z + Artwork Count1 + Sort AlbumBang - Single + Sort ArtistSir Sly + Sort NameBang + Persistent ID9E97D75995F7FBE7 + Track TypeRemote + Apple Music + + 5907 + + Track ID5907 + NameSomething Beautiful (feat. Masked Wolf) + ArtistTom Walker + Album ArtistTom Walker + ComposerTom Walker, Steve Mac & Harry Michael + AlbumSomething Beautiful (Stripped) - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size6692596 + Total Time186952 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2021 + Date Modified2021-11-21T09:29:01Z + Date Added2021-11-21T09:29:01Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3780379989 + Play Date UTC2023-10-17T06:33:09Z + Skip Count2 + Skip Date2022-01-12T17:11:08Z + Release Date2021-10-07T12:00:00Z + Normalization5003 + Artwork Count1 + Sort AlbumSomething Beautiful (Stripped) - Single + Sort ArtistTom Walker + Sort NameSomething Beautiful (feat. Masked Wolf) + Persistent ID4BA05CA48FD884C1 + Track TypeRemote + Apple Music + + 5909 + + Track ID5909 + NameI WANNA SEE SOME ASS (feat. JetsonMade) + ArtistJack Harlow + Album ArtistJack Harlow + ComposerJack Harlow, Kevin Gomringer, Tahj Morgan & Tim Gomringer + AlbumSweet Action + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4720220 + Total Time125302 + Disc Number1 + Disc Count1 + Track Number3 + Track Count7 + Year2020 + Date Modified2021-12-30T20:49:12Z + Date Added2021-12-30T20:49:12Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3770187509 + Play Date UTC2023-06-21T07:18:29Z + Skip Count5 + Skip Date2022-07-06T10:10:50Z + Release Date2020-03-13T12:00:00Z + Artwork Count1 + Sort AlbumSweet Action + Sort ArtistJack Harlow + Sort NameI WANNA SEE SOME ASS (feat. JetsonMade) + Persistent ID803A9EC8AD9FC73E + Explicit + Track TypeRemote + Apple Music + + 5911 + + Track ID5911 + NameDemons + ArtistJoji + Album ArtistJoji + AlbumIn Tongues - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size6363604 + Total Time176804 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2017 + Date Modified2022-01-03T06:06:46Z + Date Added2022-01-03T06:06:46Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count61 + Play Date3781347672 + Play Date UTC2023-10-28T11:21:12Z + Skip Count3 + Skip Date2022-10-30T18:07:16Z + Release Date2017-11-03T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumIn Tongues - EP + Sort ArtistJoji + Sort NameDemons + Persistent ID773D4B7CCDE736A9 + Explicit + Track TypeRemote + Apple Music + + 5913 + + Track ID5913 + NameSad Saturdays + ArtistJOBA + Album ArtistJOBA + ComposerRomil + AlbumSad Saturdays - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9037366 + Total Time267040 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Date Modified2022-01-09T14:22:27Z + Date Added2022-01-09T14:22:27Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3781194406 + Play Date UTC2023-10-26T16:46:46Z + Skip Count1 + Skip Date2022-03-15T19:04:13Z + Release Date2015-07-11T12:00:00Z + Artwork Count1 + Sort AlbumSad Saturdays - Single + Sort ArtistJOBA + Sort NameSad Saturdays + Persistent ID66D436DD770F9C68 + Track TypeRemote + Apple Music + + 5915 + + Track ID5915 + NameSink into the Floor + ArtistFeng Suave + Album ArtistFeng Suave + ComposerDaniel de Jong, Daniel Leonard Elvis Schoemaker & Feng Suave + AlbumFeng Suave - EP + GenreIndie Pop + KindApple Music AAC audio file + Size10208429 + Total Time281054 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2017 + Date Modified2022-01-09T14:26:29Z + Date Added2022-01-09T14:26:29Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3780906507 + Play Date UTC2023-10-23T08:48:27Z + Skip Count2 + Skip Date2022-03-15T19:04:22Z + Release Date2017-07-28T12:00:00Z + Artwork Count1 + Sort AlbumFeng Suave - EP + Sort ArtistFeng Suave + Sort NameSink into the Floor + Persistent ID17B17B85596B4FB0 + Track TypeRemote + Apple Music + + 5917 + + Track ID5917 + NameWhere We Go + ArtistJelani Aryeh + Album ArtistJelani Aryeh + AlbumSuburban Destinesia + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9692202 + Total Time279088 + Disc Number1 + Disc Count1 + Track Number2 + Track Count7 + Year2017 + Date Modified2022-01-09T19:20:07Z + Date Added2022-01-09T19:20:07Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3781204635 + Play Date UTC2023-10-26T19:37:15Z + Skip Count3 + Skip Date2022-02-09T11:19:48Z + Release Date2017-09-08T12:00:00Z + Artwork Count1 + Sort AlbumSuburban Destinesia + Sort ArtistJelani Aryeh + Sort NameWhere We Go + Persistent IDBC4CB73E2A398424 + Explicit + Track TypeRemote + Apple Music + + 5919 + + Track ID5919 + NamePhantom Regret by Jim + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerThe Weeknd, Jim Carrey, Daniel Lopatin, Max Martin, Oscar Holter & Matt Cohn + AlbumDawn FM + GenreR&B/Soul + KindApple Music AAC audio file + Size6446713 + Total Time179580 + Disc Number1 + Disc Count1 + Track Number16 + Track Count16 + Year2022 + Date Modified2022-01-18T15:14:37Z + Date Added2022-01-18T15:14:37Z + Bit Rate256 + Sample Rate44100 + Play Count62 + Play Date3781060303 + Play Date UTC2023-10-25T03:31:43Z + Skip Count8 + Skip Date2022-12-29T18:00:17Z + Release Date2022-01-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumDawn FM + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort ComposerWeeknd, Jim Carrey, Daniel Lopatin, Max Martin, Oscar Holter & Matt Cohn + Sort NamePhantom Regret by Jim + Persistent ID91EFD47FB0B67407 + Track TypeRemote + Apple Music + + 5921 + + Track ID5921 + NameSacrifice + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerThe Weeknd, Axel Hedfors, Carl Nordström, Kevin Duane McCord, Max Martin, Oscar Holter, Sebastian Ingrosso & Steve Angello + AlbumDawn FM + GenreR&B/Soul + KindApple Music AAC audio file + Size7074229 + Total Time188918 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2022 + Date Modified2022-01-18T22:56:19Z + Date Added2022-01-18T22:56:19Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3766395822 + Play Date UTC2023-05-08T10:03:42Z + Skip Count7 + Skip Date2022-12-15T08:55:36Z + Release Date2022-01-07T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDawn FM + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort ComposerWeeknd, Axel Hedfors, Carl Nordström, Kevin Duane McCord, Max Martin, Oscar Holter, Sebastian Ingrosso & Steve Angello + Sort NameSacrifice + Persistent IDC270B96AB25DBBC7 + Explicit + Track TypeRemote + Apple Music + + 5923 + + Track ID5923 + Nameidk that bitch (feat. G Herbo) + ArtistGunna + Album ArtistGunna + ComposerAlex Lustig, Chandler Durham, Herbert Randall Wright II & Sergio Kitchens + AlbumDRIP SEASON 4EVER + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7592339 + Total Time210587 + Disc Number1 + Disc Count1 + Track Number14 + Track Count20 + Year2022 + Date Modified2022-01-20T16:56:58Z + Date Added2022-01-20T16:56:58Z + Bit Rate256 + Sample Rate44100 + Play Count61 + Play Date3782803255 + Play Date UTC2023-11-14T07:40:55Z + Skip Count4 + Skip Date2022-04-23T21:04:56Z + Release Date2022-01-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumDRIP SEASON 4EVER + Sort ArtistGunna + Sort Nameidk that bitch (feat. G Herbo) + Persistent ID299A77015D7EA602 + Explicit + Track TypeRemote + Apple Music + + 5925 + + Track ID5925 + Namelost souls (feat. Brent Faiyaz) + ArtistBaby Keem + Album ArtistBaby Keem + ComposerHykeem Carter, Jahaan Akil Sweet, Ruchaun Akers, Michee Lebrun & Christopher Brent Wood + AlbumThe Melodic Blue + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9544544 + Total Time269728 + Disc Number2 + Disc Count2 + Track Number1 + Track Count3 + Year2021 + Date Modified2022-01-24T20:42:31Z + Date Added2022-01-24T20:42:31Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3772519249 + Play Date UTC2023-07-18T07:00:49Z + Skip Count2 + Skip Date2022-06-19T07:32:04Z + Release Date2021-09-10T07:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumThe Melodic Blue + Sort ArtistBaby Keem + Sort Namelost souls (feat. Brent Faiyaz) + Persistent ID5DDBCE6ED9B30619 + Explicit + Track TypeRemote + Apple Music + + 5927 + + Track ID5927 + NameWhere's My Love + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumHurt for Me - EP + GenreAlternative + KindApple Music AAC audio file + Size8778178 + Total Time248333 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2016 + Date Modified2022-01-29T14:38:37Z + Date Added2022-01-29T14:38:37Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3766407608 + Play Date UTC2023-05-08T13:20:08Z + Skip Count4 + Skip Date2022-09-04T20:46:16Z + Release Date2016-01-21T12:00:00Z + Artwork Count1 + Sort AlbumHurt for Me - EP + Sort ArtistSYML + Sort NameWhere's My Love + Persistent IDD811C8257DAA5E13 + Track TypeRemote + Apple Music + + 5929 + + Track ID5929 + NameIt's Called: Freefall + ArtistRainbow Kitten Surprise + Album ArtistRainbow Kitten Surprise + ComposerEla Melo + AlbumHow To: Friend, Love, Freefall + GenreAlternative + KindApple Music AAC audio file + Size5586284 + Total Time152327 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2018 + Date Modified2022-02-22T15:06:35Z + Date Added2022-02-22T15:06:35Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3780845976 + Play Date UTC2023-10-22T15:59:36Z + Skip Count4 + Skip Date2022-10-01T09:49:48Z + Release Date2018-04-06T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumHow To: Friend, Love, Freefall + Sort ArtistRainbow Kitten Surprise + Sort NameIt's Called: Freefall + Persistent ID10D330C0223E9AD2 + Explicit + Track TypeRemote + Apple Music + + 5931 + + Track ID5931 + NameWasted + ArtistRainbow Kitten Surprise + Album ArtistRainbow Kitten Surprise + ComposerEla Melo + AlbumRKS + GenreRock + KindApple Music AAC audio file + Size7079198 + Total Time197773 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2015 + Date Modified2022-02-22T15:50:38Z + Date Added2022-02-22T15:50:38Z + Bit Rate256 + Sample Rate44100 + Play Count52 + Play Date3781387728 + Play Date UTC2023-10-28T22:28:48Z + Skip Count3 + Skip Date2023-06-01T11:25:49Z + Release Date2015-04-25T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumRKS + Sort ArtistRainbow Kitten Surprise + Sort NameWasted + Persistent IDC3D8C7E503ED7C1C + Track TypeRemote + Apple Music + + 5933 + + Track ID5933 + NameYou're the One + ArtistS+C+A+R+R + Album ArtistDan Levy + AlbumI Lost My Body (Original Motion Picture Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size5994992 + Total Time167987 + Disc Number1 + Disc Count1 + Track Number7 + Track Count20 + Year2019 + Date Modified2022-03-06T11:29:39Z + Date Added2022-03-06T11:29:39Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3766756796 + Play Date UTC2023-05-12T14:19:56Z + Skip Count2 + Skip Date2022-05-10T08:59:12Z + Release Date2019-10-31T07:00:00Z + Loved + Artwork Count1 + Sort AlbumI Lost My Body (Original Motion Picture Soundtrack) + Sort ArtistS+C+A+R+R + Sort NameYou're the One + Persistent ID8BA1340475622A61 + Track TypeRemote + Apple Music + + 5935 + + Track ID5935 + NameSpine Curves + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumSpine Curves - Single + GenreAlternative + KindApple Music AAC audio file + Size5860233 + Total Time160480 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2022-03-11T19:40:02Z + Date Added2022-03-11T19:40:02Z + Bit Rate256 + Sample Rate44100 + Play Count146 + Play Date3772635929 + Play Date UTC2023-07-19T15:25:29Z + Skip Count3 + Skip Date2022-06-03T15:46:44Z + Release Date2022-03-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSpine Curves - Single + Sort ArtistSir Sly + Sort NameSpine Curves + Persistent IDCC7A2D0FBA87E020 + Explicit + Track TypeRemote + Apple Music + + 5937 + + Track ID5937 + NameFUCKING YOUNG / PERFECT (feat. Charlie Wilson, Chaz Bundick, Sydney Bennett & Kali Uchis) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerKali Uchis, See Sub-songs & Tyler Okonma + AlbumCherry Bomb + Instrumentals + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size15130365 + Total Time401573 + Disc Number1 + Disc Count2 + Track Number10 + Track Count13 + Year2015 + Date Modified2022-04-10T08:39:07Z + Date Added2022-04-10T08:39:07Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3780390820 + Play Date UTC2023-10-17T09:33:40Z + Skip Count1 + Skip Date2022-06-03T16:16:41Z + Release Date2015-04-09T07:00:00Z + Loved + Artwork Count1 + Sort AlbumCherry Bomb + Instrumentals + Sort ArtistTyler, The Creator + Sort NameFUCKING YOUNG / PERFECT (feat. Charlie Wilson, Chaz Bundick, Sydney Bennett & Kali Uchis) + Persistent IDD26DB97FCA90FF88 + Explicit + Track TypeRemote + Apple Music + + 5939 + + Track ID5939 + NameBastard + ArtistTyler, The Creator + Album ArtistOdd Future + ComposerTyler Okonma + Album12 Odd Future Songs + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12786214 + Total Time369387 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2009 + Date Modified2022-04-16T15:51:47Z + Date Added2022-04-16T15:51:47Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3767285222 + Play Date UTC2023-05-18T17:07:02Z + Skip Count2 + Skip Date2022-12-05T21:53:04Z + Release Date2009-12-25T08:00:00Z + Loved + Compilation + Artwork Count1 + Sort Album12 Odd Future Songs + Sort ArtistTyler, The Creator + Sort NameBastard + Persistent ID8C6198C7F902F505 + Explicit + Track TypeRemote + Apple Music + + 5941 + + Track ID5941 + Namefeel something + ArtistBea Miller + Album ArtistVarious Artists + ComposerBea Miller, Justin Tranter, Kennedi Lykken & Mike Sabath + AlbumИностранные хиты + GenrePop + KindApple Music AAC audio file + Size6668814 + Total Time180161 + Disc Number1 + Disc Count1 + Track Number19 + Track Count27 + Year2019 + Date Modified2022-04-16T17:13:39Z + Date Added2022-04-16T17:13:39Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3776319946 + Play Date UTC2023-08-31T06:45:46Z + Skip Count2 + Skip Date2022-12-15T11:14:29Z + Release Date2019-06-21T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumИностранные хиты + Sort ArtistBea Miller + Sort Namefeel something + Persistent ID7618B9F67F2A6CA9 + Explicit + Track TypeRemote + + 5943 + + Track ID5943 + NameLegends + ArtistJuice WRLD + Album ArtistJuice WRLD + ComposerDavid Charles Marshall Biral, Denzel Michael-Akil Baptiste, Jarad Higgins & Russell Chell + AlbumLegends - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6903009 + Total Time191840 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2022-04-23T20:37:46Z + Date Added2022-04-23T20:37:46Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3779315006 + Play Date UTC2023-10-04T22:43:26Z + Skip Count1 + Skip Date2022-04-23T22:10:26Z + Release Date2018-06-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLegends - Single + Sort ArtistJuice WRLD + Sort NameLegends + Persistent ID4BE206F5EC8C03BA + Explicit + Track TypeRemote + Apple Music + + 5945 + + Track ID5945 + NameThe Mandalorian + ArtistLudwig Göransson + Album ArtistLudwig Göransson + ComposerLudwig Göransson + AlbumThe Mandalorian: Chapter 1 (Original Score) + GenreSoundtrack + KindAAC audio file + Size6956212 + Total Time198862 + Disc Number1 + Disc Count1 + Track Number9 + Track Count9 + Year2019 + Date Modified2022-04-30T18:12:24Z + Date Added2022-04-30T18:12:24Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3748444515 + Play Date UTC2022-10-12T15:35:15Z + Skip Count3 + Skip Date2022-05-28T12:32:01Z + Release Date2019-11-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumThe Mandalorian: Chapter 1 (Original Score) + Sort ArtistLudwig Göransson + Sort NameMandalorian + Persistent ID215BDA73056EDDAE + Track TypeRemote + + 5947 + + Track ID5947 + NameClosedloop + ArtistElliot Moss + Album ArtistElliot Moss + ComposerElliot Moss + AlbumBoomerang + GenreIndie Pop + KindApple Music AAC audio file + Size9910383 + Total Time281014 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2017 + Date Modified2022-05-01T15:42:53Z + Date Added2022-05-01T15:42:53Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3774949178 + Play Date UTC2023-08-15T09:59:38Z + Skip Count1 + Skip Date2022-06-03T16:16:54Z + Release Date2017-02-09T12:00:00Z + Artwork Count1 + Sort AlbumBoomerang + Sort ArtistElliot Moss + Sort NameClosedloop + Persistent IDE258C41964D26EAD + Track TypeRemote + Apple Music + + 5949 + + Track ID5949 + Namesouth africa + ArtistBaby Keem + Album ArtistBaby Keem + ComposerHykeem Carter & Danny Tannenbaum + AlbumThe Melodic Blue + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6378762 + Total Time174502 + Disc Number1 + Disc Count1 + Track Number7 + Track Count16 + Year2021 + Date Modified2022-05-08T13:34:19Z + Date Added2022-05-08T13:34:19Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3766033897 + Play Date UTC2023-05-04T05:31:37Z + Skip Count4 + Skip Date2023-03-13T15:13:58Z + Release Date2021-09-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumThe Melodic Blue + Sort ArtistBaby Keem + Sort Namesouth africa + Persistent IDBEB8D9580A1FBFC1 + Explicit + Track TypeRemote + Apple Music + + 5951 + + Track ID5951 + NameSuper Gremlin + ArtistKodak Black + Album ArtistSniper Gang + ComposerBill K. Kapri, Jacob Canady & Maik Alexander Timmermann + AlbumSniper Gang Presents Syko Bob & Snapkatt: Nightmare Babies + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7191054 + Total Time200548 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2021 + Date Modified2022-05-16T22:00:09Z + Date Added2022-05-16T22:00:09Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3781083759 + Play Date UTC2023-10-25T10:02:39Z + Skip Count2 + Skip Date2022-05-21T13:29:52Z + Release Date2021-10-30T12:00:00Z + Artwork Count1 + Sort AlbumSniper Gang Presents Syko Bob & Snapkatt: Nightmare Babies + Sort ArtistKodak Black + Sort NameSuper Gremlin + Persistent ID9D99373AEE5ADD0A + Explicit + Track TypeRemote + Apple Music + + 5953 + + Track ID5953 + Namepushin P (feat. Young Thug) + ArtistGunna & Future + Album ArtistGunna + ComposerJeffery Lamar Williams, Juke Wong, Nayvadius Wilburn, Sergio Kitchens & Wesley Glass + AlbumDRIP SEASON 4EVER + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5132292 + Total Time136267 + Disc Number1 + Disc Count1 + Track Number2 + Track Count20 + Year2022 + Date Modified2022-05-16T22:00:56Z + Date Added2022-05-16T22:00:56Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3783321621 + Play Date UTC2023-11-20T07:40:21Z + Skip Count3 + Skip Date2022-10-09T15:37:14Z + Release Date2022-01-07T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumDRIP SEASON 4EVER + Sort ArtistGunna & Future + Sort Namepushin P (feat. Young Thug) + Persistent ID858D4843C8C4C02E + Explicit + Track TypeRemote + Apple Music + + 5955 + + Track ID5955 + NameN95 (Mixed) + ArtistKendrick Lamar + Album ArtistCharli XCX + AlbumToday’s Hits: June 2022 (DJ Mix) + GenrePop + KindApple Music AAC audio file + Size6990409 + Total Time192150 + Disc Number1 + Disc Count1 + Track Number1 + Track Count19 + Year2022 + Date Modified2022-05-17T05:24:34Z + Date Added2022-05-17T05:24:34Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count17 + Play Date3781386301 + Play Date UTC2023-10-28T22:05:01Z + Skip Count2 + Skip Date2022-07-31T23:12:19Z + Release Date2022-05-13T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumToday’s Hits: June 2022 (DJ Mix) + Sort ArtistKendrick Lamar + Sort NameN95 (Mixed) + Persistent ID6F660BD8AF2C7C9D + Explicit + Track TypeRemote + Apple Music + + 5957 + + Track ID5957 + NameTonight + ArtistSean Sison + Album ArtistSean Sison + AlbumBloom + GenreDance + KindApple Music AAC audio file + Size8239873 + Total Time232773 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2017 + Date Modified2022-05-20T07:57:25Z + Date Added2022-05-20T07:57:25Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781162448 + Play Date UTC2023-10-26T07:54:08Z + Skip Date2022-06-03T16:17:04Z + Release Date2017-10-06T12:00:00Z + Artwork Count1 + Sort AlbumBloom + Sort ArtistSean Sison + Sort NameTonight + Persistent IDBD14075BACA3DDFD + Track TypeRemote + Apple Music + + 5959 + + Track ID5959 + NameMemories (feat. Kristian Lüttge) + Artistmeximelancholy + Album Artistmeximelancholy + ComposerKristian Luttge & Leon Alvarez + AlbumAimless Wonders, Vol. 1 + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7353726 + Total Time205000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2022 + Date Modified2022-06-15T14:07:15Z + Date Added2022-06-15T14:07:15Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3783767731 + Play Date UTC2023-11-25T11:35:31Z + Release Date2022-05-28T12:00:00Z + Artwork Count1 + Sort AlbumAimless Wonders, Vol. 1 + Sort Artistmeximelancholy + Sort NameMemories (feat. Kristian Lüttge) + Persistent ID9CAB90B46C84183D + Track TypeRemote + Apple Music + + 5961 + + Track ID5961 + NameHeartless + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerAbel Tesfaye, The Weeknd, Metro Boomin, Carlo "Illangelo" Montagnese & Andre Eric Proctor + AlbumAfter Hours + GenreR&B/Soul + KindApple Music AAC audio file + Size7133186 + Total Time198267 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2019 + Date Modified2022-06-18T16:59:33Z + Date Added2022-06-18T16:59:33Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3781207794 + Play Date UTC2023-10-26T20:29:54Z + Skip Count1 + Skip Date2022-06-19T07:37:20Z + Release Date2019-11-27T08:00:00Z + Artwork Count1 + Sort AlbumAfter Hours + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort NameHeartless + Persistent IDFDC31018B72DF6B0 + Explicit + Track TypeRemote + Apple Music + + 5963 + + Track ID5963 + NameRage vs. Luv + ArtistTre Savage + Album ArtistTre Savage + ComposerTre Savage + AlbumRage vs. Luv - Single + GenreHip-Hop/Rap + KindAAC audio file + Size4714552 + Total Time124615 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2022-06-18T17:00:12Z + Date Added2022-06-18T17:00:12Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3782886615 + Play Date UTC2023-11-15T06:50:15Z + Skip Count4 + Skip Date2022-07-02T22:09:40Z + Release Date2021-05-25T12:00:00Z + Artwork Count1 + Sort AlbumRage vs. Luv - Single + Sort ArtistTre Savage + Sort NameRage vs. Luv + Persistent IDBD8D8E1EE02CC1DA + Explicit + Track TypeRemote + Apple Music + + 5965 + + Track ID5965 + NameShy Little Frog (Extended) + ArtistSHIRL + Album ArtistSHIRL + ComposerShirley Losmithgul + AlbumShy Little Frog (Extended) [Extended] - Single + GenrePop + KindApple Music AAC audio file + Size5232795 + Total Time148349 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2022-07-08T20:22:36Z + Date Added2022-07-08T20:22:36Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3780773916 + Play Date UTC2023-10-21T19:58:36Z + Release Date2021-06-04T12:00:00Z + Artwork Count1 + Sort AlbumShy Little Frog (Extended) [Extended] - Single + Sort ArtistSHIRL + Sort NameShy Little Frog (Extended) + Persistent IDE16743ABE98FDEB5 + Track TypeRemote + Apple Music + + 5967 + + Track ID5967 + NameShy Little Frog (slowed + reverb) + ArtistSushisingz + Album ArtistSushisingz + ComposerMaryam Sadra Rafie + AlbumShy Little Frog (Slowed + Reverb) - Single + GenrePop + KindApple Music AAC audio file + Size7970794 + Total Time219528 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2022-07-08T20:24:42Z + Date Added2022-07-08T20:24:42Z + Bit Rate256 + Sample Rate44100 + Play Count57 + Play Date3775316018 + Play Date UTC2023-08-19T15:53:38Z + Skip Count2 + Skip Date2022-11-11T18:22:08Z + Release Date2021-08-01T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumShy Little Frog (Slowed + Reverb) - Single + Sort ArtistSushisingz + Sort NameShy Little Frog (slowed + reverb) + Persistent IDB439A8D873ED1A27 + Track TypeRemote + Apple Music + + 5969 + + Track ID5969 + Namethis is what falling in love feels like + ArtistJVKE + Album ArtistJVKE + ComposerJake Lawson & Zac Lawson + Albumthis is what falling in love feels like - Single + GenrePop + KindApple Music AAC audio file + Size4861447 + Total Time120308 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2022-07-08T20:35:19Z + Date Added2022-07-08T20:35:19Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count17 + Play Date3776170423 + Play Date UTC2023-08-29T13:13:43Z + Skip Count2 + Skip Date2022-07-12T19:03:32Z + Release Date2021-09-03T12:00:00Z + Artwork Count1 + Sort Albumthis is what falling in love feels like - Single + Sort ArtistJVKE + Sort Namethis is what falling in love feels like + Persistent ID8754C506ACB4B049 + Track TypeRemote + Apple Music + + 5971 + + Track ID5971 + NameERYS + ArtistJaden + Album ArtistJaden + ComposerJaden, Louis Gabe Basso, Mateo Arias, Nick Stoubis, Tyler Cole & Samuel Ray + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size16142848 + Total Time471771 + Disc Number1 + Disc Count1 + Track Number17 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3783492222 + Play Date UTC2023-11-22T07:03:42Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameERYS + Persistent IDD1D40FE75BE825BB + Explicit + Track TypeRemote + Apple Music + + 5973 + + Track ID5973 + NameBlackout + ArtistJaden + Album ArtistJaden + ComposerJaden & Hugo Chan + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size13853189 + Total Time400666 + Disc Number1 + Disc Count1 + Track Number12 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3783665081 + Play Date UTC2023-11-24T07:04:41Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameBlackout + Persistent ID1218A5AA83003921 + Explicit + Track TypeRemote + Apple Music + + 5975 + + Track ID5975 + NameP + ArtistJaden + Album ArtistJaden + ComposerJaden, Willow Smith & Peder Losnegård + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6108417 + Total Time168286 + Disc Number1 + Disc Count1 + Track Number1 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3775745969 + Play Date UTC2023-08-24T15:19:29Z + Skip Count2 + Skip Date2022-08-26T15:52:27Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameP + Persistent IDA0306C4EBC658A7A + Explicit + Track TypeRemote + Apple Music + + 5977 + + Track ID5977 + NameChateau (feat. A$AP Rocky) + ArtistJaden + Album ArtistJaden + ComposerJaden, Tremaine Winfrey, Omarr Rambert, Rakim Mayers & Kuwanna Jasmine Moore + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4845463 + Total Time135889 + Disc Number1 + Disc Count1 + Track Number14 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3777367357 + Play Date UTC2023-09-12T09:42:37Z + Skip Count2 + Skip Date2022-10-02T15:27:19Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameChateau (feat. A$AP Rocky) + Persistent ID8B9B126E1BBD57E1 + Explicit + Track TypeRemote + Apple Music + + 5979 + + Track ID5979 + NamePain + ArtistJaden + Album ArtistJaden + ComposerJaden, Hugo Chan, Tyler Cole, Melanie Pereira & Barbara Pravy + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12854365 + Total Time375310 + Disc Number1 + Disc Count1 + Track Number13 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3767797790 + Play Date UTC2023-05-24T15:29:50Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NamePain + Persistent IDCD5935FB77E660E5 + Explicit + Track TypeRemote + Apple Music + + 5981 + + Track ID5981 + NameOn My Own (feat. Kid Cudi) + ArtistJaden + Album ArtistJaden + ComposerJaden, Kyle Edwards, Omarr Rambert, Scott Mescudi & Darrien Overton + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8528138 + Total Time244715 + Disc Number1 + Disc Count1 + Track Number15 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3780772597 + Play Date UTC2023-10-21T19:36:37Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameOn My Own (feat. Kid Cudi) + Persistent ID76EC3AB763939D9D + Explicit + Track TypeRemote + Apple Music + + 5983 + + Track ID5983 + NameI + ArtistJaden + Album ArtistJaden + ComposerJaden, Peder Losnegård & Jasper Harris + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4850646 + Total Time130345 + Disc Number1 + Disc Count1 + Track Number2 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3772018515 + Play Date UTC2023-07-12T11:55:15Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameI + Persistent ID14A93A55FE0ED042 + Explicit + Track TypeRemote + Apple Music + + 5985 + + Track ID5985 + NameK + ArtistJaden & Lido + Album ArtistJaden + ComposerJaden, Harrison Rhodes & Peder Losnegård + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9681490 + Total Time280713 + Disc Number1 + Disc Count1 + Track Number4 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3779863731 + Play Date UTC2023-10-11T07:08:51Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden & Lido + Sort NameK + Persistent ID148840D5DF1BDD68 + Explicit + Track TypeRemote + Apple Music + + 5987 + + Track ID5987 + NameNOIZE (feat. Tyler, The Creator) + ArtistJaden + Album ArtistJaden + ComposerJaden, Austin Owens, Keanu Torres, James Foye III "Keyz", Omarr Rambert & Tyler Okonma + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8935619 + Total Time247758 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3781384938 + Play Date UTC2023-10-28T21:42:18Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameNOIZE (feat. Tyler, The Creator) + Persistent ID659FB4554BA78D54 + Explicit + Track TypeRemote + Apple Music + + 5989 + + Track ID5989 + NameAgain (feat. SYRE) + ArtistJaden + Album ArtistJaden + ComposerJaden & Hugo Chan + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9495492 + Total Time269816 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3781463854 + Play Date UTC2023-10-29T19:37:34Z + Release Date2019-07-02T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameAgain (feat. SYRE) + Persistent ID17C7FEC1CB9D160F + Explicit + Track TypeRemote + Apple Music + + 5991 + + Track ID5991 + Namei-drip-or-is + ArtistJaden + Album ArtistJaden + ComposerJaden, Hugo Chan, Austin Owens, Keanu Torres, James Foye III "Keyz" & Omarr Rambert + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8289294 + Total Time237020 + Disc Number1 + Disc Count1 + Track Number6 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3779556357 + Play Date UTC2023-10-07T17:45:57Z + Skip Count1 + Skip Date2022-08-13T06:26:34Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort Namei-drip-or-is + Persistent ID64AF7464D050B7A6 + Explicit + Track TypeRemote + Apple Music + + 5993 + + Track ID5993 + NameGot It + ArtistJaden + Album ArtistJaden + ComposerJaden & Brytavious Lakeith Chambers + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3068719 + Total Time76689 + Disc Number1 + Disc Count1 + Track Number8 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3781063226 + Play Date UTC2023-10-25T04:20:26Z + Skip Count1 + Skip Date2023-10-29T01:13:56Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameGot It + Persistent ID68C1204C4AD9EF81 + Explicit + Track TypeRemote + Apple Music + + 5995 + + Track ID5995 + NameMission + ArtistJaden & Trinidad James + Album ArtistJaden + ComposerJaden, Tremaine Winfrey, Omarr Rambert, Hugo Chan & Nicholaus Williams + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8830208 + Total Time251341 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3758711493 + Play Date UTC2023-02-08T11:31:33Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden & Trinidad James + Sort NameMission + Persistent IDF58870AB3E447ADF + Explicit + Track TypeRemote + Apple Music + + 5997 + + Track ID5997 + NameFire Dept + ArtistJaden + Album ArtistJaden + ComposerJaden, Michael Musselman, Zach Tabori & Hugo Chan + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3785444 + Total Time102342 + Disc Number1 + Disc Count1 + Track Number9 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783411280 + Play Date UTC2023-11-21T08:34:40Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameFire Dept + Persistent ID34A7B6B315992B54 + Explicit + Track TypeRemote + Apple Music + + 5999 + + Track ID5999 + NameSummertime in Paris (feat. Willow) + ArtistJaden + Album ArtistJaden + ComposerJaden, Josiah Bell, Omarr Rambert, Willow Smith, Mateo Arias, Tyler Cole & Kris Wu + AlbumERYS + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9493581 + Total Time270960 + Disc Number1 + Disc Count1 + Track Number11 + Track Count17 + Year2019 + Date Modified2022-07-21T09:16:33Z + Date Added2022-07-21T09:16:33Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3770097753 + Play Date UTC2023-06-20T06:22:33Z + Skip Count1 + Skip Date2023-02-26T20:04:43Z + Release Date2019-07-05T07:00:00Z + Artwork Count1 + Sort AlbumERYS + Sort ArtistJaden + Sort NameSummertime in Paris (feat. Willow) + Persistent IDCBAA283DF42FDEE7 + Explicit + Track TypeRemote + Apple Music + + 6001 + + Track ID6001 + NameKill Us All (feat. Denzel Curry) + ArtistThe Neighbourhood + Album ArtistThe Neighbourhood + ComposerJesse®, Lars Stalfors, Zachary Abels, Jeremiah Freedman, Brandon Fried & Michael Margott + AlbumHard To Imagine The Neighbourhood Ever Changing + GenreAlternative + KindApple Music AAC audio file + Size5955872 + Total Time161947 + Disc Number1 + Disc Count1 + Track Number2 + Track Count21 + Year2018 + Date Modified2022-07-23T19:12:40Z + Date Added2022-07-23T19:12:40Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3783693395 + Play Date UTC2023-11-24T14:56:35Z + Skip Count2 + Skip Date2023-04-06T13:50:04Z + Release Date2018-09-21T12:00:00Z + Artwork Count1 + Sort AlbumHard To Imagine The Neighbourhood Ever Changing + Sort Album ArtistNeighbourhood + Sort ArtistNeighbourhood + Sort NameKill Us All (feat. Denzel Curry) + Persistent ID0CA90971A462061C + Explicit + Track TypeRemote + Apple Music + + 6003 + + Track ID6003 + NamePiledriver Waltz + ArtistAlex Turner + Album ArtistAlex Turner + ComposerAlex Turner + AlbumSubmarine - EP + GenreAlternative + KindApple Music AAC audio file + Size7319774 + Total Time204880 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2011 + Date Modified2022-07-30T15:13:04Z + Date Added2022-07-30T15:13:04Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3783664358 + Play Date UTC2023-11-24T06:52:38Z + Release Date2011-02-23T12:00:00Z + Artwork Count1 + Sort AlbumSubmarine - EP + Sort ArtistAlex Turner + Sort NamePiledriver Waltz + Persistent ID76A8035110C7368E + Track TypeRemote + Apple Music + + 6005 + + Track ID6005 + NameStuck On the Puzzle + ArtistAlex Turner + Album ArtistAlex Turner + ComposerAlex Turner + AlbumSubmarine - EP + GenreAlternative + KindApple Music AAC audio file + Size7658694 + Total Time211053 + Disc Number1 + Disc Count1 + Track Number5 + Track Count6 + Year2011 + Date Modified2022-07-30T15:15:10Z + Date Added2022-07-30T15:15:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3780833458 + Play Date UTC2023-10-22T12:30:58Z + Skip Count1 + Skip Date2022-10-06T15:30:45Z + Release Date2011-02-23T12:00:00Z + Artwork Count1 + Sort AlbumSubmarine - EP + Sort ArtistAlex Turner + Sort NameStuck On the Puzzle + Persistent ID3C76E40E8101C77B + Track TypeRemote + Apple Music + + 6007 + + Track ID6007 + NameIt's Hard to Get Around the Wind + ArtistAlex Turner + Album ArtistAlex Turner + ComposerAlex Turner + AlbumSubmarine - EP + GenreAlternative + KindApple Music AAC audio file + Size8665825 + Total Time247013 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2011 + Date Modified2022-07-30T15:15:10Z + Date Added2022-07-30T15:15:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3772089318 + Play Date UTC2023-07-13T07:35:18Z + Release Date2011-02-23T12:00:00Z + Artwork Count1 + Sort AlbumSubmarine - EP + Sort ArtistAlex Turner + Sort NameIt's Hard to Get Around the Wind + Persistent ID4BECFE7D4CADD981 + Track TypeRemote + Apple Music + + 6009 + + Track ID6009 + NameGlass In the Park + ArtistAlex Turner + Album ArtistAlex Turner + ComposerAlex Turner + AlbumSubmarine - EP + GenreAlternative + KindApple Music AAC audio file + Size8442765 + Total Time239653 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2011 + Date Modified2022-07-30T15:15:10Z + Date Added2022-07-30T15:15:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3781197914 + Play Date UTC2023-10-26T17:45:14Z + Release Date2011-02-23T12:00:00Z + Artwork Count1 + Sort AlbumSubmarine - EP + Sort ArtistAlex Turner + Sort NameGlass In the Park + Persistent IDFEBDAC2E42E954AC + Track TypeRemote + Apple Music + + 6011 + + Track ID6011 + NameHiding Tonight + ArtistAlex Turner + Album ArtistAlex Turner + ComposerAlex Turner + AlbumSubmarine - EP + GenreAlternative + KindApple Music AAC audio file + Size7478245 + Total Time186720 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2011 + Date Modified2022-07-30T15:15:10Z + Date Added2022-07-30T15:15:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3780903774 + Play Date UTC2023-10-23T08:02:54Z + Release Date2011-02-23T12:00:00Z + Artwork Count1 + Sort AlbumSubmarine - EP + Sort ArtistAlex Turner + Sort NameHiding Tonight + Persistent ID38FE0A9E6E64F8BB + Track TypeRemote + Apple Music + + 6013 + + Track ID6013 + NameStuck On the Puzzle (Intro) + ArtistAlex Turner + Album ArtistAlex Turner + ComposerAlex Turner + AlbumSubmarine - EP + GenreAlternative + KindApple Music AAC audio file + Size2292858 + Total Time53760 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2011 + Date Modified2022-07-30T15:15:10Z + Date Added2022-07-30T15:15:10Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count22 + Play Date3760794690 + Play Date UTC2023-03-04T14:11:30Z + Release Date2011-02-23T12:00:00Z + Artwork Count1 + Sort AlbumSubmarine - EP + Sort ArtistAlex Turner + Sort NameStuck On the Puzzle (Intro) + Persistent ID7B2635D3A408A0EE + Track TypeRemote + Apple Music + + 6015 + + Track ID6015 + NameTranquility Base Hotel & Casino + ArtistArctic Monkeys + Album ArtistArctic Monkeys + ComposerAlex Turner + AlbumTranquility Base Hotel & Casino + GenreAlternative + KindApple Music AAC audio file + Size7542117 + Total Time211968 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2018 + Date Modified2022-07-30T15:19:59Z + Date Added2022-07-30T15:19:59Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781206894 + Play Date UTC2023-10-26T20:14:54Z + Release Date2018-05-11T12:00:00Z + Artwork Count1 + Sort AlbumTranquility Base Hotel & Casino + Sort ArtistArctic Monkeys + Sort NameTranquility Base Hotel & Casino + Persistent ID371E05C9C7FD5A78 + Explicit + Track TypeRemote + Apple Music + + 6017 + + Track ID6017 + NameSteppin on N****s + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerShéyaa Bin Abraham-Joseph, Leland Wayne, Joe Cooley, Rodney Oliver & Jeffrey Page + AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5425789 + Total Time140833 + Disc Number2 + Disc Count2 + Track Number11 + Track Count15 + Year2020 + Date Modified2022-08-10T10:19:25Z + Date Added2022-08-10T10:19:25Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3768835765 + Play Date UTC2023-06-05T15:49:25Z + Release Date2020-10-02T07:00:00Z + Artwork Count1 + Sort AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + Sort Artist21 Savage & Metro Boomin + Sort NameSteppin on Niggas + Persistent IDA6DF86D5CD8C72C9 + Explicit + Track TypeRemote + Apple Music + + 6019 + + Track ID6019 + NameA.D.H.D + ArtistKendrick Lamar + Album ArtistKendrick Lamar + AlbumSection.80 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7783131 + Total Time215509 + Disc Number1 + Disc Count1 + Track Number3 + Track Count15 + Year2011 + Date Modified2022-08-10T18:13:36Z + Date Added2022-08-10T18:13:36Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3777368909 + Play Date UTC2023-09-12T10:08:29Z + Release Date2011-07-02T07:00:00Z + Artwork Count1 + Sort AlbumSection.80 + Sort ArtistKendrick Lamar + Sort NameA.D.H.D + Persistent ID9BF61678E9BCA39D + Explicit + Track TypeRemote + Apple Music + + 6021 + + Track ID6021 + NameFlagpole Sitta (feat. Elohim) + ArtistAWOLNATION & Elohim + Album ArtistAWOLNATION + ComposerHuffman Aaron McKenna, Lin Jeff Junyen, Nelson Sean Christopher & Sult Evan C + AlbumMy Echo, My Shadow, My Covers & Me + GenreAlternative + KindApple Music AAC audio file + Size8995249 + Total Time249212 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2022 + Date Modified2022-08-19T17:26:49Z + Date Added2022-08-19T17:26:49Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3781209674 + Play Date UTC2023-10-26T21:01:14Z + Skip Date2022-09-26T10:07:24Z + Release Date2022-05-06T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMy Echo, My Shadow, My Covers & Me + Sort ArtistAWOLNATION & Elohim + Sort NameFlagpole Sitta (feat. Elohim) + Persistent ID4A84037DF77BFAC9 + Track TypeRemote + Apple Music + + 6023 + + Track ID6023 + NameCabinInTheWoods + ArtistBONES & grayera + Album ArtistBONES & grayera + AlbumWITHERED + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5284494 + Total Time144065 + Disc Number1 + Disc Count1 + Track Number3 + Track Count17 + Year2022 + Date Modified2022-08-19T18:27:58Z + Date Added2022-08-19T18:27:58Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count23 + Play Date3765360944 + Play Date UTC2023-04-26T10:35:44Z + Skip Count1 + Skip Date2022-08-26T19:43:13Z + Release Date2022-04-29T12:00:00Z + Artwork Count1 + Sort AlbumWITHERED + Sort ArtistBONES & grayera + Sort NameCabinInTheWoods + Persistent ID68DD87B4F3EA2B54 + Explicit + Track TypeRemote + Apple Music + + 6025 + + Track ID6025 + NameI Swear + ArtistTidus + Album ArtistTidus + ComposerRandy Bondurant, Kesha Shantrell, Candace Coles & Ronald O'Hannon + AlbumOnce You Believe in Yourself + GenreAlternative + KindApple Music AAC audio file + Size7164835 + Total Time197486 + Disc Number1 + Disc Count1 + Track Number1 + Track Count8 + Year2022 + Date Modified2022-08-19T19:19:36Z + Date Added2022-08-19T19:19:36Z + Bit Rate256 + Sample Rate44100 + Play Count45 + Play Date3781334543 + Play Date UTC2023-10-28T07:42:23Z + Skip Count1 + Skip Date2022-09-08T10:36:54Z + Release Date2022-05-06T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumOnce You Believe in Yourself + Sort ArtistTidus + Sort NameI Swear + Persistent ID68DC902755098014 + Explicit + Track TypeRemote + Apple Music + + 6027 + + Track ID6027 + NameTake Me To Church + ArtistHozier + Album ArtistHozier + ComposerHozier + AlbumHozier + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8652571 + Total Time241688 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2013 + Date Modified2022-08-30T18:58:00Z + Date Added2022-08-30T18:58:00Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3767710671 + Play Date UTC2023-05-23T15:17:51Z + Release Date2013-09-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumHozier + Sort ArtistHozier + Sort NameTake Me To Church + Persistent IDE6ABCFEC6F9067E3 + Track TypeRemote + Apple Music + + 6029 + + Track ID6029 + NameEyes On Fire + ArtistBlue Foundation + Album ArtistBlue Foundation + ComposerKirstine Stubbe Teglbjærg & TOBIAS WILNER + AlbumLife of a Ghost + GenreElectronic + KindApple Music AAC audio file + Size10615300 + Total Time302827 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2007 + Date Modified2022-08-30T19:39:17Z + Date Added2022-08-30T19:39:17Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783451003 + Play Date UTC2023-11-21T19:36:43Z + Skip Count1 + Skip Date2022-11-17T14:18:23Z + Release Date2007-09-24T12:00:00Z + Artwork Count1 + Sort AlbumLife of a Ghost + Sort ArtistBlue Foundation + Sort NameEyes On Fire + Persistent IDA4E0F4C759056A68 + Track TypeRemote + Apple Music + + 6031 + + Track ID6031 + Namegolden hour + ArtistJVKE + Album ArtistJVKE + ComposerJake Lawson & Zac Lawson + Albumthis is what ____ feels like (Vol. 1-4) + GenrePop + KindApple Music AAC audio file + Size7828699 + Total Time209260 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2022 + Date Modified2022-09-04T15:56:49Z + Date Added2022-09-04T15:56:49Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3783672566 + Play Date UTC2023-11-24T09:09:26Z + Skip Count3 + Skip Date2022-12-12T07:50:10Z + Release Date2022-07-15T12:00:00Z + Artwork Count1 + Sort Albumthis is what ____ feels like (Vol. 1-4) + Sort ArtistJVKE + Sort Namegolden hour + Persistent IDFEA164BECEEE99E0 + Track TypeRemote + Apple Music + + 6033 + + Track ID6033 + Namebad vibes forever (feat. PnB Rock & Trippie Redd) + ArtistXXXTENTACION + Album ArtistXXXTENTACION + ComposerJahseh Onfroy, John Cunningham, Rakim Allen, Michael L White & Robert Soukiasyan + AlbumBad Vibes Forever + GenrePop + KindApple Music AAC audio file + Size5494618 + Total Time150475 + Disc Number1 + Disc Count1 + Track Number4 + Track Count25 + Year2019 + Date Modified2022-09-05T12:10:36Z + Date Added2022-09-05T12:10:36Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count28 + Play Date3782988712 + Play Date UTC2023-11-16T11:11:52Z + Skip Count1 + Skip Date2022-09-25T10:10:11Z + Release Date2019-11-22T08:00:00Z + Loved + Artwork Count1 + Sort AlbumBad Vibes Forever + Sort ArtistXXXTENTACION + Sort Namebad vibes forever (feat. PnB Rock & Trippie Redd) + Persistent IDEF46379F61F6D9AB + Explicit + Track TypeRemote + Apple Music + + 6035 + + Track ID6035 + NameArt Deco + ArtistLana Del Rey + Album ArtistLana Del Rey + ComposerLana Del Rey & Rick Nowels + AlbumHoneymoon + GenreAlternative + KindApple Music AAC audio file + Size10233689 + Total Time295067 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2015 + Date Modified2022-09-06T12:59:33Z + Date Added2022-09-06T12:59:33Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3774960633 + Play Date UTC2023-08-15T13:10:33Z + Skip Count1 + Skip Date2022-10-02T13:48:04Z + Release Date2015-09-18T12:00:00Z + Artwork Count1 + Sort AlbumHoneymoon + Sort ArtistLana Del Rey + Sort NameArt Deco + Persistent IDB3A8F51D50687A23 + Track TypeRemote + Apple Music + + 6037 + + Track ID6037 + NameIn This Dark Time + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone + AlbumSay Yes, Say No + GenrePop + KindApple Music AAC audio file + Size7779194 + Total Time207707 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2020 + Date Modified2022-09-06T13:45:39Z + Date Added2022-09-06T13:45:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count44 + Play Date3776169246 + Play Date UTC2023-08-29T12:54:06Z + Release Date2020-04-24T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumSay Yes, Say No + Sort ArtistAime Simone + Sort NameIn This Dark Time + Persistent IDE1CD28DA143762F3 + Track TypeRemote + Apple Music + + 6039 + + Track ID6039 + NameWelcome Home + ArtistRadical Face + Album ArtistRadical Face + AlbumTouch the Sky (Welcome Home) - EP + GenreTraditional Folk + KindApple Music AAC audio file + Size11053291 + Total Time287393 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2007 + Date Modified2022-09-09T12:20:56Z + Date Added2022-09-09T12:20:56Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781165357 + Play Date UTC2023-10-26T08:42:37Z + Release Date2007-03-02T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTouch the Sky (Welcome Home) - EP + Sort ArtistRadical Face + Sort NameWelcome Home + Persistent ID941F9A5FEA732E6E + Track TypeRemote + Apple Music + + 6041 + + Track ID6041 + NameThe Lost Song + ArtistThe Cat Empire + Album ArtistThe Cat Empire + ComposerThe Cat Empire + AlbumThe Cat Empire + GenreRock + KindApple Music AAC audio file + Size7001609 + Total Time195800 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2003 + Date Modified2022-09-13T15:17:05Z + Date Added2022-09-13T15:17:05Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3781192596 + Play Date UTC2023-10-26T16:16:36Z + Skip Count1 + Skip Date2022-10-28T14:41:57Z + Release Date2003-10-24T07:00:00Z + Artwork Count1 + Sort AlbumThe Cat Empire + Sort Album ArtistCat Empire + Sort ArtistCat Empire + Sort ComposerCat Empire + Sort NameLost Song + Persistent IDEE887369E13FA015 + Track TypeRemote + Apple Music + + 6043 + + Track ID6043 + NameNo Limits + ArtistDaniLeigh + Album ArtistDaniLeigh + ComposerDanielle Curiel & José M. Velazquez + AlbumNo Limits - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3889946 + Total Time100319 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2022-09-15T20:03:06Z + Date Added2022-09-15T20:03:06Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3770216864 + Play Date UTC2023-06-21T15:27:44Z + Release Date2019-04-19T12:00:00Z + Artwork Count1 + Sort AlbumNo Limits - Single + Sort ArtistDaniLeigh + Sort NameNo Limits + Persistent ID4B0C382C1E98E597 + Explicit + Track TypeRemote + Apple Music + + 6045 + + Track ID6045 + NameLil Bebe + ArtistDaniLeigh + Album ArtistDaniLeigh + ComposerDanielle Curiel, Ishmael Montague, Jaz Woodard, Jocelyn Donald, Tavoris Javon Hollins Jr. & Ronald M. Ferebee Jr + AlbumThe Plan + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6350727 + Total Time174086 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2018 + Date Modified2022-09-15T20:03:59Z + Date Added2022-09-15T20:03:59Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3772520257 + Play Date UTC2023-07-18T07:17:37Z + Release Date2018-07-20T12:00:00Z + Loved + Artwork Count1 + Sort AlbumThe Plan + Sort ArtistDaniLeigh + Sort NameLil Bebe + Persistent IDFD22DE9EC2339305 + Track TypeRemote + Apple Music + + 6047 + + Track ID6047 + NameTell Them (feat. Moses Sumney & Metro Boomin) + ArtistJames Blake + Album ArtistJames Blake + ComposerJames Blake, Moses Sumney, Metro Boomin, Allen Ritter, Dom Maker & Anthony Maker + AlbumAssume Form + GenreElectronic + KindApple Music AAC audio file + Size7420448 + Total Time208400 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2019 + Date Modified2022-09-20T20:26:04Z + Date Added2022-09-20T20:26:04Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3770487466 + Play Date UTC2023-06-24T18:37:46Z + Skip Count1 + Skip Date2022-09-25T10:08:42Z + Release Date2019-01-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumAssume Form + Sort ArtistJames Blake + Sort NameTell Them (feat. Moses Sumney & Metro Boomin) + Persistent ID5443EE511179CDB1 + Track TypeRemote + Apple Music + + 6049 + + Track ID6049 + NameTrap (feat. Lil Baby) + ArtistSAINt JHN + Album ArtistSAINt JHN + ComposerCarlos St. John, Dominique' Jones & Lee Stashenko + AlbumGhetto Lenny's Love Songs + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6644345 + Total Time184699 + Disc Number1 + Disc Count1 + Track Number3 + Track Count14 + Year2019 + Date Modified2022-09-22T20:32:32Z + Date Added2022-09-22T20:32:32Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781394234 + Play Date UTC2023-10-29T00:17:14Z + Release Date2019-02-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumGhetto Lenny's Love Songs + Sort ArtistSAINt JHN + Sort NameTrap (feat. Lil Baby) + Persistent ID5BA3C0FA64B04789 + Explicit + Track TypeRemote + Apple Music + + 6051 + + Track ID6051 + NameNOT WHAT YOU WANTED + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone + AlbumNOT WHAT YOU WANTED - Single + GenrePop + KindApple Music AAC audio file + Size7597347 + Total Time214000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2022-09-26T10:25:53Z + Date Added2022-09-26T10:25:53Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count15 + Play Date3776163817 + Play Date UTC2023-08-29T11:23:37Z + Skip Date2022-10-22T21:41:46Z + Release Date2022-06-22T12:00:00Z + Loved + Artwork Count1 + Sort AlbumNOT WHAT YOU WANTED - Single + Sort ArtistAime Simone + Sort NameNOT WHAT YOU WANTED + Persistent IDEC530DE87A1E40F7 + Explicit + Track TypeRemote + Apple Music + + 6053 + + Track ID6053 + NameStrange Inside + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone + AlbumSay Yes, Say No + GenrePop + KindApple Music AAC audio file + Size8125358 + Total Time209280 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2020 + Date Modified2022-09-26T12:34:49Z + Date Added2022-09-26T12:34:49Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3773534047 + Play Date UTC2023-07-30T00:54:07Z + Skip Count1 + Skip Date2022-10-11T10:33:06Z + Release Date2020-07-03T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumSay Yes, Say No + Sort ArtistAime Simone + Sort NameStrange Inside + Persistent ID6B39CF9B69A4F85C + Track TypeRemote + Apple Music + + 6055 + + Track ID6055 + NameDon't Be Sad + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone + AlbumSay Yes, Say No + GenrePop + KindApple Music AAC audio file + Size8154515 + Total Time223107 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2020 + Date Modified2022-09-26T12:37:38Z + Date Added2022-09-26T12:37:38Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count32 + Play Date3772518624 + Play Date UTC2023-07-18T06:50:24Z + Skip Count4 + Skip Date2023-05-11T21:41:55Z + Release Date2020-07-31T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumSay Yes, Say No + Sort ArtistAime Simone + Sort NameDon't Be Sad + Persistent ID41E7C6C676D9B299 + Track TypeRemote + Apple Music + + 6057 + + Track ID6057 + NameHold Me Alive + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone + AlbumSay Yes, Say No + GenrePop + KindApple Music AAC audio file + Size9284441 + Total Time240787 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2020 + Date Modified2022-09-26T13:14:19Z + Date Added2022-09-26T13:14:19Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count24 + Play Date3766394599 + Play Date UTC2023-05-08T09:43:19Z + Skip Count1 + Skip Date2022-09-26T18:51:50Z + Release Date2020-07-31T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumSay Yes, Say No + Sort ArtistAime Simone + Sort NameHold Me Alive + Persistent IDC6B1BFBCCC3A1E78 + Track TypeRemote + Apple Music + + 6059 + + Track ID6059 + NameHumankind + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone + AlbumSay Yes, Say No + GenrePop + KindApple Music AAC audio file + Size8829664 + Total Time236040 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2020 + Date Modified2022-09-28T19:20:42Z + Date Added2022-09-28T19:20:42Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count25 + Play Date3783848873 + Play Date UTC2023-11-26T10:07:53Z + Skip Count1 + Skip Date2022-10-02T10:30:45Z + Release Date2020-07-31T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumSay Yes, Say No + Sort ArtistAime Simone + Sort NameHumankind + Persistent ID9957A8F6ED188E39 + Explicit + Track TypeRemote + Apple Music + + 6061 + + Track ID6061 + NameThe Best Part of Life + ArtistSAINt JHN + Album ArtistSAINt JHN + ComposerAdeyinka Bankole, Andre Robertson & Carlos St. John + AlbumThe Best Part of Life - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7110282 + Total Time196874 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2022-09-30T17:34:52Z + Date Added2022-09-30T17:34:52Z + Bit Rate256 + Sample Rate44100 + Play Count40 + Play Date3783774172 + Play Date UTC2023-11-25T13:22:52Z + Release Date2021-12-17T12:00:00Z + Loved + Artwork Count1 + Sort AlbumThe Best Part of Life - Single + Sort ArtistSAINt JHN + Sort NameBest Part of Life + Persistent ID50C3D91156502572 + Track TypeRemote + Apple Music + + 6063 + + Track ID6063 + NameHighway Love + ArtistIVOXYGEN + Album ArtistIVOXYGEN + ComposerOxana Svoboda + AlbumHighway Love - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7223626 + Total Time200178 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2022-09-30T17:35:05Z + Date Added2022-09-30T17:35:05Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3777022915 + Play Date UTC2023-09-08T10:01:55Z + Skip Count3 + Skip Date2022-11-09T21:20:41Z + Release Date2020-05-21T12:00:00Z + Artwork Count1 + Sort AlbumHighway Love - Single + Sort ArtistIVOXYGEN + Sort NameHighway Love + Persistent IDB326A414C4B4B2F5 + Track TypeRemote + Apple Music + + 6065 + + Track ID6065 + NameDoudou + ArtistSquidji + Album ArtistSquidji + ComposerMatheo Walerstein & Frédéric Massamba + AlbumDoudou - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5986737 + Total Time162325 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2022-10-17T05:25:25Z + Date Added2022-10-17T05:25:25Z + Bit Rate256 + Sample Rate44100 + Play Count53 + Play Date3780916627 + Play Date UTC2023-10-23T11:37:07Z + Skip Date2022-10-17T05:28:31Z + Release Date2018-12-19T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumDoudou - Single + Sort ArtistSquidji + Sort NameDoudou + Persistent ID64E3505B4FEECE27 + Explicit + Track TypeRemote + Apple Music + + 6067 + + Track ID6067 + NameEarth Song + ArtistMichael Jackson + Album ArtistMichael Jackson + ComposerMichael Jackson + AlbumMichael Jackson's This Is It (The Music That Inspired the Movie) + GenreSoundtrack + KindApple Music AAC audio file + Size14866152 + Total Time406211 + Disc Number1 + Disc Count2 + Track Number12 + Track Count16 + Year1982 + Date Modified2022-10-21T21:12:46Z + Date Added2022-10-21T21:12:46Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3772012853 + Play Date UTC2023-07-12T10:20:53Z + Skip Count1 + Skip Date2022-10-28T18:11:58Z + Release Date1982-01-01T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumMichael Jackson's This Is It (The Music That Inspired the Movie) + Sort ArtistMichael Jackson + Sort NameEarth Song + Persistent ID0FD56F76550CC06F + Track TypeRemote + Apple Music + + 6069 + + Track ID6069 + NameDarkskin + ArtistSquidji + Album ArtistSquidji + ComposerMatheo Walerstein & Massamba Frederic + AlbumDarkskin - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5295510 + Total Time144771 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2022-10-27T16:08:12Z + Date Added2022-10-27T16:08:12Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3770190193 + Play Date UTC2023-06-21T08:03:13Z + Release Date2019-03-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDarkskin - Single + Sort ArtistSquidji + Sort NameDarkskin + Persistent ID3137A492EDA50045 + Explicit + Track TypeRemote + Apple Music + + 6071 + + Track ID6071 + NameBlessed + ArtistAugust Charles + Album ArtistAugust Charles + ComposerAugustine Danny Chiyesu & Gabriel Gifford + AlbumBlessed - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size8352991 + Total Time237049 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2022-10-28T11:13:45Z + Date Added2022-10-28T11:13:45Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3781524042 + Play Date UTC2023-10-30T12:20:42Z + Skip Count1 + Skip Date2022-11-20T17:55:49Z + Release Date2021-09-10T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumBlessed - Single + Sort ArtistAugust Charles + Sort NameBlessed + Persistent ID30634D1415F33E7D + Track TypeRemote + Apple Music + + 6073 + + Track ID6073 + NameRiver + ArtistAugust Charles + Album ArtistAugust Charles + ComposerAugustine Danny Chiyesu, Joseph Benjamin Alhallak & Gabriel Emmanuel Gifford + AlbumRiver - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size8196074 + Total Time229751 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2022-10-28T11:34:30Z + Date Added2022-10-28T11:34:30Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781085773 + Play Date UTC2023-10-25T10:36:13Z + Release Date2022-09-23T12:00:00Z + Artwork Count1 + Sort AlbumRiver - Single + Sort ArtistAugust Charles + Sort NameRiver + Persistent ID0236016A6361252D + Track TypeRemote + Apple Music + + 6075 + + Track ID6075 + Nameworldstar money (interlude) + ArtistJoji + Album ArtistJoji + AlbumIn Tongues - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size4700667 + Total Time126312 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2016 + Date Modified2022-10-28T18:19:37Z + Date Added2022-10-28T18:19:37Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count31 + Play Date3781347802 + Play Date UTC2023-10-28T11:23:22Z + Release Date2016-04-01T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumIn Tongues - EP + Sort ArtistJoji + Sort Nameworldstar money (interlude) + Persistent IDD7C2F53B54083AE2 + Explicit + Track TypeRemote + Apple Music + + 6077 + + Track ID6077 + NameI Got It + ArtistOgi + Album ArtistOgi + ComposerErnest Wilson & Ogi Ifediora + AlbumI Got It - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size7495526 + Total Time207200 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2022-11-01T08:57:40Z + Date Added2022-11-01T08:57:40Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3783359554 + Play Date UTC2023-11-20T18:12:34Z + Skip Count2 + Skip Date2022-11-08T01:48:39Z + Release Date2022-02-09T12:00:00Z + Artwork Count1 + Sort AlbumI Got It - Single + Sort ArtistOgi + Sort NameI Got It + Persistent ID3F0B2F4372367073 + Explicit + Track TypeRemote + Apple Music + + 6079 + + Track ID6079 + NameYou Won't Always + ArtistBig Scary + Album ArtistBig Scary + ComposerJoanna Syme & Tom Iansek + AlbumMe and You + GenreAlternative + KindApple Music AAC audio file + Size4972585 + Total Time133774 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2022 + Date Modified2022-11-02T21:29:40Z + Date Added2022-11-02T21:29:40Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3783713549 + Play Date UTC2023-11-24T20:32:29Z + Skip Count1 + Skip Date2022-11-09T09:37:54Z + Release Date2022-09-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMe and You + Sort ArtistBig Scary + Sort NameYou Won't Always + Persistent IDDCB762F3048C069C + Track TypeRemote + Apple Music + + 6081 + + Track ID6081 + NameThe Chase + ArtistBroken Bells + Album ArtistBroken Bells + ComposerBrian Burton & James Mercer + AlbumINTO THE BLUE + GenreAlternative + KindAAC audio file + Size11527499 + Total Time329827 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2022 + Date Modified2022-11-06T10:40:58Z + Date Added2022-11-06T10:40:58Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3750770848 + Play Date UTC2022-11-08T13:47:28Z + Release Date2022-10-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Sort AlbumINTO THE BLUE + Sort ArtistBroken Bells + Sort NameChase + Persistent IDC53AD8F736A841C5 + Track TypeRemote + + 6083 + + Track ID6083 + NameHow Are You True + ArtistCage the Elephant + Album ArtistCage the Elephant + ComposerCage the Elephant + AlbumTell Me I'm Pretty + GenreAlternative + KindApple Music AAC audio file + Size9945526 + Total Time280937 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2015 + Date Modified2022-11-06T19:17:23Z + Date Added2022-11-06T19:17:23Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3782987889 + Play Date UTC2023-11-16T10:58:09Z + Release Date2015-12-18T08:00:00Z + Artwork Count1 + Sort AlbumTell Me I'm Pretty + Sort ArtistCage the Elephant + Sort NameHow Are You True + Persistent ID6B51624CA41722E1 + Track TypeRemote + Apple Music + + 6085 + + Track ID6085 + NameFreaking Me Out + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumWe Are All Insane - Single + GenreAlternative + KindAAC audio file + Size8104689 + Total Time208231 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2022 + Date Modified2022-11-07T04:56:33Z + Date Added2022-11-07T04:56:33Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3770287430 + Play Date UTC2023-06-22T11:03:50Z + Skip Count2 + Skip Date2023-02-19T11:08:54Z + Release Date2022-09-23T12:00:00Z + Artwork Count1 + Sort AlbumWe Are All Insane - Single + Sort ArtistAWOLNATION + Sort NameFreaking Me Out + Persistent ID4C5223FC50C6E14E + Track TypeRemote + + 6087 + + Track ID6087 + NameWe Are All Insane + ArtistAWOLNATION + Album ArtistAWOLNATION + ComposerAaron Bruno + AlbumWe Are All Insane - Single + GenreAlternative + KindAAC audio file + Size7866641 + Total Time211401 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2022 + Date Modified2022-11-07T04:58:43Z + Date Added2022-11-07T04:58:43Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3775315356 + Play Date UTC2023-08-19T15:42:36Z + Skip Count3 + Skip Date2022-11-07T21:50:11Z + Release Date2022-11-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWe Are All Insane - Single + Sort ArtistAWOLNATION + Sort NameWe Are All Insane + Persistent IDA2738A955C2D6480 + Track TypeRemote + + 6089 + + Track ID6089 + NameYukon (Interlude) + ArtistJoji + Album ArtistJoji + AlbumSmithereens + GenreRap | Hip-Hop + KindMPEG audio file + Size8401216 + Total Time208440 + Start Time35000 + Stop Time180440 + Year2022 + Date Modified2022-11-07T11:56:04Z + Date Added2022-11-07T11:56:35Z + Bit Rate320 + Play Count33 + Play Date3781351461 + Play Date UTC2023-10-28T12:24:21Z + Skip Count8 + Skip Date2023-01-08T20:03:07Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Persistent ID6A5E338FF6B98EDB + Track TypeRemote + + 6091 + + Track ID6091 + NameSpaceship + ArtistGhosu + KindMPEG audio file + Size7208751 + Total Time180218 + Date Modified2022-11-07T11:58:53Z + Date Added2022-11-07T00:00:07Z + Bit Rate320 + Play Count19 + Play Date3772624037 + Play Date UTC2023-07-19T12:07:17Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Persistent ID332D55B2C8992C8C + Track TypeRemote + + 6093 + + Track ID6093 + NameBLAHBLAHBLAH DEMO + ArtistJoji + Album ArtistJoji + AlbumSmithereens + KindMPEG audio file + Size5702008 + Total Time142550 + Year2022 + Date Modified2022-11-07T11:58:28Z + Date Added2022-11-07T00:00:07Z + Bit Rate320 + Play Count30 + Play Date3783667486 + Play Date UTC2023-11-24T07:44:46Z + Skip Count1 + Skip Date2022-11-14T09:53:13Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Persistent ID25D992C8103FE36C + Track TypeRemote + + 6095 + + Track ID6095 + NameThe Way I Used to Love You + ArtistBlue October + AlbumThis is What I Live For + KindMPEG audio file + Size9765616 + Total Time244140 + Date Modified2022-11-07T11:58:50Z + Date Added2022-11-07T00:00:07Z + Bit Rate320 + Play Count9 + Play Date3783452623 + Play Date UTC2023-11-21T20:03:43Z + Skip Count1 + Skip Date2022-11-07T12:22:38Z + Loved + Artwork Count1 + Sort NameWay I Used to Love You + Persistent IDD7F49AC3C1CAD999 + Track TypeRemote + + 6097 + + Track ID6097 + NameNIGHT RIDER + ArtistJoji + Album ArtistJoji + AlbumSmithereens + KindMPEG audio file + Size5121044 + Total Time128026 + Year2022 + Date Modified2022-11-07T11:58:26Z + Date Added2022-11-07T00:00:07Z + Bit Rate320 + Play Count25 + Play Date3781351313 + Play Date UTC2023-10-28T12:21:53Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Persistent IDF68D90A63AD0A6E1 + Track TypeRemote + + 6099 + + Track ID6099 + NameBOYFRIEND + ArtistTyler, The Creator + KindMPEG audio file + Size9200640 + Total Time230016 + Date Modified2022-11-07T11:58:12Z + Date Added2022-11-07T00:00:07Z + Bit Rate320 + Play Count16 + Play Date3780831481 + Play Date UTC2023-10-22T11:58:01Z + Skip Count2 + Skip Date2023-02-25T18:51:08Z + Loved + Persistent ID17DAA9F1E3489992 + Track TypeRemote + + 6101 + + Track ID6101 + NameDo What I Want + ArtistKid Cudi + KindMPEG audio file + Size6883787 + Total Time172094 + Date Modified2022-11-07T11:58:36Z + Date Added2022-11-07T00:00:07Z + Bit Rate320 + Play Count8 + Play Date3767611718 + Play Date UTC2023-05-22T11:48:38Z + Skip Count1 + Skip Date2023-02-18T05:57:06Z + Loved + Persistent ID881B07E2121A4A3A + Track TypeRemote + + 6103 + + Track ID6103 + NameNew Recording 12, Jan 3, 2020 + ArtistPost Malone + Album ArtistPost Malone + AlbumTwelve Carat Toothache + KindMPEG audio file + Size3710432 + Total Time92760 + Year2022 + Date Modified2022-11-07T11:59:14Z + Date Added2022-11-07T00:00:07Z + Bit Rate320 + Play Count13 + Play Date3783012016 + Play Date UTC2023-11-16T17:40:16Z + Skip Count1 + Skip Date2022-11-10T05:50:41Z + Persistent IDD168D3A26762D058 + Track TypeRemote + + 6105 + + Track ID6105 + NameTiffany Baira + ArtistMoody + KindMPEG audio file + Size9954742 + Total Time248868 + Date Modified2022-11-07T11:58:55Z + Date Added2022-11-07T00:00:07Z + Bit Rate320 + Play Count13 + Play Date3780389770 + Play Date UTC2023-10-17T09:16:10Z + Skip Count1 + Skip Date2022-12-18T15:31:04Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Persistent IDAA86EDD9C6A4B60B + Track TypeRemote + Matched + + 6107 + + Track ID6107 + NameReputation + ArtistPost Malone + Album ArtistPost Malone + AlbumTwelve Carat Toothache + KindMPEG audio file + Size9928620 + Total Time248215 + Year2022 + Date Modified2022-11-07T00:01:04Z + Date Added2022-11-07T00:01:23Z + Bit Rate320 + Play Count9 + Play Date3783003349 + Play Date UTC2023-11-16T15:15:49Z + Persistent IDE5CA85FDBFF036A7 + Track TypeRemote + + 6109 + + Track ID6109 + NameCooped Up + ArtistPost Malone (feat. Roddy Ricch) + Album ArtistPost Malone + AlbumTwelve Carat Toothache + KindMPEG audio file + Size7440718 + Total Time186017 + Year2022 + Date Modified2022-11-07T00:02:15Z + Date Added2022-11-07T00:02:27Z + Bit Rate320 + Play Count12 + Play Date3783060519 + Play Date UTC2023-11-17T07:08:39Z + Skip Count1 + Skip Date2023-03-28T09:50:34Z + Persistent ID66001E2DB8DC41C9 + Track TypeRemote + + 6111 + + Track ID6111 + NameI Like You (A Happier Song) + ArtistPost Malone (feat. Doja Cat) + Album ArtistPost Malone + AlbumTwelve Carat Toothache + KindMPEG audio file + Size7715526 + Total Time192888 + Year2022 + Date Modified2022-11-07T00:02:47Z + Date Added2022-11-07T00:02:58Z + Bit Rate320 + Play Count7 + Play Date3783006704 + Play Date UTC2023-11-16T16:11:44Z + Skip Count3 + Skip Date2023-04-26T10:00:45Z + Persistent ID874A27B1A18798C3 + Track TypeRemote + + 6113 + + Track ID6113 + NameI Cannot Be (A Sadder Song) + ArtistPost Malone (feat. Gunna) + Album ArtistPost Malone + AlbumTwelve Carat Toothache + KindMPEG audio file + Size6794971 + Total Time169874 + Year2022 + Date Modified2022-11-07T00:03:14Z + Date Added2022-11-07T00:03:32Z + Bit Rate320 + Play Count12 + Play Date3783011924 + Play Date UTC2023-11-16T17:38:44Z + Persistent ID72F0E83108FE7110 + Track TypeRemote + + 6115 + + Track ID6115 + NameLove Hate Letter To Alcohol + ArtistPost Malone (feat. Fleet Foxes) + Album ArtistPost Malone + AlbumTwelve Carat Toothache + KindMPEG audio file + Size7353991 + Total Time183849 + Year2022 + Date Modified2022-11-07T12:03:51Z + Date Added2022-11-07T00:04:03Z + Bit Rate320 + Play Count13 + Play Date3783008422 + Play Date UTC2023-11-16T16:40:22Z + Skip Count3 + Skip Date2022-11-09T08:18:42Z + Artwork Count1 + Persistent IDC1F383E7F67DAB98 + Track TypeRemote + + 6117 + + Track ID6117 + NameBIRTHDAY GIFT + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size474604 + Total Time52536 + Track Number1 + Track Count24 + Year2021 + Date Modified2022-11-07T12:58:29Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count7 + Play Date3760431637 + Play Date UTC2023-02-28T09:20:37Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Album Loved + Artwork Count1 + Persistent ID44ABDCB096FB26AC + Track TypeRemote + + 6119 + + Track ID6119 + Nameboys playing pubg + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size53613 + Total Time6696 + Date Modified2022-11-07T00:54:57Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count14 + Play Date3778766457 + Play Date UTC2023-09-28T14:20:57Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID7138400209D3EAB6 + Track TypeRemote + + 6121 + + Track ID6121 + Namebubble gum b1tch + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size181677 + Total Time22704 + Date Modified2022-11-07T00:47:31Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count13 + Play Date3772717053 + Play Date UTC2023-07-20T13:57:33Z + Skip Count3 + Skip Date2022-11-15T14:02:45Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent IDC46A85C247958AA0 + Track TypeRemote + + 6123 + + Track ID6123 + NameCAN I GET A KISS + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size270957 + Total Time33864 + Date Modified2022-11-07T00:43:57Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count8 + Play Date3780848136 + Play Date UTC2023-10-22T16:35:36Z + Skip Count3 + Skip Date2022-11-08T15:12:46Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID4AE3AC014DAD663D + Track TypeRemote + + 6125 + + Track ID6125 + Namedont blame me + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size95277 + Total Time11904 + Date Modified2022-11-07T00:48:52Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count12 + Play Date3780128066 + Play Date UTC2023-10-14T08:34:26Z + Skip Count1 + Skip Date2023-02-13T16:34:59Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent IDE4EDCE9CD0E5A04C + Track TypeRemote + + 6127 + + Track ID6127 + Nameemenemenem + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size249837 + Total Time31224 + Date Modified2022-11-07T00:49:31Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count7 + Play Date3760115249 + Play Date UTC2023-02-24T17:27:29Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID7225A31FBFE0EC15 + Track TypeRemote + + 6129 + + Track ID6129 + Namei was just a little boy + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size86253 + Total Time10776 + Date Modified2022-11-07T00:53:31Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count13 + Play Date3781616220 + Play Date UTC2023-10-31T13:57:00Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID910819A9B86733BF + Track TypeRemote + + 6131 + + Track ID6131 + Nameit was a bad idea + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size274413 + Total Time34296 + Date Modified2022-11-07T00:52:03Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count11 + Play Date3781766264 + Play Date UTC2023-11-02T07:37:44Z + Skip Count4 + Skip Date2023-01-16T11:14:49Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Album Loved + Persistent ID7A56E9209CC3BBD8 + Track TypeRemote + + 6133 + + Track ID6133 + Nameits not so bad + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size144813 + Total Time18096 + Date Modified2022-11-07T00:50:18Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count12 + Play Date3781188045 + Play Date UTC2023-10-26T15:00:45Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID2F8618D82FFB63DF + Track TypeRemote + + 6135 + + Track ID6135 + Nameits okay + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size137517 + Total Time17184 + Date Modified2022-11-07T00:42:47Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count12 + Play Date3779182327 + Play Date UTC2023-10-03T09:52:07Z + Skip Count1 + Skip Date2022-11-09T12:13:15Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent IDB000B6F52890A312 + Track TypeRemote + + 6137 + + Track ID6137 + Name0110011 + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size95853 + Total Time11976 + Date Modified2022-11-07T00:52:24Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count8 + Play Date3780847400 + Play Date UTC2023-10-22T16:23:20Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent IDC159199C65ED1F9B + Track TypeRemote + + 6139 + + Track ID6139 + Namelive to love u boy + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size86637 + Total Time10824 + Date Modified2022-11-07T00:52:45Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count15 + Play Date3777370936 + Play Date UTC2023-09-12T10:42:16Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent IDC9BD9D9B0C57EF31 + Track TypeRemote + + 6141 + + Track ID6141 + NameYEAH + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size41517 + Total Time5184 + Date Modified2022-11-07T00:48:29Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count9 + Play Date3772526424 + Play Date UTC2023-07-18T09:00:24Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent IDA2F1823B77BC8C8B + Track TypeRemote + + 6143 + + Track ID6143 + Namemy boy is pretty + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size194733 + Total Time24336 + Date Modified2022-11-07T00:53:10Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count8 + Play Date3783694028 + Play Date UTC2023-11-24T15:07:08Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID637C7C5D1071D131 + Track TypeRemote + + 6145 + + Track ID6145 + NameNEW MAGIC WAND + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size116397 + Total Time14544 + Date Modified2022-11-07T00:44:49Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count7 + Play Date3768304211 + Play Date UTC2023-05-30T12:10:11Z + Skip Count1 + Skip Date2022-11-10T05:33:43Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID8123C35F3D41D3EA + Track TypeRemote + + 6147 + + Track ID6147 + Nameoh luky me + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size32877 + Total Time4104 + Date Modified2022-11-07T00:46:08Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count4 + Play Date3760860843 + Play Date UTC2023-03-05T08:34:03Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID8B35EAD244D553BD + Track TypeRemote + + 6149 + + Track ID6149 + Nameplease stand up + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size134253 + Total Time16776 + Date Modified2022-11-07T00:50:45Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count8 + Play Date3783687699 + Play Date UTC2023-11-24T13:21:39Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID76F64807A077E72A + Track TypeRemote + + 6151 + + Track ID6151 + Namesegarets + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size81837 + Total Time10224 + Date Modified2022-11-07T00:49:13Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count8 + Play Date3776167057 + Play Date UTC2023-08-29T12:17:37Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID7437CADD71C23D18 + Track TypeRemote + + 6153 + + Track ID6153 + Namestories 1 + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size175917 + Total Time21984 + Date Modified2022-11-07T00:45:45Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count10 + Play Date3783669399 + Play Date UTC2023-11-24T08:16:39Z + Skip Count2 + Skip Date2023-02-07T09:33:44Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID185C8FB3D836EA1E + Track TypeRemote + + 6155 + + Track ID6155 + Nametaratatara remix + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size158637 + Total Time19824 + Date Modified2022-11-07T00:46:34Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count10 + Play Date3781086732 + Play Date UTC2023-10-25T10:52:12Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID2DF8B1E9C8BDD37C + Track TypeRemote + + 6157 + + Track ID6157 + Nametaratatara + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size78957 + Total Time9864 + Date Modified2022-11-07T00:43:21Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count9 + Play Date3783848634 + Play Date UTC2023-11-26T10:03:54Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID8CFAE4D41DC16B2A + Track TypeRemote + + 6159 + + Track ID6159 + Namewhatever + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size69357 + Total Time8664 + Date Modified2022-11-07T00:51:18Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count8 + Play Date3766560149 + Play Date UTC2023-05-10T07:42:29Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent IDDDA6E44E8855C9CA + Track TypeRemote + + 6161 + + Track ID6161 + NameWHO IN HERE TRYNA START A RIOT + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size83757 + Total Time10464 + Date Modified2022-11-07T00:54:02Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count11 + Play Date3772781679 + Play Date UTC2023-07-21T07:54:39Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent IDC27558B18DFA5ABE + Track TypeRemote + + 6163 + + Track ID6163 + NameWOODKID RUN BOY + Artistingibitor + AlbumBIRTHDAY GIFT + KindMPEG audio file + Size71277 + Total Time8904 + Date Modified2022-11-07T00:51:36Z + Date Added2022-11-07T00:57:54Z + Bit Rate64 + Play Count8 + Play Date3776323135 + Play Date UTC2023-08-31T07:38:55Z + Album Rating100 + Album Rating Computed + Album Loved + Persistent ID4668BF83FD33FCAA + Track TypeRemote + + 6165 + + Track ID6165 + NameLove On the Run + ArtistBroken Bells + Album ArtistBroken Bells + ComposerBrian Burton, James Mercer, Sam Cohen & Dean Josiah Cover + AlbumINTO THE BLUE + GenreAlternative + KindAAC audio file + Size14649413 + Total Time423347 + Disc Number1 + Disc Count1 + Track Number4 + Track Count9 + Year2022 + Date Modified2022-11-08T01:39:15Z + Date Added2022-11-08T01:39:15Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3750728841 + Play Date UTC2022-11-08T02:07:21Z + Release Date2022-09-23T07:00:00Z + Album Rating100 + Album Rating Computed + Sort AlbumINTO THE BLUE + Sort ArtistBroken Bells + Sort NameLove On the Run + Persistent IDB4F488221A07EFCE + Track TypeRemote + + 6167 + + Track ID6167 + NameInto the Blue + ArtistBroken Bells + Album ArtistBroken Bells + ComposerJames Mercer, Brian Burton & Sam Cohen + AlbumINTO THE BLUE + GenreAlternative + KindAAC audio file + Size11623784 + Total Time333747 + Disc Number1 + Disc Count1 + Track Number1 + Track Count9 + Year2022 + Date Modified2022-11-08T01:44:08Z + Date Added2022-11-08T01:44:08Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3750842179 + Play Date UTC2022-11-09T09:36:19Z + Skip Count5 + Skip Date2022-11-08T15:50:29Z + Release Date2022-10-07T12:00:00Z + Album Rating100 + Album Rating Computed + Sort AlbumINTO THE BLUE + Sort ArtistBroken Bells + Sort NameInto the Blue + Persistent ID96F7A688924602B5 + Track TypeRemote + + 6169 + + Track ID6169 + NameWe're Not In Orbit Yet… + ArtistBroken Bells + Album ArtistBroken Bells + ComposerJames Mercer & Brian Burton + AlbumWe're Not In Orbit Yet… - Single + GenreAlternative + KindApple Music AAC audio file + Size10921509 + Total Time310840 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2022-11-08T01:44:08Z + Date Added2022-11-08T01:44:08Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count17 + Play Date3783663018 + Play Date UTC2023-11-24T06:30:18Z + Skip Count1 + Skip Date2022-11-08T15:00:31Z + Release Date2022-06-29T12:00:00Z + Artwork Count1 + Sort AlbumWe're Not In Orbit Yet… - Single + Sort ArtistBroken Bells + Sort NameWe're Not In Orbit Yet… + Persistent ID7DCCFA3048F3B16F + Track TypeRemote + Apple Music + + 6171 + + Track ID6171 + NameInvisible Exit + ArtistBroken Bells + Album ArtistBroken Bells + ComposerBrian Burton & James Mercer + AlbumINTO THE BLUE + GenreAlternative + KindAAC audio file + Size5540401 + Total Time153693 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2022 + Date Modified2022-11-08T01:44:08Z + Date Added2022-11-08T01:44:08Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3750728418 + Play Date UTC2022-11-08T02:00:18Z + Release Date2022-10-07T12:00:00Z + Album Rating100 + Album Rating Computed + Sort AlbumINTO THE BLUE + Sort ArtistBroken Bells + Sort NameInvisible Exit + Persistent IDF5979C62FBE3FFF2 + Track TypeRemote + + 6173 + + Track ID6173 + NameOne Night + ArtistBroken Bells + Album ArtistBroken Bells + ComposerBrian Burton & James Mercer + AlbumINTO THE BLUE + GenreAlternative + KindAAC audio file + Size8093674 + Total Time229227 + Disc Number1 + Disc Count1 + Track Number5 + Track Count9 + Year2022 + Date Modified2022-11-08T01:44:08Z + Date Added2022-11-08T01:44:08Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3750729070 + Play Date UTC2022-11-08T02:11:10Z + Skip Count1 + Skip Date2022-11-08T15:00:27Z + Release Date2022-10-07T12:00:00Z + Album Rating100 + Album Rating Computed + Sort AlbumINTO THE BLUE + Sort ArtistBroken Bells + Sort NameOne Night + Persistent IDC95A0EC5E5BD1D66 + Track TypeRemote + + 6175 + + Track ID6175 + NameSaturdays + ArtistBroken Bells + Album ArtistBroken Bells + ComposerBrian Burton, James Mercer & James Milne + AlbumINTO THE BLUE + GenreAlternative + KindAAC audio file + Size6838049 + Total Time187413 + Disc Number1 + Disc Count1 + Track Number6 + Track Count9 + Year2022 + Date Modified2022-11-08T01:44:08Z + Date Added2022-11-08T01:44:08Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3750729258 + Play Date UTC2022-11-08T02:14:18Z + Release Date2022-08-10T07:00:00Z + Album Rating100 + Album Rating Computed + Sort AlbumINTO THE BLUE + Sort ArtistBroken Bells + Sort NameSaturdays + Persistent ID9A74E013DF5D2A7B + Track TypeRemote + + 6177 + + Track ID6177 + NameForgotten Boy + ArtistBroken Bells + Album ArtistBroken Bells + ComposerBrian Burton, James Mercer, Michael Esposito, Ronald Gilbert, Ralph Scala & Emil Thielhelm + AlbumINTO THE BLUE + GenreAlternative + KindAAC audio file + Size7962834 + Total Time224973 + Disc Number1 + Disc Count1 + Track Number7 + Track Count9 + Year2022 + Date Modified2022-11-08T01:44:08Z + Date Added2022-11-08T01:44:08Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3750729483 + Play Date UTC2022-11-08T02:18:03Z + Skip Count1 + Skip Date2022-11-08T15:00:21Z + Release Date2022-10-07T12:00:00Z + Album Rating100 + Album Rating Computed + Sort AlbumINTO THE BLUE + Sort ArtistBroken Bells + Sort NameForgotten Boy + Persistent ID1C47909A9E8264C5 + Track TypeRemote + + 6179 + + Track ID6179 + NameFade Away + ArtistBroken Bells + Album ArtistBroken Bells + ComposerBrian Burton & James Mercer + AlbumINTO THE BLUE + GenreAlternative + KindAAC audio file + Size9977799 + Total Time286947 + Disc Number1 + Disc Count1 + Track Number9 + Track Count9 + Year2022 + Date Modified2022-11-08T01:44:08Z + Date Added2022-11-08T01:44:08Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3750752156 + Play Date UTC2022-11-08T08:35:56Z + Release Date2022-10-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Sort AlbumINTO THE BLUE + Sort ArtistBroken Bells + Sort NameFade Away + Persistent IDC4826E85E31F50D6 + Track TypeRemote + + 6181 + + Track ID6181 + NameHolding on for Life + ArtistBroken Bells + Album ArtistBroken Bells + ComposerJames Mercer & Brian Burton + AlbumAfter the Disco + GenreAlternative + KindApple Music AAC audio file + Size8287486 + Total Time236868 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2014 + Date Modified2022-11-10T08:29:51Z + Date Added2022-11-10T08:29:51Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3770536160 + Play Date UTC2023-06-25T08:09:20Z + Release Date2014-01-13T12:00:00Z + Artwork Count1 + Sort AlbumAfter the Disco + Sort ArtistBroken Bells + Sort NameHolding on for Life + Persistent ID4187873586486689 + Track TypeRemote + Apple Music + + 6183 + + Track ID6183 + NameThe High Road + ArtistBroken Bells + Album ArtistBroken Bells + ComposerJames Mercer & Brian Burton + AlbumBroken Bells + GenreAlternative + KindApple Music AAC audio file + Size8134731 + Total Time232108 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2009 + Date Modified2022-11-10T09:07:57Z + Date Added2022-11-10T09:07:57Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3783687682 + Play Date UTC2023-11-24T13:21:22Z + Skip Count1 + Skip Date2022-11-10T19:11:15Z + Release Date2009-12-21T12:00:00Z + Artwork Count1 + Sort AlbumBroken Bells + Sort ArtistBroken Bells + Sort NameHigh Road + Persistent IDC4BC70670FFD9B71 + Track TypeRemote + Apple Music + + 6185 + + Track ID6185 + NameTrustfall + ArtistVELVETEARS & eli filosov [ p h i l o ] + Album ArtistVELVETEARS & eli filosov [ p h i l o ] + AlbumSleepover - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7481692 + Total Time209789 + Disc Number1 + Disc Count1 + Track Number4 + Track Count4 + Year2022 + Date Modified2022-11-12T23:00:46Z + Date Added2022-11-12T23:00:46Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3781447886 + Play Date UTC2023-10-29T15:11:26Z + Release Date2022-10-21T12:00:00Z + Artwork Count1 + Sort AlbumSleepover - EP + Sort ArtistVELVETEARS & eli filosov [ p h i l o ] + Sort NameTrustfall + Persistent ID58E8430ABD6C856A + Track TypeRemote + Apple Music + + 6187 + + Track ID6187 + NameFeeding Ducks + ArtistOndi Vil & Neoplasma + Album ArtistOndi Vil & Neoplasma + ComposerAlexandros Pashalidis & Konstantinos Kontos + AlbumFading Dreams + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4864835 + Total Time131200 + Disc Number1 + Disc Count1 + Track Number5 + Track Count7 + Year2022 + Date Modified2022-11-12T23:06:42Z + Date Added2022-11-12T23:06:42Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783753549 + Play Date UTC2023-11-25T07:39:09Z + Release Date2022-10-14T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFading Dreams + Sort ArtistOndi Vil & Neoplasma + Sort NameFeeding Ducks + Persistent ID28D972423B3F81DF + Track TypeRemote + Apple Music + + 6189 + + Track ID6189 + NamePretty Colors + Artistglibs + Album Artistglibs + ComposerMatthew Ryan Bagnall + AlbumSweet Dreams + GenreR&B/Soul + KindApple Music AAC audio file + Size7904171 + Total Time224001 + Disc Number1 + Disc Count1 + Track Number5 + Track Count15 + Year2017 + Date Modified2022-11-12T23:21:17Z + Date Added2022-11-12T23:21:17Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3780126326 + Play Date UTC2023-10-14T08:05:26Z + Release Date2017-05-18T12:00:00Z + Artwork Count1 + Sort AlbumSweet Dreams + Sort Artistglibs + Sort NamePretty Colors + Persistent ID98186EB2D4D96147 + Explicit + Track TypeRemote + Apple Music + + 6191 + + Track ID6191 + NameAWOLNATION - Drinking Lightning + KindMPEG audio file + Size12204408 + Total Time305110 + Date Modified2022-11-23T10:15:54Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count9 + Play Date3776178149 + Play Date UTC2023-08-29T15:22:29Z + Persistent ID1223B983F20876DE + Track TypeRemote + + 6193 + + Track ID6193 + NameAWOLNATION - Fat Face + KindMPEG audio file + Size8526367 + Total Time213159 + Date Modified2022-11-23T10:15:08Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count9 + Play Date3767071452 + Play Date UTC2023-05-16T05:44:12Z + Persistent IDF8F242F8C02CCE6C + Track TypeRemote + + 6195 + + Track ID6195 + NameAWOLNATION - Headrest for My Soul + KindMPEG audio file + Size5138808 + Total Time128470 + Date Modified2022-11-23T10:15:19Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count12 + Play Date3780125896 + Play Date UTC2023-10-14T07:58:16Z + Skip Count1 + Skip Date2022-11-23T17:49:39Z + Persistent ID1FE29C2C30784CAD + Track TypeRemote + + 6197 + + Track ID6197 + NameAWOLNATION - Hollow Moon (Bad Wolf) + KindMPEG audio file + Size10359118 + Total Time258977 + Date Modified2022-11-23T10:15:09Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count12 + Play Date3783681029 + Play Date UTC2023-11-24T11:30:29Z + Persistent ID873972A2FBE4A9E8 + Track TypeRemote + + 6199 + + Track ID6199 + NameAWOLNATION - Holy Roller + KindMPEG audio file + Size9524244 + Total Time238106 + Date Modified2022-11-23T10:15:26Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count10 + Play Date3783709506 + Play Date UTC2023-11-24T19:25:06Z + Persistent ID519E3F023F9D6845 + Track TypeRemote + + 6201 + + Track ID6201 + NameAWOLNATION - Dreamers + KindMPEG audio file + Size5817991 + Total Time145449 + Date Modified2022-11-23T10:15:21Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count7 + Play Date3783849557 + Play Date UTC2023-11-26T10:19:17Z + Skip Count1 + Skip Date2023-01-04T14:22:05Z + Persistent ID9BE94F6975FC3443 + Track TypeRemote + + 6203 + + Track ID6203 + NameAWOLNATION - I Am + KindMPEG audio file + Size10762449 + Total Time269061 + Date Modified2022-11-23T10:15:17Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count7 + Play Date3768410835 + Play Date UTC2023-05-31T17:47:15Z + Skip Count1 + Skip Date2023-03-02T13:13:15Z + Persistent ID3C6E22B1DC77526B + Track TypeRemote + + 6205 + + Track ID6205 + NameAWOLNATION - Woman Woman + KindMPEG audio file + Size8722808 + Total Time218070 + Date Modified2022-11-23T10:15:29Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count7 + Play Date3770490090 + Play Date UTC2023-06-24T19:21:30Z + Persistent ID6185C75C6E579275 + Track TypeRemote + + 6207 + + Track ID6207 + NameAWOLNATION - Jailbreak + KindMPEG audio file + Size9534694 + Total Time238367 + Date Modified2022-11-23T10:15:12Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count9 + Play Date3772791204 + Play Date UTC2023-07-21T10:33:24Z + Persistent IDF514AF41DF415A16 + Track TypeRemote + + 6209 + + Track ID6209 + NameAWOLNATION - KOOKSEVERYWHERE!!!! + KindMPEG audio file + Size9365420 + Total Time234135 + Date Modified2022-11-23T10:15:14Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count7 + Play Date3766853043 + Play Date UTC2023-05-13T17:04:03Z + Skip Count2 + Skip Date2023-11-21T19:47:38Z + Persistent ID78114BDB6D2DFFDA + Track TypeRemote + + 6211 + + Track ID6211 + NameAWOLNATION - Lie Love Live Love + KindMPEG audio file + Size10779167 + Total Time269479 + Date Modified2022-11-23T10:15:32Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count5 + Play Date3772526418 + Play Date UTC2023-07-18T09:00:18Z + Persistent ID1F98EF7543E92C49 + Track TypeRemote + + 6213 + + Track ID6213 + NameAWOLNATION - Like People, Like Plastic + KindMPEG audio file + Size10846040 + Total Time271151 + Date Modified2022-11-23T10:15:45Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count4 + Play Date3762143763 + Play Date UTC2023-03-20T04:56:03Z + Loved + Persistent ID8FDCA28C6CA4DA6E + Track TypeRemote + + 6215 + + Track ID6215 + NameAWOLNATION - Run (Beautiful Things) + KindMPEG audio file + Size9668440 + Total Time241711 + Date Modified2022-11-23T10:15:05Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count7 + Play Date3768386382 + Play Date UTC2023-05-31T10:59:42Z + Persistent ID3995AB6C63E056CD + Track TypeRemote + + 6217 + + Track ID6217 + NameAWOLNATION - Windows + KindMPEG audio file + Size8690416 + Total Time217260 + Date Modified2022-11-23T10:15:23Z + Date Added2022-11-23T10:16:23Z + Bit Rate320 + Sample Rate44100 + Play Count10 + Play Date3781450307 + Play Date UTC2023-10-29T15:51:47Z + Skip Count1 + Skip Date2022-11-23T17:53:25Z + Persistent ID0A868B3E96068B6B + Track TypeRemote + + 6219 + + Track ID6219 + NameDark Necessities + ArtistRed Hot Chili Peppers + Album ArtistRed Hot Chili Peppers + ComposerAnthony Kiedis, Brian Burton, Chad Smith, Flea & Josh Klinghoffer + AlbumThe Getaway + GenreAlternative + KindApple Music AAC audio file + Size10561108 + Total Time302013 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2016 + Date Modified2022-11-29T18:46:40Z + Date Added2022-11-29T18:46:40Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3772630964 + Play Date UTC2023-07-19T14:02:44Z + Release Date2016-05-05T07:00:00Z + Artwork Count1 + Sort AlbumThe Getaway + Sort ArtistRed Hot Chili Peppers + Sort NameDark Necessities + Persistent ID74C2B41E346CFD80 + Track TypeRemote + Apple Music + + 6221 + + Track ID6221 + NameClocks + ArtistColdplay + Album ArtistColdplay + ComposerChris Martin, Guy Berryman, Jonny Buckland & Will Champion + AlbumA Rush of Blood to the Head + GenreAlternative + KindApple Music AAC audio file + Size11669997 + Total Time306906 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2002 + Date Modified2022-11-29T18:54:40Z + Date Added2022-11-29T18:54:40Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3781063149 + Play Date UTC2023-10-25T04:19:09Z + Release Date2002-08-26T07:00:00Z + Loved + Artwork Count1 + Sort AlbumRush of Blood to the Head + Sort ArtistColdplay + Sort NameClocks + Persistent IDE915BE7E58537D8D + Track TypeRemote + Apple Music + + 6223 + + Track ID6223 + NameLet It Go + ArtistANIMA! + Album ArtistANIMA! + ComposerVicente Espí & Arielle Desiree Vakni + AlbumLet It Go - Single + GenreAlternative + KindApple Music AAC audio file + Size6379425 + Total Time168600 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2022-12-08T18:42:18Z + Date Added2022-12-08T18:42:18Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3773540905 + Play Date UTC2023-07-30T02:48:25Z + Skip Count1 + Skip Date2022-12-27T06:18:51Z + Release Date2022-11-16T12:00:00Z + Artwork Count1 + Sort AlbumLet It Go - Single + Sort ArtistANIMA! + Sort NameLet It Go + Persistent ID401B16A34F22FE01 + Track TypeRemote + Apple Music + + 6225 + + Track ID6225 + NamePray + ArtistDUCKWRTH & GAWD + Album ArtistDUCKWRTH + ComposerJared Lee, Kareem James, Tyler Acord & David Wilson + AlbumChrome Bull + GenreDance + KindApple Music AAC audio file + Size6475428 + Total Time175909 + Disc Number1 + Disc Count1 + Track Number7 + Track Count8 + Year2022 + Date Modified2022-12-08T20:03:59Z + Date Added2022-12-08T20:03:59Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3780389946 + Play Date UTC2023-10-17T09:19:06Z + Release Date2022-10-21T12:00:00Z + Artwork Count1 + Sort AlbumChrome Bull + Sort ArtistDUCKWRTH & GAWD + Sort NamePray + Persistent ID1EB973DF2B9C7366 + Track TypeRemote + Apple Music + + 6227 + + Track ID6227 + NameChiquita + ArtistTyla Yaweh + Album ArtistTyla Yaweh + ComposerRayvon Cawley, Brittany Chykira Barber, Ramiro Padilla, Fernando Garibay, Jason Wilkinson, Dominique Davis & Tyler Jamal Brown + AlbumHeart Full of Rage + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5634248 + Total Time155716 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2019 + Date Modified2022-12-09T11:58:29Z + Date Added2022-12-09T11:58:29Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3783362858 + Play Date UTC2023-11-20T19:07:38Z + Release Date2019-02-22T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumHeart Full of Rage + Sort ArtistTyla Yaweh + Sort NameChiquita + Persistent ID6372D17CF810C828 + Explicit + Track TypeRemote + Apple Music + + 6229 + + Track ID6229 + NameThe Beach + ArtistThe Neighbourhood + Album ArtistThe Neighbourhood + ComposerJesse®, Justyn Pilbrow, Zachary Abels, Michael Margott, Jeremiah Freedman & Brandon Fried + AlbumWiped Out! + GenreAlternative + KindApple Music AAC audio file + Size9001970 + Total Time255133 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2015 + Date Modified2022-12-10T06:13:54Z + Date Added2022-12-10T06:13:54Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3781184247 + Play Date UTC2023-10-26T13:57:27Z + Skip Count1 + Skip Date2022-12-13T18:09:11Z + Release Date2015-10-30T07:00:00Z + Artwork Count1 + Sort AlbumWiped Out! + Sort Album ArtistNeighbourhood + Sort ArtistNeighbourhood + Sort NameBeach + Persistent ID1F684B4AED0E54B1 + Track TypeRemote + Apple Music + + 6231 + + Track ID6231 + NameMagnolia + ArtistPlayboi Carti + Album ArtistPlayboi Carti + ComposerJordan Carter & Pi’erre Bourne + AlbumPlayboi Carti + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6631961 + Total Time181812 + Disc Number1 + Disc Count1 + Track Number2 + Track Count15 + Year2017 + Date Modified2022-12-10T07:30:48Z + Date Added2022-12-10T07:30:48Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3783332050 + Play Date UTC2023-11-20T10:34:10Z + Release Date2017-04-14T12:00:00Z + Artwork Count1 + Sort AlbumPlayboi Carti + Sort ArtistPlayboi Carti + Sort NameMagnolia + Persistent ID486A563D1DADC937 + Explicit + Track TypeRemote + Apple Music + + 6233 + + Track ID6233 + NameThe Temperature of the Air On the Bow of the Kaleetan + ArtistChris Zabriskie + Album ArtistChris Zabriskie + AlbumUndercover Vampire Policeman + GenreInstrumental + KindApple Music AAC audio file + Size8732427 + Total Time264133 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2012 + Date Modified2022-12-12T15:48:22Z + Date Added2022-12-12T15:48:22Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count20 + Play Date3780492216 + Play Date UTC2023-10-18T13:43:36Z + Release Date2012-01-25T12:00:00Z + Artwork Count1 + Sort AlbumUndercover Vampire Policeman + Sort ArtistChris Zabriskie + Sort NameTemperature of the Air On the Bow of the Kaleetan + Persistent IDAD8806E7A959F142 + Track TypeRemote + Apple Music + + 6235 + + Track ID6235 + NameI Am a Man Who Will Fight for Your Honor + ArtistChris Zabriskie + Album ArtistChris Zabriskie + AlbumI Am a Man Who Will Fight for Your Honor + GenreElectronic + KindApple Music AAC audio file + Size22966003 + Total Time686480 + Disc Number1 + Disc Count1 + Track Number7 + Track Count7 + Year2009 + Date Modified2022-12-12T15:59:24Z + Date Added2022-12-12T15:59:24Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3762139378 + Play Date UTC2023-03-20T03:42:58Z + Skip Count1 + Skip Date2023-01-08T20:37:22Z + Release Date2009-03-10T12:00:00Z + Artwork Count1 + Sort AlbumI Am a Man Who Will Fight for Your Honor + Sort ArtistChris Zabriskie + Sort NameI Am a Man Who Will Fight for Your Honor + Persistent IDEFA4BEC146F8B3ED + Track TypeRemote + Apple Music + + 6237 + + Track ID6237 + NameDirect to Video + ArtistChris Zabriskie + Album ArtistChris Zabriskie + AlbumDirect to Video + GenreElectronic + KindApple Music AAC audio file + Size11855773 + Total Time345222 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2015 + Date Modified2022-12-12T16:35:45Z + Date Added2022-12-12T16:35:45Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3780247208 + Play Date UTC2023-10-15T17:40:08Z + Release Date2015-01-02T12:00:00Z + Artwork Count1 + Sort AlbumDirect to Video + Sort ArtistChris Zabriskie + Sort NameDirect to Video + Persistent IDC5A71CAF27E948E7 + Track TypeRemote + Apple Music + + 6239 + + Track ID6239 + NameLove Lost (Piano Version) + ArtistMattia Cupelli + Album ArtistMattia Cupelli + AlbumReminiscence (Mattia Cupelli) + GenreElectronic + KindApple Music AAC audio file + Size14467243 + Total Time427143 + Disc Number1 + Disc Count1 + Track Number22 + Track Count23 + Year2014 + Date Modified2022-12-12T16:47:57Z + Date Added2022-12-12T16:47:57Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3783671460 + Play Date UTC2023-11-24T08:51:00Z + Release Date2014-12-12T12:00:00Z + Artwork Count1 + Sort AlbumReminiscence (Mattia Cupelli) + Sort ArtistMattia Cupelli + Sort NameLove Lost (Piano Version) + Persistent IDED70E9173411A89A + Track TypeRemote + Apple Music + + 6241 + + Track ID6241 + NameCall + ArtistThe American Dollar + Album ArtistThe American Dollar + AlbumA Memory Stream + GenreRock + KindApple Music AAC audio file + Size11138279 + Total Time325200 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2008 + Date Modified2022-12-12T19:51:01Z + Date Added2022-12-12T19:51:01Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3774100214 + Play Date UTC2023-08-05T14:10:14Z + Skip Count2 + Skip Date2023-02-01T22:43:19Z + Release Date2008-08-18T07:00:00Z + Loved + Artwork Count1 + Sort AlbumA Memory Stream + Sort Album ArtistAmerican Dollar + Sort ArtistAmerican Dollar + Sort NameCall + Persistent ID12F405E8B97A710B + Track TypeRemote + Apple Music + + 6243 + + Track ID6243 + NameGoodbye Blue Sky + ArtistPink Floyd + Album ArtistPink Floyd + ComposerRoger Waters + AlbumThe Wall + GenreRock + KindApple Music AAC audio file + Size6445880 + Total Time167293 + Disc Number1 + Disc Count3 + Track Number7 + Track Count13 + Year1979 + Date Modified2022-12-16T21:40:49Z + Date Added2022-12-16T21:40:49Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3780136147 + Play Date UTC2023-10-14T10:49:07Z + Skip Count1 + Skip Date2022-12-19T22:03:15Z + Release Date1979-11-30T08:00:00Z + Artwork Count1 + Sort AlbumThe Wall + Sort ArtistPink Floyd + Sort NameGoodbye Blue Sky + Persistent ID02AC6B5D45A1CAB6 + Track TypeRemote + Apple Music + + 6245 + + Track ID6245 + NameOncle Jazz + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Emmanuelle Proulx & Jessy Caron + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size2351863 + Total Time57877 + Disc Number1 + Disc Count1 + Track Number1 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3776690531 + Play Date UTC2023-09-04T13:42:11Z + Skip Count1 + Skip Date2023-03-23T10:22:33Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameOncle Jazz + Persistent ID2CA5B01FCDDEFD1E + Track TypeRemote + Apple Music + + 6247 + + Track ID6247 + NameNorton Commander (Album V) + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Emmanuelle Proulx & Jessy Caron + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7747783 + Total Time206313 + Disc Number1 + Disc Count1 + Track Number2 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3775202153 + Play Date UTC2023-08-18T08:15:53Z + Skip Count3 + Skip Date2023-10-14T10:30:33Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameNorton Commander (Album V) + Persistent IDB176C2A5A5C1729D + Track TypeRemote + Apple Music + + 6249 + + Track ID6249 + NameDays Go By + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Dragos Chiriac & Emmanuelle Proulx + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7042870 + Total Time197172 + Disc Number1 + Disc Count1 + Track Number3 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3775159979 + Play Date UTC2023-08-17T20:32:59Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameDays Go By + Persistent ID851D881B4214C0CE + Track TypeRemote + Apple Music + + 6251 + + Track ID6251 + NameTailwhip (Album V) + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Emmanuelle Proulx & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size8038923 + Total Time228060 + Disc Number1 + Disc Count1 + Track Number4 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count38 + Play Date3782886844 + Play Date UTC2023-11-15T06:54:04Z + Skip Count1 + Skip Date2023-01-08T22:13:52Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameTailwhip (Album V) + Persistent IDC998E5DB402A752B + Track TypeRemote + Apple Music + + 6253 + + Track ID6253 + NameFound Me + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Jessy Caron & Emmanuelle Proulx + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7522216 + Total Time211961 + Disc Number1 + Disc Count1 + Track Number5 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3777019132 + Play Date UTC2023-09-08T08:58:52Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameFound Me + Persistent ID94C498FB2DBEB37A + Track TypeRemote + Apple Music + + 6255 + + Track ID6255 + NameNumb (Album V) + ArtistMen I Trust + Album ArtistMen I Trust + ComposerEmmanuelle Proulx, Jessy Caron & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7756686 + Total Time219340 + Disc Number1 + Disc Count1 + Track Number6 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3775155818 + Play Date UTC2023-08-17T19:23:38Z + Skip Date2022-12-22T19:24:43Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameNumb (Album V) + Persistent ID85B0AC72A564114D + Track TypeRemote + Apple Music + + 6257 + + Track ID6257 + NameSay Can You Hear (Album V) + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Emmanuelle Proulx & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size6818725 + Total Time189246 + Disc Number1 + Disc Count1 + Track Number7 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3783074738 + Play Date UTC2023-11-17T11:05:38Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameSay Can You Hear (Album V) + Persistent IDF07F02B327030AA7 + Track TypeRemote + Apple Music + + 6259 + + Track ID6259 + NameAll Night + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Jessy Caron & Emmanuelle Proulx + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size6883495 + Total Time188469 + Disc Number1 + Disc Count1 + Track Number8 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3779310457 + Play Date UTC2023-10-04T21:27:37Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameAll Night + Persistent ID0E74CF2D638E38A5 + Track TypeRemote + Apple Music + + 6261 + + Track ID6261 + NameI Hope to Be Around (Album V) + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Jessy Caron & Emmanuelle Proulx + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7212047 + Total Time206174 + Disc Number1 + Disc Count1 + Track Number9 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3782995152 + Play Date UTC2023-11-16T12:59:12Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameI Hope to Be Around (Album V) + Persistent IDCBD2EFC59566BAC4 + Track TypeRemote + Apple Music + + 6263 + + Track ID6263 + NameDorian + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Emmanuelle Proulx & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size6279554 + Total Time171579 + Disc Number1 + Disc Count1 + Track Number10 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781571113 + Play Date UTC2023-10-31T01:25:13Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameDorian + Persistent ID14B2890582336653 + Track TypeRemote + Apple Music + + 6265 + + Track ID6265 + NamePines + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Emmanuelle Proulx & Jessy Caron + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7815368 + Total Time222090 + Disc Number1 + Disc Count1 + Track Number11 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3779898449 + Play Date UTC2023-10-11T16:47:29Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NamePines + Persistent ID9EF5407E3407AD3F + Track TypeRemote + Apple Music + + 6267 + + Track ID6267 + NameSlap Pie + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Emmanuelle Proulx & Jessy Caron + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size5638266 + Total Time139815 + Disc Number1 + Disc Count1 + Track Number12 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3781063781 + Play Date UTC2023-10-25T04:29:41Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameSlap Pie + Persistent IDCFC9C2962C65A6DE + Track TypeRemote + Apple Music + + 6269 + + Track ID6269 + NameFiero GT + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Jessy Caron & Emmanuelle Proulx + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size2306554 + Total Time51401 + Disc Number1 + Disc Count1 + Track Number13 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3783768534 + Play Date UTC2023-11-25T11:48:54Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameFiero GT + Persistent IDACD1573F8DF02C15 + Track TypeRemote + Apple Music + + 6271 + + Track ID6271 + NameSeven (Album V) + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Jessy Caron & Emmanuelle Proulx + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size8254913 + Total Time225394 + Disc Number1 + Disc Count1 + Track Number14 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3774100437 + Play Date UTC2023-08-05T14:13:57Z + Release Date2019-09-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameSeven (Album V) + Persistent ID3F5CE69DAE3FF1FA + Track TypeRemote + Apple Music + + 6273 + + Track ID6273 + NameShow Me How (Album V) + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Emmanuelle Proulx & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7644982 + Total Time215111 + Disc Number1 + Disc Count1 + Track Number15 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3774099820 + Play Date UTC2023-08-05T14:03:40Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameShow Me How (Album V) + Persistent IDB873E8596CACF92A + Track TypeRemote + Apple Music + + 6275 + + Track ID6275 + NameAlright + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Emmanuelle Proulx & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size6205627 + Total Time157949 + Disc Number1 + Disc Count1 + Track Number16 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3779914071 + Play Date UTC2023-10-11T21:07:51Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameAlright + Persistent IDB8BF0A9FA196F01D + Track TypeRemote + Apple Music + + 6277 + + Track ID6277 + NameYou Deserve This (Album V) + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Emmanuelle Proulx & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size6568414 + Total Time185625 + Disc Number1 + Disc Count1 + Track Number17 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3774099613 + Play Date UTC2023-08-05T14:00:13Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameYou Deserve This (Album V) + Persistent ID5E5B6F2EFEC38882 + Track TypeRemote + Apple Music + + 6279 + + Track ID6279 + NamePierre + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Emmanuelle Proulx & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7239459 + Total Time206860 + Disc Number1 + Disc Count1 + Track Number18 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3781531841 + Play Date UTC2023-10-30T14:30:41Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NamePierre + Persistent ID334807E35C2DB1F5 + Track TypeRemote + Apple Music + + 6281 + + Track ID6281 + NameAir + ArtistMen I Trust + Album ArtistMen I Trust + ComposerEmmanuelle Proulx, Jessy Caron & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7069403 + Total Time194364 + Disc Number1 + Disc Count1 + Track Number19 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3774100842 + Play Date UTC2023-08-05T14:20:42Z + Skip Date2023-07-28T05:26:55Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameAir + Persistent ID6F5FD2FBFF74E591 + Track TypeRemote + Apple Music + + 6283 + + Track ID6283 + NamePorcelain + ArtistMen I Trust + Album ArtistMen I Trust + ComposerEmmanuelle Proulx, Jessy Caron & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7817612 + Total Time212890 + Disc Number1 + Disc Count1 + Track Number20 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3776345948 + Play Date UTC2023-08-31T13:59:08Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NamePorcelain + Persistent ID8E0DAF54541BDE67 + Track TypeRemote + Apple Music + + 6285 + + Track ID6285 + NamePoodle of Mud + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Jessy Caron & Emmanuelle Proulx + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size3264127 + Total Time79597 + Disc Number1 + Disc Count1 + Track Number21 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3783712744 + Play Date UTC2023-11-24T20:19:04Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NamePoodle of Mud + Persistent ID660850FCBF80F15F + Track TypeRemote + Apple Music + + 6287 + + Track ID6287 + NameSomething in Water + ArtistMen I Trust + Album ArtistMen I Trust + ComposerEmmanuelle Proulx, Jessy Caron & Dragos Chiriac + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size7211419 + Total Time198875 + Disc Number1 + Disc Count1 + Track Number22 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783707648 + Play Date UTC2023-11-24T18:54:08Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameSomething in Water + Persistent ID388A11C21825E310 + Track TypeRemote + Apple Music + + 6289 + + Track ID6289 + NameTailwhip Revisited + ArtistMen I Trust + Album ArtistMen I Trust + ComposerJessy Caron, Dragos Chiriac & Emmanuelle Proulx + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size8590836 + Total Time240000 + Disc Number1 + Disc Count1 + Track Number23 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3779192552 + Play Date UTC2023-10-03T12:42:32Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NameTailwhip Revisited + Persistent IDF0DC4931EB6E057F + Track TypeRemote + Apple Music + + 6291 + + Track ID6291 + NamePoplar Tree + ArtistMen I Trust + Album ArtistMen I Trust + ComposerDragos Chiriac, Emmanuelle Proulx & Jessy Caron + AlbumOncle Jazz + GenrePop + KindApple Music AAC audio file + Size3103305 + Total Time74092 + Disc Number1 + Disc Count1 + Track Number24 + Track Count24 + Year2019 + Date Modified2022-12-22T12:40:07Z + Date Added2022-12-22T12:40:07Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3777564059 + Play Date UTC2023-09-14T16:20:59Z + Release Date2019-09-13T12:00:00Z + Artwork Count1 + Sort AlbumOncle Jazz + Sort ArtistMen I Trust + Sort NamePoplar Tree + Persistent ID45763F22BD373338 + Track TypeRemote + Apple Music + + 6293 + + Track ID6293 + NameSo Long Forever + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size10718062 + Total Time305040 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2016 + Date Modified2022-12-23T10:28:35Z + Date Added2022-12-23T10:28:35Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3781531237 + Play Date UTC2023-10-30T14:20:37Z + Release Date2016-11-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameSo Long Forever + Persistent IDB1823D671750FAD2 + Track TypeRemote + Apple Music + + 6295 + + Track ID6295 + NameBreak the Silence + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size7634845 + Total Time211907 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3773377628 + Play Date UTC2023-07-28T05:27:08Z + Skip Count1 + Skip Date2022-12-26T22:16:42Z + Release Date2016-05-23T12:00:00Z + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameBreak the Silence + Persistent ID44D94AB7C9B27BE1 + Track TypeRemote + Apple Music + + 6297 + + Track ID6297 + NameBitter + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size8286612 + Total Time233360 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3780834474 + Play Date UTC2023-10-22T12:47:54Z + Release Date2016-11-04T12:00:00Z + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameBitter + Persistent ID7C6941BFD55ECA2A + Track TypeRemote + Apple Music + + 6299 + + Track ID6299 + NameLive Well + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size8764053 + Total Time249840 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3779202878 + Play Date UTC2023-10-03T15:34:38Z + Skip Count1 + Skip Date2022-12-25T14:13:04Z + Release Date2016-11-04T12:00:00Z + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameLive Well + Persistent IDB616A8C802AA5857 + Track TypeRemote + Apple Music + + 6301 + + Track ID6301 + NameIt's Over + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size7540798 + Total Time214400 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3776428534 + Play Date UTC2023-09-01T12:55:34Z + Release Date2016-10-04T12:00:00Z + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameIt's Over + Persistent ID191DA9EC2434FCCB + Track TypeRemote + Apple Music + + 6303 + + Track ID6303 + NameFire in the Sky + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Matt Hodges & Will Dorey + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size9620118 + Total Time272253 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3773378696 + Play Date UTC2023-07-28T05:44:56Z + Release Date2016-11-04T12:00:00Z + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameFire in the Sky + Persistent ID8505EF0CA7F4A038 + Track TypeRemote + Apple Music + + 6305 + + Track ID6305 + NameFamily + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size6596898 + Total Time186160 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3779199267 + Play Date UTC2023-10-03T14:34:27Z + Release Date2016-11-04T12:00:00Z + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameFamily + Persistent ID87063366810429BA + Track TypeRemote + Apple Music + + 6307 + + Track ID6307 + NameHave Faith + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size8712292 + Total Time246893 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3783778797 + Play Date UTC2023-11-25T14:39:57Z + Release Date2016-07-18T12:00:00Z + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameHave Faith + Persistent ID8384BD32EB1AF748 + Track TypeRemote + Apple Music + + 6309 + + Track ID6309 + NameBlackheath + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size9650835 + Total Time276760 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3777135749 + Play Date UTC2023-09-09T17:22:29Z + Release Date2016-11-04T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameBlackheath + Persistent ID7D291AC9B9418593 + Track TypeRemote + Apple Music + + 6311 + + Track ID6311 + NameHoly Smoke + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Will Dorey & Matt Hodges + AlbumSo Long Forever + GenreAlternative + KindApple Music AAC audio file + Size7101921 + Total Time198013 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2016 + Date Modified2022-12-23T11:16:46Z + Date Added2022-12-23T11:16:46Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3780195159 + Play Date UTC2023-10-15T03:12:39Z + Release Date2016-09-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSo Long Forever + Sort ArtistPalace + Sort NameHoly Smoke + Persistent ID8E42E92B315CC143 + Track TypeRemote + Apple Music + + 6313 + + Track ID6313 + NameGhost! + ArtistKid Cudi + Album ArtistKid Cudi + ComposerScott Mescudi, E. Haynie, Rusty Evans, Victoria Pike & Teddy Randazzo + AlbumMan On the Moon II: The Legend of Mr. Rager + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10250171 + Total Time289067 + Disc Number1 + Disc Count1 + Track Number16 + Track Count17 + Year2010 + Date Modified2022-12-27T17:41:34Z + Date Added2022-12-27T17:41:34Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3781520001 + Play Date UTC2023-10-30T11:13:21Z + Skip Count1 + Skip Date2023-01-08T19:34:11Z + Release Date2010-01-01T12:00:00Z + Artwork Count1 + Sort AlbumMan On the Moon II: The Legend of Mr. Rager + Sort ArtistKid Cudi + Sort NameGhost! + Persistent ID9771D106081D3863 + Track TypeRemote + Apple Music + + 6315 + + Track ID6315 + Name4:44 + ArtistJAY-Z + Album ArtistJAY-Z + ComposerShawn Carter, Kanan Keeney & No ID + Album4:44 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9974196 + Total Time284496 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2017 + Date Modified2022-12-27T18:02:09Z + Date Added2022-12-27T18:02:09Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3772792387 + Play Date UTC2023-07-21T10:53:07Z + Skip Count2 + Skip Date2023-01-14T21:37:27Z + Release Date2017-06-30T12:00:00Z + Artwork Count1 + Sort Album4:44 + Sort ArtistJAY-Z + Sort Name4:44 + Persistent IDE61BF8642A8E5A09 + Explicit + Track TypeRemote + Apple Music + + 6317 + + Track ID6317 + NameStargirl Interlude (feat. Lana Del Rey) + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerLana Del Rey, The Weeknd, Martin McKinney & Timothy Mckenzie + AlbumStarboy + GenreR&B/Soul + KindApple Music AAC audio file + Size4269635 + Total Time111611 + Disc Number1 + Disc Count1 + Track Number8 + Track Count18 + Year2016 + Date Modified2022-12-28T16:46:16Z + Date Added2022-12-28T16:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count61 + Play Date3783779221 + Play Date UTC2023-11-25T14:47:01Z + Skip Count1 + Skip Date2022-12-30T16:14:00Z + Release Date2016-11-25T12:00:00Z + Loved + Artwork Count1 + Sort AlbumStarboy + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort NameStargirl Interlude (feat. Lana Del Rey) + Persistent ID71070213E29F9BB4 + Track TypeRemote + Apple Music + + 6319 + + Track ID6319 + NameA Real Hero + ArtistCollege & Electric Youth + Album ArtistCollege & Electric Youth + AlbumA Real Hero - Single + GenreDance + KindApple Music AAC audio file + Size9360337 + Total Time267848 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2010 + Date Modified2023-01-04T20:44:51Z + Date Added2023-01-04T20:44:51Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3767085031 + Play Date UTC2023-05-16T09:30:31Z + Release Date2010-01-11T12:00:00Z + Loved + Artwork Count1 + Sort AlbumA Real Hero - Single + Sort ArtistCollege & Electric Youth + Sort NameReal Hero + Persistent IDA46A228ABA734A93 + Track TypeRemote + Apple Music + + 6321 + + Track ID6321 + NameExonerate (Stripped) + ArtistThe Hails + Album ArtistThe Hails + ComposerRobert Kingsley & Dylan McCue + AlbumExonerate (Stripped) - Single + GenreAlternative + KindApple Music AAC audio file + Size7404909 + Total Time210000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2023-01-06T21:22:00Z + Date Added2023-01-06T21:22:00Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3778570843 + Play Date UTC2023-09-26T08:00:43Z + Release Date2022-12-09T12:00:00Z + Artwork Count1 + Sort AlbumExonerate (Stripped) - Single + Sort Album ArtistHails + Sort ArtistHails + Sort NameExonerate (Stripped) + Persistent IDC4C41748C24B345B + Track TypeRemote + Apple Music + + 6323 + + Track ID6323 + NameI Was Never There + ArtistThe Weeknd & Gesaffelstein + Album ArtistThe Weeknd + ComposerGesaffelstein, The Weeknd & Frank Dukes + AlbumMy Dear Melancholy, + GenreR&B/Soul + KindApple Music AAC audio file + Size8644174 + Total Time241070 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2018 + Date Modified2023-01-08T15:09:51Z + Date Added2023-01-08T15:09:51Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3783455371 + Play Date UTC2023-11-21T20:49:31Z + Release Date2018-03-30T12:00:00Z + Artwork Count1 + Sort AlbumMy Dear Melancholy, + Sort Album ArtistWeeknd + Sort ArtistWeeknd & Gesaffelstein + Sort NameI Was Never There + Persistent IDFC5C51F573F381B6 + Track TypeRemote + Apple Music + + 6325 + + Track ID6325 + NameNights + ArtistFrank Ocean + Album ArtistFrank Ocean + AlbumBlonde + GenrePop + KindApple Music AAC audio file + Size10665613 + Total Time307151 + Disc Number1 + Disc Count1 + Track Number9 + Track Count17 + Year2016 + Date Modified2023-01-08T21:05:07Z + Date Added2023-01-08T21:05:07Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3773543718 + Play Date UTC2023-07-30T03:35:18Z + Release Date2016-08-20T07:00:00Z + Artwork Count1 + Sort AlbumBlonde + Sort ArtistFrank Ocean + Sort NameNights + Persistent ID9ADAAC38A59B2792 + Explicit + Track TypeRemote + Apple Music + + 6327 + + Track ID6327 + Namemidnight sun (reflects) [acoustic version] + ArtistNilüfer Yanya + Album ArtistNilüfer Yanya + ComposerNilüfer Yanya & Will Archer + AlbumPAINLESS (Deluxe Edition) + GenreAlternative + KindApple Music AAC audio file + Size11141317 + Total Time295341 + Disc Number1 + Disc Count1 + Track Number14 + Track Count18 + Year2022 + Date Modified2023-01-14T08:26:50Z + Date Added2023-01-14T08:26:50Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count34 + Play Date3776604021 + Play Date UTC2023-09-03T13:40:21Z + Release Date2022-12-14T12:00:00Z + Loved + Artwork Count1 + Sort AlbumPAINLESS (Deluxe Edition) + Sort ArtistNilüfer Yanya + Sort Namemidnight sun (reflects) [acoustic version] + Persistent ID8294FCDDDB85726C + Track TypeRemote + Apple Music + + 6329 + + Track ID6329 + NamePassion + ArtistBONES & Slim Guerilla + Album ArtistBONES + Album2MillionBlunts + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6981895 + Total Time195056 + Disc Number1 + Disc Count1 + Track Number6 + Track Count19 + Year2022 + Date Modified2023-01-14T09:21:02Z + Date Added2023-01-14T09:21:02Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count37 + Play Date3780247583 + Play Date UTC2023-10-15T17:46:23Z + Release Date2022-10-31T12:00:00Z + Artwork Count1 + Sort Album2MillionBlunts + Sort ArtistBONES & Slim Guerilla + Sort NamePassion + Persistent ID2D7C88D99EAFD97C + Explicit + Track TypeRemote + Apple Music + + 6331 + + Track ID6331 + NameMoney Trees (feat. Jay Rock) + ArtistKendrick Lamar + Album ArtistKendrick Lamar + ComposerKendrick Lamar, D. Natche, Johnny McKinzie, V. Garance, A. Legrand & Alex Scally + Albumgood kid, m.A.A.d city (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size13550144 + Total Time386905 + Disc Number1 + Disc Count1 + Track Number5 + Track Count19 + Year2012 + Date Modified2023-01-18T22:08:06Z + Date Added2023-01-18T22:08:06Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3781059297 + Play Date UTC2023-10-25T03:14:57Z + Skip Count2 + Skip Date2023-04-28T17:04:37Z + Release Date2012-01-01T12:00:00Z + Artwork Count1 + Sort Albumgood kid, m.A.A.d city (Deluxe) + Sort ArtistKendrick Lamar + Sort NameMoney Trees (feat. Jay Rock) + Persistent ID9EB268B7B2446CFB + Explicit + Track TypeRemote + Apple Music + + 6333 + + Track ID6333 + NameThe Motorcycle Song + ArtistAcid Ghost + Album ArtistAcid Ghost + ComposerAce Barcelon + Album- + GenreRock + KindApple Music AAC audio file + Size9011329 + Total Time253333 + Disc Number1 + Disc Count1 + Track Number4 + Track Count8 + Year2023 + Date Modified2023-01-20T21:00:56Z + Date Added2023-01-20T21:00:56Z + Bit Rate256 + Sample Rate44100 + Play Count56 + Play Date3781387531 + Play Date UTC2023-10-28T22:25:31Z + Release Date2023-01-18T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Album- + Sort ArtistAcid Ghost + Sort NameMotorcycle Song + Persistent ID69F917ABCDC82AE1 + Track TypeRemote + Apple Music + + 6335 + + Track ID6335 + NameEve II + ArtistMileena + Album ArtistMileena + ComposerIsaac Teague, Jason Abanador, Mileena Trinidad Sobreira-Yousufy, Hans Li & Felix Fox-Pappas + AlbumEve II - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size6727032 + Total Time190499 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-01-20T21:53:57Z + Date Added2023-01-20T21:53:57Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781060772 + Play Date UTC2023-10-25T03:39:32Z + Release Date2023-01-13T12:00:00Z + Artwork Count1 + Sort AlbumEve II - Single + Sort ArtistMileena + Sort NameEve II + Persistent IDDDA3A0C25BC19CAD + Track TypeRemote + Apple Music + + 6337 + + Track ID6337 + NameFeelings + ArtistJay Prince & Tiny Spys + Album ArtistJay Prince & Tiny Spys + ComposerJazon Kawu-Eugenio & Dominique Sanders + AlbumAdventures Of You - Single + GenreAlternative + KindApple Music AAC audio file + Size6938686 + Total Time190250 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2022 + Date Modified2023-01-21T08:53:25Z + Date Added2023-01-21T08:53:25Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count37 + Play Date3780500972 + Play Date UTC2023-10-18T16:09:32Z + Release Date2022-12-09T12:00:00Z + Artwork Count1 + Sort AlbumAdventures Of You - Single + Sort ArtistJay Prince & Tiny Spys + Sort NameFeelings + Persistent IDAE3E58DA79F4927C + Track TypeRemote + Apple Music + + 6339 + + Track ID6339 + NameSeen It All Before + ArtistPouya & Delmar + Album ArtistPouya & Delmar + ComposerPouya, Christian Carcamo & Luke Wild + AlbumSeen It All Before - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7060202 + Total Time187768 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-01-21T10:02:53Z + Date Added2023-01-21T10:02:53Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3774967094 + Play Date UTC2023-08-15T14:58:14Z + Release Date2023-01-13T12:00:00Z + Artwork Count1 + Sort AlbumSeen It All Before - Single + Sort ArtistPouya & Delmar + Sort NameSeen It All Before + Persistent ID58DECAF47B16B45B + Track TypeRemote + Apple Music + + 6341 + + Track ID6341 + NameFat Head + ArtistJakey + Album ArtistJakey + ComposerJacob Matthew Christensen + AlbumRomcom + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9745822 + Total Time276654 + Disc Number1 + Disc Count1 + Track Number8 + Track Count8 + Year2022 + Date Modified2023-01-21T10:08:22Z + Date Added2023-01-21T10:08:22Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3782894474 + Play Date UTC2023-11-15T09:01:14Z + Release Date2022-11-18T12:00:00Z + Artwork Count1 + Sort AlbumRomcom + Sort ArtistJakey + Sort NameFat Head + Persistent ID59201F31010195EF + Explicit + Track TypeRemote + Apple Music + + 6343 + + Track ID6343 + NameBeliever + ArtistSYML + Album ArtistSYML + ComposerBrian Fennell + AlbumThe Day My Father Died + GenreAlternative + KindApple Music AAC audio file + Size9370639 + Total Time263253 + Disc Number1 + Disc Count1 + Track Number2 + Track Count15 + Year2023 + Date Modified2023-01-21T11:53:31Z + Date Added2023-01-21T11:53:31Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3774966633 + Play Date UTC2023-08-15T14:50:33Z + Release Date2023-01-06T08:00:00Z + Artwork Count1 + Sort AlbumThe Day My Father Died + Sort ArtistSYML + Sort NameBeliever + Persistent ID554EE7BB871FCE35 + Track TypeRemote + Apple Music + + 6345 + + Track ID6345 + NameShadows + ArtistCHRIS YONGE + Album ArtistCHRIS YONGE + ComposerChris Stiliadis & René Datz + AlbumShadows - Single + GenreAlternative + KindApple Music AAC audio file + Size6969910 + Total Time187842 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-01-21T12:01:52Z + Date Added2023-01-21T12:01:52Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3776326295 + Play Date UTC2023-08-31T08:31:35Z + Release Date2023-01-13T12:00:00Z + Artwork Count1 + Sort AlbumShadows - Single + Sort ArtistCHRIS YONGE + Sort NameShadows + Persistent IDDAB9A3EBE19FB10A + Track TypeRemote + Apple Music + + 6347 + + Track ID6347 + NameAll Gone (Aftermath) + ArtistGustavo Santaolalla + Album ArtistGustavo Santaolalla + ComposerGustavo Santaolalla + AlbumThe Last of Us (Video Game Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size2693751 + Total Time64440 + Disc Number1 + Disc Count1 + Track Number18 + Track Count30 + Year2013 + Date Modified2023-01-25T09:41:29Z + Date Added2023-01-25T09:41:29Z + Bit Rate256 + Sample Rate44100 + Play Count44 + Play Date3781437341 + Play Date UTC2023-10-29T12:15:41Z + Release Date2013-06-07T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumLast of Us (Video Game Soundtrack) + Sort ArtistGustavo Santaolalla + Sort NameAll Gone (Aftermath) + Persistent ID01EC9AE222AECE98 + Track TypeRemote + Apple Music + + 6349 + + Track ID6349 + NameThe Last of Us + ArtistGustavo Santaolalla + Album ArtistGustavo Santaolalla + ComposerGustavo Santaolalla + AlbumThe Last of Us (Video Game Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size6802734 + Total Time183533 + Disc Number1 + Disc Count1 + Track Number3 + Track Count30 + Year2013 + Date Modified2023-01-25T15:50:44Z + Date Added2023-01-25T15:50:44Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780772171 + Play Date UTC2023-10-21T19:29:31Z + Release Date2013-06-07T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumThe Last of Us (Video Game Soundtrack) + Sort ArtistGustavo Santaolalla + Sort NameLast of Us + Persistent ID9424D28930EDCB0E + Track TypeRemote + Apple Music + + 6351 + + Track ID6351 + NameThe Choice + ArtistGustavo Santaolalla + Album ArtistGustavo Santaolalla + ComposerGustavo Santaolalla + AlbumThe Last of Us (Video Game Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size4001033 + Total Time102373 + Disc Number1 + Disc Count1 + Track Number11 + Track Count30 + Year2013 + Date Modified2023-01-25T16:05:17Z + Date Added2023-01-25T16:05:17Z + Bit Rate256 + Sample Rate44100 + Play Count28 + Play Date3783492744 + Play Date UTC2023-11-22T07:12:24Z + Skip Count1 + Skip Date2023-01-25T16:51:41Z + Release Date2013-06-07T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumThe Last of Us (Video Game Soundtrack) + Sort ArtistGustavo Santaolalla + Sort NameChoice + Persistent ID48012B626A0591AF + Track TypeRemote + Apple Music + + 6353 + + Track ID6353 + NameThe Night King + ArtistRamin Djawadi + Album ArtistRamin Djawadi + ComposerRamin Djawadi + AlbumGame of Thrones: Season 8 (Music from the HBO Series) + GenreSoundtrack + KindApple Music AAC audio file + Size18391422 + Total Time530532 + Disc Number1 + Disc Count1 + Track Number13 + Track Count32 + Year2019 + Date Modified2023-01-26T07:51:19Z + Date Added2023-01-26T07:51:19Z + Bit Rate256 + Sample Rate44100 + Play Count20 + Play Date3782979661 + Play Date UTC2023-11-16T08:41:01Z + Release Date2019-04-28T12:00:00Z + Rating100 + Album Rating100 + Album Rating Computed + Loved + Compilation + Artwork Count1 + Sort AlbumGame of Thrones: Season 8 (Music from the HBO Series) + Sort ArtistRamin Djawadi + Sort NameNight King + Persistent ID1313C08A2CC9211F + Track TypeRemote + Apple Music + + 6355 + + Track ID6355 + NameRabbot Ho + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Dennis Hamm + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size1865869 + Total Time38602 + Disc Number1 + Disc Count1 + Track Number1 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3776346502 + Play Date UTC2023-08-31T14:08:22Z + Skip Count3 + Skip Date2023-05-07T14:13:30Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameRabbot Ho + Persistent ID0A3AACE850673D78 + Track TypeRemote + Apple Music + + 6357 + + Track ID6357 + NameBus In These Streets + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Louis Cole + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size5316320 + Total Time144197 + Disc Number1 + Disc Count1 + Track Number4 + Track Count23 + Year2016 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3773757711 + Play Date UTC2023-08-01T15:01:51Z + Skip Count1 + Skip Date2023-03-08T08:17:57Z + Release Date2016-08-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameBus In These Streets + Persistent ID448622491362ED94 + Track TypeRemote + Apple Music + + 6359 + + Track ID6359 + NameA Fan's Mail (Tron Song Suite II) + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Mark Spears + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size6163751 + Total Time158938 + Disc Number1 + Disc Count1 + Track Number5 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3783665916 + Play Date UTC2023-11-24T07:18:36Z + Skip Count2 + Skip Date2023-02-11T09:27:27Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameFan's Mail (Tron Song Suite II) + Persistent IDC746416996F5A435 + Track TypeRemote + Apple Music + + 6361 + + Track ID6361 + NameLava Lamp + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Mark Spears + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size6509918 + Total Time178570 + Disc Number1 + Disc Count1 + Track Number6 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780415270 + Play Date UTC2023-10-17T16:21:10Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameLava Lamp + Persistent ID28CADEE05C760034 + Track TypeRemote + Apple Music + + 6363 + + Track ID6363 + NameJethro + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Steven Ellison + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size3811014 + Total Time94897 + Disc Number1 + Disc Count1 + Track Number7 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3767612810 + Play Date UTC2023-05-22T12:06:50Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameJethro + Persistent ID1331279015CACE4D + Track TypeRemote + Apple Music + + 6365 + + Track ID6365 + NameDay & Night + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Sanaa Burris + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size1767429 + Total Time37397 + Disc Number1 + Disc Count1 + Track Number8 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3770359219 + Play Date UTC2023-06-23T07:00:19Z + Skip Count2 + Skip Date2023-03-02T08:33:13Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameDay & Night + Persistent ID612D96D28DFFA9EF + Track TypeRemote + Apple Music + + 6367 + + Track ID6367 + NameShow You the Way (feat. Michael McDonald & Kenny Loggins) + ArtistThundercat + Album ArtistThundercat + ComposerMichael McDonald, Kenny Loggins & Stephen Bruner + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size7670826 + Total Time214554 + Disc Number1 + Disc Count1 + Track Number9 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3776148723 + Play Date UTC2023-08-29T07:12:03Z + Release Date2017-01-25T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameShow You the Way (feat. Michael McDonald & Kenny Loggins) + Persistent ID38C46D21E7320C56 + Track TypeRemote + Apple Music + + 6369 + + Track ID6369 + NameWalk On By (feat. Kendrick Lamar) + ArtistThundercat + Album ArtistThundercat + ComposerKendrick Lamar & Stephen Bruner + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size7153400 + Total Time199137 + Disc Number1 + Disc Count1 + Track Number10 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3781205763 + Play Date UTC2023-10-26T19:56:03Z + Skip Count1 + Skip Date2023-03-07T05:21:06Z + Release Date2017-02-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameWalk On By (feat. Kendrick Lamar) + Persistent IDAEA5AAC497B6AE90 + Explicit + Track TypeRemote + Apple Music + + 6371 + + Track ID6371 + NameBlackkk + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Mark Spears + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size5037769 + Total Time119761 + Disc Number1 + Disc Count1 + Track Number11 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3770534856 + Play Date UTC2023-06-25T07:47:36Z + Skip Count1 + Skip Date2023-10-26T13:18:35Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameBlackkk + Persistent ID7E06F5646D2ADF92 + Track TypeRemote + Apple Music + + 6373 + + Track ID6373 + NameTokyo + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Dennis Hamm + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size5373899 + Total Time144941 + Disc Number1 + Disc Count1 + Track Number12 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3762699874 + Play Date UTC2023-03-26T15:24:34Z + Skip Count1 + Skip Date2023-03-27T08:14:46Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameTokyo + Persistent ID641F28F463458581 + Explicit + Track TypeRemote + Apple Music + + 6375 + + Track ID6375 + NameJameel's Space Ride + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Louis Cole + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size2888832 + Total Time69234 + Disc Number1 + Disc Count1 + Track Number13 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3780831961 + Play Date UTC2023-10-22T12:06:01Z + Skip Count2 + Skip Date2023-05-30T14:44:33Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameJameel's Space Ride + Persistent IDCE405E0A0752CEE5 + Explicit + Track TypeRemote + Apple Music + + 6377 + + Track ID6377 + NameFriend Zone + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Charles Dickerson + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size6969265 + Total Time192511 + Disc Number1 + Disc Count1 + Track Number14 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3767073523 + Play Date UTC2023-05-16T06:18:43Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameFriend Zone + Persistent ID00FD8696151BB314 + Track TypeRemote + Apple Music + + 6379 + + Track ID6379 + NameThem Changes + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner, Steven Ellison, Chris Jasper, Ernie Isley, Marvin Isley, O'Kelly Isley, Ronald Isley & Rudolph Isley + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size6783110 + Total Time188454 + Disc Number1 + Disc Count1 + Track Number15 + Track Count23 + Year2015 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3780296215 + Play Date UTC2023-10-16T07:16:55Z + Skip Count2 + Skip Date2023-10-29T15:51:53Z + Release Date2015-06-22T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameThem Changes + Persistent ID70FA581AC81E426F + Track TypeRemote + Apple Music + + 6381 + + Track ID6381 + NameWhere I'm Going + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Steven Ellison + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size4824266 + Total Time129759 + Disc Number1 + Disc Count1 + Track Number16 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3780663197 + Play Date UTC2023-10-20T13:13:17Z + Release Date2017-02-24T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameWhere I'm Going + Persistent IDFDA6F426A8852F12 + Track TypeRemote + Apple Music + + 6383 + + Track ID6383 + NameDrink Dat (feat. Wiz Khalifa) + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner, Cameron Thomaz & Taylor Graves + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size7742937 + Total Time215163 + Disc Number1 + Disc Count1 + Track Number17 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3762700669 + Play Date UTC2023-03-26T15:37:49Z + Skip Count1 + Skip Date2023-10-25T09:22:09Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameDrink Dat (feat. Wiz Khalifa) + Persistent IDDE8CB738587ABE79 + Explicit + Track TypeRemote + Apple Music + + 6385 + + Track ID6385 + NameInferno + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & S Bruner + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size8523117 + Total Time240902 + Disc Number1 + Disc Count1 + Track Number18 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3780192703 + Play Date UTC2023-10-15T02:31:43Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameInferno + Persistent ID07C19FE91B96FB3C + Track TypeRemote + Apple Music + + 6387 + + Track ID6387 + NameI Am Crazy + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size1384571 + Total Time25870 + Disc Number1 + Disc Count1 + Track Number19 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3767702375 + Play Date UTC2023-05-23T12:59:35Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameI Am Crazy + Persistent ID06234CDDBD13D90E + Explicit + Track TypeRemote + Apple Music + + 6389 + + Track ID6389 + Name3AM + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Steven Ellison + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size3025214 + Total Time75154 + Disc Number1 + Disc Count1 + Track Number20 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3768982814 + Play Date UTC2023-06-07T08:40:14Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort Name3AM + Persistent ID654A2DF8D9158730 + Track TypeRemote + Apple Music + + 6391 + + Track ID6391 + NameDrunk + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Steven Ellison + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size3904694 + Total Time102378 + Disc Number1 + Disc Count1 + Track Number21 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3781616737 + Play Date UTC2023-10-31T14:05:37Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameDrunk + Persistent ID3D4B235ECF3762CA + Track TypeRemote + Apple Music + + 6393 + + Track ID6393 + NameThe Turn Down (feat. Pharrell) + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Pharrell Williams + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size5628991 + Total Time149085 + Disc Number1 + Disc Count1 + Track Number22 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3781868104 + Play Date UTC2023-11-03T11:55:04Z + Skip Count1 + Skip Date2023-07-09T08:39:32Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameTurn Down (feat. Pharrell) + Persistent IDB8AB4ADC9474DA53 + Explicit + Track TypeRemote + Apple Music + + 6395 + + Track ID6395 + NameDUI + ArtistThundercat + Album ArtistThundercat + ComposerStephen Bruner & Dennis Hamm + AlbumDrunk + GenreR&B/Soul + KindApple Music AAC audio file + Size5092412 + Total Time138223 + Disc Number1 + Disc Count1 + Track Number23 + Track Count23 + Year2017 + Date Modified2023-01-26T10:46:16Z + Date Added2023-01-26T10:46:16Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3777365141 + Play Date UTC2023-09-12T09:05:41Z + Skip Count1 + Skip Date2023-03-25T08:03:51Z + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumDrunk + Sort ArtistThundercat + Sort NameDUI + Persistent ID79902913F324319E + Explicit + Track TypeRemote + Apple Music + + 6397 + + Track ID6397 + NamePyramids + ArtistFrank Ocean + Album ArtistFrank Ocean + ComposerMalay, Frank Ocean & Taylor Johnson + Albumchannel ORANGE + GenrePop + KindApple Music AAC audio file + Size20333981 + Total Time592920 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2012 + Date Modified2023-01-29T07:40:11Z + Date Added2023-01-29T07:40:11Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3767271243 + Play Date UTC2023-05-18T13:14:03Z + Skip Count2 + Skip Date2023-02-23T18:18:45Z + Release Date2012-06-08T07:00:00Z + Artwork Count1 + Sort Albumchannel ORANGE + Sort ArtistFrank Ocean + Sort NamePyramids + Persistent ID239FFB4E4112C0D0 + Explicit + Track TypeRemote + Apple Music + + 6399 + + Track ID6399 + NameTime Moves Slow + ArtistBADBADNOTGOOD & Samuel T. Herring + Album ArtistBADBADNOTGOOD + ComposerChester Hansen + AlbumIV + GenreJazz + KindApple Music AAC audio file + Size9618206 + Total Time273864 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2016 + Date Modified2023-01-29T08:03:27Z + Date Added2023-01-29T08:03:27Z + Bit Rate256 + Sample Rate44100 + Play Count30 + Play Date3781386909 + Play Date UTC2023-10-28T22:15:09Z + Skip Count1 + Skip Date2023-02-13T11:25:51Z + Release Date2016-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumIV + Sort ArtistBADBADNOTGOOD & Samuel T. Herring + Sort NameTime Moves Slow + Persistent IDAEEE8BE9777D9DA4 + Track TypeRemote + + 6401 + + Track ID6401 + NameTrust + ArtistBrent Faiyaz + Album ArtistBrent Faiyaz + ComposerChristopher Brent Wood + AlbumLost - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size5670717 + Total Time158421 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2018 + Date Modified2023-01-29T08:16:32Z + Date Added2023-01-29T08:16:32Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3778766618 + Play Date UTC2023-09-28T14:23:38Z + Release Date2018-10-19T12:00:00Z + Artwork Count1 + Sort AlbumLost - EP + Sort ArtistBrent Faiyaz + Sort NameTrust + Persistent ID3B86DBF9A3456E12 + Explicit + Track TypeRemote + Apple Music + + 6403 + + Track ID6403 + NamePRICE OF FAME + ArtistBrent Faiyaz + Album ArtistBrent Faiyaz + ComposerBrent Faiyaz + AlbumWASTELAND + GenreR&B/Soul + KindApple Music AAC audio file + Size13254779 + Total Time379004 + Disc Number1 + Disc Count1 + Track Number7 + Track Count19 + Year2022 + Date Modified2023-01-29T11:23:03Z + Date Added2023-01-29T11:23:03Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3781061151 + Play Date UTC2023-10-25T03:45:51Z + Release Date2022-06-24T07:00:00Z + Artwork Count1 + Sort AlbumWASTELAND + Sort ArtistBrent Faiyaz + Sort NamePRICE OF FAME + Persistent ID999947C7613C8A8E + Explicit + Track TypeRemote + Apple Music + + 6405 + + Track ID6405 + NameSearchin + ArtistSonder + Album ArtistSonder + AlbumInto + GenreR&B/Soul + KindApple Music AAC audio file + Size9290998 + Total Time264242 + Disc Number1 + Disc Count1 + Track Number6 + Track Count7 + Year2017 + Date Modified2023-01-29T11:29:19Z + Date Added2023-01-29T11:29:19Z + Bit Rate256 + Sample Rate44100 + Play Count32 + Play Date3781198582 + Play Date UTC2023-10-26T17:56:22Z + Release Date2017-01-27T12:00:00Z + Artwork Count1 + Sort AlbumInto + Sort ArtistSonder + Sort NameSearchin + Persistent ID4240CF4AE705606F + Track TypeRemote + Apple Music + + 6407 + + Track ID6407 + NameLife is but a Stream~ + Artist$uicideboy$ + Album Artist$uicideboy$ + ComposerAristos Petrou & Scott Arceneaux Jr. + AlbumLong Term Effects of SUFFERING + GenreHip-Hop + KindApple Music AAC audio file + Size4589417 + Total Time122880 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2021 + Date Modified2023-02-01T22:23:07Z + Date Added2023-02-01T22:23:07Z + Bit Rate256 + Sample Rate44100 + Play Count31 + Play Date3777564830 + Play Date UTC2023-09-14T16:33:50Z + Skip Count1 + Skip Date2023-02-03T17:45:42Z + Release Date2021-08-12T12:00:00Z + Loved + Artwork Count1 + Sort AlbumLong Term Effects of SUFFERING + Sort Artist$uicideboy$ + Sort NameLife is but a Stream~ + Persistent IDB2E96015620709BE + Clean + Track TypeRemote + Apple Music + + 6409 + + Track ID6409 + NamePush + ArtistFog Lake + Album ArtistFog Lake + AlbumDragonchaser + GenreAlternative + KindApple Music AAC audio file + Size6781019 + Total Time182749 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2016 + Date Modified2023-02-02T15:04:33Z + Date Added2023-02-02T15:04:33Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3781185552 + Play Date UTC2023-10-26T14:19:12Z + Skip Count1 + Skip Date2023-02-06T19:28:42Z + Release Date2016-04-12T12:00:00Z + Artwork Count1 + Sort AlbumDragonchaser + Sort ArtistFog Lake + Sort NamePush + Persistent ID1597B24D75CDC528 + Track TypeRemote + Apple Music + + 6411 + + Track ID6411 + NameAs Always + ArtistHibou + Album ArtistHibou + ComposerPeter Michel + AlbumHalve + GenreIndie Rock + KindApple Music AAC audio file + Size7807084 + Total Time220440 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2019 + Date Modified2023-02-02T15:13:26Z + Date Added2023-02-02T15:13:26Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3776335116 + Play Date UTC2023-08-31T10:58:36Z + Release Date2019-06-28T12:00:00Z + Artwork Count1 + Sort AlbumHalve + Sort ArtistHibou + Sort NameAs Always + Persistent ID71E90741AE83A93E + Track TypeRemote + Apple Music + + 6413 + + Track ID6413 + NameApocalypse + ArtistCigarettes After Sex + Album ArtistCigarettes After Sex + ComposerGregory Steven Gonzalez + AlbumCigarettes After Sex + GenreAlternative + KindApple Music AAC audio file + Size10135492 + Total Time290147 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2017 + Date Modified2023-02-02T15:22:02Z + Date Added2023-02-02T15:22:02Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count44 + Play Date3781188337 + Play Date UTC2023-10-26T15:05:37Z + Release Date2017-03-21T12:00:00Z + Artwork Count1 + Sort AlbumCigarettes After Sex + Sort ArtistCigarettes After Sex + Sort NameApocalypse + Persistent ID3EC53B60657B58B3 + Track TypeRemote + Apple Music + + 6415 + + Track ID6415 + NameReflex + ArtistSAINt JHN + Album ArtistSAINt JHN + ComposerCarlos St. John & Lee Stashenko + AlbumCollection One + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8644358 + Total Time241842 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2016 + Date Modified2023-02-10T13:49:13Z + Date Added2023-02-10T13:49:13Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3775211520 + Play Date UTC2023-08-18T10:52:00Z + Release Date2016-09-23T12:00:00Z + Album Rating100 + Album Rating Computed + Compilation + Artwork Count1 + Sort AlbumCollection One + Sort ArtistSAINt JHN + Sort NameReflex + Persistent ID38F7DEDA20A20CBB + Explicit + Track TypeRemote + Apple Music + + 6417 + + Track ID6417 + NameDon't Come Out the House (feat. 21 Savage) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Shéyaa Bin Abraham-Joseph & Brytavious Lakeith Chambers + AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6192712 + Total Time168347 + Disc Number1 + Disc Count2 + Track Number3 + Track Count13 + Year2018 + Date Modified2023-02-11T17:11:25Z + Date Added2023-02-11T17:11:25Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3783781596 + Play Date UTC2023-11-25T15:26:36Z + Release Date2018-11-02T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + Sort ArtistMetro Boomin + Sort NameDon't Come Out the House (feat. 21 Savage) + Persistent ID24EC89EEDD02F396 + Explicit + Track TypeRemote + Apple Music + + 6419 + + Track ID6419 + NameSold Out Dates (feat. Lil Baby) + ArtistGunna + Album ArtistGunna + AlbumSold Out Dates (feat. Lil Baby) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6053229 + Total Time166368 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Date Modified2023-02-12T14:28:54Z + Date Added2023-02-12T14:28:54Z + Bit Rate256 + Sample Rate44100 + Play Count43 + Play Date3783778549 + Play Date UTC2023-11-25T14:35:49Z + Release Date2018-04-16T12:00:00Z + Artwork Count1 + Sort AlbumSold Out Dates (feat. Lil Baby) - Single + Sort ArtistGunna + Sort NameSold Out Dates (feat. Lil Baby) + Persistent ID2D41C3518FD76A63 + Explicit + Track TypeRemote + Apple Music + + 6421 + + Track ID6421 + NameNo Other + ArtistPalace + Album ArtistPalace + ComposerLeo Wyndham, Rupert Turner, Matt Hodges & Harry Deacon + AlbumLife After + GenreAlternative + KindApple Music AAC audio file + Size8318300 + Total Time233200 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2019 + Date Modified2023-02-14T12:49:38Z + Date Added2023-02-14T12:49:38Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3768570753 + Play Date UTC2023-06-02T14:12:33Z + Release Date2019-02-26T08:00:00Z + Loved + Artwork Count1 + Sort AlbumLife After + Sort ArtistPalace + Sort NameNo Other + Persistent ID1F0981BD4AC555D7 + Track TypeRemote + Apple Music + + 6423 + + Track ID6423 + NameRainy Day Loop + ArtistSALES + Album ArtistSALES + AlbumForever & Ever + GenrePop + KindApple Music AAC audio file + Size7669361 + Total Time222000 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2018 + Date Modified2023-02-14T12:54:51Z + Date Added2023-02-14T12:54:51Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3780910929 + Play Date UTC2023-10-23T10:02:09Z + Skip Count1 + Skip Date2023-02-22T07:48:02Z + Release Date2018-07-19T12:00:00Z + Loved + Artwork Count1 + Sort AlbumForever & Ever + Sort ArtistSALES + Sort NameRainy Day Loop + Persistent ID63F5F99D2BAFF020 + Track TypeRemote + Apple Music + + 6425 + + Track ID6425 + NameStranger + ArtistMild Orange + Album ArtistMild Orange + ComposerJack Ferguson, Mehrtens Josh, Tom Kelk & Josh Reid + AlbumForeplay + GenreAlternative + KindApple Music AAC audio file + Size8012024 + Total Time218370 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2017 + Date Modified2023-02-14T14:11:26Z + Date Added2023-02-14T14:11:26Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count34 + Play Date3780127835 + Play Date UTC2023-10-14T08:30:35Z + Release Date2017-10-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumForeplay + Sort ArtistMild Orange + Sort NameStranger + Persistent ID0CCEE9CEBB4B5966 + Track TypeRemote + Apple Music + + 6427 + + Track ID6427 + NameVow + ArtistSALES + Album ArtistSALES + AlbumSales - EP + GenrePop + KindApple Music AAC audio file + Size6559152 + Total Time184401 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2014 + Date Modified2023-02-14T17:46:32Z + Date Added2023-02-14T17:46:32Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3781387276 + Play Date UTC2023-10-28T22:21:16Z + Skip Count1 + Skip Date2023-02-14T19:33:19Z + Release Date2014-05-13T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSales - EP + Sort ArtistSALES + Sort NameVow + Persistent ID534FCA961F57F961 + Track TypeRemote + Apple Music + + 6429 + + Track ID6429 + NameMaybe Another Time + ArtistFeng Suave + Album ArtistFeng Suave + ComposerDaniël Schoemaker, Daniel de Jong, Adura Sulaiman & Kike Zwagerman + AlbumWarping Youth - EP + GenreAlternative + KindApple Music AAC audio file + Size6684062 + Total Time185293 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2020 + Date Modified2023-02-15T09:59:53Z + Date Added2023-02-15T09:59:53Z + Bit Rate256 + Sample Rate44100 + Play Count37 + Play Date3780918014 + Play Date UTC2023-10-23T12:00:14Z + Release Date2020-03-20T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWarping Youth - EP + Sort ArtistFeng Suave + Sort NameMaybe Another Time + Persistent ID555D1A84388B6227 + Track TypeRemote + Apple Music + + 6431 + + Track ID6431 + NameBlinding Sights (Left Me Cold in the Night) + ArtistYellow House + Album ArtistYellow House + AlbumA Carnival of Fears - EP + GenreAlternative + KindApple Music AAC audio file + Size6171625 + Total Time166287 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2017 + Date Modified2023-02-15T11:36:01Z + Date Added2023-02-15T11:36:01Z + Bit Rate256 + Sample Rate44100 + Play Count41 + Play Date3769612228 + Play Date UTC2023-06-14T15:30:28Z + Release Date2017-04-20T12:00:00Z + Loved + Artwork Count1 + Sort AlbumA Carnival of Fears - EP + Sort ArtistYellow House + Sort NameBlinding Sights (Left Me Cold in the Night) + Persistent ID03B63528AD3E2B91 + Track TypeRemote + Apple Music + + 6433 + + Track ID6433 + NameGive It All + ArtistFoals + Album ArtistFoals + ComposerJack Bevan, James Smith, Walter Gervers & Yannis Philippakis + AlbumWhat Went Down + GenreAlternative + KindApple Music AAC audio file + Size10138296 + Total Time287213 + Disc Number1 + Disc Count2 + Track Number4 + Track Count10 + Year2015 + Date Modified2023-02-27T07:58:11Z + Date Added2023-02-27T07:58:11Z + Bit Rate256 + Sample Rate44100 + Play Count47 + Play Date3783494083 + Play Date UTC2023-11-22T07:34:43Z + Release Date2015-08-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWhat Went Down + Sort ArtistFoals + Sort NameGive It All + Persistent ID3B555DCF5B6C8E9A + Track TypeRemote + Apple Music + + 6435 + + Track ID6435 + NameBacc Seat (feat. Ty Dolla $ign) + ArtistRoddy Ricch + Album ArtistRoddy Ricch + ComposerMilan Modi, Rodrick Moore & Tyrone Griffin + AlbumPlease Excuse Me For Being Antisocial + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6252077 + Total Time172320 + Disc Number1 + Disc Count1 + Track Number12 + Track Count16 + Year2019 + Date Modified2023-03-10T17:03:51Z + Date Added2023-03-10T17:03:51Z + Bit Rate256 + Sample Rate44100 + Play Count36 + Play Date3773527669 + Play Date UTC2023-07-29T23:07:49Z + Release Date2019-12-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumPlease Excuse Me For Being Antisocial + Sort ArtistRoddy Ricch + Sort NameBacc Seat (feat. Ty Dolla $ign) + Persistent ID5320D82798C6CD83 + Explicit + Track TypeRemote + Apple Music + + 6437 + + Track ID6437 + NameRoll Dice + ArtistRoddy Ricch + Album ArtistRoddy Ricch + ComposerAdarius Moragne, Aqeel Qadir Tate, Rodrick Moore & Samuel Gloade + AlbumPlease Excuse Me For Being Antisocial + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6264982 + Total Time170995 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2019 + Date Modified2023-03-10T17:06:04Z + Date Added2023-03-10T17:06:04Z + Bit Rate256 + Sample Rate44100 + Play Count39 + Play Date3780774088 + Play Date UTC2023-10-21T20:01:28Z + Skip Count3 + Skip Date2023-06-04T20:59:12Z + Release Date2019-12-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumPlease Excuse Me For Being Antisocial + Sort ArtistRoddy Ricch + Sort NameRoll Dice + Persistent ID5C42FFFF0DD6FAE1 + Explicit + Track TypeRemote + Apple Music + + 6439 + + Track ID6439 + NameMAFIA + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster, Jahaan Sweet, J. Cole & Matthew Samuels + AlbumESCAPE PLAN / MAFIA - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8741707 + Total Time240000 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2021 + Date Modified2023-03-12T17:34:51Z + Date Added2023-03-12T17:34:51Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3773234037 + Play Date UTC2023-07-26T13:33:57Z + Skip Count2 + Skip Date2023-06-04T20:59:07Z + Release Date2021-11-05T12:00:00Z + Artwork Count1 + Sort AlbumESCAPE PLAN / MAFIA - Single + Sort ArtistTravis Scott + Sort NameMAFIA + Persistent ID79B81DF97187772F + Explicit + Track TypeRemote + Apple Music + + 6441 + + Track ID6441 + NameQuiet + ArtistHashir + Album ArtistHashir + Composerhaashir butt + AlbumIn Limbo EP + GenreR&B/Soul + KindApple Music AAC audio file + Size4831402 + Total Time125221 + Disc Number1 + Disc Count1 + Track Number4 + Track Count7 + Year2019 + Date Modified2023-03-12T21:12:12Z + Date Added2023-03-12T21:12:12Z + Bit Rate256 + Sample Rate44100 + Play Count33 + Play Date3783693232 + Play Date UTC2023-11-24T14:53:52Z + Skip Count2 + Skip Date2023-06-04T20:59:01Z + Release Date2019-11-15T12:00:00Z + Artwork Count1 + Sort AlbumIn Limbo EP + Sort ArtistHashir + Sort NameQuiet + Persistent ID27D94FF23C82D990 + Explicit + Track TypeRemote + Apple Music + + 6443 + + Track ID6443 + NameDecency + ArtistBalthazar + Album ArtistBalthazar + AlbumThin Walls + GenreAlternative + KindApple Music AAC audio file + Size8484539 + Total Time239797 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2015 + Date Modified2023-03-15T07:08:00Z + Date Added2023-03-15T07:08:00Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count29 + Play Date3780135979 + Play Date UTC2023-10-14T10:46:19Z + Skip Count1 + Skip Date2023-06-04T20:58:56Z + Release Date2015-03-30T12:00:00Z + Album Loved + Artwork Count1 + Sort AlbumThin Walls + Sort ArtistBalthazar + Sort NameDecency + Persistent ID58D2EE6E88EA8A7F + Track TypeRemote + Apple Music + + 6445 + + Track ID6445 + NameBlack Beatles (feat. Gucci Mane) + ArtistRae Sremmurd + Album ArtistRae Sremmurd + ComposerAaquil Brown, Radric Davis, Michael L. Williams II & Khalif Brown + AlbumSremmLife 2 (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10293385 + Total Time291890 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2016 + Date Modified2023-03-15T21:18:55Z + Date Added2023-03-15T21:18:55Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3781204356 + Play Date UTC2023-10-26T19:32:36Z + Skip Count2 + Skip Date2023-06-04T20:58:47Z + Release Date2016-01-01T12:00:00Z + Artwork Count1 + Sort AlbumSremmLife 2 (Deluxe) + Sort ArtistRae Sremmurd + Sort NameBlack Beatles (feat. Gucci Mane) + Persistent ID285CCB91D2E0EEC0 + Clean + Track TypeRemote + Apple Music + + 6447 + + Track ID6447 + NameCreepin' (Mixed) + Artist21 Savage, The Weeknd & Metro Boomin + Album ArtistApple Music Resident DJ + AlbumToday’s Hits: December 2022 (DJ Mix) + GenrePop + KindApple Music AAC audio file + Size7491973 + Total Time206776 + Disc Number1 + Disc Count1 + Track Number14 + Track Count19 + Year2022 + Date Modified2023-03-15T22:04:24Z + Date Added2023-03-15T22:04:24Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count55 + Play Date3783775406 + Play Date UTC2023-11-25T13:43:26Z + Skip Count1 + Skip Date2023-03-23T14:52:05Z + Release Date2022-12-16T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumToday’s Hits: December 2022 (DJ Mix) + Sort Artist21 Savage, The Weeknd & Metro Boomin + Sort NameCreepin' (Mixed) + Persistent ID8FF0F192670B51EA + Explicit + Track TypeRemote + Apple Music + + 6449 + + Track ID6449 + NameHome + ArtistGustavo Santaolalla + Album ArtistGustavo Santaolalla + ComposerGustavo Santaolalla + AlbumThe Last of Us (Video Game Soundtrack) + GenreSoundtrack + KindApple Music AAC audio file + Size6753061 + Total Time187853 + Disc Number1 + Disc Count1 + Track Number16 + Track Count30 + Year2013 + Date Modified2023-03-27T18:06:56Z + Date Added2023-03-27T18:06:56Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3783413948 + Play Date UTC2023-11-21T09:19:08Z + Release Date2013-06-07T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumThe Last of Us (Video Game Soundtrack) + Sort ArtistGustavo Santaolalla + Sort NameHome + Persistent ID794E76BEBE4B06F1 + Track TypeRemote + Apple Music + + 6451 + + Track ID6451 + NameLeaving Earth + ArtistClint Mansell + Album ArtistEA Games Soundtrack + AlbumMass Effect 3 (Original Soundtrack) + GenreVideo Game + KindApple Music AAC audio file + Size4715664 + Total Time123720 + Disc Number1 + Disc Count1 + Track Number2 + Track Count23 + Year2012 + Date Modified2023-03-27T18:41:19Z + Date Added2023-03-27T18:41:19Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3772875054 + Play Date UTC2023-07-22T09:50:54Z + Skip Count1 + Skip Date2023-06-04T20:52:06Z + Release Date2012-04-24T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumMass Effect 3 (Original Soundtrack) + Sort ArtistClint Mansell + Sort NameLeaving Earth + Persistent ID7FB015FA5A15ED05 + Track TypeRemote + Apple Music + + 6453 + + Track ID6453 + NameNew Moon (The Meadow) + ArtistAlexandre Desplat + Album ArtistVarious Artists + ComposerAlexandre Desplat + AlbumThe Twilight Saga: New Moon (Deluxe Version) [Original Motion Picture Soundtrack] + GenreSoundtrack + KindApple Music AAC audio file + Size8952308 + Total Time248950 + Disc Number1 + Disc Count1 + Track Number15 + Track Count18 + Year2009 + Date Modified2023-03-27T18:51:32Z + Date Added2023-03-27T18:51:32Z + Bit Rate256 + Sample Rate44100 + Play Count23 + Play Date3776319275 + Play Date UTC2023-08-31T06:34:35Z + Skip Count1 + Skip Date2023-03-27T18:51:36Z + Release Date2009-10-09T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumThe Twilight Saga: New Moon (Deluxe Version) [Original Motion Picture Soundtrack] + Sort ArtistAlexandre Desplat + Sort NameNew Moon (The Meadow) + Persistent ID1EDA0EA563930753 + Track TypeRemote + Apple Music + + 6455 + + Track ID6455 + NameA Quiet Life + ArtistMarco Beltrami + Album ArtistMarco Beltrami + ComposerMarco Beltrami + AlbumA Quiet Place (Original Soundtrack Album) + GenreSoundtrack + KindApple Music AAC audio file + Size6427494 + Total Time178720 + Disc Number1 + Disc Count1 + Track Number4 + Track Count16 + Year2018 + Date Modified2023-03-27T19:31:53Z + Date Added2023-03-27T19:31:53Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3781081011 + Play Date UTC2023-10-25T09:16:51Z + Skip Count2 + Skip Date2023-06-15T12:53:24Z + Release Date2018-03-23T12:00:00Z + Artwork Count1 + Sort AlbumA Quiet Place (Original Soundtrack Album) + Sort ArtistMarco Beltrami + Sort NameQuiet Life + Persistent ID87FA2045B446EA8F + Track TypeRemote + Apple Music + + 6457 + + Track ID6457 + NameLighthouses + ArtistSurrenderDorothy + Album ArtistSurrenderDorothy + AlbumBreathingExercise + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4577887 + Total Time124250 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2018 + Date Modified2023-04-24T12:13:08Z + Date Added2023-04-24T12:13:08Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3775209434 + Play Date UTC2023-08-18T10:17:14Z + Skip Count3 + Skip Date2023-06-04T20:44:36Z + Release Date2018-06-08T12:00:00Z + Artwork Count1 + Sort AlbumBreathingExercise + Sort ArtistSurrenderDorothy + Sort NameLighthouses + Persistent IDD3058B06F8410785 + Track TypeRemote + Apple Music + + 6459 + + Track ID6459 + NameAll I Know + ArtistBones + Album ArtistBones + ComposerMarquis Sapp + AlbumAll I Know - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6637845 + Total Time184289 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2023-04-24T20:04:32Z + Date Added2023-04-24T20:04:32Z + Bit Rate256 + Sample Rate44100 + Play Count29 + Play Date3781395992 + Play Date UTC2023-10-29T00:46:32Z + Skip Count1 + Skip Date2023-06-04T20:44:31Z + Release Date2020-05-30T12:00:00Z + Artwork Count1 + Sort AlbumAll I Know - Single + Sort ArtistBones + Sort NameAll I Know + Persistent ID89303B27BEE5B0A5 + Explicit + Track TypeRemote + Apple Music + + 6461 + + Track ID6461 + Name10 Freaky Girls (feat. 21 Savage) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Shéyaa Bin Abraham-Joseph & Michael Jones + AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7493983 + Total Time208293 + Disc Number1 + Disc Count2 + Track Number6 + Track Count13 + Year2018 + Date Modified2023-04-24T21:08:31Z + Date Added2023-04-24T21:08:31Z + Bit Rate256 + Sample Rate44100 + Play Count27 + Play Date3780911138 + Play Date UTC2023-10-23T10:05:38Z + Skip Count1 + Skip Date2023-06-04T20:44:25Z + Release Date2018-11-02T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + Sort ArtistMetro Boomin + Sort Name10 Freaky Girls (feat. 21 Savage) + Persistent ID3B0EE1794FCD6009 + Explicit + Track TypeRemote + Apple Music + + 6463 + + Track ID6463 + NameOverdue (feat. Travis Scott) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Travis Scott, Hannah Robinson, Annie Strand & Richard Phillips + AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6096792 + Total Time166093 + Disc Number1 + Disc Count2 + Track Number2 + Track Count13 + Year2018 + Date Modified2023-04-24T21:37:49Z + Date Added2023-04-24T21:37:49Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783322786 + Play Date UTC2023-11-20T07:59:46Z + Skip Count1 + Skip Date2023-06-04T20:44:20Z + Release Date2018-11-02T07:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + Sort ArtistMetro Boomin + Sort NameOverdue (feat. Travis Scott) + Persistent ID4A0C8836574A1D70 + Explicit + Track TypeRemote + Apple Music + + 6465 + + Track ID6465 + NameMile High (feat. Travis Scott & Metro Boomin) + ArtistJames Blake + Album ArtistJames Blake + ComposerJames Blake, Metro Boomin & Travis Scott + AlbumAssume Form + GenreElectronic + KindApple Music AAC audio file + Size6938450 + Total Time193600 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2019 + Date Modified2023-04-28T09:11:26Z + Date Added2023-04-28T09:11:26Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3782980352 + Play Date UTC2023-11-16T08:52:32Z + Skip Count2 + Skip Date2023-06-04T20:44:14Z + Release Date2019-01-17T12:00:00Z + Artwork Count1 + Sort AlbumAssume Form + Sort ArtistJames Blake + Sort NameMile High (feat. Travis Scott & Metro Boomin) + Persistent ID1EEAC713AA09BC57 + Track TypeRemote + Apple Music + + 6467 + + Track ID6467 + NameORANGE SODA + ArtistBaby Keem + Album ArtistBaby Keem + ComposerHykeem Carter & Keanu Torres + AlbumORANGE SODA - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4830335 + Total Time129882 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2023-04-28T11:29:09Z + Date Added2023-04-28T11:29:09Z + Bit Rate256 + Sample Rate44100 + Play Count42 + Play Date3783594325 + Play Date UTC2023-11-23T11:25:25Z + Skip Count2 + Skip Date2023-06-04T20:44:08Z + Release Date2019-07-16T12:00:00Z + Artwork Count1 + Sort AlbumORANGE SODA - Single + Sort ArtistBaby Keem + Sort NameORANGE SODA + Persistent IDF9F4F8EFCE2A8EC7 + Explicit + Track TypeRemote + Apple Music + + 6469 + + Track ID6469 + NameLifeAsAMelody + ArtistBones & Xavier Wulf + Album ArtistBones & Xavier Wulf + ComposerElmo O'Connor & xavier beard + AlbumLifeAsAMelody - Single + GenreAlternative + KindApple Music AAC audio file + Size4480993 + Total Time121704 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2023-05-11T21:52:04Z + Date Added2023-05-11T21:52:04Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3782476406 + Play Date UTC2023-11-10T12:53:26Z + Release Date2019-04-05T12:00:00Z + Artwork Count1 + Sort AlbumLifeAsAMelody - Single + Sort ArtistBones & Xavier Wulf + Sort NameLifeAsAMelody + Persistent IDA01ED737FF1E9122 + Track TypeRemote + Apple Music + + 6471 + + Track ID6471 + Name.223 + ArtistBONES + Album ArtistBONES + ComposerBONES + AlbumFromBeyondTheGrave + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4814283 + Total Time129776 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2020 + Date Modified2023-05-11T21:54:17Z + Date Added2023-05-11T21:54:17Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count19 + Play Date3770735205 + Play Date UTC2023-06-27T15:26:45Z + Skip Count3 + Skip Date2023-10-15T02:38:48Z + Release Date2020-11-07T12:00:00Z + Artwork Count1 + Sort AlbumFromBeyondTheGrave + Sort ArtistBONES + Sort Name.223 + Persistent ID48FA3B2014DDA428 + Explicit + Track TypeRemote + Apple Music + + 6473 + + Track ID6473 + NameI Guess + ArtistDrew The Architect, Bones & Cat Soup + Album ArtistDrew The Architect, Bones & Cat Soup + ComposerDrew The Architect, Bones & Cat Soup + AlbumSlán + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5537895 + Total Time154645 + Disc Number1 + Disc Count1 + Track Number3 + Track Count8 + Year2016 + Date Modified2023-05-11T22:18:48Z + Date Added2023-05-11T22:18:48Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3779309180 + Play Date UTC2023-10-04T21:06:20Z + Release Date2016-01-02T12:00:00Z + Artwork Count1 + Sort AlbumSlán + Sort ArtistDrew The Architect, Bones & Cat Soup + Sort NameI Guess + Persistent ID1636A27AE6E18F45 + Explicit + Track TypeRemote + Apple Music + + 6475 + + Track ID6475 + NameCount Me Out (Mixed) + ArtistKendrick Lamar + Album ArtistU-LEE + AlbumVISION: U-LEE (DJ Mix) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9901348 + Total Time279597 + Disc Number1 + Disc Count1 + Track Number1 + Track Count18 + Year2022 + Date Modified2023-05-15T08:53:09Z + Date Added2023-05-15T08:53:09Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count21 + Play Date3781201093 + Play Date UTC2023-10-26T18:38:13Z + Skip Count1 + Skip Date2023-05-27T13:58:13Z + Release Date2022-06-29T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumVISION: U-LEE (DJ Mix) + Sort ArtistKendrick Lamar + Sort NameCount Me Out (Mixed) + Persistent ID867FF20806054712 + Track TypeRemote + Apple Music + + 6477 + + Track ID6477 + NameFar Away (feat. A$AP Rocky) + ArtistYebba + Album ArtistYebba + ComposerAbbey Smith, James Francies, Jr., Malachi Mabson, Rakim Mayers, Charles Myers & Jacques Smith II + AlbumDawn + GenreAlternative + KindApple Music AAC audio file + Size7110762 + Total Time199416 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2021 + Date Modified2023-05-25T07:09:57Z + Date Added2023-05-25T07:09:57Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3774964428 + Play Date UTC2023-08-15T14:13:48Z + Release Date2021-09-10T12:00:00Z + Loved + Artwork Count1 + Sort AlbumDawn + Sort ArtistYebba + Sort NameFar Away (feat. A$AP Rocky) + Persistent IDED7FC7EB63BCB63A + Explicit + Track TypeRemote + Apple Music + + 6479 + + Track ID6479 + NameGod Forbid + ArtistT:ME + Album ArtistT:ME + AlbumThe Death of Robert Scott + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5380987 + Total Time143810 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2022 + Date Modified2023-05-25T07:10:21Z + Date Added2023-05-25T07:10:21Z + Bit Rate256 + Sample Rate44100 + Play Count24 + Play Date3776237721 + Play Date UTC2023-08-30T07:55:21Z + Release Date2022-04-08T12:00:00Z + Artwork Count1 + Sort AlbumThe Death of Robert Scott + Sort ArtistT:ME + Sort NameGod Forbid + Persistent ID1C62B7D95EB56EAA + Explicit + Track TypeRemote + Apple Music + + 6481 + + Track ID6481 + NameBackseat Driver + ArtistCredit Electric + Album ArtistCredit Electric + ComposerRyan John LoPilato + AlbumBackseat Driver - Single + GenreAlternative + KindApple Music AAC audio file + Size7302714 + Total Time202286 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-05-30T15:05:36Z + Date Added2023-05-30T15:05:36Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3780401280 + Play Date UTC2023-10-17T12:28:00Z + Skip Count1 + Skip Date2023-06-23T15:20:09Z + Release Date2023-05-19T12:00:00Z + Artwork Count1 + Sort AlbumBackseat Driver - Single + Sort ArtistCredit Electric + Sort NameBackseat Driver + Persistent ID862750BD7E825409 + Track TypeRemote + Apple Music + + 6483 + + Track ID6483 + NameShadows + ArtistOld Man Canyon + Album ArtistOld Man Canyon + ComposerJett Payne Pace + AlbumPhantoms & Friends (10th Anniversary Edition) + GenreAlternative + KindApple Music AAC audio file + Size7505160 + Total Time211275 + Disc Number1 + Disc Count1 + Track Number7 + Track Count7 + Year2023 + Date Modified2023-05-30T15:17:08Z + Date Added2023-05-30T15:17:08Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783693607 + Play Date UTC2023-11-24T15:00:07Z + Release Date2023-05-19T12:00:00Z + Artwork Count1 + Sort AlbumPhantoms & Friends (10th Anniversary Edition) + Sort ArtistOld Man Canyon + Sort NameShadows + Persistent ID67E900149C6EF42D + Track TypeRemote + Apple Music + + 6485 + + Track ID6485 + NameGradients + ArtistSalami Rose Joe Louis + Album ArtistSalami Rose Joe Louis + ComposerLindsay Rose Olsen + AlbumAkousmatikous + GenreAlternative + KindApple Music AAC audio file + Size5213937 + Total Time140528 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2023 + Date Modified2023-05-30T15:17:27Z + Date Added2023-05-30T15:17:27Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3780845314 + Play Date UTC2023-10-22T15:48:34Z + Release Date2023-05-19T12:00:00Z + Artwork Count1 + Sort AlbumAkousmatikous + Sort ArtistSalami Rose Joe Louis + Sort NameGradients + Persistent IDA54AAC32FD36D8F2 + Track TypeRemote + Apple Music + + 6487 + + Track ID6487 + NameThis Little Life + ArtistTom Rosenthal + Album ArtistTom Rosenthal + ComposerOlivia Ter-Berg & Tom Rosenthal + AlbumThis Little Life - Single + GenreSinger/Songwriter + KindApple Music AAC audio file + Size7163356 + Total Time198049 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-05-30T18:24:32Z + Date Added2023-05-30T18:24:32Z + Bit Rate256 + Sample Rate44100 + Play Count25 + Play Date3783715320 + Play Date UTC2023-11-24T21:02:00Z + Skip Count1 + Skip Date2023-06-29T21:02:28Z + Release Date2023-04-28T12:00:00Z + Artwork Count1 + Sort AlbumThis Little Life - Single + Sort ArtistTom Rosenthal + Sort NameThis Little Life + Persistent ID7221FF5468949987 + Track TypeRemote + Apple Music + + 6489 + + Track ID6489 + Nameball w/o you + Artist21 Savage + Album Artist21 Savage + Composer21 Savage, Bryan Simmons, Kenneth Smith, Jr., Tyshane Thompson & Ralphy London + Albumi am > i was (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6968106 + Total Time195047 + Disc Number1 + Disc Count1 + Track Number10 + Track Count16 + Year2018 + Date Modified2023-06-01T11:40:24Z + Date Added2023-06-01T11:40:24Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3771043390 + Play Date UTC2023-07-01T05:03:10Z + Release Date2018-12-21T08:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumi am > i was (Deluxe) + Sort Artist21 Savage + Sort Nameball w/o you + Persistent ID102B9E2FE83BC311 + Explicit + Track TypeRemote + Apple Music + + 6491 + + Track ID6491 + Name1.5 + Artist21 Savage + Album Artist21 Savage + Composer21 Savage, Kiari Kendrell Cephus, Nils & Wesley Glass + Albumi am > i was (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5437710 + Total Time148656 + Disc Number1 + Disc Count1 + Track Number6 + Track Count16 + Year2018 + Date Modified2023-06-01T11:49:33Z + Date Added2023-06-01T11:49:33Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3777563985 + Play Date UTC2023-09-14T16:19:45Z + Skip Count1 + Skip Date2023-06-29T20:53:12Z + Release Date2018-12-21T08:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumi am > i was (Deluxe) + Sort Artist21 Savage + Sort Name1.5 + Persistent ID3AC97F382C759933 + Explicit + Track TypeRemote + Apple Music + + 6493 + + Track ID6493 + Namecan't leave without it + Artist21 Savage + Album Artist21 Savage + Composer21 Savage, Dominique' Jones, Sergio Kitchens, Wesley Glass, Kevin Gomringer & Tim Gomringer + Albumi am > i was (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7318645 + Total Time205352 + Disc Number1 + Disc Count1 + Track Number8 + Track Count16 + Year2018 + Date Modified2023-06-01T11:57:03Z + Date Added2023-06-01T11:57:03Z + Bit Rate256 + Sample Rate44100 + Play Count26 + Play Date3780906933 + Play Date UTC2023-10-23T08:55:33Z + Skip Count1 + Skip Date2023-06-07T14:13:21Z + Release Date2018-12-21T08:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumi am > i was (Deluxe) + Sort Artist21 Savage + Sort Namecan't leave without it + Persistent ID589495D7258D4D2C + Explicit + Track TypeRemote + Apple Music + + 6495 + + Track ID6495 + Nameasmr + Artist21 Savage + Album Artist21 Savage + Composer21 Savage, Leland Wayne & Ahmar Bailey + Albumi am > i was (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6180964 + Total Time171714 + Disc Number1 + Disc Count1 + Track Number9 + Track Count16 + Year2018 + Date Modified2023-06-01T12:00:41Z + Date Added2023-06-01T12:00:41Z + Bit Rate256 + Sample Rate44100 + Play Count35 + Play Date3775200830 + Play Date UTC2023-08-18T07:53:50Z + Skip Count1 + Skip Date2023-08-15T13:40:50Z + Release Date2018-12-21T08:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumi am > i was (Deluxe) + Sort Artist21 Savage + Sort Nameasmr + Persistent IDE43C9F3DCA0E72DF + Explicit + Track TypeRemote + Apple Music + + 6497 + + Track ID6497 + Name4L + Artist21 Savage + Album Artist21 Savage + Composer21 Savage, Quantavious Thomas, Ahmar Bailey & Roshwita Larisha Bacha + Albumi am > i was (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9983616 + Total Time288364 + Disc Number1 + Disc Count1 + Track Number15 + Track Count16 + Year2018 + Date Modified2023-06-01T13:03:50Z + Date Added2023-06-01T13:03:50Z + Bit Rate256 + Sample Rate44100 + Play Count34 + Play Date3783661170 + Play Date UTC2023-11-24T05:59:30Z + Release Date2018-12-21T08:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumi am > i was (Deluxe) + Sort Artist21 Savage + Sort Name4L + Persistent ID768E0405854290E2 + Explicit + Track TypeRemote + Apple Music + + 6499 + + Track ID6499 + NameWeit weg + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Paul Landers, Till Lindemann, Doktor Christian Lorenz, Oliver Riedel & Christoph Doom Schneider + AlbumRammstein + GenreRock + KindApple Music AAC audio file + Size9762529 + Total Time260916 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2019 + Date Modified2023-06-02T20:22:18Z + Date Added2023-06-02T20:22:18Z + Bit Rate256 + Sample Rate44100 + Play Count22 + Play Date3782387180 + Play Date UTC2023-11-09T12:06:20Z + Skip Count1 + Skip Date2023-10-12T16:31:40Z + Release Date2019-05-17T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumRAMMSTEIN + Sort ArtistRammstein + Sort NameWeit weg + Persistent IDA9CD57D58A876BF8 + Track TypeRemote + Apple Music + + 6501 + + Track ID6501 + NameIch hasse Kinder + ArtistTill Lindemann + Album ArtistTill Lindemann + ComposerSky van Hoff + AlbumIch hasse Kinder - Single + GenreElectronic + KindApple Music AAC audio file + Size8365177 + Total Time232378 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2021 + Date Modified2023-06-02T20:56:51Z + Date Added2023-06-02T20:56:51Z + Bit Rate256 + Sample Rate44100 + Play Count21 + Play Date3780840293 + Play Date UTC2023-10-22T14:24:53Z + Release Date2021-05-31T12:00:00Z + Artwork Count1 + Sort AlbumIch hasse Kinder - Single + Sort ArtistTill Lindemann + Sort NameIch hasse Kinder + Persistent ID969710BD9A37B639 + Track TypeRemote + Apple Music + + 6503 + + Track ID6503 + NameThe Unforgiven II + ArtistMetallica + Album ArtistMetallica + ComposerKirk Hammett, Lars Ulrich & James Hetfield + AlbumReload + GenreMetal + KindApple Music AAC audio file + Size14489698 + Total Time396213 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year1997 + Date Modified2023-06-02T21:02:30Z + Date Added2023-06-02T21:02:30Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3773643437 + Play Date UTC2023-07-31T07:17:17Z + Release Date1997-01-01T12:00:00Z + Loved + Artwork Count1 + Sort AlbumReload + Sort ArtistMetallica + Sort NameUnforgiven II + Persistent ID5BB904160F495D49 + Track TypeRemote + Apple Music + + 6505 + + Track ID6505 + NameNothing Else Matters + ArtistMetallica + Album ArtistMetallica + ComposerJames Hetfield & Lars Ulrich + AlbumMetallica (Remastered) + GenreMetal + KindApple Music AAC audio file + Size13372839 + Total Time388733 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year1991 + Date Modified2023-06-04T13:09:31Z + Date Added2023-06-04T13:09:31Z + Bit Rate256 + Sample Rate44100 + Play Count17 + Play Date3777372772 + Play Date UTC2023-09-12T11:12:52Z + Release Date1991-08-12T12:00:00Z + Artwork Count1 + Sort AlbumMetallica (Remastered) + Sort ArtistMetallica + Sort NameNothing Else Matters + Persistent ID23839D126EF75A5A + Track TypeRemote + Apple Music + + 6507 + + Track ID6507 + NameSnowman + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size11568505 + Total Time315006 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2023 + Date Modified2023-06-07T14:35:39Z + Date Added2023-06-07T14:35:39Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count12 + Play Date3770909467 + Play Date UTC2023-06-29T15:51:07Z + Release Date2023-05-31T07:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameSnowman + Persistent IDC4D1B37D2D093FB8 + Track TypeRemote + Apple Music + + 6509 + + Track ID6509 + NameKiss Her Kiss Her + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size10049878 + Total Time262942 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-09-28T21:28:52Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count3 + Play Date3783494610 + Play Date UTC2023-11-22T07:43:30Z + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameKiss Her Kiss Her + Persistent IDA129866A36D4838A + Track TypeRemote + Apple Music + + 6511 + + Track ID6511 + NameNot for Me + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size9379917 + Total Time254272 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-09-28T21:28:52Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count3 + Play Date3781203853 + Play Date UTC2023-10-26T19:24:13Z + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameNot for Me + Persistent ID98A13104ADA7551C + Track TypeRemote + Apple Music + + 6513 + + Track ID6513 + NameMelody Experiment + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size11050071 + Total Time310095 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-06-27T06:38:38Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3776619424 + Play Date UTC2023-09-03T17:57:04Z + Release Date2023-06-27T07:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameMelody Experiment + Persistent ID14E2540B4E9DB8F0 + Track TypeRemote + Apple Music + + 6515 + + Track ID6515 + NameRest of Her Life + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size7038454 + Total Time195206 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-09-28T21:31:25Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count9 + Play Date3783598353 + Play Date UTC2023-11-23T12:32:33Z + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameRest of Her Life + Persistent ID0A0ADEC3732DA5C2 + Track TypeRemote + Apple Music + + 6517 + + Track ID6517 + NameSit Down for Dinner (Part 1) + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size6925454 + Total Time191827 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-09-25T21:06:34Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count6 + Play Date3779359047 + Play Date UTC2023-10-05T10:57:27Z + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameSit Down for Dinner (Part 1) + Persistent ID5B1E7C78F6954A69 + Explicit + Track TypeRemote + Apple Music + + 6519 + + Track ID6519 + NameSit Down for Dinner (Part 2) + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size7413195 + Total Time208468 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-09-25T21:06:34Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count6 + Play Date3783452833 + Play Date UTC2023-11-21T20:07:13Z + Release Date2023-09-26T07:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameSit Down for Dinner (Part 2) + Persistent ID0B920CCF0F71BE35 + Track TypeRemote + Apple Music + + 6521 + + Track ID6521 + NameI Thought You Should Know + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size12050433 + Total Time324384 + Disc Number1 + Disc Count1 + Track Number8 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-09-28T21:30:00Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count5 + Play Date3782733234 + Play Date UTC2023-11-13T12:13:54Z + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameI Thought You Should Know + Persistent ID951B84B01CA8F78E + Track TypeRemote + Apple Music + + 6523 + + Track ID6523 + NameBefore + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size10018815 + Total Time268123 + Disc Number1 + Disc Count1 + Track Number9 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-08-09T12:48:43Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count12 + Play Date3776965947 + Play Date UTC2023-09-07T18:12:27Z + Release Date2023-08-09T07:00:00Z + Loved + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameBefore + Persistent IDD7A5AB0B8B17F0D1 + Track TypeRemote + Apple Music + + 6525 + + Track ID6525 + NameIf + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size9998599 + Total Time262378 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-09-28T21:30:20Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count11 + Play Date3783599464 + Play Date UTC2023-11-23T12:51:04Z + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameIf + Persistent IDD91078214EF308FB + Track TypeRemote + Apple Music + + 6527 + + Track ID6527 + NameVia Savona + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerKazu Makino, Amedeo Pace & Simone Pace + AlbumSit Down for Dinner + GenreAlternative + KindApple Music AAC audio file + Size11034369 + Total Time313342 + Disc Number1 + Disc Count1 + Track Number11 + Track Count11 + Year2023 + Date Modified2023-06-07T15:39:31Z + Date Added2023-09-28T21:30:20Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count6 + Play Date3782732902 + Play Date UTC2023-11-13T12:08:22Z + Release Date2023-09-29T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSit Down for Dinner + Sort ArtistBlonde Redhead + Sort NameVia Savona + Persistent ID10C67E3AE69E1A0A + Track TypeRemote + Apple Music + + 6529 + + Track ID6529 + NameThe Dress + ArtistBlonde Redhead + Album ArtistBlonde Redhead + ComposerAmedeo Pace, Kazu Makino & Simone Pace + Album23 + GenreAlternative + KindApple Music AAC audio file + Size9406424 + Total Time240893 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2007 + Date Modified2023-06-07T15:55:20Z + Date Added2023-06-07T15:55:20Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3779901817 + Play Date UTC2023-10-11T17:43:37Z + Release Date2007-03-23T12:00:00Z + Artwork Count1 + Sort Album23 + Sort ArtistBlonde Redhead + Sort NameDress + Persistent ID375CE33F4E1B3E8F + Track TypeRemote + Apple Music + + 6531 + + Track ID6531 + NameHated Because of Great Qualities + ArtistBlonde Redhead + Album ArtistBlonde Redhead + AlbumMelody of Certain Damaged Lemons + GenreAlternative + KindApple Music AAC audio file + Size10020959 + Total Time282733 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2000 + Date Modified2023-06-07T16:00:10Z + Date Added2023-06-07T16:00:10Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3781052121 + Play Date UTC2023-10-25T01:15:21Z + Release Date2000-06-06T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumMelody of Certain Damaged Lemons + Sort ArtistBlonde Redhead + Sort NameHated Because of Great Qualities + Persistent IDB5284CEC235A874B + Track TypeRemote + Apple Music + + 6533 + + Track ID6533 + NameGoodbye Moonmen + ArtistAndy Kapetanakis + Album ArtistAndy Kapetanakis + ComposerJemaine Clement + AlbumGoodbye Moonmen - Single + GenreRock + KindApple Music AAC audio file + Size5295475 + Total Time150439 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Date Modified2023-06-07T16:49:25Z + Date Added2023-06-07T16:49:25Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3771840110 + Play Date UTC2023-07-10T10:21:50Z + Skip Count2 + Skip Date2023-06-27T05:57:46Z + Release Date2017-08-23T12:00:00Z + Artwork Count1 + Sort AlbumGoodbye Moonmen - Single + Sort ArtistAndy Kapetanakis + Sort NameGoodbye Moonmen + Persistent ID57669D6EECE12B41 + Track TypeRemote + Apple Music + + 6535 + + Track ID6535 + NameStop Playin' + ArtistTHEY. + Album ArtistTHEY. + ComposerChristopher Ahn, Dante Jones, Drew Love & Paris Strother + AlbumStop Playin' - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6556271 + Total Time178680 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2023-06-25T18:22:21Z + Date Added2023-06-25T18:22:21Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3772089619 + Play Date UTC2023-07-13T07:40:19Z + Release Date2019-08-21T12:00:00Z + Artwork Count1 + Sort AlbumStop Playin' - Single + Sort ArtistTHEY. + Sort NameStop Playin' + Persistent ID87BB11EEBF9BE7CD + Explicit + Track TypeRemote + Apple Music + + 6537 + + Track ID6537 + NameTheBestVersionOfMyself + ArtistSurrenderDorothy + Album ArtistSurrenderDorothy + AlbumBreathingExercise + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size2923106 + Total Time72875 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2018 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3783410127 + Play Date UTC2023-11-21T08:15:27Z + Release Date2018-06-08T12:00:00Z + Artwork Count1 + Sort AlbumBreathingExercise + Sort ArtistSurrenderDorothy + Sort NameTheBestVersionOfMyself + Persistent ID0C605A3BD16BF382 + Track TypeRemote + Apple Music + + 6539 + + Track ID6539 + NameFell In Love + ArtistMarshmello & Brent Faiyaz + Album ArtistMarshmello & Brent Faiyaz + ComposerChristopher Brent Wood, Chrome Sparks & Marshmello + AlbumFell In Love - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size4555561 + Total Time121284 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count4 + Play Date3782804009 + Play Date UTC2023-11-14T07:53:29Z + Skip Count1 + Skip Date2023-09-03T17:57:54Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumFell In Love - Single + Sort ArtistMarshmello & Brent Faiyaz + Sort NameFell In Love + Persistent IDE73AF0F8500B313D + Explicit + Track TypeRemote + Apple Music + + 6541 + + Track ID6541 + Name90210 (feat. Kacy Hill) + ArtistTravis Scott + Album ArtistTravis Scott + ComposerKacy Hill, Jacques Webster, Dacoury Natche, Allen Ritter, Chantel Jeffries, MIKE DEAN, Ebony Oshunrinde, Glenda "GIZZLE" Proby, Duilio Radici & Ugo Fusco + AlbumRodeo + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12162963 + Total Time339061 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2015 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3782052630 + Play Date UTC2023-11-05T15:10:30Z + Release Date2015-09-04T12:00:00Z + Artwork Count1 + Sort AlbumRodeo + Sort ArtistTravis Scott + Sort Name90210 (feat. Kacy Hill) + Persistent ID03DD342F712EBDF7 + Explicit + Track TypeRemote + Apple Music + + 6543 + + Track ID6543 + NameASTROTHUNDER + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster, John Mayer, Adam Feeney, Stephen Bruner, Matthew Tavares, Tommy Paxton-Beesley & Joseph Thornalley + AlbumASTROWORLD + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5348772 + Total Time142969 + Disc Number1 + Disc Count1 + Track Number11 + Track Count17 + Year2018 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782060490 + Play Date UTC2023-11-05T17:21:30Z + Release Date2018-08-03T12:00:00Z + Artwork Count1 + Sort AlbumASTROWORLD + Sort ArtistTravis Scott + Sort NameASTROTHUNDER + Persistent IDB1A8AF093B376F28 + Explicit + Track TypeRemote + Apple Music + + 6545 + + Track ID6545 + NameGlock in My Lap + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerShéyaa Bin Abraham-Joseph, Leland Wayne, Joshua Luellen & Carlton Mays Jr. + AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6955995 + Total Time193591 + Disc Number2 + Disc Count2 + Track Number3 + Track Count15 + Year2020 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3779555927 + Play Date UTC2023-10-07T17:38:47Z + Release Date2020-10-02T07:00:00Z + Artwork Count1 + Sort AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + Sort Artist21 Savage & Metro Boomin + Sort NameGlock in My Lap + Persistent IDBBC814ACEBD306E6 + Explicit + Track TypeRemote + Apple Music + + 6547 + + Track ID6547 + NameMetro Boomin + ArtistElmo Tha I + Album ArtistElmo Tha I + ComposerRodney Mpangazitha, Leland Wayne, Nayvadius Wilburn, Jeffery Williams, Relebohile Dithebe & Bonakele Maqungo + AlbumSPLASH SEAson + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6941626 + Total Time197198 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2022 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3777370061 + Play Date UTC2023-09-12T10:27:41Z + Release Date2022-11-04T12:00:00Z + Artwork Count1 + Sort AlbumSPLASH SEAson + Sort ArtistElmo Tha I + Sort NameMetro Boomin + Persistent ID076D4ED9487FD974 + Explicit + Track TypeRemote + Apple Music + + 6549 + + Track ID6549 + NameOn BS (Mixed) + ArtistDrake & 21 Savage + Album ArtistDeejay Massive + AlbumParty In The Jungle: DeeJay Massive, Dec 2022 (DJ Mix) + GenreHip-Hop + KindApple Music AAC audio file + Size3401659 + Total Time83023 + Disc Number1 + Disc Count1 + Track Number2 + Track Count41 + Year2022 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count3 + Play Date3782051308 + Play Date UTC2023-11-05T14:48:28Z + Release Date2022-12-16T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumParty In The Jungle: DeeJay Massive, Dec 2022 (DJ Mix) + Sort ArtistDrake & 21 Savage + Sort NameOn BS (Mixed) + Persistent ID49B8E777970AAB61 + Track TypeRemote + Apple Music + + 6551 + + Track ID6551 + Nameloving u is harder + ArtistSEB + Album ArtistSEB + ComposerSEB + Albumloving u is harder - Single + GenrePop + KindApple Music AAC audio file + Size5408727 + Total Time147427 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782050686 + Play Date UTC2023-11-05T14:38:06Z + Release Date2022-11-04T12:00:00Z + Artwork Count1 + Sort Albumloving u is harder - Single + Sort ArtistSEB + Sort Nameloving u is harder + Persistent ID60B54B27E43F47BD + Track TypeRemote + Apple Music + + 6553 + + Track ID6553 + NameI Wonder + ArtistKanye West + Album ArtistKanye West + ComposerKanye West & Labi Siffre + AlbumGraduation + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8608053 + Total Time243440 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2007 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782052290 + Play Date UTC2023-11-05T15:04:50Z + Release Date2007-09-11T07:00:00Z + Artwork Count1 + Sort AlbumGraduation + Sort ArtistKanye West + Sort NameI Wonder + Persistent IDF82F8222024F63AF + Explicit + Track TypeRemote + Apple Music + + 6555 + + Track ID6555 + NameUuuu + ArtistSteve Lacy + Album ArtistSteve Lacy + ComposerSteve Lacy + AlbumThe Lo-Fis + GenreR&B/Soul + KindApple Music AAC audio file + Size3530677 + Total Time90709 + Disc Number1 + Disc Count1 + Track Number5 + Track Count15 + Year2020 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Release Date2020-12-04T12:00:00Z + Artwork Count1 + Sort AlbumThe Lo-Fis + Sort ArtistSteve Lacy + Sort NameUuuu + Persistent IDFFF56C512F5B7BD1 + Track TypeRemote + Apple Music + + 6557 + + Track ID6557 + NameRIP Young + ArtistIsaiah Rashad + Album ArtistIsaiah Rashad + ComposerI. McClain, Jordan Houston, K. Berry, P. Beauregard & Patrick Houston + AlbumThe House Is Burning [homies begged] + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5796051 + Total Time158051 + Disc Number1 + Disc Count1 + Track Number3 + Track Count20 + Year2021 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782051627 + Play Date UTC2023-11-05T14:53:47Z + Release Date2021-07-30T12:00:00Z + Artwork Count1 + Sort AlbumThe House Is Burning [homies begged] + Sort ArtistIsaiah Rashad + Sort NameRIP Young + Persistent ID878F64A94867DFD8 + Explicit + Track TypeRemote + Apple Music + + 6559 + + Track ID6559 + NameIn My Room + ArtistFrank Ocean + Album ArtistFrank Ocean + AlbumIn My Room - Single + GenrePop + KindApple Music AAC audio file + Size4983252 + Total Time133680 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3782050537 + Play Date UTC2023-11-05T14:35:37Z + Release Date2019-11-02T12:00:00Z + Artwork Count1 + Sort AlbumIn My Room - Single + Sort ArtistFrank Ocean + Sort NameIn My Room + Persistent ID13FE54F32F3ADF74 + Explicit + Track TypeRemote + Apple Music + + 6561 + + Track ID6561 + NameILoveUIHateU + ArtistPlayboi Carti + Album ArtistPlayboi Carti + ComposerJordan Carter & Pi’erre Bourne + AlbumWhole Lotta Red + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5055111 + Total Time135122 + Disc Number1 + Disc Count1 + Track Number21 + Track Count24 + Year2020 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783776555 + Play Date UTC2023-11-25T14:02:35Z + Release Date2020-12-25T12:00:00Z + Artwork Count1 + Sort AlbumWhole Lotta Red + Sort ArtistPlayboi Carti + Sort NameILoveUIHateU + Persistent ID338FCA1745D717BD + Explicit + Track TypeRemote + Apple Music + + 6563 + + Track ID6563 + NameShut up My Moms Calling + ArtistHotel Ugly + Album ArtistHotel Ugly + ComposerMichael Fiscella + AlbumShut up My Moms Calling - Single + GenreNeo-Soul + KindApple Music AAC audio file + Size5844897 + Total Time164571 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2020 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782904587 + Play Date UTC2023-11-15T11:49:47Z + Release Date2020-02-10T12:00:00Z + Artwork Count1 + Sort AlbumShut up My Moms Calling - Single + Sort ArtistHotel Ugly + Sort NameShut up My Moms Calling + Persistent IDC95A1F5CA4EA1C32 + Track TypeRemote + Apple Music + + 6565 + + Track ID6565 + NameThe God Hour + ArtistA$AP ANT & A$AP Rocky + Album ArtistA$AP ANT & A$AP Rocky + ComposerA$AP ANT, A$AP Rocky, Mannyvelli & Spizzledoe + AlbumThe God Hour - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5634895 + Total Time155077 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count2 + Play Date3779896863 + Play Date UTC2023-10-11T16:21:03Z + Skip Count4 + Skip Date2023-10-11T17:56:02Z + Release Date2022-04-01T12:00:00Z + Artwork Count1 + Sort AlbumThe God Hour - Single + Sort ArtistA$AP ANT & A$AP Rocky + Sort NameGod Hour + Persistent IDE45B476673207BCC + Explicit + Track TypeRemote + Apple Music + + 6567 + + Track ID6567 + NameBorrowed Love (feat. Swae Lee & Wizkid) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Khalif Malikibnsham Brown, Wizkid, Mary Lou Cross & Johnnie Lee Frierson + AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8209102 + Total Time230240 + Disc Number1 + Disc Count2 + Track Number10 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782054238 + Play Date UTC2023-11-05T15:37:18Z + Release Date2018-11-02T07:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES (Deluxe) + Sort ArtistMetro Boomin + Sort NameBorrowed Love (feat. Swae Lee & Wizkid) + Persistent ID43AC82029C612B8F + Explicit + Track TypeRemote + Apple Music + + 6569 + + Track ID6569 + NameNiagara Falls (Foot or 2) [Mixed] + ArtistMetro Boomin, 21 Savage & Travis Scott + Album ArtistSFR + AlbumRap, Vol. 5 (DJ Mix) + GenreHip-Hop + KindApple Music AAC audio file + Size3869744 + Total Time99352 + Disc Number1 + Disc Count1 + Track Number20 + Track Count45 + Year2023 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count1 + Play Date3783768634 + Play Date UTC2023-11-25T11:50:34Z + Release Date2023-06-30T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumRap, Vol. 5 (DJ Mix) + Sort ArtistMetro Boomin, 21 Savage & Travis Scott + Sort NameNiagara Falls (Foot or 2) [Mixed] + Persistent IDC9F5C5AD5649AF91 + Explicit + Track TypeRemote + Apple Music + + 6571 + + Track ID6571 + NameSummers Over Interlude + ArtistDrake + Album ArtistDrake + ComposerM. Bidaye & M. Al-Maskati + AlbumViews + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3993020 + Total Time106325 + Disc Number1 + Disc Count1 + Track Number17 + Track Count20 + Year2016 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783692480 + Play Date UTC2023-11-24T14:41:20Z + Release Date2016-04-29T07:00:00Z + Artwork Count1 + Sort AlbumViews + Sort ArtistDrake + Sort NameSummers Over Interlude + Persistent ID37165E9C8FEFF57B + Explicit + Track TypeRemote + Apple Music + + 6573 + + Track ID6573 + NameCOFFEE BEAN + ArtistTravis Scott + Album ArtistTravis Scott + ComposerJacques Webster, Cydel Young, MIKE DEAN, Tim Suby & Paul Jefferies + AlbumASTROWORLD + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7460631 + Total Time209116 + Disc Number1 + Disc Count1 + Track Number17 + Track Count17 + Year2018 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3783677910 + Play Date UTC2023-11-24T10:38:30Z + Release Date2018-08-03T12:00:00Z + Artwork Count1 + Sort AlbumASTROWORLD + Sort ArtistTravis Scott + Sort NameCOFFEE BEAN + Persistent IDAFFE143FDD757A49 + Explicit + Track TypeRemote + Apple Music + + 6575 + + Track ID6575 + NameBeen Away + ArtistBrent Faiyaz + Album ArtistBrent Faiyaz + ComposerChristopher Brent Wood, Chirstopher Ruelas, samuel Wishkoski, Jacob Dutton, Carlos Muñoz, David Patino, John Key, Jariuce Banks, Jonathan Wells & James Jeanty + AlbumFuck the World + GenreR&B/Soul + KindApple Music AAC audio file + Size7899466 + Total Time223630 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2020 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3779308809 + Play Date UTC2023-10-04T21:00:09Z + Release Date2020-02-07T12:00:00Z + Artwork Count1 + Sort AlbumFuck the World + Sort ArtistBrent Faiyaz + Sort NameBeen Away + Persistent ID6879EE9E3A5E7437 + Explicit + Track TypeRemote + Apple Music + + 6577 + + Track ID6577 + NameBluffin + ArtistBrent Faiyaz + Album ArtistBrent Faiyaz + ComposerChristopher Brent Wood, David Patino, Atupele Ndisale, Jason Avalos & Playa Fly + AlbumFuck the World + GenreR&B/Soul + KindApple Music AAC audio file + Size7074229 + Total Time195802 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2020 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782981856 + Play Date UTC2023-11-16T09:17:36Z + Release Date2020-02-07T12:00:00Z + Artwork Count1 + Sort AlbumFuck the World + Sort ArtistBrent Faiyaz + Sort NameBluffin + Persistent ID737D92D9CDC54C65 + Track TypeRemote + Apple Music + + 6579 + + Track ID6579 + Name20 Min + ArtistLil Uzi Vert + Album ArtistLil Uzi Vert + ComposerDa Honorable C.N.O.T.E. & Lil Uzi Vert + AlbumLuv Is Rage 2 (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7926455 + Total Time220587 + Disc Number1 + Disc Count1 + Track Number20 + Track Count20 + Year2017 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3781530615 + Play Date UTC2023-10-30T14:10:15Z + Release Date2017-08-25T12:00:00Z + Artwork Count1 + Sort AlbumLuv Is Rage 2 (Deluxe) + Sort ArtistLil Uzi Vert + Sort Name20 Min + Persistent ID0052CBE6ACD46561 + Explicit + Track TypeRemote + Apple Music + + 6581 + + Track ID6581 + Nameball w/o you + Artist21 Savage + Album Artist21 Savage + Composer21 Savage, Bryan Simmons, Kenneth Smith, Jr., Tyshane Thompson & Ralphy London + Albumi am > i was + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6968106 + Total Time195047 + Disc Number1 + Disc Count1 + Track Number10 + Track Count15 + Year2018 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782053901 + Play Date UTC2023-11-05T15:31:41Z + Release Date2018-12-21T12:00:00Z + Album Rating60 + Album Rating Computed + Artwork Count1 + Sort Albumi am > i was + Sort Artist21 Savage + Sort Nameball w/o you + Persistent ID1F52EB10FB3B1B25 + Explicit + Track TypeRemote + Apple Music + + 6583 + + Track ID6583 + NameEmbarrassed (feat. Travis Scott) [Mixed] + ArtistDon Toliver + Album ArtistDJ Nitrane + AlbumTRANE Tracks (DJ Mix) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3327031 + Total Time81851 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2023 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count2 + Play Date3782054320 + Play Date UTC2023-11-05T15:38:40Z + Release Date2023-03-17T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumTRANE Tracks (DJ Mix) + Sort ArtistDon Toliver + Sort NameEmbarrassed (feat. Travis Scott) [Mixed] + Persistent IDDB053C5A7BC1CDD8 + Explicit + Track TypeRemote + Apple Music + + 6585 + + Track ID6585 + NameSuperhero (Heroes & Villains) [Mixed] + ArtistMetro Boomin, Future & Chris Brown + Album ArtistCharlie Sloth + AlbumThe Penthouse (DJ Mix) + GenreRap + KindApple Music AAC audio file + Size5956248 + Total Time161373 + Disc Number1 + Disc Count1 + Track Number20 + Track Count44 + Year2023 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-02-10T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumThe Penthouse (DJ Mix) + Sort ArtistMetro Boomin, Future & Chris Brown + Sort NameSuperhero (Heroes & Villains) [Mixed] + Persistent IDC59DB39BD0B23373 + Explicit + Track TypeRemote + Apple Music + + 6587 + + Track ID6587 + NameBURN EVERYTHING (feat. Ye) + ArtistSean Leon + Album ArtistSean Leon + ComposerMatthew Sean Leon, Ye West, Bijan Amir & John Cunningham + AlbumBURN EVERYTHING (feat. Ye) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6024166 + Total Time169464 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3782050061 + Play Date UTC2023-11-05T14:27:41Z + Release Date2022-11-18T12:00:00Z + Artwork Count1 + Sort AlbumBURN EVERYTHING (feat. Ye) - Single + Sort ArtistSean Leon + Sort NameBURN EVERYTHING (feat. Ye) + Persistent IDA6F75010AA4C7C04 + Explicit + Track TypeRemote + Apple Music + + 6589 + + Track ID6589 + NameFrom You (feat. Joji) + ArtistBonobo + Album ArtistBonobo + ComposerSimon Green & George Miller + AlbumFragments + GenreElectronic + KindApple Music AAC audio file + Size7605966 + Total Time210280 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2022 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3783762601 + Play Date UTC2023-11-25T10:10:01Z + Release Date2022-01-03T08:00:00Z + Artwork Count1 + Sort AlbumFragments + Sort ArtistBonobo + Sort NameFrom You (feat. Joji) + Persistent IDE105DD7EC0C635BA + Track TypeRemote + Apple Music + + 6591 + + Track ID6591 + NameJACKIE BROWN + ArtistBrent Faiyaz + Album ArtistBrent Faiyaz + ComposerChristopher Brent Wood, Jason Avalos, Jordan Ware, Stephen Garrett & Timothy Mosley + AlbumWASTELAND + GenreR&B/Soul + KindApple Music AAC audio file + Size6093194 + Total Time169014 + Disc Number1 + Disc Count1 + Track Number16 + Track Count19 + Year2022 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3783587680 + Play Date UTC2023-11-23T09:34:40Z + Release Date2022-07-08T12:00:00Z + Artwork Count1 + Sort AlbumWASTELAND + Sort ArtistBrent Faiyaz + Sort NameJACKIE BROWN + Persistent IDCD14C5959835A064 + Explicit + Track TypeRemote + Apple Music + + 6593 + + Track ID6593 + NameKnow You Miss Me + ArtistAyparia & Armut + Album ArtistAyparia & Armut + ComposerCaroline Polachek, Cassie Ventura, Ernest Greene, Jacques Webster & Ricci Riera + AlbumKnow You Miss Me - Single + GenreAlternative + KindApple Music AAC audio file + Size10965393 + Total Time324615 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2020 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Release Date2020-03-20T12:00:00Z + Artwork Count1 + Sort AlbumKnow You Miss Me - Single + Sort ArtistAyparia & Armut + Sort NameKnow You Miss Me + Persistent ID58E62C3A0B988620 + Explicit + Track TypeRemote + Apple Music + + 6595 + + Track ID6595 + NamePost Malone Chemical + Artistthomazinn + Album Artistthomazinn + ComposerAndré Silva + AlbumPost Malone Chemical - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7809585 + Total Time221611 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782051060 + Play Date UTC2023-11-05T14:44:20Z + Release Date2023-04-22T12:00:00Z + Artwork Count1 + Sort AlbumPost Malone Chemical - Single + Sort Artistthomazinn + Sort NamePost Malone Chemical + Persistent ID2BA1776AD80CE1BB + Track TypeRemote + Apple Music + + 6597 + + Track ID6597 + NameKissin Pink + ArtistAndreas Alives + Album ArtistAndreas Alives + ComposerRakel Mike Bayers & Jan Raudy Marcel + AlbumMultiverse Rocky - Single + GenreHip-Hop/Rap + KindAAC audio file + Size7635558 + Total Time211302 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2011 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Release Date2011-10-31T12:00:00Z + Artwork Count1 + Sort AlbumMultiverse Rocky - Single + Sort ArtistAndreas Alives + Sort NameKissin Pink + Persistent ID7432FD0C9D0C8703 + Explicit + Track TypeRemote + + 6599 + + Track ID6599 + NameMoonlight (Kali Uchis) + Artistomgkirby + Album Artistomgkirby + ComposerKali Uchis + AlbumMoonlight - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size4782192 + Total Time132414 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2023 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3782050833 + Play Date UTC2023-11-05T14:40:33Z + Release Date2023-06-02T12:00:00Z + Artwork Count1 + Sort AlbumMoonlight - EP + Sort Artistomgkirby + Sort NameMoonlight (Kali Uchis) + Persistent ID74EFB163027FB2CB + Track TypeRemote + Apple Music + + 6601 + + Track ID6601 + Namem y . l i f e + ArtistJ. Cole, 21 Savage & Morray + Album ArtistJ. Cole + ComposerJ. Cole, 21 Savage & Jake One + AlbumThe Off-Season + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7897194 + Total Time218802 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2021 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3783670852 + Play Date UTC2023-11-24T08:40:52Z + Skip Count2 + Skip Date2023-11-05T14:51:06Z + Release Date2021-05-14T12:00:00Z + Artwork Count1 + Sort AlbumThe Off-Season + Sort ArtistJ. Cole, 21 Savage & Morray + Sort Namem y . l i f e + Persistent IDDA89AF1FBBA6E003 + Explicit + Track TypeRemote + Apple Music + + 6603 + + Track ID6603 + NameFreestyle + ArtistLil Baby + Album ArtistLil Baby + ComposerDominique' Jones + AlbumToo Hard + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5852352 + Total Time162053 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2017 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3781465081 + Play Date UTC2023-10-29T19:58:01Z + Release Date2017-12-01T12:00:00Z + Artwork Count1 + Sort AlbumToo Hard + Sort ArtistLil Baby + Sort NameFreestyle + Persistent ID3EC7A42EC124002B + Explicit + Track TypeRemote + Apple Music + + 6605 + + Track ID6605 + NameRich Flex (Drake & 21 Savage Remix) + ArtistLul Kp + Album ArtistLul Kp + ComposerLul K P + AlbumReal Playa + GenreHip-Hop/Rap + KindAAC audio file + Size4494147 + Total Time118560 + Disc Number1 + Disc Count1 + Track Number7 + Track Count8 + Year2022 + Date Modified2023-07-11T20:24:11Z + Date Added2023-07-11T20:24:11Z + Bit Rate256 + Sample Rate44100 + Release Date2022-11-22T12:00:00Z + Artwork Count1 + Sort AlbumReal Playa + Sort ArtistLul Kp + Sort NameRich Flex (Drake & 21 Savage Remix) + Persistent IDC04BC981DAF6EC19 + Explicit + Track TypeRemote + + 6607 + + Track ID6607 + NameStrike (Holster) [Mixed] + ArtistLil Yachty + Album ArtistJJESS + AlbumThe Agenda: May 2023 (DJ Mix) + GenreElectronic + KindApple Music AAC audio file + Size3761636 + Total Time96200 + Disc Number1 + Disc Count1 + Track Number35 + Track Count40 + Year2023 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count2 + Play Date3781615982 + Play Date UTC2023-10-31T13:53:02Z + Release Date2023-05-19T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumThe Agenda: May 2023 (DJ Mix) + Sort ArtistLil Yachty + Sort NameStrike (Holster) [Mixed] + Persistent ID38A475E245B79589 + Explicit + Track TypeRemote + Apple Music + + 6609 + + Track ID6609 + NameDavid Kushner daylight + ArtistStar one + Album ArtistStar one + ComposerEnmanuel Estarlin Reyes + AlbumDavid Kushner daylight - Single + GenrePop + KindAAC audio file + Size7406413 + Total Time207231 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Release Date2023-05-21T12:00:00Z + Artwork Count1 + Sort AlbumDavid Kushner daylight - Single + Sort ArtistStar one + Sort NameDavid Kushner daylight + Persistent ID54E270EF6B34AE9F + Track TypeRemote + + 6611 + + Track ID6611 + NameOff the Map + ArtistRamzoid + Album ArtistRamzoid + ComposerJulien Lopes + AlbumOff the Map - Single + GenreAlternative + KindApple Music AAC audio file + Size4883830 + Total Time129114 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3780913361 + Play Date UTC2023-10-23T10:42:41Z + Release Date2022-09-05T12:00:00Z + Artwork Count1 + Sort AlbumOff the Map - Single + Sort ArtistRamzoid + Sort NameOff the Map + Persistent ID97091B4CF285C7A8 + Track TypeRemote + Apple Music + + 6613 + + Track ID6613 + NameSaint Pablo + ArtistKanye West + Album ArtistKanye West + ComposerKanye West, Sampha Sisay, MIKE DEAN, Allen Ritter, Shawn Carter, Deric Angelettie, Ronald Lawrence & Norman Whitfield + AlbumThe Life of Pablo + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size12844348 + Total Time372113 + Disc Number1 + Disc Count1 + Track Number20 + Track Count20 + Year2016 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3773756346 + Play Date UTC2023-08-01T14:39:06Z + Skip Count1 + Skip Date2023-11-05T14:21:29Z + Release Date2016-02-14T08:00:00Z + Artwork Count1 + Sort AlbumThe Life of Pablo + Sort ArtistKanye West + Sort NameSaint Pablo + Persistent IDF76F4201C479AB5A + Explicit + Track TypeRemote + Apple Music + + 6615 + + Track ID6615 + Name2 Am + ArtistRama + Album ArtistRama + ComposerRama Kinuthia Ngugi + Album2 Am - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7191513 + Total Time200000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3778341569 + Play Date UTC2023-09-23T16:19:29Z + Skip Count1 + Skip Date2023-10-21T15:45:23Z + Release Date2022-12-23T12:00:00Z + Artwork Count1 + Sort Album2 Am - Single + Sort ArtistRama + Sort Name2 Am + Persistent ID3585A2F9EB0359A6 + Explicit + Track TypeRemote + Apple Music + + 6617 + + Track ID6617 + NameBright Lights + ArtistDerek Pope + Album ArtistDerek Pope + ComposerDerek Pope + AlbumBright Lights / Body - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7239343 + Total Time202927 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2022 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count4 + Play Date3783754280 + Play Date UTC2023-11-25T07:51:20Z + Release Date2022-12-02T12:00:00Z + Artwork Count1 + Sort AlbumBright Lights / Body - Single + Sort ArtistDerek Pope + Sort NameBright Lights + Persistent IDE3991B113A0054DC + Explicit + Track TypeRemote + Apple Music + + 6619 + + Track ID6619 + NameSpaceship + Artist48 Lanez & Wintrs + Album Artist48 Lanez & Wintrs + ComposerDraco Mawri + AlbumSpaceship - Single + GenreHip-Hop/Rap + KindAAC audio file + Size6349588 + Total Time185063 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Release Date2021-12-16T00:00:00Z + Artwork Count1 + Sort AlbumSpaceship - Single + Sort Artist48 Lanez & Wintrs + Sort NameSpaceship + Persistent IDA8FD0D94EE8C8F79 + Explicit + Track TypeRemote + + 6621 + + Track ID6621 + Nameall my friends + Artist21 Savage + Album Artist21 Savage + Composer21 Savage, Austin Post, Louis Bell, Travis Galette, Idan Kalai & Billy Walsh + Albumi am > i was (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7514854 + Total Time211785 + Disc Number1 + Disc Count1 + Track Number7 + Track Count16 + Year2018 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3783773975 + Play Date UTC2023-11-25T13:19:35Z + Release Date2018-12-21T08:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumi am > i was (Deluxe) + Sort Artist21 Savage + Sort Nameall my friends + Persistent IDDA46C57C19E017B6 + Explicit + Track TypeRemote + Apple Music + + 6623 + + Track ID6623 + NameDo What I Want (Mixed) + ArtistKid Cudi + Album ArtistU-LEE + AlbumVISION: U-LEE (DJ Mix) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5098253 + Total Time136248 + Disc Number1 + Disc Count1 + Track Number9 + Track Count18 + Year2022 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count2 + Play Date3783076269 + Play Date UTC2023-11-17T11:31:09Z + Release Date2022-06-29T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumVISION: U-LEE (DJ Mix) + Sort ArtistKid Cudi + Sort NameDo What I Want (Mixed) + Persistent ID858EA7293E1401B4 + Track TypeRemote + Apple Music + + 6625 + + Track ID6625 + NameNo Opp Left Behind + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerShéyaa Bin Abraham-Joseph & Leland Wayne + AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7171401 + Total Time194214 + Disc Number2 + Disc Count2 + Track Number13 + Track Count15 + Year2020 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3783767527 + Play Date UTC2023-11-25T11:32:07Z + Release Date2020-10-02T07:00:00Z + Artwork Count1 + Sort AlbumSAVAGE MODE II [CHOPPED NOT SLOPPED] + Sort Artist21 Savage & Metro Boomin + Sort NameNo Opp Left Behind + Persistent ID6EA0DE2EF14F5E6C + Explicit + Track TypeRemote + Apple Music + + 6627 + + Track ID6627 + NameRich Spirit (Piano Version) + ArtistOyster Lovers + Album ArtistOyster Lovers + ComposerD. Natche, Frano Huett, Jahaan Sweet, Kendrick Lamar, M. Spears & Sam Dew + AlbumKendrick Lamar's Mr. Morale & the Big Steppers On Piano - Disc 1 (Piano Version) + GenreEasy Listening + KindApple Music AAC audio file + Size3911674 + Total Time101053 + Disc Number1 + Disc Count1 + Track Number6 + Track Count8 + Year2022 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778342610 + Play Date UTC2023-09-23T16:36:50Z + Release Date2022-05-26T12:00:00Z + Artwork Count1 + Sort AlbumKendrick Lamar's Mr. Morale & the Big Steppers On Piano - Disc 1 (Piano Version) + Sort ArtistOyster Lovers + Sort NameRich Spirit (Piano Version) + Persistent ID28E6B16E52D005AC + Track TypeRemote + Apple Music + + 6629 + + Track ID6629 + NameSlow Song + ArtistMaster Peace & Kasien + Album ArtistMaster Peace + ComposerMaster Peace, Gina Kushka, Jacob Manson, Kasien Daley & George Reid + AlbumPublic Display Of Affection - EP + GenrePop + KindApple Music AAC audio file + Size7054995 + Total Time197236 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2021 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783692880 + Play Date UTC2023-11-24T14:48:00Z + Release Date2021-05-21T12:00:00Z + Artwork Count1 + Sort AlbumPublic Display Of Affection - EP + Sort ArtistMaster Peace & Kasien + Sort NameSlow Song + Persistent ID17D49FED5DD497BB + Track TypeRemote + Apple Music + + 6631 + + Track ID6631 + NameNight Scenee + ArtistTrav Jr + Album ArtistTrav Jr + ComposerKenith Johns + AlbumOt2 - Single + GenreHip-Hop/Rap + KindAAC audio file + Size8092389 + Total Time227360 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2023 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3772201203 + Play Date UTC2023-07-14T14:40:03Z + Release Date2023-02-10T12:00:00Z + Artwork Count1 + Sort AlbumOt2 - Single + Sort ArtistTrav Jr + Sort NameNight Scenee + Persistent IDBDA0C32331042874 + Explicit + Track TypeRemote + + 6633 + + Track ID6633 + NameHouse of Balloons / Glass Table Girls (Original) + ArtistThe Weeknd + Album ArtistThe Weeknd + ComposerThe Weeknd, Carlo Montagnese, Doc McKinney, Susan Ballion, Peter Clarke, John Martin & Steven Severin + AlbumHouse of Balloons (Original) + GenreR&B/Soul + KindApple Music AAC audio file + Size14030059 + Total Time407316 + Disc Number1 + Disc Count1 + Track Number3 + Track Count9 + Year2011 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3772203322 + Play Date UTC2023-07-14T15:15:22Z + Release Date2011-03-21T12:00:00Z + Artwork Count1 + Sort AlbumHouse of Balloons (Original) + Sort Album ArtistWeeknd + Sort ArtistWeeknd + Sort ComposerWeeknd, Carlo Montagnese, Doc McKinney, Susan Ballion, Peter Clarke, John Martin & Steven Severin + Sort NameHouse of Balloons / Glass Table Girls (Original) + Persistent IDCD5E47285BB15751 + Explicit + Track TypeRemote + Apple Music + + 6635 + + Track ID6635 + NameMIDDLE CHILD + ArtistJ. Cole + Album ArtistDreamville & J. Cole + ComposerJ. Cole + AlbumRevenge of the Dreamers III + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7515233 + Total Time213000 + Disc Number1 + Disc Count1 + Track Number16 + Track Count18 + Year2019 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Skip Count1 + Skip Date2023-10-12T16:31:43Z + Release Date2019-01-23T08:00:00Z + Artwork Count1 + Sort AlbumRevenge of the Dreamers III + Sort ArtistJ. Cole + Sort NameMIDDLE CHILD + Persistent ID20CC7667E14EEBD9 + Explicit + Track TypeRemote + Apple Music + + 6637 + + Track ID6637 + NameLocation + ArtistPlayboi Carti + Album ArtistPlayboi Carti + ComposerRory W. Quigley, Allan Holdsworth & Mark Rowanne + AlbumPlayboi Carti + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6090169 + Total Time168784 + Disc Number1 + Disc Count1 + Track Number1 + Track Count15 + Year2017 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3778348905 + Play Date UTC2023-09-23T18:21:45Z + Release Date2017-04-14T07:00:00Z + Sort AlbumPlayboi Carti + Sort ArtistPlayboi Carti + Sort NameLocation + Persistent IDB6808C71BA04CDC1 + Explicit + Track TypeRemote + Apple Music + + 6639 + + Track ID6639 + NameRIP Luv + Artist21 Savage & Metro Boomin + Album Artist21 Savage & Metro Boomin + ComposerShéyaa Bin Abraham-Joseph, Leland Wayne, Xavier Dotson, Wallace Childs, James Epps, Cleveland Horne & Joseph Pruitt + AlbumSAVAGE MODE II + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7598313 + Total Time214192 + Disc Number1 + Disc Count1 + Track Number14 + Track Count15 + Year2020 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3777565191 + Play Date UTC2023-09-14T16:39:51Z + Release Date2020-10-02T12:00:00Z + Artwork Count1 + Sort AlbumSAVAGE MODE II + Sort Artist21 Savage & Metro Boomin + Sort NameRIP Luv + Persistent ID7AA6BC8F0EA818DB + Explicit + Track TypeRemote + Apple Music + + 6641 + + Track ID6641 + NameLost Forever + ArtistCactilewis + Album ArtistCactilewis + ComposerDremond Lewis + AlbumAfterdark - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6166284 + Total Time166905 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2023 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3783775573 + Play Date UTC2023-11-25T13:46:13Z + Release Date2023-03-01T12:00:00Z + Artwork Count1 + Sort AlbumAfterdark - EP + Sort ArtistCactilewis + Sort NameLost Forever + Persistent ID469EBBED59879981 + Explicit + Track TypeRemote + Apple Music + + 6643 + + Track ID6643 + NameLast Minute + ArtistSASH + Album ArtistSASH + ComposerJack Sash Basora + AlbumLast Minute - Single + GenreAlternative + KindApple Music AAC audio file + Size6274939 + Total Time174815 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count8 + Play Date3783709104 + Play Date UTC2023-11-24T19:18:24Z + Release Date2021-12-31T12:00:00Z + Artwork Count1 + Sort AlbumLast Minute - Single + Sort ArtistSASH + Sort NameLast Minute + Persistent ID61A97E3F37DC8C78 + Explicit + Track TypeRemote + Apple Music + + 6645 + + Track ID6645 + NameLes + ArtistChildish Gambino + Album ArtistChildish Gambino + ComposerLudwig Göransson & Donald Glover + AlbumCamp + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11098181 + Total Time317293 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2011 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count1 + Play Date3777367876 + Play Date UTC2023-09-12T09:51:16Z + Release Date2011-11-15T08:00:00Z + Artwork Count1 + Sort AlbumCamp + Sort ArtistChildish Gambino + Sort NameLes + Persistent ID666C3A51D7FC47CD + Explicit + Track TypeRemote + Apple Music + + 6647 + + Track ID6647 + Name5Min + ArtistPaxslim + Album ArtistPaxslim + ComposerPax Anthony + Album5Min - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4487725 + Total Time118590 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3778341934 + Play Date UTC2023-09-23T16:25:34Z + Release Date2022-04-13T12:00:00Z + Artwork Count1 + Sort Album5Min - Single + Sort ArtistPaxslim + Sort Name5Min + Persistent ID336DA206232B3024 + Explicit + Track TypeRemote + Apple Music + + 6649 + + Track ID6649 + NameFather Stretch My Hands, Pt. 1 + ArtistKanye West + Album ArtistKanye West + ComposerKanye West, Scott Mescudi, Rick Rubin, MIKE DEAN, Noah Goldstein, Leland Wayne, Cydel Young, Allen Ritter, Jerome Potter, Samuel Griesemer, Chancelor Bennett & T. L. Barrett + AlbumThe Life of Pablo + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5081268 + Total Time135920 + Disc Number1 + Disc Count1 + Track Number2 + Track Count20 + Year2016 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3783452971 + Play Date UTC2023-11-21T20:09:31Z + Skip Count1 + Skip Date2023-09-23T16:25:56Z + Release Date2016-02-14T08:00:00Z + Sort AlbumThe Life of Pablo + Sort ArtistKanye West + Sort NameFather Stretch My Hands, Pt. 1 + Persistent ID498AEBCABE8BF2A6 + Explicit + Track TypeRemote + Apple Music + + 6651 + + Track ID6651 + Name4Real + ArtistRamy + Album ArtistRamy + ComposerRamy Westwood + Album4Real - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size4990354 + Total Time132923 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3781617278 + Play Date UTC2023-10-31T14:14:38Z + Release Date2022-09-02T12:00:00Z + Artwork Count1 + Sort Album4Real - Single + Sort ArtistRamy + Sort Name4Real + Persistent ID95CAD17AFFE22EF5 + Explicit + Track TypeRemote + Apple Music + + 6653 + + Track ID6653 + NameAttention (Mixed) + ArtistDoja Cat + Album ArtistApple Music Resident DJ + AlbumToday's Hits: July 2023 (DJ Mix) + GenreDance + KindApple Music AAC audio file + Size7748227 + Total Time213699 + Disc Number1 + Disc Count1 + Track Number12 + Track Count23 + Year2023 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count1 + Play Date3780564423 + Play Date UTC2023-10-19T09:47:03Z + Release Date2023-07-07T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumToday's Hits: July 2023 (DJ Mix) + Sort ArtistDoja Cat + Sort NameAttention (Mixed) + Persistent IDCB88D75A7A7BC630 + Track TypeRemote + Apple Music + + 6655 + + Track ID6655 + Name16 + ArtistBaby Keem + Album ArtistBaby Keem + ComposerHykeem Carter, Dacoury Natche & Jeff Kleinman + AlbumThe Melodic Blue + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5743168 + Total Time156040 + Disc Number1 + Disc Count2 + Track Number16 + Track Count16 + Year2021 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3782049680 + Play Date UTC2023-11-05T14:21:20Z + Release Date2021-09-10T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumThe Melodic Blue + Sort ArtistBaby Keem + Sort Name16 + Persistent IDCA5C5C3E4816DC67 + Explicit + Track TypeRemote + Apple Music + + 6657 + + Track ID6657 + NameMOVIE SHIT (feat. Manu) + ArtistKasien & Odunsi (The Engine) + Album ArtistKasien & Odunsi (The Engine) + ComposerBowofoluwa Oluwafisayo Odunsi, Emanuelle Loca & Kasien Daley + AlbumMovie Shit (feat. Manu) - Single + GenreRap + KindApple Music AAC audio file + Size5671447 + Total Time156000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2021 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3778347381 + Play Date UTC2023-09-23T17:56:21Z + Skip Count1 + Skip Date2023-07-15T12:44:10Z + Release Date2021-12-01T12:00:00Z + Artwork Count1 + Sort AlbumMovie Shit (feat. Manu) - Single + Sort ArtistKasien & Odunsi (The Engine) + Sort NameMOVIE SHIT (feat. Manu) + Persistent IDE79B62B940B5156E + Explicit + Track TypeRemote + Apple Music + + 6659 + + Track ID6659 + NameWhat You Heard + ArtistSonder + Album ArtistSonder + ComposerAtupele Ndisale, Carlos Muñoz, David Patino & Christopher Wood + AlbumWhat You Heard - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size8743625 + Total Time238242 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3778348553 + Play Date UTC2023-09-23T18:15:53Z + Release Date2019-02-22T12:00:00Z + Artwork Count1 + Sort AlbumWhat You Heard - Single + Sort ArtistSonder + Sort NameWhat You Heard + Persistent ID2458243A79D5177C + Explicit + Track TypeRemote + Apple Music + + 6661 + + Track ID6661 + NameHonda civic '98 + ArtistChase Shakur + Album ArtistChase Shakur + AlbumIt'll Be Fine + GenreR&B/Soul + KindApple Music AAC audio file + Size6822393 + Total Time187723 + Disc Number1 + Disc Count1 + Track Number6 + Track Count9 + Year2022 + Date Modified2023-07-11T20:24:23Z + Date Added2023-07-11T20:24:23Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3781571998 + Play Date UTC2023-10-31T01:39:58Z + Release Date2022-06-24T12:00:00Z + Artwork Count1 + Sort AlbumIt'll Be Fine + Sort ArtistChase Shakur + Sort NameHonda civic '98 + Persistent IDBA81DB119BEFBEBB + Track TypeRemote + Apple Music + + 6663 + + Track ID6663 + Name10AM / Save the World (feat. Gucci Mane) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Radric Davis, Andre Proctor, Joseph Froese & Gladys Williams Givens + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8113409 + Total Time226320 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3772352552 + Play Date UTC2023-07-16T08:42:32Z + Skip Count1 + Skip Date2023-10-21T15:45:28Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort Name10AM / Save the World (feat. Gucci Mane) + Persistent ID3C04F488310F44B2 + Explicit + Track TypeRemote + Apple Music + + 6665 + + Track ID6665 + NameDon't Come Out the House (feat. 21 Savage) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Shéyaa Bin Abraham-Joseph & Brytavious Lakeith Chambers + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6192695 + Total Time168347 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3777563388 + Play Date UTC2023-09-14T16:09:48Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameDon't Come Out the House (feat. 21 Savage) + Persistent ID276955367AC78EAB + Explicit + Track TypeRemote + Apple Music + + 6667 + + Track ID6667 + Name10 Freaky Girls (feat. 21 Savage) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Shéyaa Bin Abraham-Joseph & Michael Jones + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7493794 + Total Time208293 + Disc Number1 + Disc Count1 + Track Number6 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count6 + Play Date3779915288 + Play Date UTC2023-10-11T21:28:08Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort Name10 Freaky Girls (feat. 21 Savage) + Persistent IDD89FE40FA5602FB0 + Explicit + Track TypeRemote + Apple Music + + 6669 + + Track ID6669 + NameUp to Something (feat. Travis Scott & Young Thug) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Travis Scott, Jeffrey Williams, Allen Ritter & Joshua Luellen + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6684630 + Total Time184360 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3772353346 + Play Date UTC2023-07-16T08:55:46Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameUp to Something (feat. Travis Scott & Young Thug) + Persistent ID8AC65F504D252972 + Explicit + Track TypeRemote + Apple Music + + 6671 + + Track ID6671 + NameOnly 1 (Interlude) [feat. Travis Scott] + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin & Travis Scott + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3150144 + Total Time80467 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3772805512 + Play Date UTC2023-07-21T14:31:52Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameOnly 1 (Interlude) [feat. Travis Scott] + Persistent ID54093230DEC3F49C + Explicit + Track TypeRemote + Apple Music + + 6673 + + Track ID6673 + NameLesbian (feat. Gunna & Young Thug) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Sergio Kitchens, Jeffrey Williams & Joshua Luellen + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7534782 + Total Time206813 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3772276530 + Play Date UTC2023-07-15T11:35:30Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameLesbian (feat. Gunna & Young Thug) + Persistent ID69B4163ADB9E4100 + Explicit + Track TypeRemote + Apple Music + + 6675 + + Track ID6675 + NameBorrowed Love (feat. Swae Lee & Wizkid) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Khalif Malikibnsham Brown, Wizkid, Mary Lou Cross & Johnnie Lee Frierson + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8209092 + Total Time230240 + Disc Number1 + Disc Count1 + Track Number10 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3783449962 + Play Date UTC2023-11-21T19:19:22Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameBorrowed Love (feat. Swae Lee & Wizkid) + Persistent ID75DCA318C4D1646D + Explicit + Track TypeRemote + Apple Music + + 6677 + + Track ID6677 + NameOnly You (feat. Wizkid & Offset) + ArtistMetro Boomin & J Balvin + Album ArtistMetro Boomin + ComposerMetro Boomin, Wizkid, Offset, J Balvin & Allen Ritter + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7787719 + Total Time218627 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3772198777 + Play Date UTC2023-07-14T13:59:37Z + Skip Count1 + Skip Date2023-07-15T11:39:42Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin & J Balvin + Sort NameOnly You (feat. Wizkid & Offset) + Persistent ID2B9F42FD1D3964CC + Explicit + Track TypeRemote + Apple Music + + 6679 + + Track ID6679 + NameNo More (feat. Travis Scott, Kodak Black & 21 Savage) + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Travis Scott, Shéyaa Bin Abraham-Joseph, Bill K. Kapri, Dieuson Octave & Dale Ossman Warren + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9467941 + Total Time265120 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2018 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3776351156 + Play Date UTC2023-08-31T15:25:56Z + Release Date2018-11-02T12:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameNo More (feat. Travis Scott, Kodak Black & 21 Savage) + Persistent ID3AD7B0DE287A0C43 + Explicit + Track TypeRemote + Apple Music + + 6681 + + Track ID6681 + NameNo Complaints (feat. Offset & Drake) [Bonus] + ArtistMetro Boomin + Album ArtistMetro Boomin + ComposerMetro Boomin, Offset & Drake + AlbumNOT ALL HEROES WEAR CAPES + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9237256 + Total Time265480 + Disc Number1 + Disc Count1 + Track Number13 + Track Count13 + Year2017 + Date Modified2023-07-11T20:24:25Z + Date Added2023-07-11T20:24:25Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3782894197 + Play Date UTC2023-11-15T08:56:37Z + Release Date2017-06-23T07:00:00Z + Artwork Count1 + Sort AlbumNOT ALL HEROES WEAR CAPES + Sort ArtistMetro Boomin + Sort NameNo Complaints (feat. Offset & Drake) [Bonus] + Persistent ID4365BC5ED4631087 + Explicit + Track TypeRemote + Apple Music + + 6683 + + Track ID6683 + NameRap Saved Me (feat. Quavo) + Artist21 Savage, Offset & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerShayaa Joseph, Kiari Cephus, Leland Wayne & Quavious Marshall + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9053128 + Total Time257600 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2017 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3783768256 + Play Date UTC2023-11-25T11:44:16Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumWithout Warning + Sort Artist21 Savage, Offset & Metro Boomin + Sort NameRap Saved Me (feat. Quavo) + Persistent ID3A147B35812BC7A1 + Explicit + Track TypeRemote + Apple Music + + 6685 + + Track ID6685 + NameNightmare + ArtistOffset & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerKiari Cephus & Leland Wayne + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5685822 + Total Time147987 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2017 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3780414600 + Play Date UTC2023-10-17T16:10:00Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumWithout Warning + Sort ArtistOffset & Metro Boomin + Sort NameNightmare + Persistent ID7FE9E1915475128A + Explicit + Track TypeRemote + Apple Music + + 6687 + + Track ID6687 + NameMad Stalkers + Artist21 Savage, Offset & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerShayaa Joseph, Kiari Cephus, Leland Wayne & Andre Eric Proctor + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7168898 + Total Time202667 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2017 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3779236697 + Play Date UTC2023-10-04T00:58:17Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumWithout Warning + Sort Artist21 Savage, Offset & Metro Boomin + Sort NameMad Stalkers + Persistent IDD3A2373B7BF8B5ED + Explicit + Track TypeRemote + Apple Music + + 6689 + + Track ID6689 + NameDisrespectful + Artist21 Savage, Offset & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerShayaa Joseph, Kiari Cephus & Leland Wayne + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5821370 + Total Time160320 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2017 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3781447263 + Play Date UTC2023-10-29T15:01:03Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumWithout Warning + Sort Artist21 Savage, Offset & Metro Boomin + Sort NameDisrespectful + Persistent ID25BDB85C251EFE80 + Explicit + Track TypeRemote + Apple Music + + 6691 + + Track ID6691 + NameRun Up the Racks + Artist21 Savage & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerShayaa Joseph, Leland Wayne & Joshua Luellen + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6786106 + Total Time189800 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2017 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3775200218 + Play Date UTC2023-08-18T07:43:38Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWithout Warning + Sort Artist21 Savage & Metro Boomin + Sort NameRun Up the Racks + Persistent IDF503B0B7BD877A86 + Explicit + Track TypeRemote + Apple Music + + 6693 + + Track ID6693 + NameStill Serving + Artist21 Savage, Offset & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerShayaa Joseph, Kiari Cephus, Leland Wayne, Kevin Gromringer & Tim Gomringer + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8195542 + Total Time231787 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2017 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3774013128 + Play Date UTC2023-08-04T13:58:48Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumWithout Warning + Sort Artist21 Savage, Offset & Metro Boomin + Sort NameStill Serving + Persistent ID308E7C43D993E855 + Explicit + Track TypeRemote + Apple Music + + 6695 + + Track ID6695 + NameDarth Vader + Artist21 Savage, Offset & Metro Boomin + Album Artist21 Savage, Offset & Metro Boomin + ComposerShayaa Joseph, Kiari Cephus & Leland Wayne + AlbumWithout Warning + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7945839 + Total Time228893 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2017 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count16 + Play Date3780905246 + Play Date UTC2023-10-23T08:27:26Z + Release Date2017-12-23T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumWithout Warning + Sort Artist21 Savage, Offset & Metro Boomin + Sort NameDarth Vader + Persistent ID17D1325AF0EDDE9E + Explicit + Track TypeRemote + Apple Music + + 6697 + + Track ID6697 + NameBig Lie + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Dijon McFarlane, Nicholas Audino, Lewis Hughes, Te Whiti Warbrick, Louis Bell & Carl Rosen + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7717881 + Total Time207688 + Disc Number1 + Disc Count1 + Track Number2 + Track Count18 + Year2016 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3783060729 + Play Date UTC2023-11-17T07:12:09Z + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameBig Lie + Persistent IDF6DC12C4065FFC7C + Explicit + Track TypeRemote + Apple Music + + 6699 + + Track ID6699 + NameDeja Vu (feat. Justin Bieber) + ArtistPost Malone + Album ArtistPost Malone + ComposerJustin Bieber, Post Malone, Frank Dukes, Kaan Gunesberk, Louis Bell, Julian Swirsky, Trocon Markous Roberts, Jr., Carl Rosen, Anderson "Vinylz" Hernandez & Matthew Tavares + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8521606 + Total Time234213 + Disc Number1 + Disc Count1 + Track Number3 + Track Count18 + Year2016 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3783450699 + Play Date UTC2023-11-21T19:31:39Z + Release Date2016-09-08T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameDeja Vu (feat. Justin Bieber) + Persistent IDF7383071D44E4C5F + Explicit + Track TypeRemote + Apple Music + + 6701 + + Track ID6701 + NameNo Option + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Idan Kalai, Michael Hancock, Michael McGinnis, Louis Bell, Christopher Rude, Justin Bieber & Trocon Markous Roberts, Jr. + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6502362 + Total Time179824 + Disc Number1 + Disc Count1 + Track Number4 + Track Count18 + Year2016 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3783002982 + Play Date UTC2023-11-16T15:09:42Z + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameNo Option + Persistent ID2B12E2754C512AC0 + Explicit + Track TypeRemote + Apple Music + + 6703 + + Track ID6703 + NameCold + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Frank Dukes & Trocon Markous Roberts, Jr. + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9516001 + Total Time268928 + Disc Number1 + Disc Count1 + Track Number5 + Track Count18 + Year2016 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3783005203 + Play Date UTC2023-11-16T15:46:43Z + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameCold + Persistent ID69EACDEA0BFA0F34 + Explicit + Track TypeRemote + Apple Music + + 6705 + + Track ID6705 + NameWhite Iverson + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Trocon Markous Roberts, Jr., Andre Jackson, Idan Kalai & Rex Kudo + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9059482 + Total Time256532 + Disc Number1 + Disc Count1 + Track Number6 + Track Count18 + Year2015 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3783454609 + Play Date UTC2023-11-21T20:36:49Z + Release Date2015-02-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameWhite Iverson + Persistent IDAD72E2545F4FDADE + Explicit + Track TypeRemote + Apple Music + + 6707 + + Track ID6707 + NameFeel (feat. Kehlani) + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Kehlani, Idan Kalai, Trocon Markous Roberts, Jr. & Ryan Vojtesak + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7154125 + Total Time197121 + Disc Number1 + Disc Count1 + Track Number10 + Track Count18 + Year2016 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3783008952 + Play Date UTC2023-11-16T16:49:12Z + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameFeel (feat. Kehlani) + Persistent ID4A6FAF287D56AC45 + Explicit + Track TypeRemote + Apple Music + + 6709 + + Track ID6709 + NameYours Truly, Austin Post + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Louis Bell, Jahphet Landis, Leon Thomas & Carl Rosen + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7888348 + Total Time219152 + Disc Number1 + Disc Count1 + Track Number14 + Track Count18 + Year2016 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count6 + Play Date3783013918 + Play Date UTC2023-11-16T18:11:58Z + Skip Count2 + Skip Date2023-07-17T10:45:29Z + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameYours Truly, Austin Post + Persistent ID43A34584019747C8 + Explicit + Track TypeRemote + Apple Music + + 6711 + + Track ID6711 + NameMoney Made Me Do It (feat. 2 Chainz) + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Tauheed Epps & Trocon Markous Roberts, Jr. + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8050319 + Total Time224951 + Disc Number1 + Disc Count1 + Track Number17 + Track Count18 + Year2016 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3783005795 + Play Date UTC2023-11-16T15:56:35Z + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameMoney Made Me Do It (feat. 2 Chainz) + Persistent ID9C1DBF497794AA6B + Explicit + Track TypeRemote + Apple Music + + 6713 + + Track ID6713 + NameFeeling Whitney + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone & Andrew Watt + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9116281 + Total Time257278 + Disc Number1 + Disc Count1 + Track Number18 + Track Count18 + Year2016 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3783006963 + Play Date UTC2023-11-16T16:16:03Z + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameFeeling Whitney + Persistent ID552674EF33DCB886 + Explicit + Track TypeRemote + Apple Music + + 6715 + + Track ID6715 + NameParanoid + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Idan Kalai, Louis Bell, Alexander Krashinsky, Carl Rosen & William Walsh + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8015876 + Total Time221781 + Disc Number1 + Disc Count1 + Track Number1 + Track Count18 + Year2018 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3783057519 + Play Date UTC2023-11-17T06:18:39Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameParanoid + Persistent ID88B300BAD843C89E + Track TypeRemote + Apple Music + + 6717 + + Track ID6717 + NameRich & Sad + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Frank Dukes, William Walsh & Louis Bell + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7384541 + Total Time206460 + Disc Number1 + Disc Count1 + Track Number3 + Track Count18 + Year2018 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3783005411 + Play Date UTC2023-11-16T15:50:11Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameRich & Sad + Persistent ID8FA7AAA3805B5FD5 + Explicit + Track TypeRemote + Apple Music + + 6719 + + Track ID6719 + NameTakin' Shots + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Louis Bell, William Walsh, PARTYNEXTDOOR & David Hughes + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7794063 + Total Time216749 + Disc Number1 + Disc Count1 + Track Number5 + Track Count18 + Year2018 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count6 + Play Date3783596652 + Play Date UTC2023-11-23T12:04:12Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameTakin' Shots + Persistent ID8C2F40CF9EBDCE07 + Explicit + Track TypeRemote + Apple Music + + 6721 + + Track ID6721 + NameBall For Me (feat. Nicki Minaj) + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Louis Bell & Nicki Minaj + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7704038 + Total Time206269 + Disc Number1 + Disc Count1 + Track Number10 + Track Count18 + Year2018 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3783712952 + Play Date UTC2023-11-24T20:22:32Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameBall For Me (feat. Nicki Minaj) + Persistent ID7687F67AB6514F89 + Explicit + Track TypeRemote + Apple Music + + 6723 + + Track ID6723 + NameSame Bitches (feat. G-Eazy & YG) + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Louis Bell, Idan Kalai, William Walsh, Samuel Ahana, Gerald Gillum, Keenon Jackson & Rod Argent + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7588796 + Total Time212463 + Disc Number1 + Disc Count1 + Track Number14 + Track Count18 + Year2018 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3779314814 + Play Date UTC2023-10-04T22:40:14Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameSame Bitches (feat. G-Eazy & YG) + Persistent ID4C644C4D3710A75C + Explicit + Track TypeRemote + Apple Music + + 6725 + + Track ID6725 + Name92 Explorer + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Louis Bell, London On Da Track, Roark Bailey, Aubrey Robinson & Jaison Harris + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7637779 + Total Time211432 + Disc Number1 + Disc Count1 + Track Number16 + Track Count18 + Year2018 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3783057831 + Play Date UTC2023-11-17T06:23:51Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort Name92 Explorer + Persistent IDCE494E6FD3773D1A + Explicit + Track TypeRemote + Apple Music + + 6727 + + Track ID6727 + NameSugar Wraith + ArtistPost Malone + Album ArtistPost Malone + ComposerLouis Bell & Post Malone + Albumbeerbongs & bentleys + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8098261 + Total Time228147 + Disc Number1 + Disc Count1 + Track Number18 + Track Count18 + Year2018 + Date Modified2023-07-11T20:24:26Z + Date Added2023-07-11T20:24:26Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3783593978 + Play Date UTC2023-11-23T11:19:38Z + Release Date2018-04-27T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort Albumbeerbongs & bentleys + Sort ArtistPost Malone + Sort NameSugar Wraith + Persistent IDCD74CBDBB6CDD10B + Explicit + Track TypeRemote + Apple Music + + 6729 + + Track ID6729 + NameRose in a Glass + ArtistProvoker + Album ArtistProvoker + ComposerChristian Crow Petty & Jonathon Lopez + AlbumBody Jumper + GenreAlternative + KindApple Music AAC audio file + Size6535468 + Total Time178937 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2021 + Date Modified2023-07-11T20:24:29Z + Date Added2023-07-11T20:24:29Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3781060481 + Play Date UTC2023-10-25T03:34:41Z + Release Date2021-07-14T12:00:00Z + Artwork Count1 + Sort AlbumBody Jumper + Sort ArtistProvoker + Sort NameRose in a Glass + Persistent IDF7E4E1E91B2A1863 + Track TypeRemote + Apple Music + + 6731 + + Track ID6731 + NameFog (Again Again Version) + ArtistRadiohead + Album ArtistRadiohead + ComposerColin Greenwood, Ed O'Brien, Jonny Greenwood, Phil Selway & Thom Yorke + AlbumKID A MNESIA + GenreAlternative + KindApple Music AAC audio file + Size5378555 + Total Time145443 + Disc Number3 + Disc Count3 + Track Number3 + Track Count12 + Year2021 + Date Modified2023-07-11T20:24:30Z + Date Added2023-07-11T20:24:30Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3778338675 + Play Date UTC2023-09-23T15:31:15Z + Release Date2021-11-05T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumKID A MNESIA + Sort ArtistRadiohead + Sort NameFog (Again Again Version) + Persistent ID4C366E14E61E609D + Track TypeRemote + Apple Music + + 6733 + + Track ID6733 + NameIn the Room Where You Sleep + ArtistDead Man's Bones + Album ArtistDead Man's Bones + ComposerZach Shields & Ryan Gosling + AlbumDead Man's Bones + GenreAlternative + KindApple Music AAC audio file + Size8730069 + Total Time236827 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2009 + Date Modified2023-07-11T20:24:30Z + Date Added2023-07-11T20:24:30Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3779556593 + Play Date UTC2023-10-07T17:49:53Z + Release Date2009-10-02T12:00:00Z + Artwork Count1 + Sort AlbumDead Man's Bones + Sort ArtistDead Man's Bones + Sort NameIn the Room Where You Sleep + Persistent IDCA4BD98DAD7E7EF1 + Track TypeRemote + Apple Music + + 6735 + + Track ID6735 + NameImagine + ArtistJohn Lennon + Album ArtistJohn Lennon + ComposerJohn Lennon & Yoko Ono + AlbumImagine (The Ultimate Mixes) + GenreRock + KindApple Music AAC audio file + Size6689331 + Total Time186221 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year1971 + Date Modified2023-07-13T05:57:18Z + Date Added2023-07-13T05:57:18Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3780845662 + Play Date UTC2023-10-22T15:54:22Z + Release Date1971-09-09T12:00:00Z + Artwork Count1 + Sort AlbumImagine (The Ultimate Mixes) + Sort ArtistJohn Lennon + Sort NameImagine + Persistent ID3DFBE2FB884EF70C + Track TypeRemote + Apple Music + + 6737 + + Track ID6737 + NameMycose + ArtistLa Femme + Album ArtistLa Femme + ComposerMarlon Magnee & Sacha Got + AlbumMystère + GenreAlternative + KindApple Music AAC audio file + Size8068288 + Total Time231787 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2016 + Date Modified2023-07-21T21:04:56Z + Date Added2023-07-21T21:04:56Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count13 + Play Date3783413424 + Play Date UTC2023-11-21T09:10:24Z + Release Date2016-09-02T12:00:00Z + Artwork Count1 + Sort AlbumMystère + Sort ArtistLa Femme + Sort NameMycose + Persistent ID6B505191153A85AE + Track TypeRemote + Apple Music + + 6739 + + Track ID6739 + NameNever Far + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size7806252 + Total Time221440 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count10 + Play Date3777366534 + Play Date UTC2023-09-12T09:28:54Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameNever Far + Persistent ID248130D00BE1F354 + Track TypeRemote + Apple Music + + 6741 + + Track ID6741 + NameBaby Don't Quit + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size7000703 + Total Time192540 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count9 + Play Date3775560011 + Play Date UTC2023-08-22T11:40:11Z + Release Date2023-02-17T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameBaby Don't Quit + Persistent ID215421DBC5FE4DEA + Track TypeRemote + Apple Music + + 6743 + + Track ID6743 + NameThe Wine + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size7470962 + Total Time207699 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count8 + Play Date3775560218 + Play Date UTC2023-08-22T11:43:38Z + Skip Count1 + Skip Date2023-09-03T17:23:19Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameWine + Persistent IDF6FAE537D8120C6C + Track TypeRemote + Apple Music + + 6745 + + Track ID6745 + NameAnswer the Night + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size7312505 + Total Time200000 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2021 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count10 + Play Date3783596221 + Play Date UTC2023-11-23T11:57:01Z + Release Date2021-11-17T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameAnswer the Night + Persistent IDA4FDA0FDAC300329 + Track TypeRemote + Apple Music + + 6747 + + Track ID6747 + NameIn Love + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size6996667 + Total Time201979 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count7 + Play Date3775560620 + Play Date UTC2023-08-22T11:50:20Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameIn Love + Persistent ID712ECCEA4BB661B5 + Track TypeRemote + Apple Music + + 6749 + + Track ID6749 + NameGive Me Love or Give Me Nothing + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size6941909 + Total Time195027 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count8 + Play Date3781539310 + Play Date UTC2023-10-30T16:35:10Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameGive Me Love or Give Me Nothing + Persistent IDA48F5BEDC9A6C8D1 + Track TypeRemote + Apple Music + + 6751 + + Track ID6751 + NameNot a Rockstar + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size5543062 + Total Time148960 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count4 + Play Date3781196053 + Play Date UTC2023-10-26T17:14:13Z + Skip Count1 + Skip Date2023-07-27T08:20:12Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameNot a Rockstar + Persistent ID342FC5DE987C5732 + Track TypeRemote + Apple Music + + 6753 + + Track ID6753 + NameNot What You Wanted + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size7568196 + Total Time213947 + Disc Number1 + Disc Count1 + Track Number8 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count4 + Play Date3781080059 + Play Date UTC2023-10-25T09:00:59Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameNot What You Wanted + Persistent ID1A9B0E170CB1844A + Track TypeRemote + Apple Music + + 6755 + + Track ID6755 + NameLife In This Pain + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size5860923 + Total Time161120 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count5 + Play Date3781523804 + Play Date UTC2023-10-30T12:16:44Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameLife In This Pain + Persistent ID8412AF5519986F84 + Track TypeRemote + Apple Music + + 6757 + + Track ID6757 + NameOh Yeah + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size4594668 + Total Time122293 + Disc Number1 + Disc Count1 + Track Number10 + Track Count10 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count6 + Play Date3783495080 + Play Date UTC2023-11-22T07:51:20Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameOh Yeah + Persistent ID169968248C5F7698 + Track TypeRemote + Apple Music + + 6759 + + Track ID6759 + NameNew World + ArtistAime Simone + Album ArtistAime Simone + ComposerAime Simone & Sonja Fix + AlbumOh Glory + GenrePop + KindApple Music AAC audio file + Size6855099 + Total Time194627 + Disc Number1 + Disc Count1 + Track Number11 + Year2023 + Date Modified2023-07-23T07:54:59Z + Date Added2023-07-23T07:54:59Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count3 + Play Date3775483941 + Play Date UTC2023-08-21T14:32:21Z + Release Date2023-05-05T12:00:00Z + Artwork Count1 + Sort AlbumOh Glory + Sort ArtistAime Simone + Sort NameNew World + Persistent IDA20817F8906450A7 + Track TypeRemote + Apple Music + + 6761 + + Track ID6761 + NameThread + ArtistWombo + Album ArtistWombo + ComposerSydney Chadwick, Cameron Lowe & Joel Taylor + AlbumSlab - EP + GenreAlternative + KindApple Music AAC audio file + Size6616766 + Total Time183080 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2023 + Date Modified2023-07-23T08:01:23Z + Date Added2023-07-23T08:01:23Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3781063409 + Play Date UTC2023-10-25T04:23:29Z + Release Date2023-06-09T12:00:00Z + Loved + Artwork Count1 + Sort AlbumSlab - EP + Sort ArtistWombo + Sort NameThread + Persistent IDFBE8445D7F1AD378 + Track TypeRemote + Apple Music + + 6763 + + Track ID6763 + NameConstant Flux + ArtistSivu + Album ArtistSivu + ComposerJames Page + AlbumWild Horse Running + GenreSinger/Songwriter + KindApple Music AAC audio file + Size9137143 + Total Time255707 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2023 + Date Modified2023-07-23T08:07:01Z + Date Added2023-07-23T08:07:01Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3780914731 + Play Date UTC2023-10-23T11:05:31Z + Release Date2023-06-09T12:00:00Z + Loved + Artwork Count1 + Sort AlbumWild Horse Running + Sort ArtistSivu + Sort NameConstant Flux + Persistent ID110EEB51A6488EFE + Track TypeRemote + Apple Music + + 6765 + + Track ID6765 + NameYes I Have Eaten So Many Lemons Yes I Am So Bitte + Artistbar italia + Album Artistbar italia + ComposerJezmi Tarik Fehmi, Nina Cristante & Samuel Fenton + AlbumTracey Denim + GenreAlternative + KindApple Music AAC audio file + Size6491385 + Total Time179195 + Disc Number1 + Disc Count1 + Track Number7 + Track Count15 + Year2023 + Date Modified2023-07-23T08:29:06Z + Date Added2023-07-23T08:29:06Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3781614174 + Play Date UTC2023-10-31T13:22:54Z + Release Date2023-05-19T12:00:00Z + Artwork Count1 + Sort AlbumTracey Denim + Sort Artistbar italia + Sort NameYes I Have Eaten So Many Lemons Yes I Am So Bitte + Persistent ID9583FAEFBEBC370B + Track TypeRemote + Apple Music + + 6767 + + Track ID6767 + NameAngourie + ArtistThe Nagging Doubts + Album ArtistThe Nagging Doubts + ComposerThomas O'Rourke, Ruby King, Eden Neilson, Josef Wilks & Gabriel Edward Jessie-Smith + AlbumAngourie - Single + GenreIndie Rock + KindApple Music AAC audio file + Size7288052 + Total Time193189 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-07-23T08:31:07Z + Date Added2023-07-23T08:31:07Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3776966538 + Play Date UTC2023-09-07T18:22:18Z + Release Date2023-05-12T12:00:00Z + Artwork Count1 + Sort AlbumAngourie - Single + Sort Album ArtistNagging Doubts + Sort ArtistNagging Doubts + Sort NameAngourie + Persistent ID452582B68A2D6406 + Track TypeRemote + Apple Music + + 6769 + + Track ID6769 + NameEarth Glows No More Devine + ArtistSamuel Organ + Album ArtistSamuel Organ + ComposerSamuel Organ & Samuel Christian Organ + AlbumGuided by Horses + GenreEasy Listening + KindApple Music AAC audio file + Size7861247 + Total Time219000 + Disc Number1 + Disc Count1 + Track Number2 + Track Count7 + Year2023 + Date Modified2023-07-23T08:41:15Z + Date Added2023-07-23T08:41:15Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3776966344 + Play Date UTC2023-09-07T18:19:04Z + Skip Count1 + Skip Date2023-09-06T15:17:44Z + Release Date2023-05-26T12:00:00Z + Artwork Count1 + Sort AlbumGuided by Horses + Sort ArtistSamuel Organ + Sort NameEarth Glows No More Devine + Persistent IDAD753021F7114B98 + Track TypeRemote + Apple Music + + 6771 + + Track ID6771 + NameSelf Service + ArtistMay Rio + Album ArtistMay Rio + ComposerMay Rio + AlbumFrench Bath + GenrePop + KindApple Music AAC audio file + Size6438714 + Total Time178267 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2023 + Date Modified2023-07-23T08:42:43Z + Date Added2023-07-23T08:42:43Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3776966125 + Play Date UTC2023-09-07T18:15:25Z + Release Date2023-06-16T12:00:00Z + Artwork Count1 + Sort AlbumFrench Bath + Sort ArtistMay Rio + Sort NameSelf Service + Persistent IDA4B0E8B5AC42C97A + Explicit + Track TypeRemote + Apple Music + + 6773 + + Track ID6773 + NameMagic + ArtistElliot Moss + Album ArtistElliot Moss + ComposerElliot Moss + AlbumMagic - Single + GenreAlternative + KindApple Music AAC audio file + Size9248925 + Total Time253646 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-08-18T14:32:39Z + Date Added2023-08-18T14:32:39Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3782887097 + Play Date UTC2023-11-15T06:58:17Z + Release Date2023-07-14T12:00:00Z + Loved + Artwork Count1 + Sort AlbumMagic - Single + Sort ArtistElliot Moss + Sort NameMagic + Persistent ID3F1D50268F9B9E7A + Track TypeRemote + Apple Music + + 6775 + + Track ID6775 + Name2SEATER (feat. Aaron Shaw, Samantha Nelson, and Austin Feinstein) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCherry Bomb + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size14149724 + Total Time409779 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2015 + Date Modified2023-08-24T10:49:30Z + Date Added2023-08-24T10:49:30Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3777212644 + Play Date UTC2023-09-10T14:44:04Z + Skip Count1 + Skip Date2023-09-07T15:58:57Z + Release Date2015-04-13T07:00:00Z + Artwork Count1 + Sort AlbumCherry Bomb + Sort ArtistTyler, The Creator + Sort Name2SEATER (feat. Aaron Shaw, Samantha Nelson, and Austin Feinstein) + Persistent ID921816EA24EE00D1 + Explicit + Track TypeRemote + Apple Music + + 6777 + + Track ID6777 + NameBUFFALO (feat. Shane Powers) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCherry Bomb + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6073049 + Total Time159964 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2015 + Date Modified2023-09-07T15:45:01Z + Date Added2023-09-07T15:45:01Z + Bit Rate256 + Sample Rate44100 + Play Count6 + Play Date3778747176 + Play Date UTC2023-09-28T08:59:36Z + Release Date2015-04-13T07:00:00Z + Artwork Count1 + Sort AlbumCherry Bomb + Sort ArtistTyler, The Creator + Sort NameBUFFALO (feat. Shane Powers) + Persistent ID28BF588DBFA3E15D + Explicit + Track TypeRemote + Apple Music + + 6779 + + Track ID6779 + NameFIND YOUR WINGS (feat. Roy Ayers, Syd Bennett, and Kali Uchis) + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCherry Bomb + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6868419 + Total Time179043 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2015 + Date Modified2023-09-07T15:51:18Z + Date Added2023-09-07T15:51:18Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3781078991 + Play Date UTC2023-10-25T08:43:11Z + Release Date2015-04-13T07:00:00Z + Artwork Count1 + Sort AlbumCherry Bomb + Sort ArtistTyler, The Creator + Sort NameFIND YOUR WINGS (feat. Roy Ayers, Syd Bennett, and Kali Uchis) + Persistent ID0B93A00930164D0B + Explicit + Track TypeRemote + Apple Music + + 6781 + + Track ID6781 + NameCHERRY BOMB + ArtistTyler, The Creator + Album ArtistTyler, The Creator + ComposerTyler Okonma + AlbumCherry Bomb + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9895694 + Total Time269352 + Disc Number1 + Disc Count1 + Track Number6 + Track Count13 + Year2015 + Date Modified2023-09-07T15:52:52Z + Date Added2023-09-07T15:52:52Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3778746837 + Play Date UTC2023-09-28T08:53:57Z + Release Date2015-04-13T07:00:00Z + Artwork Count1 + Sort AlbumCherry Bomb + Sort ArtistTyler, The Creator + Sort NameCHERRY BOMB + Persistent IDDBD49642F783CCAF + Explicit + Track TypeRemote + Apple Music + + 6783 + + Track ID6783 + NameDon't Be So Serious + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija, Andrew Scheps & Mike Lindsay + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size13823050 + Total Time372867 + Disc Number1 + Disc Count1 + Track Number1 + Track Count22 + Year2017 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3781157305 + Play Date UTC2023-10-26T06:28:25Z + Release Date2017-04-05T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameDon't Be So Serious + Persistent ID971E5F3CAE748410 + Track TypeRemote + Apple Music + + 6785 + + Track ID6785 + NameBones (feat. Jofridur) + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija, Andrew Scheps & Mike Lindsay + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size6182369 + Total Time170107 + Disc Number1 + Disc Count1 + Track Number2 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count18 + Play Date3782980788 + Play Date UTC2023-11-16T08:59:48Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameBones (feat. Jofridur) + Persistent ID40585F84C993839A + Track TypeRemote + Apple Music + + 6787 + + Track ID6787 + NameEasy Way Out + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size10569513 + Total Time288280 + Disc Number1 + Disc Count1 + Track Number3 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3781075238 + Play Date UTC2023-10-25T07:40:38Z + Skip Count2 + Skip Date2023-09-24T00:58:25Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameEasy Way Out + Persistent IDD7D640B9DC31CBC7 + Track TypeRemote + Apple Music + + 6789 + + Track ID6789 + NamePoznan + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija, Andrew Scheps & Mike Lindsay + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size5060056 + Total Time123413 + Disc Number1 + Disc Count1 + Track Number4 + Track Count22 + Year2017 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3782903577 + Play Date UTC2023-11-15T11:32:57Z + Release Date2017-04-05T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NamePoznan + Persistent IDE070C7AAD099CDA3 + Track TypeRemote + Apple Music + + 6791 + + Track ID6791 + NameAsylums for the Feeling (feat. Leila Adu) + ArtistSILENT POETS + Album ArtistVarious Artists + ComposerLeila Adu & Michiharu Shimoda + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size15134543 + Total Time427760 + Disc Number1 + Disc Count1 + Track Number5 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3779238839 + Play Date UTC2023-10-04T01:33:59Z + Release Date2020-01-31T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistSILENT POETS + Sort NameAsylums for the Feeling (feat. Leila Adu) + Persistent ID30F6A707D1744358 + Track TypeRemote + Apple Music + + 6793 + + Track ID6793 + NameOnce in a Long, Long While + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size11479546 + Total Time317480 + Disc Number1 + Disc Count1 + Track Number6 + Track Count22 + Year2017 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count6 + Play Date3781353999 + Play Date UTC2023-10-28T13:06:39Z + Release Date2017-04-05T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameOnce in a Long, Long While + Persistent IDC09C46C6A954DEB1 + Track TypeRemote + Apple Music + + 6795 + + Track ID6795 + NameSt. Eriksplan + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija, Andrew Scheps & Mike Lindsay + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size8390504 + Total Time222840 + Disc Number1 + Disc Count1 + Track Number7 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3779203936 + Play Date UTC2023-10-03T15:52:16Z + Release Date2020-01-31T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameSt. Eriksplan + Persistent ID2CF0FF3F4A2071E0 + Track TypeRemote + Apple Music + + 6797 + + Track ID6797 + NameDeath Stranding + ArtistCHVRCHES + Album ArtistCHVRCHES + ComposerIain Cook, Martin Doherty & Lauren Mayberry + AlbumIn Search Of Darkness - EP + GenreAlternative + KindApple Music AAC audio file + Size11051509 + Total Time316214 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2019 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3779175112 + Play Date UTC2023-10-03T07:51:52Z + Release Date2019-09-30T12:00:00Z + Artwork Count1 + Sort AlbumIn Search Of Darkness - EP + Sort ArtistCHVRCHES + Sort NameDeath Stranding + Persistent IDC30C96B03FA6D8B8 + Track TypeRemote + Apple Music + + 6799 + + Track ID6799 + NamePlease Don't Stop Chapter 1 + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size10142640 + Total Time282373 + Disc Number1 + Disc Count1 + Track Number9 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3778741542 + Play Date UTC2023-09-28T07:25:42Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NamePlease Don't Stop Chapter 1 + Persistent ID31C0BBCFACBEDA87 + Track TypeRemote + Apple Music + + 6801 + + Track ID6801 + NameBecause We Have To + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size8649547 + Total Time233920 + Disc Number1 + Disc Count1 + Track Number10 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778741783 + Play Date UTC2023-09-28T07:29:43Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameBecause We Have To + Persistent ID890195F57D4C2F23 + Track TypeRemote + Apple Music + + 6803 + + Track ID6803 + NameWaiting (10 Years) + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija, Andrew Scheps & Mike Lindsay + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size8781875 + Total Time246227 + Disc Number1 + Disc Count1 + Track Number11 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782982460 + Play Date UTC2023-11-16T09:27:40Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameWaiting (10 Years) + Persistent ID2EB4EEBEE658D876 + Track TypeRemote + Apple Music + + 6805 + + Track ID6805 + NameAlmost Nothing (feat. Okay Kaya) + ArtistSILENT POETS + Album ArtistVarious Artists + ComposerOkay Kaya & Michiharu Shimoda + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size10383318 + Total Time297907 + Disc Number1 + Disc Count1 + Track Number12 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3783586263 + Play Date UTC2023-11-23T09:11:03Z + Release Date2020-01-31T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistSILENT POETS + Sort NameAlmost Nothing (feat. Okay Kaya) + Persistent ID764545C83E2D4545 + Track TypeRemote + Apple Music + + 6807 + + Track ID6807 + NameTonight, Tonight, Tonight + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size17441420 + Total Time477840 + Disc Number1 + Disc Count1 + Track Number13 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778742806 + Play Date UTC2023-09-28T07:46:46Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameTonight, Tonight, Tonight + Persistent ID2F4054248696EDC3 + Track TypeRemote + Apple Music + + 6809 + + Track ID6809 + NameNobody Else + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size10463187 + Total Time297960 + Disc Number1 + Disc Count1 + Track Number14 + Track Count22 + Year2011 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778743104 + Play Date UTC2023-09-28T07:51:44Z + Release Date2011-11-01T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameNobody Else + Persistent IDE1DB4C68276E1A22 + Track TypeRemote + Apple Music + + 6811 + + Track ID6811 + NameThe Machine + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija, Andrew Scheps & Mike Lindsay + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size12037112 + Total Time337027 + Disc Number1 + Disc Count1 + Track Number15 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778743440 + Play Date UTC2023-09-28T07:57:20Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameMachine + Persistent IDD384241B994FF148 + Track TypeRemote + Apple Music + + 6813 + + Track ID6813 + NameAnything You Need + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size7213581 + Total Time192373 + Disc Number1 + Disc Count1 + Track Number16 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778743634 + Play Date UTC2023-09-28T08:00:34Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameAnything You Need + Persistent IDA7B8A17A65092AD7 + Track TypeRemote + Apple Music + + 6815 + + Track ID6815 + NameGive Up + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size6857728 + Total Time186267 + Disc Number1 + Disc Count1 + Track Number17 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3781598673 + Play Date UTC2023-10-31T09:04:33Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameGive Up + Persistent IDBFCA6952A1DF2337 + Track TypeRemote + Apple Music + + 6817 + + Track ID6817 + NamePatience + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size12216245 + Total Time344453 + Disc Number1 + Disc Count1 + Track Number18 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778744421 + Play Date UTC2023-09-28T08:13:41Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NamePatience + Persistent IDD11EB05FD98B4465 + Track TypeRemote + Apple Music + + 6819 + + Track ID6819 + NamePath + ArtistApocalyptica + Album ArtistVarious Artists + ComposerEicca Toppinen + AlbumDeath Stranding (Songs from the Video Game) + GenreMetal + KindApple Music AAC audio file + Size6927039 + Total Time187947 + Disc Number1 + Disc Count1 + Track Number19 + Track Count22 + Year2000 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3779318061 + Play Date UTC2023-10-04T23:34:21Z + Skip Count1 + Skip Date2023-09-28T15:42:02Z + Release Date2000-01-01T12:00:00Z + Loved + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistApocalyptica + Sort NamePath + Persistent ID6B82D02E1138FA13 + Track TypeRemote + Apple Music + + 6821 + + Track ID6821 + NameNot Around + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija, Andrew Scheps & Mike Lindsay + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size11446610 + Total Time314653 + Disc Number1 + Disc Count1 + Track Number20 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778745473 + Play Date UTC2023-09-28T08:31:13Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameNot Around + Persistent IDC39A38C2702C68FC + Track TypeRemote + Apple Music + + 6823 + + Track ID6823 + NameI'm Leaving + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size12310031 + Total Time334000 + Disc Number1 + Disc Count1 + Track Number21 + Track Count22 + Year2020 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3778746567 + Play Date UTC2023-09-28T08:49:27Z + Release Date2020-01-31T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameI'm Leaving + Persistent ID14CEFF6600E630C0 + Track TypeRemote + Apple Music + + 6825 + + Track ID6825 + NameI'll Keep Coming + ArtistLow Roar + Album ArtistVarious Artists + ComposerRyan Joseph Karazija & Andrew Scheps + AlbumDeath Stranding (Songs from the Video Game) + GenreSoundtrack + KindApple Music AAC audio file + Size12781487 + Total Time353813 + Disc Number1 + Disc Count1 + Track Number22 + Track Count22 + Year2014 + Date Modified2023-09-16T19:01:04Z + Date Added2023-09-16T19:01:04Z + Bit Rate256 + Sample Rate44100 + Release Date2014-01-01T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDeath Stranding (Songs from the Video Game) + Sort ArtistLow Roar + Sort NameI'll Keep Coming + Persistent IDD7E74DA7C2A85303 + Track TypeRemote + Apple Music + + 6827 + + Track ID6827 + NameStrangers In Conversation + ArtistDaphné & Mama Aiuto + Album ArtistDaphné + ComposerBenjamin McCarthy & Conor McCarthy + AlbumLife Routines + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4309175 + Total Time110641 + Disc Number1 + Disc Count1 + Track Number2 + Track Count9 + Year2020 + Bit Rate256 + Sample Rate44100 + Release Date2020-07-30T12:00:00Z + Artwork Count1 + Sort AlbumLife Routines + Sort ArtistDaphné & Mama Aiuto + Sort NameStrangers In Conversation + Persistent ID7747E8073551412A + Track TypeRemote + Apple Music + Playlist Only + + 6829 + + Track ID6829 + NameWho Are We + ArtistBurrito Eats & DAO + Album ArtistBurrito Eats & DAO + ComposerBurrito Eats & christian kalla + AlbumWho Are We - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4349081 + Total Time116053 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-03T12:00:00Z + Artwork Count1 + Sort AlbumWho Are We - Single + Sort ArtistBurrito Eats & DAO + Sort NameWho Are We + Persistent IDB6A04A52662C7B53 + Track TypeRemote + Apple Music + Playlist Only + + 6833 + + Track ID6833 + NameModern World (Notes from California) + ArtistMax Jury + Album ArtistMax Jury + ComposerMax Jury, Robin Hannibal & Thomas John Drayton + AlbumNotes from California - EP + GenreAlternative + KindApple Music AAC audio file + Size7567297 + Total Time212907 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-10-26T12:00:00Z + Artwork Count1 + Sort AlbumNotes from California - EP + Sort ArtistMax Jury + Sort NameModern World (Notes from California) + Persistent ID42D6C5AC1A784BAF + Track TypeRemote + Apple Music + Playlist Only + + 6835 + + Track ID6835 + NameStronger + ArtistThe Score + Album ArtistThe Score + ComposerEdan Dover, Jason Merris Bell, Jordan Rand Miller & Eddie Ramirez + AlbumCarry On + GenreAlternative + KindApple Music AAC audio file + Size6914330 + Total Time190049 + Disc Number1 + Disc Count1 + Track Number8 + Track Count15 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-09-07T12:00:00Z + Artwork Count1 + Sort AlbumCarry On + Sort Album ArtistScore + Sort ArtistScore + Sort NameStronger + Persistent ID9D89B9F1AD7ED269 + Track TypeRemote + Apple Music + Playlist Only + + 6839 + + Track ID6839 + NamePearl + ArtistLazlow + Album ArtistLazlow + ComposerAdam Laszlo + AlbumPearl - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4850201 + Total Time126711 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-10T12:00:00Z + Artwork Count1 + Sort AlbumPearl - Single + Sort ArtistLazlow + Sort NamePearl + Persistent IDF52AE9DAD0EC7296 + Track TypeRemote + Apple Music + Playlist Only + + 6841 + + Track ID6841 + NameNewlife + ArtistFlandrs + Album ArtistFlandrs + ComposerMar-Antoine Bernard + AlbumGoldies + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6000662 + Total Time162857 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-11T12:00:00Z + Artwork Count1 + Sort AlbumGoldies + Sort ArtistFlandrs + Sort NameNewlife + Persistent ID14C6FF3925A48E4E + Track TypeRemote + Apple Music + Playlist Only + + 6843 + + Track ID6843 + NameAlmyra (feat. Billa Qause) + ArtistModerator, Drips Zacheer & Mononome + Album ArtistModerator, Drips Zacheer & Mononome + ComposerAlexandros Adam, Pavlos Zacharis, Filippos Michadasis & Vasileios Zafiridis + AlbumAlmyra (feat. Billa Qause) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5316753 + Total Time140250 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-14T12:00:00Z + Artwork Count1 + Sort AlbumAlmyra (feat. Billa Qause) - Single + Sort ArtistModerator, Drips Zacheer & Mononome + Sort NameAlmyra (feat. Billa Qause) + Persistent ID7AD2F3C36E7E1629 + Track TypeRemote + Apple Music + Playlist Only + + 6845 + + Track ID6845 + NameHoping + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerCasey Harris, Noah Feldshuh, Sam Harris & Adam Levin + AlbumHoping - Single + GenreAlternative + KindApple Music AAC audio file + Size6957542 + Total Time193567 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-03-10T12:00:00Z + Artwork Count1 + Sort AlbumHoping - Single + Sort ArtistX Ambassadors + Sort NameHoping + Persistent IDA66E8FE011174488 + Track TypeRemote + Apple Music + Playlist Only + + 6847 + + Track ID6847 + Namesplash splash + ArtistPistachio + Album ArtistPistachio + ComposerZaron + Albumsplash splash - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6137851 + Total Time174066 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-15T12:00:00Z + Artwork Count1 + Sort Albumsplash splash - Single + Sort ArtistPistachio + Sort Namesplash splash + Persistent ID1B05DF37E56C1B1F + Track TypeRemote + Apple Music + Playlist Only + + 6849 + + Track ID6849 + Nametrue authentic self + ArtistSarah, the Illstrumentalist + Album ArtistSarah, the Illstrumentalist + ComposerSarah Debnam + Albumthe universe is watching + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4809266 + Total Time131270 + Disc Number1 + Disc Count1 + Track Number2 + Track Count8 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-25T12:00:00Z + Artwork Count1 + Sort Albumuniverse is watching + Sort ArtistSarah, the Illstrumentalist + Sort Nametrue authentic self + Persistent IDDCD02544E3561EF3 + Track TypeRemote + Apple Music + Playlist Only + + 6851 + + Track ID6851 + Nameon my way home + Artistclay house & URCHN + Album Artistclay house & URCHN + ComposerMax Greenhalgh & Andres Dylan Owens + Albumon my way home - Single + GenreElectronic + KindApple Music AAC audio file + Size5297532 + Total Time140225 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-07-08T12:00:00Z + Artwork Count1 + Sort Albumon my way home - Single + Sort Artistclay house & URCHN + Sort Nameon my way home + Persistent ID9DB54DD1C6F70BA9 + Track TypeRemote + Apple Music + Playlist Only + + 6853 + + Track ID6853 + NameVilla + ArtistDLJ, ØDYSSEE & Florent Garcia + Album ArtistDLJ, ØDYSSEE & Florent Garcia + ComposerFelix Schmidt, Louis Le Clerc & Florent Garcia + AlbumMonte Carle - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5296324 + Total Time143494 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-22T12:00:00Z + Artwork Count1 + Sort AlbumMonte Carle - Single + Sort ArtistDLJ, ØDYSSEE & Florent Garcia + Sort NameVilla + Persistent ID33185647551BFD31 + Track TypeRemote + Apple Music + Playlist Only + + 6855 + + Track ID6855 + NameElise + ArtistTom Doolie + Album ArtistTom Doolie + ComposerThomas Huber + AlbumElise - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3382243 + Total Time84214 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-17T12:00:00Z + Artwork Count1 + Sort AlbumElise - Single + Sort ArtistTom Doolie + Sort NameElise + Persistent ID7AF1055E2E61C321 + Track TypeRemote + Apple Music + Playlist Only + + 6857 + + Track ID6857 + NameSummer Is Over + ArtistKazuki Isogai, The Field Tapes & wowflower + Album ArtistKazuki Isogai, The Field Tapes & wowflower + ComposerKazuki Isogai, Kyle Torr-Brown & Kyle McEvoy + AlbumSummer Is Over - Single + GenreElectronic + KindApple Music AAC audio file + Size4901186 + Total Time128571 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-22T12:00:00Z + Artwork Count1 + Sort AlbumSummer Is Over - Single + Sort ArtistKazuki Isogai, The Field Tapes & wowflower + Sort NameSummer Is Over + Persistent ID6DF6A49E36ECE1EE + Track TypeRemote + Apple Music + Playlist Only + + 6859 + + Track ID6859 + NameInsides Out + ArtistKid Cudi + Album ArtistKid Cudi + ComposerScott Mescudi + AlbumSpeedin' Bullet 2 Heaven + GenreRock + KindApple Music AAC audio file + Size6807531 + Total Time187264 + Disc Number2 + Disc Count2 + Track Number5 + Track Count8 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-12-04T12:00:00Z + Artwork Count1 + Sort AlbumSpeedin' Bullet 2 Heaven + Sort ArtistKid Cudi + Sort NameInsides Out + Persistent IDDC8D57FB0BA4CD09 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 6861 + + Track ID6861 + NameNervous + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerAlex Da Kid, Sam Harris, Noah Feldshuh, Casey Harris & Adam Levine + AlbumVHS 2.0 + GenreAlternative + KindApple Music AAC audio file + Size7651105 + Total Time213067 + Disc Number1 + Disc Count1 + Track Number6 + Track Count18 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-06-23T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumVHS 2.0 + Sort ArtistX Ambassadors + Sort NameNervous + Persistent IDF15E2445C13FDACF + Track TypeRemote + Apple Music + Playlist Only + + 6863 + + Track ID6863 + NameFocus + ArtistPØPE + Album ArtistPØPE + ComposerPauline Bouillaud + AlbumFocus - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5192775 + Total Time140308 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumFocus - Single + Sort ArtistPØPE + Sort NameFocus + Persistent IDCD784CA8A3300D02 + Track TypeRemote + Apple Music + Playlist Only + + 6865 + + Track ID6865 + NameAarons Bees + ArtistDaniel Fridell & Sven Lindvall + Album ArtistDaniel Fridell & Sven Lindvall + ComposerDaniel Fridell & Sven Lindvall + AlbumBig City Issues - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6998506 + Total Time193682 + Disc Number1 + Disc Count1 + Track Number4 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumBig City Issues - EP + Sort ArtistDaniel Fridell & Sven Lindvall + Sort NameAarons Bees + Persistent ID66F05AC084495603 + Track TypeRemote + Apple Music + Playlist Only + + 6871 + + Track ID6871 + NameAll Of U (Instrumental) + ArtistURCHN + Album ArtistURCHN + ComposerMax Greenhalgh & Thomas Reid + AlbumSummer Solstice (Instrumentals) - EP + GenreElectronic + KindApple Music AAC audio file + Size4452583 + Total Time120013 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-25T12:00:00Z + Artwork Count1 + Sort AlbumSummer Solstice (Instrumentals) - EP + Sort ArtistURCHN + Sort NameAll Of U (Instrumental) + Persistent ID8AAEEF164DE584C6 + Track TypeRemote + Apple Music + Playlist Only + + 6873 + + Track ID6873 + NameThe Floating World + ArtistMama Aiuto & Dan Gregory + Album ArtistMama Aiuto & Dan Gregory + ComposerDan Gregory & Benjamin McCarthy + AlbumHoliday Music - EP + GenreElectronic + KindApple Music AAC audio file + Size4491288 + Total Time122900 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-05-20T12:00:00Z + Artwork Count1 + Sort AlbumHoliday Music - EP + Sort ArtistMama Aiuto & Dan Gregory + Sort NameFloating World + Persistent ID71E98DE1F8A2A258 + Track TypeRemote + Apple Music + Playlist Only + + 6875 + + Track ID6875 + NameDay Blessing + ArtistScreen Jazzmaster & .Eehou + Album ArtistScreen Jazzmaster & .Eehou + ComposerYury Vasilyev & Mars Saralinov + AlbumDay Blessing - Single + GenreLounge + KindApple Music AAC audio file + Size4477546 + Total Time120000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-14T12:00:00Z + Artwork Count1 + Sort AlbumDay Blessing - Single + Sort ArtistScreen Jazzmaster & .Eehou + Sort NameDay Blessing + Persistent ID4217DE1C7FA33ED2 + Track TypeRemote + Apple Music + Playlist Only + + 6877 + + Track ID6877 + NamePuffer Sea Pools + ArtistMama Aiuto & Dan Gregory + Album ArtistMama Aiuto & Dan Gregory + ComposerDan Gregory & Benjamin McCarthy + AlbumHoliday Music - EP + GenreElectronic + KindApple Music AAC audio file + Size4973990 + Total Time135559 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-05-20T12:00:00Z + Artwork Count1 + Sort AlbumHoliday Music - EP + Sort ArtistMama Aiuto & Dan Gregory + Sort NamePuffer Sea Pools + Persistent ID0C132A7F5746F9EB + Track TypeRemote + Apple Music + Playlist Only + + 6879 + + Track ID6879 + NameMemories + ArtistMiDN8, Oul Good & Sam Rasta + Album ArtistMiDN8, Oul Good & Sam Rasta + ComposerTorsten Stefes, Olaf Nazim & Samuel J.A. Baumann + AlbumMemories - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6329197 + Total Time165479 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-20T12:00:00Z + Artwork Count1 + Sort AlbumMemories - Single + Sort ArtistMiDN8, Oul Good & Sam Rasta + Sort NameMemories + Persistent IDB9A6A0419CBFA15B + Track TypeRemote + Apple Music + Playlist Only + + 6881 + + Track ID6881 + NameSky Waves + ArtistLeavv & dennisivnvc + Album ArtistLeavv & dennisivnvc + ComposerCyrano Kaul & Dennis Wiebe + AlbumSky Waves - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5902108 + Total Time160385 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-12T12:00:00Z + Artwork Count1 + Sort AlbumSky Waves - Single + Sort ArtistLeavv & dennisivnvc + Sort NameSky Waves + Persistent ID94A46EA4D7A20C6C + Track TypeRemote + Apple Music + Playlist Only + + 6883 + + Track ID6883 + NameNo Grass Today + ArtistAJR + Album ArtistAJR + ComposerAdam Met, Ryan Met & Jack Met + AlbumThe Click (Deluxe Edition) + GenrePop + KindApple Music AAC audio file + Size9260020 + Total Time259115 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-09-16T12:00:00Z + Artwork Count1 + Sort AlbumClick (Deluxe Edition) + Sort ArtistAJR + Sort NameNo Grass Today + Persistent IDF22EF33D4148BAE5 + Track TypeRemote + Apple Music + Playlist Only + + 6885 + + Track ID6885 + NameWhat Was I Made For? (Mixed) + ArtistBillie Eilish + Album ArtistDJ Barbie + AlbumBarbie: Live from the Barbie Dream House (DJ Mix) + GenreDance + KindApple Music AAC audio file + Size7928466 + Total Time222239 + Disc Number1 + Disc Count1 + Track Number33 + Track Count33 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-07-13T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumBarbie: Live from the Barbie Dream House (DJ Mix) + Sort ArtistBillie Eilish + Sort NameWhat Was I Made For? (Mixed) + Persistent IDDA681C846D1B6331 + Track TypeRemote + Apple Music + Playlist Only + + 6887 + + Track ID6887 + NameSkyline Moods + ArtistShuko & Valentine Morell + Album ArtistShuko & Valentine Morell + ComposerChristoph Bauss & Valentine Esilda Morell + AlbumSkyline Moods - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4953104 + Total Time125573 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-25T12:00:00Z + Artwork Count1 + Sort AlbumSkyline Moods - Single + Sort ArtistShuko & Valentine Morell + Sort NameSkyline Moods + Persistent IDC88D4F3458918298 + Track TypeRemote + Apple Music + Playlist Only + + 6889 + + Track ID6889 + Namebefore (unconditional Remix Instrumental) + ArtistHOAX & DAVI JUNO + Album ArtistHOAX & Arden + ComposerMichael Paul Raj, Francesco Grieco & David LaFlamme + Albumwords that start with b? + GenreElectronic + KindApple Music AAC audio file + Size5519002 + Total Time150237 + Disc Number2 + Disc Count2 + Track Number1 + Track Count8 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-09T12:00:00Z + Artwork Count1 + Sort Albumwords that start with b? + Sort ArtistHOAX & DAVI JUNO + Sort Namebefore (unconditional Remix Instrumental) + Persistent IDEBABB79E9CF2798A + Track TypeRemote + Apple Music + Playlist Only + + 6891 + + Track ID6891 + NameCyanea + ArtistDentist + Album ArtistDentist + ComposerMatthias Leonard Freunek + AlbumCyanea - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4390459 + Total Time115200 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-02-17T12:00:00Z + Artwork Count1 + Sort AlbumCyanea - Single + Sort ArtistDentist + Sort NameCyanea + Persistent IDEC45A1FD61469EB5 + Track TypeRemote + Apple Music + Playlist Only + + 6897 + + Track ID6897 + NameSanguine + ArtistCap Kendricks + Album ArtistCap Kendricks + ComposerJulian Weiss-Vogtmann + AlbumSanguine - Single + GenreHip-Hop + KindApple Music AAC audio file + Size5977722 + Total Time147200 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-06-30T12:00:00Z + Artwork Count1 + Sort AlbumSanguine - Single + Sort ArtistCap Kendricks + Sort NameSanguine + Persistent ID58E759FBC72D8823 + Track TypeRemote + Apple Music + Playlist Only + + 6899 + + Track ID6899 + NameBackpocket Breakdown + ArtistBurrito Eats & DAO + Album ArtistBurrito Eats & DAO + ComposerBurrito Eats & christian kalla + AlbumBackpocket Breakdown - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4798343 + Total Time124821 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-28T12:00:00Z + Artwork Count1 + Sort AlbumBackpocket Breakdown - Single + Sort ArtistBurrito Eats & DAO + Sort NameBackpocket Breakdown + Persistent ID33A223D712A0009A + Track TypeRemote + Apple Music + Playlist Only + + 6903 + + Track ID6903 + NameFlying Rivers + ArtistHugo Santini + Album ArtistHugo Santini + ComposerHugo Hugo + AlbumFlying Rivers - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5796330 + Total Time138842 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-08-12T12:00:00Z + Artwork Count1 + Sort AlbumFlying Rivers - EP + Sort ArtistHugo Santini + Sort NameFlying Rivers + Persistent ID36B1C8F604CBC727 + Track TypeRemote + Apple Music + Playlist Only + + 6905 + + Track ID6905 + NameMake The Desert Bloom + ArtistTom Doolie & Oh, My. + Album ArtistTom Doolie + ComposerThomas Huber & Oliver Hultqvist + AlbumOnly Poem + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4501402 + Total Time117831 + Disc Number1 + Disc Count1 + Track Number8 + Track Count16 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumOnly Poem + Sort ArtistTom Doolie & Oh, My. + Sort NameMake The Desert Bloom + Persistent ID27989E1FD1F9888A + Track TypeRemote + Apple Music + Playlist Only + + 6907 + + Track ID6907 + NameSandbox + ArtistGrand Motel + Album ArtistGrand Motel + ComposerRodolphe Lecat + AlbumSandbox - Single + GenreElectronic + KindApple Music AAC audio file + Size4946385 + Total Time128639 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-13T12:00:00Z + Artwork Count1 + Sort AlbumSandbox - Single + Sort ArtistGrand Motel + Sort NameSandbox + Persistent ID4ED0D834756D4572 + Track TypeRemote + Apple Music + Playlist Only + + 6909 + + Track ID6909 + NameForever Under My Blanket + ArtistHans Hu$tle + Album ArtistHans Hu$tle + ComposerHans Vincent Heusterberg + AlbumFuton Feels - EP + GenreHip-Hop + KindApple Music AAC audio file + Size4795593 + Total Time129780 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-08-31T12:00:00Z + Artwork Count1 + Sort AlbumFuton Feels - EP + Sort ArtistHans Hu$tle + Sort NameForever Under My Blanket + Persistent ID70E1843BAE307973 + Track TypeRemote + Apple Music + Playlist Only + + 6911 + + Track ID6911 + Name6 Pack and Cigarettes + ArtistALEXSUCKS + Album ArtistALEXSUCKS + ComposerAlexander Alvarez, John Carolus, Garrett Orseno, Ethan Demoulin & Daniel Lonner + AlbumThe Gutter + GenreAlternative + KindApple Music AAC audio file + Size6582137 + Total Time174642 + Disc Number1 + Disc Count1 + Track Number4 + Track Count9 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-09T12:00:00Z + Artwork Count1 + Sort AlbumGutter + Sort ArtistALEXSUCKS + Sort Name6 Pack and Cigarettes + Persistent ID9F99D2B51B92BB17 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 6913 + + Track ID6913 + NameButterscotch Square + ArtistSebastian Kamae & MONODUKE + Album ArtistSebastian Kamae & MONODUKE + ComposerPim de Jonge & Daan Herweg + AlbumButterscotch Square - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5785522 + Total Time160000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-11T12:00:00Z + Artwork Count1 + Sort AlbumButterscotch Square - Single + Sort ArtistSebastian Kamae & MONODUKE + Sort NameButterscotch Square + Persistent ID867F301D31254A3C + Track TypeRemote + Apple Music + Playlist Only + + 6915 + + Track ID6915 + NameCadillac Cruise + ArtistLoop Schrauber & Hans Hu$tle + Album ArtistLoop Schrauber & Hans Hu$tle + ComposerLoop Schrauber & Hans Vincent Heusterberg + AlbumCadillac Cruise - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5137336 + Total Time138125 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-14T12:00:00Z + Artwork Count1 + Sort AlbumCadillac Cruise - Single + Sort ArtistLoop Schrauber & Hans Hu$tle + Sort NameCadillac Cruise + Persistent ID7FA6BB6D75B094AD + Track TypeRemote + Apple Music + Playlist Only + + 6923 + + Track ID6923 + NameBahar 1402 + ArtistFarhot + Album ArtistFarhot + ComposerFarhad Samadzada + AlbumNowroz 1402 - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5127998 + Total Time138592 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-05-12T12:00:00Z + Artwork Count1 + Sort AlbumNowroz 1402 - Single + Sort ArtistFarhot + Sort NameBahar 1402 + Persistent ID216BFA2798CFB55D + Track TypeRemote + Apple Music + Playlist Only + + 6925 + + Track ID6925 + NameYoung In America + ArtistBarns Courtney + Album ArtistBarns Courtney + ComposerBarnaby George Courtney & Sam Hollander + AlbumYoung In America - Single + GenreAlternative + KindApple Music AAC audio file + Size8172361 + Total Time224913 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumYoung In America - Single + Sort ArtistBarns Courtney + Sort NameYoung In America + Persistent ID9E6511AF2FE722DD + Track TypeRemote + Apple Music + Playlist Only + + 6929 + + Track ID6929 + NameShelter From The Sun + ArtistTom Doolie + Album ArtistTom Doolie + ComposerThomas Huber + AlbumShelter From The Sun - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4275167 + Total Time112587 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-21T12:00:00Z + Artwork Count1 + Sort AlbumShelter From The Sun - Single + Sort ArtistTom Doolie + Sort NameShelter From The Sun + Persistent IDB9BA0C074B0D3B88 + Track TypeRemote + Apple Music + Playlist Only + + 6933 + + Track ID6933 + NameQuiet Oasis + ArtistVigudo + Album ArtistVigudo + ComposerIvan Ohanezov + AlbumThoughts Like Clouds - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5275977 + Total Time148359 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumThoughts Like Clouds - EP + Sort ArtistVigudo + Sort NameQuiet Oasis + Persistent ID64CE343E925480E3 + Track TypeRemote + Apple Music + Playlist Only + + 6939 + + Track ID6939 + NameMac & Queso + ArtistKOFE BUX + Album ArtistKOFE BUX + ComposerAlex Larsson + AlbumNice To Meet You - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7789477 + Total Time200854 + Disc Number1 + Disc Count1 + Track Number6 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-11-04T12:00:00Z + Artwork Count1 + Sort AlbumNice To Meet You - EP + Sort ArtistKOFE BUX + Sort NameMac & Queso + Persistent IDA4C84806D3960436 + Track TypeRemote + Apple Music + Playlist Only + + 6941 + + Track ID6941 + NameSuperglue + ArtistMichigander + Album ArtistMichigander + ComposerAaron Senor, Jake LeMond & Jason Singer + AlbumMichigander (Vevo DSCVR) - EP + GenreAlternative + KindApple Music AAC audio file + Size9313304 + Total Time250363 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-01-25T12:00:00Z + Artwork Count1 + Sort AlbumMichigander (Vevo DSCVR) - EP + Sort ArtistMichigander + Sort NameSuperglue + Persistent IDECD9782E841B47CF + Track TypeRemote + Apple Music + Playlist Only + + 6945 + + Track ID6945 + NameSky Waves + ArtistLeavv & dennisivnvc + Album ArtistLeavv + ComposerCyrano Kaul & Dennis Wiebe + AlbumSealed - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5901507 + Total Time160385 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-12T12:00:00Z + Artwork Count1 + Sort AlbumSealed - EP + Sort ArtistLeavv & dennisivnvc + Sort NameSky Waves + Persistent IDE949F06D3A577334 + Track TypeRemote + Apple Music + Playlist Only + + 6947 + + Track ID6947 + NameLoose Ends + ArtistBlue Wednesday + Album ArtistBlue Wednesday + ComposerGustav Joseph + AlbumLoose Ends - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6510175 + Total Time172683 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-30T12:00:00Z + Artwork Count1 + Sort AlbumLoose Ends - Single + Sort ArtistBlue Wednesday + Sort NameLoose Ends + Persistent IDBA2D2DC7EB8D0B22 + Track TypeRemote + Apple Music + Playlist Only + + 6949 + + Track ID6949 + NameTimeless + ArtistKomachi & mameshiba + Album ArtistKomachi & mameshiba + ComposerIssei Endo & Krystyna Gonchar + AlbumTimeless - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4156457 + Total Time108649 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-31T12:00:00Z + Artwork Count1 + Sort AlbumTimeless - Single + Sort ArtistKomachi & mameshiba + Sort NameTimeless + Persistent IDB79B1F87432671E4 + Track TypeRemote + Apple Music + Playlist Only + + 6953 + + Track ID6953 + NameXO TOUR Llif3 + ArtistLil Uzi Vert + Album ArtistLil Uzi Vert + ComposerBryan Lamar Simmons, Bryan Simmons & Lil Uzi Vert + AlbumLuv Is Rage 2 (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6651445 + Total Time182707 + Disc Number1 + Disc Count1 + Track Number16 + Track Count20 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-02-26T12:00:00Z + Artwork Count1 + Sort AlbumLuv Is Rage 2 (Deluxe) + Sort ArtistLil Uzi Vert + Sort NameXO TOUR Llif3 + Persistent IDF8D8F8F916017051 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 6957 + + Track ID6957 + NameEase (feat. Burrito Eats) + ArtistSōNE, Lazlow & Louk + Album ArtistSōNE, Lazlow & Louk + ComposerFabian Grewe, Adam Laszlo, Louk Cox & Burrito Eats + AlbumEase (feat. Burrito Eats) - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5276648 + Total Time139091 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-24T12:00:00Z + Artwork Count1 + Sort AlbumEase (feat. Burrito Eats) - Single + Sort ArtistSōNE, Lazlow & Louk + Sort NameEase (feat. Burrito Eats) + Persistent ID116FE312CDEE7000 + Track TypeRemote + Apple Music + Playlist Only + + 6959 + + Track ID6959 + NameHearts + ArtistSaiko & Osive + Album ArtistSaiko & Osive + ComposerGregor Nezval & Oliver Cortez + AlbumHearts - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4517923 + Total Time120000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumHearts - Single + Sort ArtistSaiko & Osive + Sort NameHearts + Persistent ID88AD79FED72D2EFE + Track TypeRemote + Apple Music + Playlist Only + + 6961 + + Track ID6961 + NamePandawa + Artistsloh rou + Album Artistsloh rou + ComposerNikos Heidinger + AlbumPandawa - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4173027 + Total Time111000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumPandawa - Single + Sort Artistsloh rou + Sort NamePandawa + Persistent ID0ED92FBF2646EA9F + Track TypeRemote + Apple Music + Playlist Only + + 6963 + + Track ID6963 + NameFluorescence + ArtistBlue Wednesday + Album ArtistBlue Wednesday + ComposerGustav Joseph + AlbumThe Bigger Picture - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5879672 + Total Time159375 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-03T12:00:00Z + Artwork Count1 + Sort AlbumBigger Picture - EP + Sort ArtistBlue Wednesday + Sort NameFluorescence + Persistent ID13E9768C10D695E6 + Track TypeRemote + Apple Music + Playlist Only + + 6967 + + Track ID6967 + NameFardosa + ArtistDrips Zacheer & Moderator + Album ArtistDrips Zacheer + ComposerPavlos Zacharis & Alexandros Adam + AlbumFilm sweats + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5804847 + Total Time156784 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-19T12:00:00Z + Artwork Count1 + Sort AlbumFilm sweats + Sort ArtistDrips Zacheer & Moderator + Sort NameFardosa + Persistent ID2CD441F5684FE704 + Track TypeRemote + Apple Music + Playlist Only + + 6969 + + Track ID6969 + NameAnd Bliss! + ArtistHorizon Estetique + Album ArtistHorizon Estetique + ComposerOskar Jennefors + AlbumAnd Bliss! - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5528905 + Total Time148867 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-21T12:00:00Z + Artwork Count1 + Sort AlbumAnd Bliss! - Single + Sort ArtistHorizon Estetique + Sort NameAnd Bliss! + Persistent ID5CFD31FAB8912B4D + Track TypeRemote + Apple Music + Playlist Only + + 6971 + + Track ID6971 + NameGoosebumps + ArtistNo Spirit & Sátyr + Album ArtistNo Spirit & Sátyr + ComposerPhilipp Geitmann & Lukas Stütz + AlbumGoosebumps - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6234245 + Total Time165613 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumGoosebumps - Single + Sort ArtistNo Spirit & Sátyr + Sort NameGoosebumps + Persistent ID48BE733B20B5D8ED + Track TypeRemote + Apple Music + Playlist Only + + 6973 + + Track ID6973 + NameLün + Artistbrillion. & xander. + Album Artistbrillion. + ComposerChristian Joseph Schulte & Alexander Papamitrou + AlbumBedtime Stories Pt.4 + GenreInstrumental + KindApple Music AAC audio file + Size7172591 + Total Time208941 + Disc Number1 + Disc Count1 + Track Number6 + Track Count15 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-04T12:00:00Z + Artwork Count1 + Sort AlbumBedtime Stories Pt.4 + Sort Artistbrillion. & xander. + Sort NameLün + Persistent ID8FF98CB9B3D53033 + Track TypeRemote + Apple Music + Playlist Only + + 6975 + + Track ID6975 + NameAmerican Money + ArtistBØRNS + Album ArtistBØRNS + ComposerBØRNS, Irena Lysiuk, Thomas Schleiter, Genevieve Anne Bufalino & Aimee Rose Cavanagh + AlbumDopamine + GenreAlternative + KindApple Music AAC audio file + Size9197383 + Total Time260997 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-10-16T12:00:00Z + Artwork Count1 + Sort AlbumDopamine + Sort ArtistBØRNS + Sort NameAmerican Money + Persistent ID1EFFAA6ACFC722BE + Track TypeRemote + Apple Music + Playlist Only + + 6979 + + Track ID6979 + NameLight It Up + ArtistZmeyev & Screen Jazzmaster + Album ArtistZmeyev & Screen Jazzmaster + ComposerKonstantin Georgievich Baratashvili & Yury Vasilyev + AlbumLight It Up - Single + GenreLounge + KindApple Music AAC audio file + Size5591351 + Total Time155122 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumLight It Up - Single + Sort ArtistZmeyev & Screen Jazzmaster + Sort NameLight It Up + Persistent ID7D4C5AF741C237DA + Track TypeRemote + Apple Music + Playlist Only + + 6981 + + Track ID6981 + Nameideary + ArtistPlusma, Miramare & a boy with a balloon + Album ArtistPlusma, Miramare & a boy with a balloon + ComposerViktor Theede, eliah turlon & Andreas Scheffer + Albumideary - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4822460 + Total Time128683 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-26T12:00:00Z + Artwork Count1 + Sort Albumideary - Single + Sort ArtistPlusma, Miramare & a boy with a balloon + Sort Nameideary + Persistent IDD0BF0F156080C82F + Track TypeRemote + Apple Music + Playlist Only + + 6983 + + Track ID6983 + NameFree + Artist6LACK + Album Artist6LACK + ComposerRicardo Valentine & Nova + AlbumFREE 6LACK (Bonus Track Version) + GenreR&B/Soul + KindApple Music AAC audio file + Size9293147 + Total Time263013 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-11-18T12:00:00Z + Loved + Artwork Count1 + Sort AlbumFREE 6LACK (Bonus Track Version) + Sort Artist6LACK + Sort NameFree + Persistent IDF0C431579A34BD92 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 6985 + + Track ID6985 + NameFree & Lonely + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerSam Harris, Noah Feldshuh, Adam Levin, Casey Harris & Alex Da Kid + AlbumThe Reason - EP + GenreAlternative + KindApple Music AAC audio file + Size8891780 + Total Time248478 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2014 + Bit Rate256 + Sample Rate44100 + Release Date2014-01-24T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumReason - EP + Sort ArtistX Ambassadors + Sort NameFree & Lonely + Persistent ID2D0B9300465CA1CB + Track TypeRemote + Apple Music + Playlist Only + + 6987 + + Track ID6987 + NameDonut Shop + ArtistRic Wavy + Album ArtistRic Wavy + ComposerRic Wavy + AlbumFor Your Soul + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4362716 + Total Time105882 + Disc Number1 + Disc Count1 + Track Number2 + Track Count8 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-20T12:00:00Z + Artwork Count1 + Sort AlbumFor Your Soul + Sort ArtistRic Wavy + Sort NameDonut Shop + Persistent IDA922CA5D2BC94B9E + Track TypeRemote + Apple Music + Playlist Only + + 6989 + + Track ID6989 + NamePillow + ArtistEmanuele Triglia & Gianni Brezzo + Album ArtistEmanuele Triglia + ComposerEmanuele Triglia, Gianni Brezzo & Federico Romeo + AlbumSeven Beats I Forgot + GenreInstrumental + KindApple Music AAC audio file + Size6455074 + Total Time179641 + Disc Number1 + Disc Count1 + Track Number7 + Track Count7 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-14T12:00:00Z + Artwork Count1 + Sort AlbumSeven Beats I Forgot + Sort ArtistEmanuele Triglia & Gianni Brezzo + Sort NamePillow + Persistent ID5235F8260A4A95D3 + Track TypeRemote + Apple Music + Playlist Only + + 6991 + + Track ID6991 + NameClout (feat. Cardi B) + ArtistOffset + Album ArtistOffset + ComposerOffset, Kevin Gomringer & Tim Gomringer + AlbumFATHER OF 4 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7423856 + Total Time205803 + Disc Number1 + Disc Count1 + Track Number12 + Track Count16 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-02-22T12:00:00Z + Disliked + Artwork Count1 + Sort AlbumFATHER OF 4 + Sort ArtistOffset + Sort NameClout (feat. Cardi B) + Persistent IDEC7D84CD0ADD67FC + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 6993 + + Track ID6993 + NameFirst Date + ArtistYouthology + Album ArtistYouthology + ComposerYouthology + AlbumFirst Date - Single + GenreInstrumental + KindApple Music AAC audio file + Size6807334 + Total Time192000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-21T12:00:00Z + Artwork Count1 + Sort AlbumFirst Date - Single + Sort ArtistYouthology + Sort NameFirst Date + Persistent ID974282D15BC44C4C + Track TypeRemote + Apple Music + Playlist Only + + 6997 + + Track ID6997 + Namecastle in the clouds + Artistradio lull + Album Artistradio lull + ComposerDino Sotiropoulos, Jonathan Whitehouse & FOREST JOHNSON + Albumtide eye - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4398779 + Total Time115513 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-10-28T12:00:00Z + Artwork Count1 + Sort Albumtide eye - EP + Sort Artistradio lull + Sort Namecastle in the clouds + Persistent ID0C2DBAD9D0369E37 + Track TypeRemote + Apple Music + Playlist Only + + 6999 + + Track ID6999 + NameRooftop Rhythms + Artistaunt + Album Artistaunt + ComposerAiko Satō + AlbumRooftop Rhythms - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6631372 + Total Time164000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-09-15T12:00:00Z + Artwork Count1 + Sort AlbumRooftop Rhythms - Single + Sort Artistaunt + Sort NameRooftop Rhythms + Persistent IDA82243D316AD4BE3 + Track TypeRemote + Apple Music + Playlist Only + + 7001 + + Track ID7001 + NameRescue Me + ArtistDirty Heads + Album ArtistDirty Heads + ComposerAnthony Kiedis, Jared Watson, Dustin Bushnell, Ryan Ogren, Flea, John Frusciante & Chad Smith + AlbumRescue Me - Single + GenreAlternative + KindApple Music AAC audio file + Size6320837 + Total Time172280 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-24T08:00:00Z + Artwork Count1 + Sort AlbumRescue Me - Single + Sort ArtistDirty Heads + Sort NameRescue Me + Persistent ID9F98FF38849CE6DC + Track TypeRemote + Apple Music + Playlist Only + + 7003 + + Track ID7003 + NamePool Side + ArtistDOWORK & The Goldenboys + Album ArtistDOWORK & The Goldenboys + ComposerRob Jager, Luuk Hof & Jeroen Verberne + AlbumPool Side - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4497579 + Total Time117859 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-07T12:00:00Z + Artwork Count1 + Sort AlbumPool Side - Single + Sort ArtistDOWORK & The Goldenboys + Sort NamePool Side + Persistent IDEC6F23E408F5E602 + Track TypeRemote + Apple Music + Playlist Only + + 7005 + + Track ID7005 + NameOnly Love + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom (Deluxe Video Edition) + GenreSinger/Songwriter + KindApple Music AAC audio file + Size8955018 + Total Time249173 + Disc Number1 + Disc Count1 + Track Number5 + Track Count17 + Year2011 + Bit Rate256 + Sample Rate44100 + Release Date2011-01-01T12:00:00Z + Artwork Count1 + Sort AlbumEvery Kingdom (Deluxe Video Edition) + Sort ArtistBen Howard + Sort NameOnly Love + Persistent ID551D3C04BFE4308F + Track TypeRemote + Apple Music + Playlist Only + + 7009 + + Track ID7009 + NameAmaqebelengwane + ArtistTojié Cai & DAVI JUNO + Album ArtistTojié Cai & DAVI JUNO + ComposerPerfect Thandokuhle Zuma & David LaFlamme + AlbumUdengezi - Single + GenreElectronic + KindApple Music AAC audio file + Size5707219 + Total Time144219 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-01-20T12:00:00Z + Artwork Count1 + Sort AlbumUdengezi - Single + Sort ArtistTojié Cai & DAVI JUNO + Sort NameAmaqebelengwane + Persistent ID414790CF8A0C7B83 + Track TypeRemote + Apple Music + Playlist Only + + 7011 + + Track ID7011 + NameShe Treats Me Well + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumI Forget Where We Were + GenreSinger/Songwriter + KindApple Music AAC audio file + Size10917537 + Total Time317935 + Disc Number1 + Disc Count1 + Track Number5 + Track Count10 + Year2014 + Bit Rate256 + Sample Rate44100 + Release Date2014-10-20T12:00:00Z + Artwork Count1 + Sort AlbumI Forget Where We Were + Sort ArtistBen Howard + Sort NameShe Treats Me Well + Persistent IDBC3CAC3ABFF7768A + Track TypeRemote + Apple Music + Playlist Only + + 7013 + + Track ID7013 + NameConrad + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumI Forget Where We Were + GenreSinger/Songwriter + KindApple Music AAC audio file + Size12504029 + Total Time368125 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2014 + Bit Rate256 + Sample Rate44100 + Release Date2014-10-20T12:00:00Z + Artwork Count1 + Sort AlbumI Forget Where We Were + Sort ArtistBen Howard + Sort NameConrad + Persistent IDCB5F5C0289A3A8C3 + Track TypeRemote + Apple Music + Playlist Only + + 7019 + + Track ID7019 + Namei ran 2 miles and wept + ArtistBeach Boy Rad + Album ArtistBeach Boy Rad + ComposerDerick Fagbohun + Albumi ran 2 miles and wept - Single + GenreElectronic + KindApple Music AAC audio file + Size3669300 + Total Time94795 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-11-18T12:00:00Z + Artwork Count1 + Sort Albumi ran 2 miles and wept - Single + Sort ArtistBeach Boy Rad + Sort Namei ran 2 miles and wept + Persistent ID2BD2869A56AE9E08 + Track TypeRemote + Apple Music + Playlist Only + + 7021 + + Track ID7021 + NameLeave + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Rex Kudo, Ryan Vojtesak & Idan Kalai + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size11486461 + Total Time324854 + Disc Number1 + Disc Count1 + Track Number15 + Track Count18 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-12-02T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameLeave + Persistent ID1EB2769639B25975 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7023 + + Track ID7023 + Nameturbulence + Artistradio lull + Album Artistradio lull + ComposerDino Sotiropoulos, FOREST JOHNSON & Jonathan Whitehouse + Albumturbulence - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4599968 + Total Time115461 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-09-23T12:00:00Z + Artwork Count1 + Sort Albumturbulence - Single + Sort Artistradio lull + Sort Nameturbulence + Persistent ID54855EDA128D71E9 + Track TypeRemote + Apple Music + Playlist Only + + 7027 + + Track ID7027 + NameHang + ArtistCuba Rouge + Album ArtistCuba Rouge + ComposerLAV8 & Cuba Rouge + AlbumHang - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5420411 + Total Time146633 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-14T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumHang - Single + Sort ArtistCuba Rouge + Sort NameHang + Persistent ID946AA755ED659154 + Track TypeRemote + Apple Music + Playlist Only + + 7029 + + Track ID7029 + NameAround the World + ArtistMaple Syrup & Salad Days + Album ArtistMaple Syrup & Salad Days + ComposerKirill Voronkov + AlbumAround the World - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4012649 + Total Time104828 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumAround the World - Single + Sort ArtistMaple Syrup & Salad Days + Sort NameAround the World + Persistent IDB9B3079391396908 + Track TypeRemote + Apple Music + Playlist Only + + 7031 + + Track ID7031 + NamePast Times + ArtistOatmello & Ornithology + Album ArtistOatmello & Ornithology + ComposerShaan Chhadva & Cosmos Corbin + AlbumEternity + GenreElectronic + KindApple Music AAC audio file + Size4449252 + Total Time110125 + Disc Number1 + Disc Count1 + Track Number6 + Track Count12 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-19T12:00:00Z + Artwork Count1 + Sort AlbumEternity + Sort ArtistOatmello & Ornithology + Sort NamePast Times + Persistent ID3D1429D59E6A88F9 + Track TypeRemote + Apple Music + Playlist Only + + 7033 + + Track ID7033 + NameHigh + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size8287408 + Total Time231897 + Disc Number1 + Disc Count1 + Track Number1 + Track Count10 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-03-24T12:00:00Z + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort NameHigh + Persistent IDAD7940C7A0C387AA + Track TypeRemote + Apple Music + Playlist Only + + 7037 + + Track ID7037 + Namecoral + ArtistArden & Maono + Album ArtistArden + ComposerSzymon Smolin + AlbumEarth Day (Deluxe) + GenreElectronic + KindApple Music AAC audio file + Size6413525 + Total Time170118 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-20T12:00:00Z + Artwork Count1 + Sort AlbumEarth Day (Deluxe) + Sort ArtistArden & Maono + Sort Namecoral + Persistent ID991A7CD67F62F4C9 + Track TypeRemote + Apple Music + Playlist Only + + 7043 + + Track ID7043 + Nameshow u something + ArtistPleij + Album ArtistPleij + ComposerBoudewijn Pleij + Albumshow u something - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6001330 + Total Time163636 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort Albumshow u something - Single + Sort ArtistPleij + Sort Nameshow u something + Persistent IDD1D842E3D8FD1EA5 + Track TypeRemote + Apple Music + Playlist Only + + 7045 + + Track ID7045 + NameConfidence (feat. Chrishan The Prince) + ArtistKing Los + Album ArtistKing Los + ComposerCarlos Coleman, David Doman, Matt Beck, Alex Brofsky & Christopher Dotson + AlbumGod, Money, War + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8862669 + Total Time254551 + Disc Number1 + Disc Count1 + Track Number11 + Track Count14 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-06-23T12:00:00Z + Artwork Count1 + Sort AlbumGod, Money, War + Sort ArtistKing Los + Sort NameConfidence (feat. Chrishan The Prince) + Persistent ID4D164157EFAB67F6 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7047 + + Track ID7047 + NameTorches + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerCasey Harris, Sam Harris, Nathan Perez, Andrew "Papa Justifi" Wansel, A. Grant, Adam Levin & Dustin Cavazos + AlbumTorches - Single + GenreAlternative + KindApple Music AAC audio file + Size7623570 + Total Time207373 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-04-28T12:00:00Z + Rating100 + Rating Computed + Album Rating100 + Artwork Count1 + Sort AlbumTorches - Single + Sort ArtistX Ambassadors + Sort NameTorches + Persistent ID4D698234841D097A + Track TypeRemote + Apple Music + Playlist Only + + 7049 + + Track ID7049 + NameSunny Side up + ArtistDuan Wasi + Album ArtistDuan Wasi + ComposerWasili Ntuanoglu + AlbumSunny Side up - Single + GenreLounge + KindApple Music AAC audio file + Size5122635 + Total Time128000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumSunny Side up - Single + Sort ArtistDuan Wasi + Sort NameSunny Side up + Persistent ID433952B934A57A51 + Track TypeRemote + Apple Music + Playlist Only + + 7051 + + Track ID7051 + NameSeasons + ArtistSoulone Beats + Album ArtistSoulone Beats + ComposerDean Rogerson + AlbumSeasons - Single + GenreInstrumental + KindApple Music AAC audio file + Size5013301 + Total Time133500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-31T12:00:00Z + Artwork Count1 + Sort AlbumSeasons - Single + Sort ArtistSoulone Beats + Sort NameSeasons + Persistent IDC52D29F25025133F + Track TypeRemote + Apple Music + Playlist Only + + 7053 + + Track ID7053 + NameNuvola + ArtistOh, My. + Album ArtistOh, My. + ComposerOliver Hultqvist + AlbumNuvola - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4917930 + Total Time120000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-11T12:00:00Z + Artwork Count1 + Sort AlbumNuvola - Single + Sort ArtistOh, My. + Sort NameNuvola + Persistent ID34CC635F49F2979D + Track TypeRemote + Apple Music + Playlist Only + + 7055 + + Track ID7055 + Namefalling for you + ArtistPleij + Album ArtistPleij + ComposerBoudewijn Pleij + Albumabout time - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5296027 + Total Time144493 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-17T12:00:00Z + Artwork Count1 + Sort Albumabout time - EP + Sort ArtistPleij + Sort Namefalling for you + Persistent ID2239F86C5387E4E0 + Track TypeRemote + Apple Music + Playlist Only + + 7057 + + Track ID7057 + NameMagic Hour + Artistondol & BROCKBEATS + Album Artistondol & BROCKBEATS + Composerondol & BROCKBEATS + AlbumMagic Hour - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6226163 + Total Time158378 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-14T12:00:00Z + Artwork Count1 + Sort AlbumMagic Hour - Single + Sort Artistondol & BROCKBEATS + Sort NameMagic Hour + Persistent IDD50E984B77065541 + Track TypeRemote + Apple Music + Playlist Only + + 7059 + + Track ID7059 + NameMeadow + ArtistKeliris + Album ArtistKeliris + ComposerNicholas Keliris + AlbumMeadow - Single + GenreElectronic + KindApple Music AAC audio file + Size6320552 + Total Time164051 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-09-02T12:00:00Z + Artwork Count1 + Sort AlbumMeadow - Single + Sort ArtistKeliris + Sort NameMeadow + Persistent ID516DA6FA10A436D6 + Track TypeRemote + Apple Music + Playlist Only + + 7065 + + Track ID7065 + NameChance + ArtistFlock Together & Earbuds + Album ArtistFlock Together + ComposerFlock Together, Chancelvy Lomeka, Tagara Mhizha & Anish Bhatt + AlbumTaste the Sky - London - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5447512 + Total Time141000 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-04-20T12:00:00Z + Artwork Count1 + Sort AlbumTaste the Sky - London - EP + Sort ArtistFlock Together & Earbuds + Sort NameChance + Persistent ID30DD9A2EBDA33478 + Track TypeRemote + Apple Music + Playlist Only + + 7067 + + Track ID7067 + NameCity Walks + ArtistHorizon Estetique + Album ArtistHorizon Estetique + ComposerOskar Jennefors + AlbumCity Walks - Single + GenreElectronic + KindApple Music AAC audio file + Size4913552 + Total Time129176 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-23T12:00:00Z + Artwork Count1 + Sort AlbumCity Walks - Single + Sort ArtistHorizon Estetique + Sort NameCity Walks + Persistent IDAB3E44156DD2C8A0 + Track TypeRemote + Apple Music + Playlist Only + + 7069 + + Track ID7069 + NameCantaloupe + Artistflâneur & marsquake + Album Artistflâneur & marsquake + Composerflâneur & marsquake + AlbumCantaloupe - Single + GenreInstrumental + KindApple Music AAC audio file + Size4958489 + Total Time131989 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-02T12:00:00Z + Artwork Count1 + Sort AlbumCantaloupe - Single + Sort Artistflâneur & marsquake + Sort NameCantaloupe + Persistent ID255E1AD3E0E0990F + Track TypeRemote + Apple Music + Playlist Only + + 7071 + + Track ID7071 + NameLiving In A Haze + ArtistMilky Chance + Album ArtistMilky Chance + ComposerClemens Rehbein, Philipp Maximilian Dausch, Joacim Bo Persson & Sebastian Arman + AlbumLiving in a Haze + GenreAlternative + KindApple Music AAC audio file + Size6295913 + Total Time173369 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-03T08:00:00Z + Artwork Count1 + Sort AlbumLiving in a Haze + Sort ArtistMilky Chance + Sort NameLiving In A Haze + Persistent IDA7ABC47D7A9CDF21 + Track TypeRemote + Apple Music + Playlist Only + + 7073 + + Track ID7073 + NameThe Bitter End + ArtistSuff Daddy + Album ArtistSuff Daddy + ComposerDavid Bormann + AlbumHair Of The Dog + GenreElectronic + KindApple Music AAC audio file + Size3999876 + Total Time103784 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-18T12:00:00Z + Artwork Count1 + Sort AlbumHair Of The Dog + Sort ArtistSuff Daddy + Sort NameBitter End + Persistent IDA3BBB801B8F83F3B + Track TypeRemote + Apple Music + Playlist Only + + 7075 + + Track ID7075 + NameSunset Sips + ArtistClap Cotton + Album ArtistClap Cotton + ComposerHans Schötz + AlbumSunset Sips - Single + GenreHip-Hop + KindApple Music AAC audio file + Size5023104 + Total Time133602 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-06-12T12:00:00Z + Artwork Count1 + Sort AlbumSunset Sips - Single + Sort ArtistClap Cotton + Sort NameSunset Sips + Persistent IDB10EC8A902E91EC0 + Track TypeRemote + Apple Music + Playlist Only + + 7077 + + Track ID7077 + NameNight Train + ArtistTomh & The Flipside + Album ArtistTomh & The Flipside + ComposerTomh & The Flipside + AlbumNight Train - Single + GenreHip-Hop + KindApple Music AAC audio file + Size5040272 + Total Time131188 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumNight Train - Single + Sort ArtistTomh & The Flipside + Sort NameNight Train + Persistent ID8563DE46DD3DD676 + Track TypeRemote + Apple Music + Playlist Only + + 7079 + + Track ID7079 + NameCavallo + ArtistSharks Deli + Album ArtistSharks Deli + Composerandrew ho + AlbumMemories Point + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5142149 + Total Time140000 + Disc Number1 + Disc Count1 + Track Number2 + Track Count8 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-26T12:00:00Z + Artwork Count1 + Sort AlbumMemories Point + Sort ArtistSharks Deli + Sort NameCavallo + Persistent IDD37CCA1F081064D6 + Track TypeRemote + Apple Music + Playlist Only + + 7085 + + Track ID7085 + NameKeep Your Head Up + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom (Deluxe Video Edition) + GenreSinger/Songwriter + KindApple Music AAC audio file + Size9523427 + Total Time264547 + Disc Number1 + Disc Count1 + Track Number7 + Track Count17 + Year2011 + Bit Rate256 + Sample Rate44100 + Release Date2011-01-01T12:00:00Z + Artwork Count1 + Sort AlbumEvery Kingdom (Deluxe Video Edition) + Sort ArtistBen Howard + Sort NameKeep Your Head Up + Persistent IDB92109F6029B25EA + Track TypeRemote + Apple Music + Playlist Only + + 7087 + + Track ID7087 + NameFenêtre + ArtistHouis + Album ArtistHouis + ComposerGabriel King Houis + AlbumFenêtre - Single + GenreElectronic + KindApple Music AAC audio file + Size7394503 + Total Time206506 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-01-19T12:00:00Z + Artwork Count1 + Sort AlbumFenêtre - Single + Sort ArtistHouis + Sort NameFenêtre + Persistent IDFFF821484111A3D8 + Track TypeRemote + Apple Music + Playlist Only + + 7089 + + Track ID7089 + NameAppa + ArtistSleep Culture, RNDN & Iván Rosa + Album ArtistSleep Culture + ComposerIván Rosa, Abraham Rendón Coronel & Noah Tauscher + AlbumLa Manera - EP + GenreElectronic + KindApple Music AAC audio file + Size4799382 + Total Time129076 + Disc Number1 + Disc Count1 + Track Number4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-08T12:00:00Z + Artwork Count1 + Sort AlbumLa Manera - EP + Sort ArtistSleep Culture, RNDN & Iván Rosa + Sort NameAppa + Persistent IDBB9859EAEA9CAA3D + Track TypeRemote + Apple Music + Playlist Only + + 7091 + + Track ID7091 + NameBoa Tarde + ArtistHugo Santini + Album ArtistHugo Santini + ComposerHugo Hugo + AlbumSol - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6448383 + Total Time162729 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-08T12:00:00Z + Artwork Count1 + Sort AlbumSol - EP + Sort ArtistHugo Santini + Sort NameBoa Tarde + Persistent IDB00C9AE05E156FF3 + Track TypeRemote + Apple Music + Playlist Only + + 7093 + + Track ID7093 + NameIllusion + ArtistMozzie + Album ArtistMozzie + ComposerArseniy Troshin + AlbumIllusion - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5180673 + Total Time132985 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-03T12:00:00Z + Artwork Count1 + Sort AlbumIllusion - Single + Sort ArtistMozzie + Sort NameIllusion + Persistent IDCED84B849F5E7DB4 + Track TypeRemote + Apple Music + Playlist Only + + 7095 + + Track ID7095 + NameCruiser's Blvd + ArtistSuff Daddy & Lushdogg + Album ArtistSuff Daddy & Lushdogg + ComposerDavid Bormann & Lush Dogg + AlbumCruiser's Blvd - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5186094 + Total Time143049 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-21T12:00:00Z + Artwork Count1 + Sort AlbumCruiser's Blvd - Single + Sort ArtistSuff Daddy & Lushdogg + Sort NameCruiser's Blvd + Persistent ID01A582E00C2BD0A4 + Track TypeRemote + Apple Music + Playlist Only + + 7099 + + Track ID7099 + NameMvments + ArtistNoni + Album ArtistNoni + ComposerThomas Huber + AlbumMvments - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3889280 + Total Time101512 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-14T12:00:00Z + Artwork Count1 + Sort AlbumMvments - Single + Sort ArtistNoni + Sort NameMvments + Persistent ID538E35120AFAE500 + Track TypeRemote + Apple Music + Playlist Only + + 7103 + + Track ID7103 + NameSimpler Emotions + Artistxander. & Søren Søstrom + Album Artistxander. & Søren Søstrom + ComposerAlex Papamitrou & Elijah Fox-Peck + AlbumSimpler Emotions - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7587524 + Total Time211765 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-21T12:00:00Z + Artwork Count1 + Sort AlbumSimpler Emotions - Single + Sort Artistxander. & Søren Søstrom + Sort NameSimpler Emotions + Persistent IDAB927710AD2CA8C2 + Track TypeRemote + Apple Music + Playlist Only + + 7105 + + Track ID7105 + NameEgg Yolk + ArtistCarabide + Album ArtistCarabide + ComposerTommy Lambrechtsen + AlbumEgg Yolk - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4281161 + Total Time111781 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumEgg Yolk - Single + Sort ArtistCarabide + Sort NameEgg Yolk + Persistent ID8FF5C47203D74115 + Track TypeRemote + Apple Music + Playlist Only + + 7107 + + Track ID7107 + Namerelief + ArtistSMUV + Album ArtistSMUV + ComposerMarcel Böhm + Albumrelief - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4475738 + Total Time115200 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-22T12:00:00Z + Artwork Count1 + Sort Albumrelief - Single + Sort ArtistSMUV + Sort Namerelief + Persistent IDC3BF1CD05D546D6F + Track TypeRemote + Apple Music + Playlist Only + + 7109 + + Track ID7109 + NameSuneater + ArtistSYNC.EXE & ultmt. + Album ArtistSYNC.EXE + ComposerDavid Price & Markus Kallel Daniels + AlbumEquinox II + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5882059 + Total Time154823 + Disc Number1 + Disc Count1 + Track Number12 + Track Count26 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-07T12:00:00Z + Artwork Count1 + Sort AlbumEquinox II + Sort ArtistSYNC.EXE & ultmt. + Sort NameSuneater + Persistent ID7B9FB972D7C2D434 + Track TypeRemote + Apple Music + Playlist Only + + 7111 + + Track ID7111 + NameCrying In the Shower + ArtistLetdown. + Album ArtistLetdown. + ComposerBlake Coddington, Jason Bell, Jordan Miller & Wes Period + AlbumCrying In the Shower + GenreAlternative + KindApple Music AAC audio file + Size6942155 + Total Time184064 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-24T12:00:00Z + Artwork Count1 + Sort AlbumCrying In the Shower + Sort ArtistLetdown. + Sort NameCrying In the Shower + Persistent ID1EA50C06E860E21C + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7113 + + Track ID7113 + NamePositive + ArtistZeDe & okwow + Album ArtistZeDe & okwow + ComposerJoel Marian + AlbumLips & Melodies - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4982879 + Total Time130909 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumLips & Melodies - Single + Sort ArtistZeDe & okwow + Sort NamePositive + Persistent ID90B22C08F2B5B563 + Track TypeRemote + Apple Music + Playlist Only + + 7115 + + Track ID7115 + NameClosely + ArtistAfroham & Ian Ewing + Album ArtistAfroham + ComposerIan Ewing & Nathan Avraham + AlbumQuantum Love - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6199569 + Total Time171307 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-24T12:00:00Z + Artwork Count1 + Sort AlbumQuantum Love - EP + Sort ArtistAfroham & Ian Ewing + Sort NameClosely + Persistent ID9597ACCFE9E24A67 + Track TypeRemote + Apple Music + Playlist Only + + 7119 + + Track ID7119 + NameAlma + ArtistOh, My. + Album ArtistOh, My. + ComposerOliver Hultqvist + AlbumAlma - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5679104 + Total Time148148 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-08T12:00:00Z + Artwork Count1 + Sort AlbumAlma - Single + Sort ArtistOh, My. + Sort NameAlma + Persistent ID2D94937C29926EBC + Track TypeRemote + Apple Music + Playlist Only + + 7121 + + Track ID7121 + NameI Know You + ArtistFaye Webster + Album ArtistFaye Webster + ComposerFaye Webster + AlbumFaye Webster + GenreAlternative + KindApple Music AAC audio file + Size8865134 + Total Time251667 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-05-12T12:00:00Z + Artwork Count1 + Sort AlbumFaye Webster + Sort ArtistFaye Webster + Sort NameI Know You + Persistent ID82A73D36702B46C5 + Track TypeRemote + Apple Music + Playlist Only + + 7123 + + Track ID7123 + NameCalm Place + ArtistLiving Room, Akīn & okwow + Album ArtistLiving Room, Akīn & okwow + ComposerIngolf Schapke & Jeroen De Vleeschhouwer + AlbumSound of the Night - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5919725 + Total Time160833 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-04-14T12:00:00Z + Artwork Count1 + Sort AlbumSound of the Night - Single + Sort ArtistLiving Room, Akīn & okwow + Sort NameCalm Place + Persistent IDD0A53744E7C742B8 + Track TypeRemote + Apple Music + Playlist Only + + 7125 + + Track ID7125 + Namemellow gold + ArtistKromattic + Album ArtistKromattic + ComposerEugene Ugorski + Albummellow gold - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5095646 + Total Time140308 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-07-29T12:00:00Z + Artwork Count1 + Sort Albummellow gold - Single + Sort ArtistKromattic + Sort Namemellow gold + Persistent ID72D3EA9D9A1CCA6E + Track TypeRemote + Apple Music + Playlist Only + + 7127 + + Track ID7127 + NameBlue Skies + ArtistGoldenninjah + Album ArtistGoldenninjah + ComposerAnestis Gogalis + AlbumBlue Skies - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5794408 + Total Time158117 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-29T12:00:00Z + Artwork Count1 + Sort AlbumBlue Skies - Single + Sort ArtistGoldenninjah + Sort NameBlue Skies + Persistent IDD139B01C0E310B83 + Track TypeRemote + Apple Music + Playlist Only + + 7129 + + Track ID7129 + NameBeachdays + ArtistGoldenninjah & jhfly + Album ArtistGoldenninjah & jhfly + ComposerAnestis Gogalis & Declan Browne + AlbumBeachdays - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5140854 + Total Time137143 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-26T12:00:00Z + Artwork Count1 + Sort AlbumBeachdays - Single + Sort ArtistGoldenninjah & jhfly + Sort NameBeachdays + Persistent ID8F08E7AD11402D39 + Track TypeRemote + Apple Music + Playlist Only + + 7131 + + Track ID7131 + Namehorizon (Sequoia) + ArtistArden & DAVI JUNO + Album ArtistArden + ComposerFrancesco Grieco & David LaFlamme + AlbumNational Parks, Vol. 1 + GenreElectronic + KindApple Music AAC audio file + Size4871120 + Total Time121500 + Disc Number1 + Disc Count1 + Track Number4 + Track Count8 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-10-20T12:00:00Z + Artwork Count1 + Sort AlbumNational Parks, Vol. 1 + Sort ArtistArden & DAVI JUNO + Sort Namehorizon (Sequoia) + Persistent IDAEED07CE6FDD48E6 + Track TypeRemote + Apple Music + Playlist Only + + 7135 + + Track ID7135 + NameI Fall Apart + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Carlo Montagnese & William Walsh + AlbumStoney + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7996702 + Total Time223350 + Disc Number1 + Disc Count1 + Track Number7 + Track Count14 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney + Sort ArtistPost Malone + Sort NameI Fall Apart + Persistent ID0FFEDC5E0CE907FE + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7137 + + Track ID7137 + NameMoore + Artistondol + Album Artistondol + Composerondol + AlbumMoore - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5236724 + Total Time134246 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumMoore - Single + Sort Artistondol + Sort NameMoore + Persistent ID33F11BDC8C00CD01 + Track TypeRemote + Apple Music + Playlist Only + + 7139 + + Track ID7139 + Namethundo + Artistgodchild + Album Artistgodchild + ComposerMohammed Najeeb Jones + Albumthundo / peace pipe - Single + GenreElectronic + KindApple Music AAC audio file + Size5206443 + Total Time141750 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-08-23T12:00:00Z + Artwork Count1 + Sort Albumthundo / peace pipe - Single + Sort Artistgodchild + Sort Namethundo + Persistent ID49D6803490C46C2A + Track TypeRemote + Apple Music + Playlist Only + + 7141 + + Track ID7141 + NameShark + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size6732171 + Total Time187424 + Disc Number1 + Disc Count1 + Track Number13 + Track Count15 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-09-04T12:00:00Z + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameShark + Persistent ID82A40795648FA873 + Track TypeRemote + Apple Music + Playlist Only + + 7143 + + Track ID7143 + NameAlphabet Radio + ArtistDaphné + Album ArtistDaphné + ComposerConor McCarthy + AlbumTragedy Critique - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4799168 + Total Time122927 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-12-09T08:00:00Z + Artwork Count1 + Sort AlbumTragedy Critique - EP + Sort ArtistDaphné + Sort NameAlphabet Radio + Persistent IDBC5C2A8F134230B1 + Track TypeRemote + Apple Music + Playlist Only + + 7145 + + Track ID7145 + NameTough + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi, Fiona Bevan & Jonathan Hugh Quarmby + AlbumBreach - EP + GenreAlternative + KindApple Music AAC audio file + Size8174590 + Total Time228813 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-06-08T12:00:00Z + Artwork Count1 + Sort AlbumBreach - EP + Sort ArtistLewis Capaldi + Sort NameTough + Persistent ID0717D98ADABD6E34 + Track TypeRemote + Apple Music + Playlist Only + + 7147 + + Track ID7147 + Namecloud + ArtistKromattic + Album ArtistKromattic + ComposerEugene Ugorski + Albumilluminate - EP + GenreElectronic + KindApple Music AAC audio file + Size6796102 + Total Time184000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-30T12:00:00Z + Artwork Count1 + Sort Albumilluminate - EP + Sort ArtistKromattic + Sort Namecloud + Persistent ID5F4CE6EB9B03A41D + Track TypeRemote + Apple Music + Playlist Only + + 7149 + + Track ID7149 + NameAlive And Safe + ArtistBrous One + Album ArtistBrous One + ComposerEduardo Rojas Conduela + AlbumMore In My Mind Than In My Pockets - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6285136 + Total Time165714 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-26T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumMore In My Mind Than In My Pockets - EP + Sort ArtistBrous One + Sort NameAlive And Safe + Persistent ID7F2987160C99439F + Track TypeRemote + Apple Music + Playlist Only + + 7153 + + Track ID7153 + NameCupid's Crush + ArtistLIVE FREE + Album ArtistLIVE FREE + ComposerAlex Larsson + Albumalska - EP + GenreElectronic + KindApple Music AAC audio file + Size6498323 + Total Time156706 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort Albumalska - EP + Sort ArtistLIVE FREE + Sort NameCupid's Crush + Persistent IDAC3372764697F278 + Track TypeRemote + Apple Music + Playlist Only + + 7155 + + Track ID7155 + NameBeach Day + ArtistKeliris + Album ArtistKeliris + ComposerNicholas Keliris + AlbumBeach Day - Single + GenreElectronic + KindApple Music AAC audio file + Size5153320 + Total Time137250 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-07-08T12:00:00Z + Artwork Count1 + Sort AlbumBeach Day - Single + Sort ArtistKeliris + Sort NameBeach Day + Persistent IDA724B34C554D6696 + Track TypeRemote + Apple Music + Playlist Only + + 7157 + + Track ID7157 + NameRed Juice + ArtistLIVE FREE + Album ArtistLIVE FREE + ComposerAlex Larsson + Albumalska - EP + GenreElectronic + KindApple Music AAC audio file + Size6938662 + Total Time175059 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort Albumalska - EP + Sort ArtistLIVE FREE + Sort NameRed Juice + Persistent ID5061FB983A3B52E3 + Track TypeRemote + Apple Music + Playlist Only + + 7159 + + Track ID7159 + NameSummer's Here + ArtistBroke Beats + Album ArtistBroke Beats + ComposerFernando Mendez-Weston + AlbumSummer's Here - Single + GenreElectronic + KindApple Music AAC audio file + Size5354509 + Total Time148052 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-06-17T12:00:00Z + Artwork Count1 + Sort AlbumSummer's Here - Single + Sort ArtistBroke Beats + Sort NameSummer's Here + Persistent IDD001A496A25B1509 + Track TypeRemote + Apple Music + Playlist Only + + 7161 + + Track ID7161 + Nameemerald + ArtistKromattic + Album ArtistKromattic + ComposerEugene Ugorski + Albumshades - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4691141 + Total Time124138 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-10-19T12:00:00Z + Artwork Count1 + Sort Albumshades - EP + Sort ArtistKromattic + Sort Nameemerald + Persistent IDAD83C4AB6EF831AF + Track TypeRemote + Apple Music + Playlist Only + + 7163 + + Track ID7163 + NameHug + ArtistToshiki Soejima & Nahokimama + Album ArtistToshiki Soejima & Nahokimama + ComposerToshiki Soejima + AlbumTokyo - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size5011333 + Total Time138082 + Disc Number1 + Disc Count1 + Track Number4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-12T07:00:00Z + Artwork Count1 + Sort AlbumTokyo - EP + Sort ArtistToshiki Soejima & Nahokimama + Sort NameHug + Persistent ID82FC5848A176EAFD + Track TypeRemote + Apple Music + Playlist Only + + 7165 + + Track ID7165 + NameTime + ArtistToshiki Soejima & Nahokimama + Album ArtistToshiki Soejima & Nahokimama + ComposerToshiki Soejima + AlbumTokyo - EP + GenreR&B/Soul + KindApple Music AAC audio file + Size8200182 + Total Time230333 + Disc Number1 + Disc Count1 + Track Number3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-04T07:00:00Z + Artwork Count1 + Sort AlbumTokyo - EP + Sort ArtistToshiki Soejima & Nahokimama + Sort NameTime + Persistent ID71775FB48BD5C07F + Track TypeRemote + Apple Music + Playlist Only + + 7167 + + Track ID7167 + NameBylily + ArtistLIVE FREE + Album ArtistLIVE FREE + ComposerAlex Larsson + Albumalska - EP + GenreElectronic + KindApple Music AAC audio file + Size6455834 + Total Time156957 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort Albumalska - EP + Sort ArtistLIVE FREE + Sort NameBylily + Persistent ID74A7F9FFBFAFEB87 + Track TypeRemote + Apple Music + Playlist Only + + 7171 + + Track ID7171 + NameApaixonar + ArtistakoYuno + Album ArtistakoYuno + ComposerDaniel Treimer & Lukas Großmann + AlbumApaixonar - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4960119 + Total Time129231 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-07-14T12:00:00Z + Artwork Count1 + Sort AlbumApaixonar - Single + Sort ArtistakoYuno + Sort NameApaixonar + Persistent IDA68C800B7E555666 + Track TypeRemote + Apple Music + Playlist Only + + 7173 + + Track ID7173 + NameSo Many People + ArtistLil Yachty + Album ArtistLil Yachty + ComposerMiles McCollum, Jean-Baptiste Kouame, Michael McHenry & Ryan Buendia + AlbumSummer Songs 2 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10133299 + Total Time283333 + Disc Number1 + Disc Count1 + Track Number14 + Track Count14 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-07-20T12:00:00Z + Artwork Count1 + Sort AlbumSummer Songs 2 + Sort ArtistLil Yachty + Sort NameSo Many People + Persistent IDA634F03C19545B0F + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7177 + + Track ID7177 + NameOn Demand + ArtistTom Doolie + Album ArtistTom Doolie + ComposerThomas Huber + AlbumOnly Poem + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4488252 + Total Time116493 + Disc Number1 + Disc Count1 + Track Number7 + Track Count16 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-01T12:00:00Z + Artwork Count1 + Sort AlbumOnly Poem + Sort ArtistTom Doolie + Sort NameOn Demand + Persistent ID85460F3B6D620BF3 + Track TypeRemote + Apple Music + Playlist Only + + 7179 + + Track ID7179 + NameRenegades + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerNoah Feldshuh, Casey Harris, Sam Harris, Alex Da Kid & Adam Levin + AlbumVHS 2.0 + GenreAlternative + KindApple Music AAC audio file + Size7371763 + Total Time195200 + Disc Number1 + Disc Count1 + Track Number1 + Track Count18 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-03-03T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumVHS 2.0 + Sort ArtistX Ambassadors + Sort NameRenegades + Persistent ID13C60C73DFBAA5BF + Track TypeRemote + Apple Music + Playlist Only + + 7181 + + Track ID7181 + NameMore / Less + ArtistCap Kendricks + Album ArtistCap Kendricks + ComposerJulian Weiss-Vogtmann + AlbumMore / Less - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4853246 + Total Time128000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-06-09T12:00:00Z + Artwork Count1 + Sort AlbumMore / Less - Single + Sort ArtistCap Kendricks + Sort NameMore / Less + Persistent ID5D3243562FA88DBF + Track TypeRemote + Apple Music + Playlist Only + + 7183 + + Track ID7183 + NameModern Girl + ArtistBleachers + Album ArtistBleachers + ComposerJack Antonoff & Evan Smith + AlbumModern Girl - Single + GenreAlternative + KindApple Music AAC audio file + Size7969298 + Total Time223100 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-20T12:00:00Z + Artwork Count1 + Sort AlbumModern Girl - Single + Sort ArtistBleachers + Sort NameModern Girl + Persistent ID04D94FA4AD2E677F + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7185 + + Track ID7185 + NameFrench Vanilla + ArtistOlyva + Album ArtistOlyva + ComposerBozley Hodgson + AlbumVetiver - EP + GenreElectronic + KindApple Music AAC audio file + Size5573834 + Total Time152195 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-12-09T12:00:00Z + Artwork Count1 + Sort AlbumVetiver - EP + Sort ArtistOlyva + Sort NameFrench Vanilla + Persistent ID0869B9B63D6EFA7A + Track TypeRemote + Apple Music + Playlist Only + + 7191 + + Track ID7191 + NamePisolino + ArtistDAVI JUNO + Album ArtistDAVI JUNO + ComposerDavid LaFlamme & Francesco Grieco + AlbumOff The Beat'n Path / Pisolino - Single + GenreElectronic + KindApple Music AAC audio file + Size4531221 + Total Time121500 + Disc Number1 + Disc Count1 + Track Number2 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-08-18T12:00:00Z + Artwork Count1 + Sort AlbumOff The Beat'n Path / Pisolino - Single + Sort ArtistDAVI JUNO + Sort NamePisolino + Persistent ID1C975F0745AE8883 + Track TypeRemote + Apple Music + Playlist Only + + 7193 + + Track ID7193 + NameWaiting + Artistxander. & Søren Søstrom + Album Artistxander. & Søren Søstrom + ComposerAlex Papamitrou + AlbumWaiting - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6612811 + Total Time181259 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-19T12:00:00Z + Artwork Count1 + Sort AlbumWaiting - Single + Sort Artistxander. & Søren Søstrom + Sort NameWaiting + Persistent IDD27F244BBF3E1123 + Track TypeRemote + Apple Music + Playlist Only + + 7195 + + Track ID7195 + Namebuttercream + ArtistPistachio + Album ArtistPistachio + ComposerJacob Attwooll + Albumbuttercream - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5804614 + Total Time146625 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-10-26T12:00:00Z + Artwork Count1 + Sort Albumbuttercream - Single + Sort ArtistPistachio + Sort Namebuttercream + Persistent ID12C705CB60F3CCF5 + Track TypeRemote + Apple Music + Playlist Only + + 7197 + + Track ID7197 + NameWhite Iverson + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Trocon Markous Roberts, Jr., Andre Jackson, Idan Kalai & Rex Kudo + AlbumStoney + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9059493 + Total Time256532 + Disc Number1 + Disc Count1 + Track Number6 + Track Count14 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-02-04T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney + Sort ArtistPost Malone + Sort NameWhite Iverson + Persistent IDEC93B81C3CDE4633 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7199 + + Track ID7199 + Nameslow talker + Artistyoshi the brilliant + Album Artistyoshi the brilliant + Composeryoshi the brilliant + Albumslow talker - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6042175 + Total Time170667 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort Albumslow talker - Single + Sort Artistyoshi the brilliant + Sort Nameslow talker + Persistent ID02271DD95FA5D2B4 + Track TypeRemote + Apple Music + Playlist Only + + 7203 + + Track ID7203 + NameNoritsu + ArtistØDYSSEE, Drips Zacheer & Kristoffer Eikrem + Album ArtistØDYSSEE, Drips Zacheer & Kristoffer Eikrem + ComposerKristoffer Eikrem, Pavlos Zacharis & Louis Le Clerc + AlbumNoritsu - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5794835 + Total Time146002 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-17T12:00:00Z + Artwork Count1 + Sort AlbumNoritsu - Single + Sort ArtistØDYSSEE, Drips Zacheer & Kristoffer Eikrem + Sort NameNoritsu + Persistent IDE9FB5C5B704E76B9 + Track TypeRemote + Apple Music + Playlist Only + + 7205 + + Track ID7205 + Nameshades + ArtistPleij + Album ArtistPleij + ComposerBoudewijn Pleij + Albumshades - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5189492 + Total Time133605 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-17T12:00:00Z + Artwork Count1 + Sort Albumshades - Single + Sort ArtistPleij + Sort Nameshades + Persistent ID70AA45CAA2007B3D + Track TypeRemote + Apple Music + Playlist Only + + 7207 + + Track ID7207 + NameDreamscape + ArtistLotus Beats + Album ArtistLotus Beats + ComposerLotus Beats + AlbumOblivion - EP + GenreLounge + KindApple Music AAC audio file + Size3691148 + Total Time94338 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-11T12:00:00Z + Artwork Count1 + Sort AlbumOblivion - EP + Sort ArtistLotus Beats + Sort NameDreamscape + Persistent IDAF5985730966CDB3 + Track TypeRemote + Apple Music + Playlist Only + + 7213 + + Track ID7213 + NameGrace + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi, Nicholas Atkinson & Edward Holloway + AlbumDivinely Uninspired To A Hellish Extent + GenreAlternative + KindApple Music AAC audio file + Size6709326 + Total Time184880 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-09-21T07:00:00Z + Artwork Count1 + Sort AlbumDivinely Uninspired To A Hellish Extent + Sort ArtistLewis Capaldi + Sort NameGrace + Persistent ID695DC63A19E18505 + Track TypeRemote + Apple Music + Playlist Only + + 7217 + + Track ID7217 + NameBruises + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi & James Earp + AlbumDivinely Uninspired To A Hellish Extent + GenreAlternative + KindApple Music AAC audio file + Size7784497 + Total Time220492 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-03-31T07:00:00Z + Artwork Count1 + Sort AlbumDivinely Uninspired To A Hellish Extent + Sort ArtistLewis Capaldi + Sort NameBruises + Persistent IDDB1D978E27B68E2B + Track TypeRemote + Apple Music + Playlist Only + + 7223 + + Track ID7223 + NameOver You + ArtistEl Train & Paal Singh + Album ArtistChillhop Music + ComposerLuke Nyeke & Paal Singh Dilgeer + AlbumChillhop Essentials Spring 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4747309 + Total Time125312 + Disc Number1 + Disc Count1 + Track Number1 + Track Count28 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-14T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Spring 2023 + Sort ArtistEl Train & Paal Singh + Sort NameOver You + Persistent ID149310B3860BA267 + Track TypeRemote + Apple Music + Playlist Only + + 7225 + + Track ID7225 + NameHaunted + Artistdoidoi + Album Artistdoidoi + ComposerGeorge Brenner + AlbumHaunted - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6816357 + Total Time187479 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumHaunted - Single + Sort Artistdoidoi + Sort NameHaunted + Persistent IDC1BB9426DB75A099 + Track TypeRemote + Apple Music + Playlist Only + + 7227 + + Track ID7227 + NameEthereal + ArtistZmeyev, Red Astro & skrn + Album ArtistZmeyev, Red Astro & skrn + ComposerKonstantin Georgievich Baratashvili, Yury Vasilyev & Mars Saralinov + AlbumEthereal - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4883207 + Total Time130370 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-08-18T12:00:00Z + Artwork Count1 + Sort AlbumEthereal - Single + Sort ArtistZmeyev, Red Astro & skrn + Sort NameEthereal + Persistent IDB853CE265AB4530A + Track TypeRemote + Apple Music + Playlist Only + + 7231 + + Track ID7231 + NameYellowblue + ArtistYasper & sonofmark + Album ArtistChillhop Music + ComposerYasper Molle & Teun Dillisse + AlbumChillhop Essentials Spring 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6649106 + Total Time174044 + Disc Number1 + Disc Count1 + Track Number4 + Track Count28 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-14T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Spring 2023 + Sort ArtistYasper & sonofmark + Sort NameYellowblue + Persistent IDB2ECDA23565C2676 + Track TypeRemote + Apple Music + Playlist Only + + 7233 + + Track ID7233 + NameTreasures + Artistalhivi & Snowji + Album Artistalhivi & Snowji + ComposerAlberto Vitali & Clément Darrouzes + AlbumTreasures - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4822878 + Total Time119333 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumTreasures - Single + Sort Artistalhivi & Snowji + Sort NameTreasures + Persistent IDD4C25F7851EE0524 + Track TypeRemote + Apple Music + Playlist Only + + 7237 + + Track ID7237 + NameUp There + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Louis Bell, Pharrell Williams & Carl Rosen + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7063581 + Total Time194831 + Disc Number1 + Disc Count1 + Track Number13 + Track Count18 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameUp There + Persistent IDBCB6E580A5B5CE70 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7239 + + Track ID7239 + NameTessellate + ArtistMozzie + Album ArtistMozzie + ComposerArseniy Troshin + AlbumTessellate - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4683049 + Total Time124557 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-05T12:00:00Z + Artwork Count1 + Sort AlbumTessellate - Single + Sort ArtistMozzie + Sort NameTessellate + Persistent ID77C3029074B3E064 + Track TypeRemote + Apple Music + Playlist Only + + 7245 + + Track ID7245 + NameKero + Artistinvention_ + Album Artistinvention_ + ComposerZakary LaVigne + AlbumArize - EP + GenreElectronic + KindApple Music AAC audio file + Size5427562 + Total Time146000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-06-14T12:00:00Z + Artwork Count1 + Sort AlbumArize - EP + Sort Artistinvention_ + Sort NameKero + Persistent IDF12CE594903317B9 + Track TypeRemote + Apple Music + Playlist Only + + 7247 + + Track ID7247 + Name4pm in shibuya + Artistoh, the joy. + Album Artistoh, the joy. + ComposerJoyous Jones + Album4pm in shibuya - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6290762 + Total Time171747 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-31T12:00:00Z + Artwork Count1 + Sort Album4pm in shibuya - Single + Sort Artistoh, the joy. + Sort Name4pm in shibuya + Persistent ID526D3E314F0215D0 + Track TypeRemote + Apple Music + Playlist Only + + 7249 + + Track ID7249 + NameGoing to the Moon + ArtistWine In Dusk + Album ArtistWine In Dusk + ComposerSam Murray & Wine In Dusk + AlbumGoing to the Moon - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5943050 + Total Time164869 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-03T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumGoing to the Moon - Single + Sort ArtistWine In Dusk + Sort NameGoing to the Moon + Persistent ID5261C0C8C5FEB59C + Track TypeRemote + Apple Music + Playlist Only + + 7253 + + Track ID7253 + NameBy Your Side + ArtistGrand Motel + Album ArtistGrand Motel + ComposerRodolphe Lecat + AlbumBy Your Side - Single + GenreElectronic + KindApple Music AAC audio file + Size5380604 + Total Time139059 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-12-09T12:00:00Z + Artwork Count1 + Sort AlbumBy Your Side - Single + Sort ArtistGrand Motel + Sort NameBy Your Side + Persistent ID177C03A2B6D02DE2 + Track TypeRemote + Apple Music + Playlist Only + + 7255 + + Track ID7255 + NameSunset Days + ArtistSharks Deli + Album ArtistSharks Deli + ComposerSharks Deli + AlbumCloud City Ultra + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4606611 + Total Time121846 + Disc Number1 + Disc Count1 + Track Number6 + Track Count8 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-01-23T12:00:00Z + Artwork Count1 + Sort AlbumCloud City Ultra + Sort ArtistSharks Deli + Sort NameSunset Days + Persistent IDB74D0E35E04EBF3F + Track TypeRemote + Apple Music + Playlist Only + + 7257 + + Track ID7257 + NameLaunch + ArtistLofios + Album ArtistLofios + ComposerRaney Shockne & Ross Rosaer + AlbumAlpha - EP + GenreDowntempo + KindApple Music AAC audio file + Size5160054 + Total Time140355 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-20T12:00:00Z + Artwork Count1 + Sort AlbumAlpha - EP + Sort ArtistLofios + Sort NameLaunch + Persistent ID6128B0114A41CC67 + Track TypeRemote + Apple Music + Playlist Only + + 7263 + + Track ID7263 + NameWild Mallow + ArtistThe Lofi Big Band + Album ArtistThe Lofi Big Band + ComposerThe Lofi Big Band + AlbumWild Mallow - Single + GenreInstrumental + KindApple Music AAC audio file + Size6386554 + Total Time177621 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-27T12:00:00Z + Artwork Count1 + Sort AlbumWild Mallow - Single + Sort Album ArtistLofi Big Band + Sort ArtistLofi Big Band + Sort ComposerLofi Big Band + Sort NameWild Mallow + Persistent ID09E361A6122AEE35 + Track TypeRemote + Apple Music + Playlist Only + + 7265 + + Track ID7265 + NameBefore You Go + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi, Tom Barnes, Peter Kelleher, Benjamin Kohn & Phil Plested + AlbumDivinely Uninspired To a Hellish Extent (Extended Edition) + GenreAlternative + KindApple Music AAC audio file + Size7615615 + Total Time216062 + Disc Number1 + Disc Count1 + Track Number13 + Track Count15 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-11-19T08:00:00Z + Artwork Count1 + Sort AlbumDivinely Uninspired To a Hellish Extent (Extended Edition) + Sort ArtistLewis Capaldi + Sort NameBefore You Go + Persistent IDE12D6D4CCD3D0D6E + Track TypeRemote + Apple Music + Playlist Only + + 7267 + + Track ID7267 + NameRents + ArtistKyle McEvoy, Kazuki Isogai & wowflower + Album ArtistKyle McEvoy, Kazuki Isogai & wowflower + ComposerKyle McEvoy, Kazuki Isogai & Kyle Torr-Brown + AlbumAtwood - EP + GenreInstrumental + KindApple Music AAC audio file + Size4818536 + Total Time127055 + Disc Number1 + Disc Count1 + Track Number4 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-16T12:00:00Z + Artwork Count1 + Sort AlbumAtwood - EP + Sort ArtistKyle McEvoy, Kazuki Isogai & wowflower + Sort NameRents + Persistent IDA5CA4AF3A1D653CA + Track TypeRemote + Apple Music + Playlist Only + + 7271 + + Track ID7271 + NameMicrostroll + ArtistJobii + Album ArtistJobii + ComposerGabe Millman + AlbumFull Tank + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5007577 + Total Time130035 + Disc Number1 + Disc Count1 + Track Number1 + Track Count8 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-11-18T12:00:00Z + Artwork Count1 + Sort AlbumFull Tank + Sort ArtistJobii + Sort NameMicrostroll + Persistent IDA01CDA623EBEB5EB + Track TypeRemote + Apple Music + Playlist Only + + 7277 + + Track ID7277 + NameTrust Your Instincts + ArtistDYVN + Album ArtistDYVN + ComposerDavid Nilles + AlbumTrust Your Instincts - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4787037 + Total Time120000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-09T12:00:00Z + Artwork Count1 + Sort AlbumTrust Your Instincts - Single + Sort ArtistDYVN + Sort NameTrust Your Instincts + Persistent IDDC5B194D7B64AB99 + Track TypeRemote + Apple Music + Playlist Only + + 7279 + + Track ID7279 + NamePromise + ArtistBen Howard + Album ArtistBen Howard + ComposerBen Howard + AlbumEvery Kingdom (Deluxe Video Edition) + GenreSinger/Songwriter + KindApple Music AAC audio file + Size13461829 + Total Time384080 + Disc Number1 + Disc Count1 + Track Number10 + Track Count17 + Year2011 + Bit Rate256 + Sample Rate44100 + Release Date2011-01-01T12:00:00Z + Artwork Count1 + Sort AlbumEvery Kingdom (Deluxe Video Edition) + Sort ArtistBen Howard + Sort NamePromise + Persistent ID66F5B075D79E9E46 + Track TypeRemote + Apple Music + Playlist Only + + 7281 + + Track ID7281 + NameBogus Operandi + ArtistThe Hives + Album ArtistThe Hives + ComposerMontgomery Fitzsimmons, Chip Fitzsimmons, Randy Fitzsimmons & Wilbur Fitzsimmons + AlbumThe Death of Randy Fitzsimmons + GenreRock + KindApple Music AAC audio file + Size8436480 + Total Time223786 + Disc Number1 + Disc Count1 + Track Number1 + Track Count12 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-11T12:00:00Z + Artwork Count1 + Sort AlbumDeath of Randy Fitzsimmons + Sort Album ArtistHives + Sort ArtistHives + Sort NameBogus Operandi + Persistent ID81116584DAF84DC6 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7283 + + Track ID7283 + NameRoutine + ArtistGrand Motel + Album ArtistGrand Motel + ComposerRodolphe Lecat + AlbumRoutine - Single + GenreElectronic + KindApple Music AAC audio file + Size4731603 + Total Time125914 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-11-18T12:00:00Z + Artwork Count1 + Sort AlbumRoutine - Single + Sort ArtistGrand Motel + Sort NameRoutine + Persistent IDDC61D9AED4318C4B + Track TypeRemote + Apple Music + Playlist Only + + 7285 + + Track ID7285 + NameAirport (feat. Paul Grant) + ArtistRMB Justize + Album ArtistRMB Justize + ComposerRyan Baker & Paul Grant + AlbumAirport (feat. Paul Grant) - Single + GenreJazz + KindApple Music AAC audio file + Size6639497 + Total Time178585 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-05-24T12:00:00Z + Artwork Count1 + Sort AlbumAirport (feat. Paul Grant) - Single + Sort ArtistRMB Justize + Sort NameAirport (feat. Paul Grant) + Persistent IDB4B54FF393B485DF + Track TypeRemote + Apple Music + Playlist Only + + 7289 + + Track ID7289 + NameBonaventura + ArtistBirocratic, Saib & ØDYSSEE + Album ArtistChillhop Music + ComposerBrandon Gabriel Rowan, Hamza Saib & Louis Le Clerc + AlbumChillhop Essentials Summer 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5271944 + Total Time145168 + Disc Number1 + Disc Count1 + Track Number1 + Track Count28 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-06T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Summer 2023 + Sort ArtistBirocratic, Saib & ØDYSSEE + Sort NameBonaventura + Persistent ID16BC40D1F75B13C5 + Track TypeRemote + Apple Music + Playlist Only + + 7291 + + Track ID7291 + NameTake Out + Artistmœbius + Album Artistmœbius + ComposerBen Thomas + AlbumTake Out - Single + GenreElectronic + KindApple Music AAC audio file + Size5209154 + Total Time135882 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-10-14T12:00:00Z + Artwork Count1 + Sort AlbumTake Out - Single + Sort Artistmœbius + Sort NameTake Out + Persistent ID75D3CF38AEDBA134 + Track TypeRemote + Apple Music + Playlist Only + + 7295 + + Track ID7295 + NameOld Fashioned + ArtistMonaqee + Album ArtistMonaqee + ComposerMonaqee + AlbumOld Fashioned - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5382956 + Total Time144510 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-10T12:00:00Z + Artwork Count1 + Sort AlbumOld Fashioned - Single + Sort ArtistMonaqee + Sort NameOld Fashioned + Persistent IDBE15370E23137641 + Track TypeRemote + Apple Music + Playlist Only + + 7297 + + Track ID7297 + NameDowntown + ArtistScreen Jazzmaster & .Eehou + Album ArtistChillhop Music + ComposerYury Vasilyev & Mars + AlbumChillhop Essentials Summer 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5381168 + Total Time144276 + Disc Number1 + Disc Count1 + Track Number18 + Track Count28 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-06T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Summer 2023 + Sort ArtistScreen Jazzmaster & .Eehou + Sort NameDowntown + Persistent IDFD2B0B41840F544F + Track TypeRemote + Apple Music + Playlist Only + + 7299 + + Track ID7299 + NamePrinted + ArtistLoop Schrauber + Album ArtistLoop Schrauber + ComposerLoop Schrauber + AlbumPrinted - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4410580 + Total Time115765 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumPrinted - Single + Sort ArtistLoop Schrauber + Sort NamePrinted + Persistent IDE8C1030328B1CDB7 + Track TypeRemote + Apple Music + Playlist Only + + 7301 + + Track ID7301 + NameMaybe She + ArtistOuska, Slipfunc & Anetta Morozova + Album ArtistChillhop Music + ComposerAnetta Morozova, Valentin Chauveau & Pauli Kaarlo Juhani Niemi + AlbumChillhop Essentials Summer 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7276919 + Total Time204502 + Disc Number1 + Disc Count1 + Track Number14 + Track Count28 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-06T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Summer 2023 + Sort ArtistOuska, Slipfunc & Anetta Morozova + Sort NameMaybe She + Persistent IDF3716F79BB0C22C8 + Track TypeRemote + Apple Music + Playlist Only + + 7303 + + Track ID7303 + NameMay 27 + ArtistDonkeychote + Album ArtistDonkeychote + ComposerFlorian Brühl + AlbumLost Wallet - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4761524 + Total Time126000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-07-14T12:00:00Z + Artwork Count1 + Sort AlbumLost Wallet - Single + Sort ArtistDonkeychote + Sort NameMay 27 + Persistent ID466D0F4262D263B9 + Track TypeRemote + Apple Music + Playlist Only + + 7307 + + Track ID7307 + NameKerosene Dreams + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerNoah Feldshuh, Casey Harris, Sam Harris, Alex Da Kid & Adam Levin + AlbumVHS 2.0 + GenreAlternative + KindApple Music AAC audio file + Size8445942 + Total Time233013 + Disc Number1 + Disc Count1 + Track Number15 + Track Count18 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-06-10T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumVHS 2.0 + Sort ArtistX Ambassadors + Sort NameKerosene Dreams + Persistent IDCF6F4FFA8A8CA740 + Track TypeRemote + Apple Music + Playlist Only + + 7309 + + Track ID7309 + NameJardim + ArtistTinman + Album ArtistTinman + ComposerTinman + AlbumBossa Beats - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7661964 + Total Time208300 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-19T12:00:00Z + Artwork Count1 + Sort AlbumBossa Beats - EP + Sort ArtistTinman + Sort NameJardim + Persistent ID7E37465BC125EA45 + Track TypeRemote + Apple Music + Playlist Only + + 7311 + + Track ID7311 + NameFly High + Artist.Eehou, skrn & flowless + Album Artist.Eehou, skrn & flowless + ComposerMars Saralinov, Yury Vladimirovich Vasilyev & Konstantin Georgievich Baratashvili + AlbumFly High - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5073722 + Total Time128571 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumFly High - Single + Sort Artist.Eehou, skrn & flowless + Sort NameFly High + Persistent ID05DBEA89E7B9005C + Track TypeRemote + Apple Music + Playlist Only + + 7313 + + Track ID7313 + NameAt The Pool + ArtistBobby Dreamz BIG + Album ArtistBobby Dreamz BIG + ComposerMarc Lensing + AlbumAt The Pool - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5371001 + Total Time151538 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumAt The Pool - Single + Sort ArtistBobby Dreamz BIG + Sort NameAt The Pool + Persistent ID6163B2FC5C81A068 + Track TypeRemote + Apple Music + Playlist Only + + 7315 + + Track ID7315 + NameBloom + ArtistChris Mazuera + Album ArtistChris Mazuera + ComposerChristopher Mazuera + AlbumBloom - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5915969 + Total Time157808 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-11-20T12:00:00Z + Artwork Count1 + Sort AlbumBloom - Single + Sort ArtistChris Mazuera + Sort NameBloom + Persistent ID3A825DBA989C07E1 + Track TypeRemote + Apple Music + Playlist Only + + 7317 + + Track ID7317 + NameKimata + ArtistNo Spirit + Album ArtistNo Spirit + ComposerPhilipp Alexander Geitmann + AlbumKimata - Single + GenreInstrumental + KindApple Music AAC audio file + Size4614144 + Total Time121579 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-09T12:00:00Z + Artwork Count1 + Sort AlbumKimata - Single + Sort ArtistNo Spirit + Sort NameKimata + Persistent IDE1603842EF29578C + Track TypeRemote + Apple Music + Playlist Only + + 7319 + + Track ID7319 + NameRiver Flow + ArtistKazuki Isogai & yuhei miura + Album ArtistKazuki Isogai & yuhei miura + ComposerKazuki Isogai & yuhei miura + AlbumSeasons - EP + GenreJazz + KindApple Music AAC audio file + Size4060453 + Total Time108643 + Disc Number1 + Disc Count1 + Track Number3 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-09T12:00:00Z + Artwork Count1 + Sort AlbumSeasons - EP + Sort ArtistKazuki Isogai & yuhei miura + Sort NameRiver Flow + Persistent ID06AA3B32B9C59F9A + Track TypeRemote + Apple Music + Playlist Only + + 7321 + + Track ID7321 + NameTo Everything, There Is A Season + ArtistKazuki Isogai & yuhei miura + Album ArtistKazuki Isogai & yuhei miura + ComposerKazuki Isogai & yuhei miura + AlbumSeasons - EP + GenreJazz + KindApple Music AAC audio file + Size5026257 + Total Time137109 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-12T12:00:00Z + Artwork Count1 + Sort AlbumSeasons - EP + Sort ArtistKazuki Isogai & yuhei miura + Sort NameTo Everything, There Is A Season + Persistent IDEB5FF49337257A82 + Track TypeRemote + Apple Music + Playlist Only + + 7323 + + Track ID7323 + NameAmaGrootman + ArtistuBeyond, John Lundun, Phonikz & Tojié Cai + Album ArtistuBeyond + ComposerPerfect Thandokuhle Zuma, Chuene Reshoketjwe Marakalala, Thato Modika & Neo Langalakhe Mokoatle + AlbumAmanzimtoti - Single + GenreElectronic + KindApple Music AAC audio file + Size5511430 + Total Time140000 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-12T12:00:00Z + Artwork Count1 + Sort AlbumAmanzimtoti - Single + Sort ArtistuBeyond, John Lundun, Phonikz & Tojié Cai + Sort NameAmaGrootman + Persistent IDC054FC445A0853EF + Track TypeRemote + Apple Music + Playlist Only + + 7325 + + Track ID7325 + NameSonic + ArtistNoni + Album ArtistNoni + ComposerThomas Huber + AlbumSonic - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3559174 + Total Time90000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-04T12:00:00Z + Artwork Count1 + Sort AlbumSonic - Single + Sort ArtistNoni + Sort NameSonic + Persistent IDC1CFF8BFE2C3A63C + Track TypeRemote + Apple Music + Playlist Only + + 7327 + + Track ID7327 + NameAnywhere the Wind Blows + ArtistMama Aiuto & Dan Gregory + Album ArtistMama Aiuto & Dan Gregory + ComposerDan Gregory & Benjamin McCarthy + AlbumAnywhere the Wind Blows - Single + GenreElectronic + KindApple Music AAC audio file + Size4122453 + Total Time110352 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-04-29T12:00:00Z + Artwork Count1 + Sort AlbumAnywhere the Wind Blows - Single + Sort ArtistMama Aiuto & Dan Gregory + Sort NameAnywhere the Wind Blows + Persistent IDD322CB4945E7EB02 + Track TypeRemote + Apple Music + Playlist Only + + 7329 + + Track ID7329 + NameRaw Raw + ArtistK.Flay + Album ArtistK.Flay + ComposerJason Suwito, Kristine Flaherty, Bradley Hale & Daniel Armbruster + AlbumRaw Raw - Single + GenreAlternative + KindApple Music AAC audio file + Size6496462 + Total Time177933 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-26T12:00:00Z + Artwork Count1 + Sort AlbumRaw Raw - Single + Sort ArtistK.Flay + Sort NameRaw Raw + Persistent ID94CFA7E85EA93417 + Track TypeRemote + Apple Music + Playlist Only + + 7331 + + Track ID7331 + NameLongtemps + ArtistHouis & Ushuaia + Album ArtistHouis & Ushuaia + ComposerGabriel King Houis & Federico Marchi + AlbumLongtemps - Single + GenreElectronic + KindApple Music AAC audio file + Size8548802 + Total Time234533 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-12-16T12:00:00Z + Artwork Count1 + Sort AlbumLongtemps - Single + Sort ArtistHouis & Ushuaia + Sort NameLongtemps + Persistent ID268DD909A11C57DF + Track TypeRemote + Apple Music + Playlist Only + + 7333 + + Track ID7333 + Namewhere do shooting stars go? + ArtistBeach Boy Rad + Album ArtistBeach Boy Rad + ComposerDerick Fagbohoun & Derick Fagbohun + Albumwhere do shooting stars go? - Single + GenreElectronic + KindApple Music AAC audio file + Size4496571 + Total Time118856 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-31T12:00:00Z + Artwork Count1 + Sort Albumwhere do shooting stars go? - Single + Sort ArtistBeach Boy Rad + Sort Namewhere do shooting stars go? + Persistent ID356456B02A6A29C5 + Track TypeRemote + Apple Music + Playlist Only + + 7335 + + Track ID7335 + NameSunburn + Artistlove_eight + Album Artistlove_eight + ComposerLavotha, Jonathan & love_eight + AlbumSunburn - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4863928 + Total Time130833 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-22T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumSunburn - Single + Sort Artistlove_eight + Sort NameSunburn + Persistent ID3B9482D244384110 + Track TypeRemote + Apple Music + Playlist Only + + 7337 + + Track ID7337 + NameUpward Circles + ArtistDYVN + Album ArtistDYVN + ComposerDavid Nilles + AlbumWaves + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5154838 + Total Time128500 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumWaves + Sort ArtistDYVN + Sort NameUpward Circles + Persistent IDD0C49F8EDF8803DE + Track TypeRemote + Apple Music + Playlist Only + + 7341 + + Track ID7341 + NameTrust the Process + ArtistWine In Dusk + Album ArtistWine In Dusk + ComposerSam Murray & Wine In Dusk + AlbumDisculpe - Single + GenreElectronic + KindApple Music AAC audio file + Size5290441 + Total Time143716 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-03T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumDisculpe - Single + Sort ArtistWine In Dusk + Sort NameTrust the Process + Persistent IDCC7574168241BDB8 + Track TypeRemote + Apple Music + Playlist Only + + 7345 + + Track ID7345 + NameWindfall + ArtistEnluv & azayaka + Album ArtistEnluv & azayaka + ComposerBrandon Hartt & Jacob Henry Feingold + AlbumWindfall + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6016977 + Total Time162162 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-23T12:00:00Z + Artwork Count1 + Sort AlbumWindfall + Sort ArtistEnluv & azayaka + Sort NameWindfall + Persistent IDF4B2D4DAA4EA8D88 + Track TypeRemote + Apple Music + Playlist Only + + 7347 + + Track ID7347 + Nameeasy peezy + ArtistPistachio + Album ArtistPistachio + ComposerJacob Attwooll + Albumbuttery beats - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5145193 + Total Time130495 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-01T12:00:00Z + Artwork Count1 + Sort Albumbuttery beats - EP + Sort ArtistPistachio + Sort Nameeasy peezy + Persistent ID220BBA88403089C4 + Track TypeRemote + Apple Music + Playlist Only + + 7351 + + Track ID7351 + NameWarm For The Cold + ArtistSøren Søstrom & xander. + Album ArtistSøren Søstrom & xander. + ComposerElijah Fox-Peck & Alex Papamitrou + AlbumWarm For The Cold - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6419319 + Total Time176552 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-24T12:00:00Z + Artwork Count1 + Sort AlbumWarm For The Cold - Single + Sort ArtistSøren Søstrom & xander. + Sort NameWarm For The Cold + Persistent ID59CA2FD930EB2589 + Track TypeRemote + Apple Music + Playlist Only + + 7353 + + Track ID7353 + NameResin + Artistaunt & Beats for Trees + Album Artistaunt & Beats for Trees + ComposerAiko Satō + AlbumResin - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6480421 + Total Time158990 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumResin - Single + Sort Artistaunt & Beats for Trees + Sort NameResin + Persistent ID8F84F48C58A071C2 + Track TypeRemote + Apple Music + Playlist Only + + 7355 + + Track ID7355 + Namepilea + Artistriel + Album Artistriel + ComposerGabriel King Houis + Albumhazel - EP + GenreElectronic + KindApple Music AAC audio file + Size6464876 + Total Time168000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-01-27T12:00:00Z + Artwork Count1 + Sort Albumhazel - EP + Sort Artistriel + Sort Namepilea + Persistent ID20476E94E7CFFA7F + Track TypeRemote + Apple Music + Playlist Only + + 7357 + + Track ID7357 + NameSkimmed Milk + ArtistMr Argyle + Album ArtistMr Argyle + ComposerAndreas Wegelius & Mr Argyle + AlbumSkimmed Milk - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5266903 + Total Time141176 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-30T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumSkimmed Milk - Single + Sort ArtistMr Argyle + Sort NameSkimmed Milk + Persistent ID8FC62CA7C27A003E + Track TypeRemote + Apple Music + Playlist Only + + 7361 + + Track ID7361 + NameSunglass + ArtistKOFE BUX + Album ArtistKOFE BUX + ComposerAlex Larsson + AlbumLate Night Delivery? + GenreElectronic + KindApple Music AAC audio file + Size6901637 + Total Time169988 + Disc Number1 + Disc Count1 + Track Number1 + Track Count7 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-07T12:00:00Z + Artwork Count1 + Sort AlbumLate Night Delivery? + Sort ArtistKOFE BUX + Sort NameSunglass + Persistent ID63CEB21B340166B0 + Track TypeRemote + Apple Music + Playlist Only + + 7363 + + Track ID7363 + NameHighland + ArtistKOFE BUX + Album ArtistKOFE BUX + ComposerAlex Larsson + AlbumLate Night Delivery? + GenreElectronic + KindApple Music AAC audio file + Size6821459 + Total Time183984 + Disc Number1 + Disc Count1 + Track Number4 + Track Count7 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-10T12:00:00Z + Artwork Count1 + Sort AlbumLate Night Delivery? + Sort ArtistKOFE BUX + Sort NameHighland + Persistent ID4EA6B4E535D95552 + Track TypeRemote + Apple Music + Playlist Only + + 7369 + + Track ID7369 + NameLittle St Leonard's Street + ArtistKOFE BUX + Album ArtistKOFE BUX + ComposerAlex Larsson + AlbumLate Night Delivery? + GenreElectronic + KindApple Music AAC audio file + Size6550370 + Total Time168937 + Disc Number1 + Disc Count1 + Track Number5 + Track Count7 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-07T12:00:00Z + Artwork Count1 + Sort AlbumLate Night Delivery? + Sort ArtistKOFE BUX + Sort NameLittle St Leonard's Street + Persistent ID1C9B19A356D58C8D + Track TypeRemote + Apple Music + Playlist Only + + 7371 + + Track ID7371 + NameBlissed Out + ArtistGlimlip, DAO & Adam Friedman + Album ArtistGlimlip, DAO & Adam Friedman + ComposerThomas Philip Lieftinck, christian kalla & Adam Friedman + AlbumBlissed Out - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5754183 + Total Time157849 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-30T12:00:00Z + Artwork Count1 + Sort AlbumBlissed Out - Single + Sort ArtistGlimlip, DAO & Adam Friedman + Sort NameBlissed Out + Persistent ID47181AA172E31830 + Track TypeRemote + Apple Music + Playlist Only + + 7373 + + Track ID7373 + NameTillatilla + ArtistLIVE FREE + Album ArtistLIVE FREE + ComposerAlex Larsson + AlbumTable for 4 - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7159526 + Total Time184186 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-11-11T12:00:00Z + Artwork Count1 + Sort AlbumTable for 4 - EP + Sort ArtistLIVE FREE + Sort NameTillatilla + Persistent IDE5C411629816EE23 + Track TypeRemote + Apple Music + Playlist Only + + 7375 + + Track ID7375 + NameCruisin’ + ArtistEl Train + Album ArtistChillhop Music + ComposerLuke Nyeke + AlbumChillhop Essentials Fall 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5187858 + Total Time136879 + Disc Number1 + Disc Count1 + Track Number10 + Track Count30 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-12T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Fall 2023 + Sort ArtistEl Train + Sort NameCruisin’ + Persistent ID4B0EC8F493DF3B71 + Track TypeRemote + Apple Music + Playlist Only + + 7377 + + Track ID7377 + NameTulip + Artist.Eehou + Album Artist.Eehou + ComposerMars Saralinov + AlbumTulip - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5771716 + Total Time149442 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-25T12:00:00Z + Artwork Count1 + Sort AlbumTulip - Single + Sort Artist.Eehou + Sort NameTulip + Persistent ID666694C8F42F1D7F + Track TypeRemote + Apple Music + Playlist Only + + 7379 + + Track ID7379 + NameJafita + ArtistLIVE FREE + Album ArtistLIVE FREE + ComposerAlex Larsson + AlbumTable for 4 - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5664906 + Total Time153176 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-11-11T12:00:00Z + Artwork Count1 + Sort AlbumTable for 4 - EP + Sort ArtistLIVE FREE + Sort NameJafita + Persistent ID3A24C32640E7B9F0 + Track TypeRemote + Apple Music + Playlist Only + + 7381 + + Track ID7381 + NameRoxie's Diner + ArtistLIVE FREE + Album ArtistLIVE FREE + ComposerAlex Larsson + AlbumTable for 4 - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7210146 + Total Time181111 + Disc Number1 + Disc Count1 + Track Number4 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-11-11T12:00:00Z + Artwork Count1 + Sort AlbumTable for 4 - EP + Sort ArtistLIVE FREE + Sort NameRoxie's Diner + Persistent IDE0CE3521084AADE3 + Track TypeRemote + Apple Music + Playlist Only + + 7383 + + Track ID7383 + NameGolden + ArtistMelt On + Album ArtistMelt On + ComposerMelt On + AlbumGolden - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3861751 + Total Time99000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-28T12:00:00Z + Artwork Count1 + Sort AlbumGolden - Single + Sort ArtistMelt On + Sort NameGolden + Persistent ID3A5E4BC15793176F + Track TypeRemote + Apple Music + Playlist Only + + 7385 + + Track ID7385 + NameRooftop Coffee + ArtistYawnathan + Album ArtistYawnathan + ComposerJave Hughes + AlbumRooftop Coffee - Single + GenreElectronica + KindApple Music AAC audio file + Size5682452 + Total Time142975 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumRooftop Coffee - Single + Sort ArtistYawnathan + Sort NameRooftop Coffee + Persistent ID2D3AD971BDE45E7E + Track TypeRemote + Apple Music + Playlist Only + + 7387 + + Track ID7387 + NameNatalie + ArtistSean McVerry + Album ArtistSean McVerry + AlbumHourglass Switchboard 1 - EP + GenreAlternative + KindApple Music AAC audio file + Size7440028 + Total Time203853 + Disc Number1 + Disc Count1 + Track Number4 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-01-22T12:00:00Z + Disliked + Artwork Count1 + Sort AlbumHourglass Switchboard 1 - EP + Sort ArtistSean McVerry + Sort NameNatalie + Persistent ID9C6692F3468A5C13 + Track TypeRemote + Apple Music + Playlist Only + + 7389 + + Track ID7389 + NameGiving Up + ArtistThe Used + Album ArtistThe Used + ComposerRobert McCracken, Dan Whitesides, Jepha Howard, Joseph Bradford, John Feldmann & Rachel West + AlbumToxic Positivity + GenreAlternative + KindApple Music AAC audio file + Size6997445 + Total Time190222 + Disc Number1 + Disc Count1 + Track Number11 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-17T07:00:00Z + Artwork Count1 + Sort AlbumToxic Positivity + Sort Album ArtistUsed + Sort ArtistUsed + Sort NameGiving Up + Persistent IDF9955589DDC3736A + Track TypeRemote + Apple Music + Playlist Only + + 7393 + + Track ID7393 + NameWooden Eyes + ArtistLoyae & Astairé + Album ArtistVarious Artists + ComposerShearton Relyae Carter & Natty Reeves + AlbumLost Paradise + GenreHip-Hop + KindApple Music AAC audio file + Size4398771 + Total Time116616 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-27T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumLost Paradise + Sort ArtistLoyae & Astairé + Sort NameWooden Eyes + Persistent IDEC87E55212D3B8D3 + Track TypeRemote + Apple Music + Playlist Only + + 7395 + + Track ID7395 + NameSails + ArtistSleep Culture & The Tea Shop + Album ArtistSleep Culture & The Tea Shop + ComposerNoah Tauscher & Andre Bernier + AlbumSails - EP + GenreElectronic + KindApple Music AAC audio file + Size6788235 + Total Time167773 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-11-01T12:00:00Z + Artwork Count1 + Sort AlbumSails - EP + Sort ArtistSleep Culture & The Tea Shop + Sort NameSails + Persistent IDC4EC143ED6701B6C + Track TypeRemote + Apple Music + Playlist Only + + 7397 + + Track ID7397 + NameEntre Nous + ArtistSaib + Album ArtistVarious Artists + ComposerHamza Saib + AlbumLost Paradise + GenreHip-Hop + KindApple Music AAC audio file + Size6353616 + Total Time174000 + Disc Number1 + Disc Count1 + Track Number10 + Track Count12 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-27T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumLost Paradise + Sort ArtistSaib + Sort NameEntre Nous + Persistent ID04A90D716A3F07F7 + Track TypeRemote + Apple Music + Playlist Only + + 7399 + + Track ID7399 + NamePaper Machete + ArtistQueens of the Stone Age + Album ArtistQueens of the Stone Age + ComposerDean Fertita, Jon Theodore, Michael Shuman, Troy Van Leeuwen & Joshua Homme + AlbumIn Times New Roman... + GenreAlternative + KindApple Music AAC audio file + Size7471203 + Total Time202777 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-16T12:00:00Z + Artwork Count1 + Sort AlbumIn Times New Roman... + Sort ArtistQueens of the Stone Age + Sort NamePaper Machete + Persistent ID0D48F2E264F7EE84 + Track TypeRemote + Apple Music + Playlist Only + + 7401 + + Track ID7401 + NameSea Taxis + ArtistTohaj, Drips Zacheer & Cvsket Pretty + Album ArtistTohaj, Drips Zacheer & Cvsket Pretty + ComposerPavlos Zacharis, Théo Risacher & Seth Sheffler-Collins + AlbumSea taxis - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6569577 + Total Time175281 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-24T12:00:00Z + Artwork Count1 + Sort AlbumSea taxis - Single + Sort ArtistTohaj, Drips Zacheer & Cvsket Pretty + Sort NameSea Taxis + Persistent IDE51B5EA46BEF1E4A + Track TypeRemote + Apple Music + Playlist Only + + 7403 + + Track ID7403 + Nameviloh + ArtistPlusma & Miramare + Album ArtistPlusma & Miramare + ComposerViktor Theede & eliah turlon + Albumviloh - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5484576 + Total Time138051 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-14T12:00:00Z + Artwork Count1 + Sort Albumviloh - Single + Sort ArtistPlusma & Miramare + Sort Nameviloh + Persistent ID724801C965C53B7F + Track TypeRemote + Apple Music + Playlist Only + + 7407 + + Track ID7407 + NameSlow Days + ArtistTojié Cai + Album ArtistTojié Cai + ComposerPerfect Thandokuhle Zuma + AlbumSlow Days - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4994328 + Total Time127828 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumSlow Days - Single + Sort ArtistTojié Cai + Sort NameSlow Days + Persistent IDFA834D27CF475FDE + Track TypeRemote + Apple Music + Playlist Only + + 7409 + + Track ID7409 + NamePineta + ArtistKoralle + Album ArtistKoralle + ComposerLorenzo Nadalin + AlbumPineta - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5645841 + Total Time150723 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-19T12:00:00Z + Artwork Count1 + Sort AlbumPineta - Single + Sort ArtistKoralle + Sort NamePineta + Persistent IDFD3EEAE0F3E2D0B2 + Track TypeRemote + Apple Music + Playlist Only + + 7411 + + Track ID7411 + NameNew State of Mind + ArtistRebecca Mardal + Album ArtistRebecca Mardal + ComposerRebecca Mardal Engman + AlbumOld School Soul - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5642740 + Total Time152093 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-21T12:00:00Z + Artwork Count1 + Sort AlbumOld School Soul - Single + Sort ArtistRebecca Mardal + Sort NameNew State of Mind + Persistent IDB5B49ACB2F3BE4BD + Track TypeRemote + Apple Music + Playlist Only + + 7413 + + Track ID7413 + NameGood Days + ArtistKainbeats, Bcalm & rukachu + Album ArtistKainbeats + ComposerCallum Alexander Sykora, Matthew-Keane Q Wang & Roo Walker + AlbumSunshine Shores - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5161778 + Total Time138947 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-02T12:00:00Z + Artwork Count1 + Sort AlbumSunshine Shores - EP + Sort ArtistKainbeats, Bcalm & rukachu + Sort NameGood Days + Persistent ID3DA62A838AF6AD1E + Track TypeRemote + Apple Music + Playlist Only + + 7415 + + Track ID7415 + NameSunrise + ArtistAves + Album ArtistChillhop Music + ComposerDotan Bergman + AlbumChillhop Essentials Fall 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6461909 + Total Time157946 + Disc Number1 + Disc Count1 + Track Number14 + Track Count30 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-12T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Fall 2023 + Sort ArtistAves + Sort NameSunrise + Persistent IDFE0F2728FE187E30 + Track TypeRemote + Apple Music + Playlist Only + + 7417 + + Track ID7417 + NameBliss + ArtistParkbench Epiphany + Album ArtistChillhop Music + ComposerTheo Egginton + AlbumChillhop Essentials Fall 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4675720 + Total Time121971 + Disc Number1 + Disc Count1 + Track Number20 + Track Count30 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-12T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Fall 2023 + Sort ArtistParkbench Epiphany + Sort NameBliss + Persistent IDEA6E137CF709F572 + Track TypeRemote + Apple Music + Playlist Only + + 7419 + + Track ID7419 + NamePastries + ArtistMonma + Album ArtistChillhop Music + ComposerMarko Juhani Lehtilä + AlbumChillhop Essentials Fall 2023 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5349217 + Total Time145280 + Disc Number1 + Disc Count1 + Track Number17 + Track Count30 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-12T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumChillhop Essentials Fall 2023 + Sort ArtistMonma + Sort NamePastries + Persistent ID377920C9F9A4737A + Track TypeRemote + Apple Music + Playlist Only + + 7421 + + Track ID7421 + NameJade + ArtistØDYSSEE, DLJ & Bastien Brison + Album ArtistØDYSSEE, DLJ & Bastien Brison + ComposerLouis Le Clerc, Felix Schmidt & Bastien Brison + AlbumJade - Single + GenreInstrumental + KindApple Music AAC audio file + Size5961628 + Total Time161386 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-01T12:00:00Z + Artwork Count1 + Sort AlbumJade - Single + Sort ArtistØDYSSEE, DLJ & Bastien Brison + Sort NameJade + Persistent IDD2603E29687C33A7 + Track TypeRemote + Apple Music + Playlist Only + + 7423 + + Track ID7423 + NameTake it EZ + ArtistTell + Album ArtistTell + ComposerMilan Daudin + AlbumTake it EZ - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6737043 + Total Time192000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-21T12:00:00Z + Artwork Count1 + Sort AlbumTake it EZ - Single + Sort ArtistTell + Sort NameTake it EZ + Persistent IDF155E2B7D70D3728 + Track TypeRemote + Apple Music + Playlist Only + + 7425 + + Track ID7425 + NameFaux Gold + ArtistWebmoms & Horace Maurice + Album ArtistWebmoms & Horace Maurice + ComposerKarum Cooper + AlbumFaux Gold - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6048582 + Total Time166627 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-28T12:00:00Z + Artwork Count1 + Sort AlbumFaux Gold - Single + Sort ArtistWebmoms & Horace Maurice + Sort NameFaux Gold + Persistent ID90A1A34E3C3CAAC3 + Track TypeRemote + Apple Music + Playlist Only + + 7427 + + Track ID7427 + NameUnsteady + ArtistX Ambassadors + Album ArtistX Ambassadors + ComposerNoah Feldshuh, Casey Harris, Sam Harris, Alex Da Kid & Adam Levin + AlbumVHS 2.0 + GenreAlternative + KindApple Music AAC audio file + Size7043670 + Total Time193547 + Disc Number1 + Disc Count1 + Track Number2 + Track Count18 + Year2014 + Bit Rate256 + Sample Rate44100 + Release Date2014-02-25T12:00:00Z + Album Rating80 + Album Rating Computed + Artwork Count1 + Sort AlbumVHS 2.0 + Sort ArtistX Ambassadors + Sort NameUnsteady + Persistent IDAADC090D6145723B + Track TypeRemote + Apple Music + Playlist Only + + 7437 + + Track ID7437 + NamePork Soda + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size9198598 + Total Time253831 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-08-26T12:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NamePork Soda + Persistent ID1C44014769D1C031 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7439 + + Track ID7439 + NameMama's Gun + ArtistGlass Animals + Album ArtistGlass Animals + ComposerDave Bayley + AlbumHow to Be a Human Being + GenreAlternative + KindApple Music AAC audio file + Size9505056 + Total Time266747 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-08-26T12:00:00Z + Rating80 + Rating Computed + Album Rating80 + Artwork Count1 + Sort AlbumHow to Be a Human Being + Sort ArtistGlass Animals + Sort NameMama's Gun + Persistent IDBCF4D59954D61D30 + Track TypeRemote + Apple Music + Playlist Only + + 7443 + + Track ID7443 + NameSirius + ArtistONO1, whewee & Naos + Album ArtistONO1, whewee & Naos + ComposerDeniz Cengizler, George Brenner, Florian Mohr & Zeta Puppis + AlbumSirius - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4900605 + Total Time129882 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-15T12:00:00Z + Artwork Count1 + Sort AlbumSirius - Single + Sort ArtistONO1, whewee & Naos + Sort NameSirius + Persistent IDD2B84B1D5A652BD4 + Track TypeRemote + Apple Music + Playlist Only + + 7445 + + Track ID7445 + NameTBH + Artistspace cwby & Thomorrow + Album Artistspace cwby & Thomorrow + ComposerMatt Bullard & Ben Thomas + AlbumTBH / BLOOM - Single + GenreElectronic + KindApple Music AAC audio file + Size5833512 + Total Time160000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-01-20T08:00:00Z + Artwork Count1 + Sort AlbumTBH / BLOOM - Single + Sort Artistspace cwby & Thomorrow + Sort NameTBH + Persistent IDCEF90C7E3A9C7B10 + Track TypeRemote + Apple Music + Playlist Only + + 7447 + + Track ID7447 + NameTiny Dreams + Artistl'eupe & Yannkee + Album Artistl'eupe & Yannkee + ComposerPeter Leupold & Yannik Krämer + AlbumTiny Dreams - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4523046 + Total Time110250 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-07T12:00:00Z + Artwork Count1 + Sort AlbumTiny Dreams - Single + Sort Artistl'eupe & Yannkee + Sort NameTiny Dreams + Persistent IDCC21CB07003C3BCC + Track TypeRemote + Apple Music + Playlist Only + + 7449 + + Track ID7449 + NameEmergence (Instrumental) + ArtistQuazzy & Thomorrow + Album ArtistQuazzy + ComposerNicholas Herd + AlbumClear+Here + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5753828 + Total Time148193 + Disc Number2 + Disc Count2 + Track Number1 + Track Count5 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-06-08T12:00:00Z + Artwork Count1 + Sort AlbumClear+Here + Sort ArtistQuazzy & Thomorrow + Sort NameEmergence (Instrumental) + Persistent IDF5C7D87FFE91DFEB + Track TypeRemote + Apple Music + Playlist Only + + 7451 + + Track ID7451 + NameStarfall + Artist.Eehou + Album Artist.Eehou + Composer.Eehou + AlbumStarfall - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4818048 + Total Time126536 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-07T12:00:00Z + Artwork Count1 + Sort AlbumStarfall - Single + Sort Artist.Eehou + Sort NameStarfall + Persistent ID6A430D7C8FC7B04D + Track TypeRemote + Apple Music + Playlist Only + + 7453 + + Track ID7453 + NameGhost + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumYou Haunt Me + GenreAlternative + KindApple Music AAC audio file + Size8152238 + Total Time217765 + Disc Number1 + Disc Count1 + Track Number2 + Track Count12 + Year2014 + Bit Rate256 + Sample Rate44100 + Release Date2014-09-16T12:00:00Z + Artwork Count1 + Sort AlbumYou Haunt Me + Sort ArtistSir Sly + Sort NameGhost + Persistent ID99DA090B32BDDF1B + Track TypeRemote + Apple Music + Playlist Only + + 7455 + + Track ID7455 + NameJet Don't Lag + ArtistWebmoms & Horace Maurice + Album ArtistWebmoms & Horace Maurice + ComposerKarum Cooper + AlbumJet Don't Lag - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5060626 + Total Time136920 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-19T12:00:00Z + Artwork Count1 + Sort AlbumJet Don't Lag - Single + Sort ArtistWebmoms & Horace Maurice + Sort NameJet Don't Lag + Persistent IDA7A68FAA161BA169 + Track TypeRemote + Apple Music + Playlist Only + + 7457 + + Track ID7457 + NameCouch Surfing + ArtistNaptunes & Shuko + Album ArtistNaptunes & Shuko + ComposerRené Flächsenhaar, Shaan Chhadva & Christoph Bauss + AlbumCouch Surfing - Single + GenreElectronic + KindApple Music AAC audio file + Size5245023 + Total Time138591 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumCouch Surfing - Single + Sort ArtistNaptunes & Shuko + Sort NameCouch Surfing + Persistent IDA81B6B00DC41D9F9 + Track TypeRemote + Apple Music + Playlist Only + + 7461 + + Track ID7461 + NameDaybreak + ArtistKupla + Album ArtistKupla + ComposerLauri Achté + AlbumDaybreak - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5015163 + Total Time135288 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-30T12:00:00Z + Artwork Count1 + Sort AlbumDaybreak - Single + Sort ArtistKupla + Sort NameDaybreak + Persistent ID02165744717EBE91 + Track TypeRemote + Apple Music + Playlist Only + + 7463 + + Track ID7463 + NameMy Love Mine All Mine + ArtistMitski + Album ArtistMitski + ComposerMitski Miyawaki + AlbumThe Land Is Inhospitable and So Are We + GenreAlternative + KindApple Music AAC audio file + Size5037014 + Total Time137773 + Disc Number1 + Disc Count1 + Track Number7 + Track Count11 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-15T12:00:00Z + Artwork Count1 + Sort AlbumLand Is Inhospitable and So Are We + Sort ArtistMitski + Sort NameMy Love Mine All Mine + Persistent ID3EE8F2CC62F1C764 + Track TypeRemote + Apple Music + Playlist Only + + 7469 + + Track ID7469 + NameBroken Whiskey Glass + ArtistPost Malone + Album ArtistPost Malone + ComposerPost Malone, Rex Kudo, Trocon Markous Roberts, Jr. & Idan Kalai + AlbumStoney (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8366082 + Total Time233805 + Disc Number1 + Disc Count1 + Track Number1 + Track Count18 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-12-09T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumStoney (Deluxe) + Sort ArtistPost Malone + Sort NameBroken Whiskey Glass + Persistent IDFB3C3349424DB1AC + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7471 + + Track ID7471 + Namemogh + ArtistPlusma & Miramare + Album ArtistPlusma & Miramare + ComposerViktor Theede & eliah turlon + Albumpolytree + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5062544 + Total Time133994 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-18T12:00:00Z + Artwork Count1 + Sort Albumpolytree + Sort ArtistPlusma & Miramare + Sort Namemogh + Persistent IDF5A24CBF27A2D84D + Track TypeRemote + Apple Music + Playlist Only + + 7473 + + Track ID7473 + NameFound You Out + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumYou Haunt Me + GenreAlternative + KindApple Music AAC audio file + Size8017669 + Total Time217323 + Disc Number1 + Disc Count1 + Track Number5 + Track Count12 + Year2013 + Bit Rate256 + Sample Rate44100 + Release Date2013-01-01T12:00:00Z + Artwork Count1 + Sort AlbumYou Haunt Me + Sort ArtistSir Sly + Sort NameFound You Out + Persistent ID9E9999A2222784A8 + Track TypeRemote + Apple Music + Playlist Only + + 7475 + + Track ID7475 + NameBuenos Nachos + ArtistFrida Cowboy + Album ArtistFrida Cowboy + ComposerWilliam George Henderson & Jaiia Cerff + AlbumI'm Noisy! / Buenos Nachos - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4562283 + Total Time121867 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-26T12:00:00Z + Artwork Count1 + Sort AlbumI'm Noisy! / Buenos Nachos - Single + Sort ArtistFrida Cowboy + Sort NameBuenos Nachos + Persistent IDC73E50ACB91DEED5 + Track TypeRemote + Apple Music + Playlist Only + + 7477 + + Track ID7477 + NameFor a While + ArtistHouis + Album ArtistHouis + ComposerGabriel King Houis + AlbumOutgrown + GenreElectronic + KindApple Music AAC audio file + Size5218764 + Total Time140440 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-28T12:00:00Z + Artwork Count1 + Sort AlbumOutgrown + Sort ArtistHouis + Sort NameFor a While + Persistent IDC6B75CAC8057EF17 + Track TypeRemote + Apple Music + Playlist Only + + 7479 + + Track ID7479 + NameMidnight Green + ArtistHoffy Beats & MAS + Album ArtistHoffy Beats & MAS + ComposerThomas Etholm & Jonas Hoffmann Nedergaard + AlbumMidnight Green - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4310728 + Total Time112812 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumMidnight Green - Single + Sort ArtistHoffy Beats & MAS + Sort NameMidnight Green + Persistent ID13CDB44865A2793B + Track TypeRemote + Apple Music + Playlist Only + + 7481 + + Track ID7481 + Namemidnight express + Artistbby knife + Album Artistbby knife + Composerbby knife + Albummidnight express - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6112955 + Total Time166612 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-02T12:00:00Z + Artwork Count1 + Sort Albummidnight express - Single + Sort Artistbby knife + Sort Namemidnight express + Persistent ID20CACCE663FB704B + Track TypeRemote + Apple Music + Playlist Only + + 7483 + + Track ID7483 + Name2am in Kokrobite + ArtistBeach Boy Rad + Album ArtistBeach Boy Rad + ComposerDerick Fagbohun + Album2am in Kokrobite - Single + GenreElectronic + KindApple Music AAC audio file + Size3629214 + Total Time92400 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-07T12:00:00Z + Artwork Count1 + Sort Album2am in Kokrobite - Single + Sort ArtistBeach Boy Rad + Sort Name2am in Kokrobite + Persistent ID3D256B3BADD99094 + Track TypeRemote + Apple Music + Playlist Only + + 7485 + + Track ID7485 + NameHopscotch + ArtistEnluv & Molly McPhaul + Album ArtistEnluv & Molly McPhaul + ComposerClem Braden, Brandon Hartt, Molly McPhaul & Austin Yankunas + AlbumHopscotch - Single + GenreJazz + KindApple Music AAC audio file + Size7394583 + Total Time207273 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-16T12:00:00Z + Artwork Count1 + Sort AlbumHopscotch - Single + Sort ArtistEnluv & Molly McPhaul + Sort NameHopscotch + Persistent ID7D256D44FD147083 + Track TypeRemote + Apple Music + Playlist Only + + 7487 + + Track ID7487 + NameFumée De Vacances + ArtistInf & Oaty. + Album ArtistInf & Oaty. + ComposerBas te Braak & Angelo Emo + AlbumFumée De Vacances - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4929937 + Total Time128611 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumFumée De Vacances - Single + Sort ArtistInf & Oaty. + Sort NameFumée De Vacances + Persistent IDCD2672EA05356074 + Track TypeRemote + Apple Music + Playlist Only + + 7491 + + Track ID7491 + NameRush (feat. Jessie Reyez) + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi & Malay + AlbumRush (feat. Jessie Reyez) - Single + GenreAlternative + KindApple Music AAC audio file + Size7189340 + Total Time198351 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-02-23T12:00:00Z + Artwork Count1 + Sort AlbumRush (feat. Jessie Reyez) - Single + Sort ArtistLewis Capaldi + Sort NameRush (feat. Jessie Reyez) + Persistent IDB799BA1392A751A2 + Track TypeRemote + Apple Music + Playlist Only + + 7493 + + Track ID7493 + NameOcean/Sea + ArtistHalibab Matador + Album ArtistHalibab Matador + ComposerAlban Murenzi, Jérémy Dumont, Léa Kadian & Tim De Fontaine + AlbumSouvenirs + GenreR&B/Soul + KindApple Music AAC audio file + Size7937599 + Total Time219429 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-20T07:00:00Z + Artwork Count1 + Sort AlbumSouvenirs + Sort ArtistHalibab Matador + Sort NameOcean/Sea + Persistent IDE4B5C4E55A05530F + Track TypeRemote + Apple Music + Playlist Only + + 7495 + + Track ID7495 + NameOff My Mind + ArtistJoe P + Album ArtistJoe P + ComposerJoe Parella + AlbumEmily Can't Sing + GenreAlternative + KindApple Music AAC audio file + Size7668666 + Total Time213855 + Disc Number1 + Disc Count1 + Track Number5 + Track Count8 + Year2021 + Bit Rate256 + Sample Rate44100 + Release Date2021-05-12T12:00:00Z + Artwork Count1 + Sort AlbumEmily Can't Sing + Sort ArtistJoe P + Sort NameOff My Mind + Persistent IDC10F8343FBD53A2A + Track TypeRemote + Apple Music + Playlist Only + + 7497 + + Track ID7497 + NameAwe + ArtistVincent Rayn + Album ArtistVincent Rayn + ComposerJona Raischl & Hans Heusterberg + AlbumAwe - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4741022 + Total Time127375 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumAwe - Single + Sort ArtistVincent Rayn + Sort NameAwe + Persistent ID4EF7A00BEDED21B3 + Track TypeRemote + Apple Music + Playlist Only + + 7499 + + Track ID7499 + NameSkyline + ArtistHalibab Matador + Album ArtistHalibab Matador + ComposerAlban Murenzi, Tim De Fontaine & Jérémy Dumont + AlbumSouvenirs + GenreR&B/Soul + KindApple Music AAC audio file + Size9085070 + Total Time255180 + Disc Number1 + Disc Count1 + Track Number7 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-10T12:00:00Z + Artwork Count1 + Sort AlbumSouvenirs + Sort ArtistHalibab Matador + Sort NameSkyline + Persistent ID0D8F9DC239FE431C + Track TypeRemote + Apple Music + Playlist Only + + 7501 + + Track ID7501 + NameAged + ArtistOaty. & Soulful Cali + Album ArtistOaty. & Soulful Cali + ComposerAngelo Emo & Soulful Cali + AlbumAged - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4446860 + Total Time115200 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-28T12:00:00Z + Artwork Count1 + Sort AlbumAged - Single + Sort ArtistOaty. & Soulful Cali + Sort NameAged + Persistent IDE829A617B206388C + Track TypeRemote + Apple Music + Playlist Only + + 7503 + + Track ID7503 + NameRemember + ArtistHarry Hawaii + Album ArtistHarry Hawaii + ComposerHeiko Schenk + AlbumRemember - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4305053 + Total Time114500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-20T12:00:00Z + Artwork Count1 + Sort AlbumRemember - Single + Sort ArtistHarry Hawaii + Sort NameRemember + Persistent ID0E611C0872A09F42 + Track TypeRemote + Apple Music + Playlist Only + + 7505 + + Track ID7505 + NameYuma + ArtistJazzy James + Album ArtistJazzy James + ComposerJakob Gerhardt & Frederik Schlender + AlbumAzur - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5863053 + Total Time159474 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-11T12:00:00Z + Artwork Count1 + Sort AlbumAzur - EP + Sort ArtistJazzy James + Sort NameYuma + Persistent IDAC941C34961A2942 + Track TypeRemote + Apple Music + Playlist Only + + 7507 + + Track ID7507 + NameLili + ArtistHalibab Matador + Album ArtistHalibab Matador + ComposerAlban Murenzi, Léa Kadian, Stacy de Bruges & Tim De Fontaine + AlbumSouvenirs + GenreR&B/Soul + KindApple Music AAC audio file + Size8158996 + Total Time229161 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-20T07:00:00Z + Artwork Count1 + Sort AlbumSouvenirs + Sort ArtistHalibab Matador + Sort NameLili + Persistent ID7CD0EA65AAB56E50 + Track TypeRemote + Apple Music + Playlist Only + + 7509 + + Track ID7509 + NameUnknown Places + ArtistHATAMITSUNAMI + Album ArtistHATAMITSUNAMI + ComposerSIAMAK HATAMI + AlbumThe Original Wan - EP + GenreLounge + KindApple Music AAC audio file + Size5733505 + Total Time155551 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-19T12:00:00Z + Artwork Count1 + Sort AlbumOriginal Wan - EP + Sort ArtistHATAMITSUNAMI + Sort NameUnknown Places + Persistent ID84EA3709791DF301 + Track TypeRemote + Apple Music + Playlist Only + + 7515 + + Track ID7515 + NameFree Drinks + ArtistJazzy James & Mosalla + Album ArtistJazzy James & Mosalla + ComposerJakob Gerhardt & Florian Brühl + AlbumFree Drinks - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5309255 + Total Time133125 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-16T12:00:00Z + Artwork Count1 + Sort AlbumFree Drinks - Single + Sort ArtistJazzy James & Mosalla + Sort NameFree Drinks + Persistent IDF71F39F7E240540F + Track TypeRemote + Apple Music + Playlist Only + + 7517 + + Track ID7517 + NameLife Lived Dangerously + ArtistDaphné + Album ArtistDaphné + ComposerConor McCarthy + AlbumTragedy Critique - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5768202 + Total Time136622 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-24T12:00:00Z + Artwork Count1 + Sort AlbumTragedy Critique - EP + Sort ArtistDaphné + Sort NameLife Lived Dangerously + Persistent IDA32D18DA53E2011A + Track TypeRemote + Apple Music + Playlist Only + + 7519 + + Track ID7519 + NameDusty + ArtistDamn Homies + Album ArtistDamn Homies + ComposerAlexander Saenda Lück + AlbumLook - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5283261 + Total Time145116 + Disc Number1 + Disc Count1 + Track Number5 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-08T12:00:00Z + Artwork Count1 + Sort AlbumLook - EP + Sort ArtistDamn Homies + Sort NameDusty + Persistent IDB0C0606C606B0551 + Track TypeRemote + Apple Music + Playlist Only + + 7521 + + Track ID7521 + NameLose It + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size8100244 + Total Time229935 + Disc Number1 + Disc Count1 + Track Number5 + Track Count15 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-02-01T12:00:00Z + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameLose It + Persistent ID784F5FEC5A4F0392 + Track TypeRemote + Apple Music + Playlist Only + + 7525 + + Track ID7525 + NameCheers + Artistxander. + Album Artistxander. + ComposerAlex Papamitrou + AlbumCheers - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6803770 + Total Time187013 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-05-01T12:00:00Z + Artwork Count1 + Sort AlbumCheers - Single + Sort Artistxander. + Sort NameCheers + Persistent ID037CD643647D988E + Track TypeRemote + Apple Music + Playlist Only + + 7527 + + Track ID7527 + NameLost in Soho + ArtistKeliris + Album ArtistKeliris + ComposerNicholas Keliris + AlbumLost in Soho - Single + GenreElectronic + KindApple Music AAC audio file + Size5582282 + Total Time147000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-09T12:00:00Z + Artwork Count1 + Sort AlbumLost in Soho - Single + Sort ArtistKeliris + Sort NameLost in Soho + Persistent ID05441F176191EA5F + Track TypeRemote + Apple Music + Playlist Only + + 7531 + + Track ID7531 + NameLightways + Artistxander. & Søren Søstrom + Album Artistxander. & Søren Søstrom + ComposerAlex Papamitrou & Elijah Fox-Peck + AlbumLightways - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6137283 + Total Time167711 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-13T12:00:00Z + Artwork Count1 + Sort AlbumLightways - Single + Sort Artistxander. & Søren Søstrom + Sort NameLightways + Persistent ID6D922437B9BC5211 + Track TypeRemote + Apple Music + Playlist Only + + 7533 + + Track ID7533 + NameAll We Do + ArtistOh Wonder + Album ArtistOh Wonder + ComposerJosephine Vander Gucht & Anthony West + AlbumOh Wonder + GenreAlternative + KindApple Music AAC audio file + Size7464516 + Total Time214174 + Disc Number1 + Disc Count1 + Track Number11 + Track Count15 + Year2014 + Bit Rate256 + Sample Rate44100 + Release Date2014-12-01T12:00:00Z + Artwork Count1 + Sort AlbumOh Wonder + Sort ArtistOh Wonder + Sort NameAll We Do + Persistent ID756047E2FB40A1A0 + Track TypeRemote + Apple Music + Playlist Only + + 7537 + + Track ID7537 + NameSlow Steps + ArtistDrips Zacheer + Album ArtistDrips Zacheer + ComposerPavlos Zacharis + AlbumSlow Steps - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5431129 + Total Time138462 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-22T12:00:00Z + Artwork Count1 + Sort AlbumSlow Steps - Single + Sort ArtistDrips Zacheer + Sort NameSlow Steps + Persistent ID94E64EF2060DA56E + Track TypeRemote + Apple Music + Playlist Only + + 7539 + + Track ID7539 + NameMeaningless Television (Thomorrow Remix) + Artist90s Child Actor + Album Artist90s Child Actor + ComposerTim Granbacka + AlbumMeaningless Television - Single + GenreElectronic + KindApple Music AAC audio file + Size5943024 + Total Time148885 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-23T12:00:00Z + Artwork Count1 + Sort AlbumMeaningless Television - Single + Sort Artist90s Child Actor + Sort NameMeaningless Television (Thomorrow Remix) + Persistent IDFE3E649850F82BD9 + Track TypeRemote + Apple Music + Playlist Only + + 7541 + + Track ID7541 + NameWestward + ArtistEnluv, azayaka & Noé Mina + Album ArtistEnluv, azayaka & Noé Mina + ComposerBrandon Hartt, Jacob Henry Feingold & Noé Mina + AlbumWestward - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6805262 + Total Time187500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-21T12:00:00Z + Artwork Count1 + Sort AlbumWestward - Single + Sort ArtistEnluv, azayaka & Noé Mina + Sort NameWestward + Persistent ID09BDCA808F703A2B + Track TypeRemote + Apple Music + Playlist Only + + 7543 + + Track ID7543 + NameXIN + ArtistYIIN + Album ArtistYIIN + ComposerEugene Ugorski + AlbumDAO - EP + GenreElectronic + KindApple Music AAC audio file + Size5315935 + Total Time144000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-01T12:00:00Z + Artwork Count1 + Sort AlbumDAO - EP + Sort ArtistYIIN + Sort NameXIN + Persistent ID6D81000EC7AB6513 + Track TypeRemote + Apple Music + Playlist Only + + 7545 + + Track ID7545 + NameSwim + ArtistJoe Arrow + Album ArtistJoe Arrow + ComposerJoe Arrow + AlbumSwim - Single + GenreElectronic + KindApple Music AAC audio file + Size5385887 + Total Time145235 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-10T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumSwim - Single + Sort ArtistJoe Arrow + Sort NameSwim + Persistent IDD38ECDFF8604B032 + Track TypeRemote + Apple Music + Playlist Only + + 7547 + + Track ID7547 + NameSummer + ArtistYinoluu + Album ArtistYinoluu + ComposerYinoluwa Olowofoyeku + AlbumNostalgic + GenreElectronic + KindApple Music AAC audio file + Size6592870 + Total Time184403 + Disc Number1 + Disc Count1 + Track Number7 + Track Count18 + Year2021 + Bit Rate256 + Sample Rate44100 + Release Date2021-12-03T12:00:00Z + Artwork Count1 + Sort AlbumNostalgic + Sort ArtistYinoluu + Sort NameSummer + Persistent IDDBFF7961B90DA272 + Track TypeRemote + Apple Music + Playlist Only + + 7549 + + Track ID7549 + Namecoastline + Artistnight light + Album Artistnight light + Composernight light + Albumcoastline - EP + GenreElectronic + KindApple Music AAC audio file + Size4883420 + Total Time128000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-06-17T12:00:00Z + Artwork Count1 + Sort Albumcoastline - EP + Sort Artistnight light + Sort Namecoastline + Persistent ID8779679231DCEB5F + Track TypeRemote + Apple Music + Playlist Only + + 7551 + + Track ID7551 + NamePangaea + ArtistThomorrow & Terrestrial Paradise + Album ArtistThomorrow & Terrestrial Paradise + ComposerBen Thomas + AlbumPangaea - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4909801 + Total Time117000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-20T12:00:00Z + Artwork Count1 + Sort AlbumPangaea - Single + Sort ArtistThomorrow & Terrestrial Paradise + Sort NamePangaea + Persistent ID706EE9C65D1DDFA8 + Track TypeRemote + Apple Music + Playlist Only + + 7555 + + Track ID7555 + NameIsipikili + ArtistTojié Cai + Album ArtistTojié Cai + ComposerPerfect Thandokuhle Zuma + AlbumSigns of Life - EP + GenreElectronic + KindApple Music AAC audio file + Size5267795 + Total Time139516 + Disc Number1 + Disc Count1 + Track Number2 + Track Count5 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-07-15T12:00:00Z + Artwork Count1 + Sort AlbumSigns of Life - EP + Sort ArtistTojié Cai + Sort NameIsipikili + Persistent IDD05851E3184FE188 + Track TypeRemote + Apple Music + Playlist Only + + 7557 + + Track ID7557 + NameUrban Serenade + ArtistUli Tiro + Album ArtistUli Tiro + ComposerUli Tiro + AlbumUrban Serenade - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4428285 + Total Time115897 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumUrban Serenade - Single + Sort ArtistUli Tiro + Sort NameUrban Serenade + Persistent ID29B01F2D912B35FA + Track TypeRemote + Apple Music + Playlist Only + + 7559 + + Track ID7559 + NameFeels Like + ArtistHouis + Album ArtistHouis + ComposerGabriel King Houis + AlbumFeels Like - Single + GenreElectronic + KindApple Music AAC audio file + Size6467434 + Total Time176679 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-14T12:00:00Z + Artwork Count1 + Sort AlbumFeels Like - Single + Sort ArtistHouis + Sort NameFeels Like + Persistent IDCC06CD4DBB526646 + Track TypeRemote + Apple Music + Playlist Only + + 7565 + + Track ID7565 + NameActivated (feat. miamore) + ArtistTom Doolie, Molly McPhaul & Lazlow + Album ArtistTom Doolie + ComposerMolly McPhaul, Thomas Huber, Mia Garcia & Adam Laszlo + AlbumOnly Poem + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4388776 + Total Time114419 + Disc Number1 + Disc Count1 + Track Number13 + Track Count16 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumOnly Poem + Sort ArtistTom Doolie, Molly McPhaul & Lazlow + Sort NameActivated (feat. miamore) + Persistent IDD6295E359B0C8560 + Track TypeRemote + Apple Music + Playlist Only + + 7569 + + Track ID7569 + NameRays + Artistastra division + Album Artistastra division + ComposerCurtis Dean & astra division + AlbumRays - Single + GenreElectronic + KindApple Music AAC audio file + Size4453878 + Total Time118438 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-17T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumRays - Single + Sort Artistastra division + Sort NameRays + Persistent ID01DB5680A9E994B2 + Track TypeRemote + Apple Music + Playlist Only + + 7571 + + Track ID7571 + NameTrident + ArtistJust Steezy Things + Album ArtistJust Steezy Things + ComposerRyan Spellman + AlbumThe Night Ride + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5404526 + Total Time147626 + Disc Number1 + Disc Count1 + Track Number4 + Track Count7 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-27T12:00:00Z + Artwork Count1 + Sort AlbumNight Ride + Sort ArtistJust Steezy Things + Sort NameTrident + Persistent IDCBBFB2D55613365B + Track TypeRemote + Apple Music + Playlist Only + + 7573 + + Track ID7573 + NameTelling Stories + ArtistMindscape + Album ArtistMindscape + ComposerMichael Reinhardt + AlbumTelling Stories - Single + GenreHip-Hop + KindApple Music AAC audio file + Size5321130 + Total Time144534 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-09-22T12:00:00Z + Artwork Count1 + Sort AlbumTelling Stories - Single + Sort ArtistMindscape + Sort NameTelling Stories + Persistent ID705B01347DA1201A + Track TypeRemote + Apple Music + Playlist Only + + 7575 + + Track ID7575 + NameHold Me While You Wait + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi, Jamie Hartman & Jamie N Commons + AlbumDivinely Uninspired To A Hellish Extent + GenreAlternative + KindApple Music AAC audio file + Size7300138 + Total Time205687 + Disc Number1 + Disc Count1 + Track Number3 + Track Count12 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-05-03T07:00:00Z + Artwork Count1 + Sort AlbumDivinely Uninspired To A Hellish Extent + Sort ArtistLewis Capaldi + Sort NameHold Me While You Wait + Persistent ID5FF75164C2F86064 + Track TypeRemote + Apple Music + Playlist Only + + 7577 + + Track ID7577 + NameSomeone You Loved + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi, Sam Roman, Benjamin Kohn, Peter Kelleher & Tom Barnes + AlbumDivinely Uninspired To A Hellish Extent + GenreAlternative + KindApple Music AAC audio file + Size6591321 + Total Time182161 + Disc Number1 + Disc Count1 + Track Number4 + Track Count12 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-11-08T08:00:00Z + Artwork Count1 + Sort AlbumDivinely Uninspired To A Hellish Extent + Sort ArtistLewis Capaldi + Sort NameSomeone You Loved + Persistent ID70C4F614628146D3 + Track TypeRemote + Apple Music + Playlist Only + + 7581 + + Track ID7581 + NameIsn't Easy + ArtistYeyts. & Smuff Tha Quiz + Album ArtistSmuff Tha Quiz & Yeyts. + ComposerIgor Molchanov & Bohdan Butkaliuk + AlbumSideshow - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4815086 + Total Time129655 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-07T12:00:00Z + Artwork Count1 + Sort AlbumSideshow - EP + Sort ArtistYeyts. & Smuff Tha Quiz + Sort NameIsn't Easy + Persistent ID8E25D26706AEB5B7 + Track TypeRemote + Apple Music + Playlist Only + + 7585 + + Track ID7585 + Nameachoo + ArtistPistachio + Album ArtistPistachio + ComposerJacob Attwooll + Albumachoo - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5165175 + Total Time130208 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-09-07T12:00:00Z + Artwork Count1 + Sort Albumachoo - Single + Sort ArtistPistachio + Sort Nameachoo + Persistent ID84EE020D29623F8B + Track TypeRemote + Apple Music + Playlist Only + + 7589 + + Track ID7589 + NameGentlemen + ArtistFelt Galaxy + Album ArtistFelt Galaxy + ComposerFelt Galaxy + AlbumGentlemen - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6054144 + Total Time165714 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-03T12:00:00Z + Artwork Count1 + Sort AlbumGentlemen - Single + Sort ArtistFelt Galaxy + Sort NameGentlemen + Persistent IDC3CFC0D857D7CEF6 + Track TypeRemote + Apple Music + Playlist Only + + 7593 + + Track ID7593 + NameDreams + ArtistLil Wayne + Album ArtistLil Wayne + ComposerDwayne Carter, Alexander Joseph Delicata, Timothy Sommers, Aaron Zuckerman, Ben Burgess & Jeremy Dussolliett + AlbumFuneral (Deluxe) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8154563 + Total Time227680 + Disc Number2 + Disc Count2 + Track Number5 + Track Count24 + Year2020 + Bit Rate256 + Sample Rate44100 + Release Date2020-01-31T08:00:00Z + Artwork Count1 + Sort AlbumFuneral (Deluxe) + Sort ArtistLil Wayne + Sort NameDreams + Persistent IDFA3277E14EEF4A77 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7599 + + Track ID7599 + NameWhispers of the Shore + ArtistMama Aiuto & Dan Gregory + Album ArtistMama Aiuto & Dan Gregory + ComposerDan Gregory & Benjamin McCarthy + AlbumWhispers of the Shore - Single + GenreElectronic + KindApple Music AAC audio file + Size5610724 + Total Time158210 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-03-25T12:00:00Z + Artwork Count1 + Sort AlbumWhispers of the Shore - Single + Sort ArtistMama Aiuto & Dan Gregory + Sort NameWhispers of the Shore + Persistent ID4236854E1B478EF9 + Track TypeRemote + Apple Music + Playlist Only + + 7601 + + Track ID7601 + NameOff Duty + ArtistBlue Wednesday + Album ArtistBlue Wednesday + ComposerGustav Joseph + AlbumOff Duty - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5565996 + Total Time151331 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-07T12:00:00Z + Artwork Count1 + Sort AlbumOff Duty - Single + Sort ArtistBlue Wednesday + Sort NameOff Duty + Persistent IDBE30F6ACB0834C48 + Track TypeRemote + Apple Music + Playlist Only + + 7603 + + Track ID7603 + NameClearing + ArtistRed Licorice & inola + Album ArtistRed Licorice & inola + ComposerJudah Earl & Jared Logan + AlbumSpace Between - EP + GenreAmbient + KindApple Music AAC audio file + Size5761870 + Total Time157166 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-04-06T12:00:00Z + Artwork Count1 + Sort AlbumSpace Between - EP + Sort ArtistRed Licorice & inola + Sort NameClearing + Persistent ID1219C69AFF1BDA17 + Track TypeRemote + Apple Music + Playlist Only + + 7607 + + Track ID7607 + NameKhushi + ArtistNatasha Ghosh & Angry Apple + Album ArtistNatasha Ghosh + ComposerNatasha Ghosh & Angry Apple + AlbumYaatra - EP + GenreLounge + KindApple Music AAC audio file + Size5226399 + Total Time141852 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-07-21T12:00:00Z + Artwork Count1 + Sort AlbumYaatra - EP + Sort ArtistNatasha Ghosh & Angry Apple + Sort NameKhushi + Persistent IDF8F4E43A27679577 + Track TypeRemote + Apple Music + Playlist Only + + 7619 + + Track ID7619 + Name&Run + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size8312397 + Total Time226587 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-06-30T12:00:00Z + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort Name&Run + Persistent IDD7EA7E6A2F90B88C + Track TypeRemote + Apple Music + Playlist Only + + 7621 + + Track ID7621 + NameDon't Cry (feat. XXXTENTACION) + ArtistLil Wayne + Album ArtistLil Wayne + ComposerLil Wayne, XXXTENTACION, Eugene Karavasilidis, Ben Diehl & Gamal "LunchMoney" Lewis + AlbumTha Carter V + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8759770 + Total Time249450 + Disc Number1 + Disc Count1 + Track Number2 + Track Count23 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-09-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumTha Carter V + Sort ArtistLil Wayne + Sort NameDon't Cry (feat. XXXTENTACION) + Persistent IDF13BD9FAEABF1E72 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 7623 + + Track ID7623 + NameAltar + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito, Hayden Coplen & Peter Yorke + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size7871039 + Total Time221649 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-06-02T12:00:00Z + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort NameAltar + Persistent ID3454599BA8790605 + Track TypeRemote + Apple Music + Playlist Only + + 7625 + + Track ID7625 + NameBackyard Memories + ArtistakoYuno + Album ArtistakoYuno + ComposerLukas Großmann & Daniel Treimer + AlbumBackyard Memories - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4377852 + Total Time112308 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-08-11T12:00:00Z + Artwork Count1 + Sort AlbumBackyard Memories - Single + Sort ArtistakoYuno + Sort NameBackyard Memories + Persistent ID329F2D7C2C295CD5 + Track TypeRemote + Apple Music + Playlist Only + + 7627 + + Track ID7627 + NameAstronaut + ArtistSir Sly + Album ArtistSir Sly + ComposerLandon Jacobs, Jason Suwito & Hayden Coplen + AlbumDon't You Worry, Honey + GenreAlternative + KindApple Music AAC audio file + Size7971998 + Total Time224382 + Disc Number1 + Disc Count1 + Track Number6 + Track Count10 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-01-16T12:00:00Z + Artwork Count1 + Sort AlbumDon't You Worry, Honey + Sort ArtistSir Sly + Sort NameAstronaut + Persistent ID53395B308E715741 + Track TypeRemote + Apple Music + Playlist Only + + 7629 + + Track ID7629 + NameSubtle + Artistwielandwieland + Album Artistwielandwieland + ComposerFranz-Wieland Filtz + AlbumSubtle - Single + GenreHip-Hop + KindApple Music AAC audio file + Size5988732 + Total Time164389 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-04-27T12:00:00Z + Artwork Count1 + Sort AlbumSubtle - Single + Sort Artistwielandwieland + Sort NameSubtle + Persistent ID94C5BDF8F13BDA12 + Track TypeRemote + Apple Music + Playlist Only + + 7631 + + Track ID7631 + NameAin't Life Sweet + ArtistHewie Lou + Album ArtistHewie Lou + ComposerJay Hewko + AlbumMid90s + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4500072 + Total Time120245 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-23T12:00:00Z + Artwork Count1 + Sort AlbumMid90s + Sort ArtistHewie Lou + Sort NameAin't Life Sweet + Persistent ID5E03BDDC5CFA35AB + Track TypeRemote + Apple Music + Playlist Only + + 7633 + + Track ID7633 + NameDepartures + ArtistMama Aiuto & Dan Gregory + Album ArtistMama Aiuto & Dan Gregory + ComposerDan Gregory & Benjamin McCarthy + AlbumHoliday Music (Deluxe) - EP + GenreElectronic + KindApple Music AAC audio file + Size5043523 + Total Time135659 + Disc Number1 + Disc Count1 + Track Number6 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-06-21T12:00:00Z + Artwork Count1 + Sort AlbumHoliday Music (Deluxe) - EP + Sort ArtistMama Aiuto & Dan Gregory + Sort NameDepartures + Persistent ID5617761BEDC08209 + Track TypeRemote + Apple Music + Playlist Only + + 17744 + + Track ID17744 + NameBad Business + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph & Joshua Luellen + AlbumIssa Album + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5846915 + Total Time162253 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2017 + Date Modified2023-11-02T13:49:54Z + Date Added2023-11-02T13:49:54Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3783598157 + Play Date UTC2023-11-23T12:29:17Z + Release Date2017-07-07T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumIssa Album + Sort Artist21 Savage + Sort NameBad Business + Persistent ID65B0270B7D0E5BAA + Explicit + Track TypeRemote + Apple Music + + 17749 + + Track ID17749 + NameNumb + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph & Leland Wayne + AlbumIssa Album + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size9379499 + Total Time271307 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2017 + Date Modified2023-11-03T06:30:07Z + Date Added2023-11-03T06:30:07Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3783597995 + Play Date UTC2023-11-23T12:26:35Z + Release Date2017-07-07T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumIssa Album + Sort Artist21 Savage + Sort NameNumb + Persistent ID5426253C9C975915 + Explicit + Track TypeRemote + Apple Music + + 17754 + + Track ID17754 + NameSpecial + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph & Wesley Glass + AlbumIssa Album + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7649641 + Total Time217867 + Disc Number1 + Disc Count1 + Track Number12 + Track Count14 + Year2017 + Date Modified2023-11-03T06:42:04Z + Date Added2023-11-03T06:42:04Z + Bit Rate256 + Sample Rate44100 + Play Count19 + Play Date3783754499 + Play Date UTC2023-11-25T07:54:59Z + Skip Count1 + Skip Date2023-11-05T03:15:38Z + Release Date2017-07-07T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumIssa Album + Sort Artist21 Savage + Sort NameSpecial + Persistent IDD3E0D753D7C06827 + Explicit + Track TypeRemote + Apple Music + + 17759 + + Track ID17759 + Name7 Min Freestyle + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph & Leland Wayne + AlbumIssa Album + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size14777273 + Total Time431587 + Disc Number1 + Disc Count1 + Track Number14 + Track Count14 + Year2017 + Date Modified2023-11-03T06:58:05Z + Date Added2023-11-03T06:58:05Z + Bit Rate256 + Sample Rate44100 + Play Count15 + Play Date3783777248 + Play Date UTC2023-11-25T14:14:08Z + Release Date2017-07-07T12:00:00Z + Album Rating100 + Album Rating Computed + Loved + Artwork Count1 + Sort AlbumIssa Album + Sort Artist21 Savage + Sort Name7 Min Freestyle + Persistent ID06E966482A8F0E57 + Explicit + Track TypeRemote + Apple Music + + 17764 + + Track ID17764 + NameNo Flockin + ArtistKodak Black + Album ArtistKodak Black + ComposerKodak Black & Pan Rui Wen + AlbumNo Flockin - Single + GenreHip-Hop + KindApple Music AAC audio file + Size6115003 + Total Time165291 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2014 + Date Modified2023-11-03T08:43:18Z + Date Added2023-11-03T08:43:18Z + Bit Rate256 + Sample Rate44100 + Play Count14 + Play Date3783332384 + Play Date UTC2023-11-20T10:39:44Z + Skip Count1 + Skip Date2023-11-24T19:44:27Z + Release Date2014-07-25T07:00:00Z + Artwork Count1 + Sort AlbumNo Flockin - Single + Sort ArtistKodak Black + Sort NameNo Flockin + Persistent ID4B56EAF2A7733A4F + Explicit + Track TypeRemote + Apple Music + + 17770 + + Track ID17770 + NameFrühling in Paris + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size9065328 + Total Time248853 + Disc Number1 + Disc Count1 + Track Number1 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3783097416 + Play Date UTC2023-11-17T17:23:36Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameFrühling in Paris + Persistent ID5E60B12C79621F7D + Track TypeRemote + Apple Music + + 17776 + + Track ID17776 + NameFeuer und Wasser + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size8509700 + Total Time232893 + Disc Number1 + Disc Count1 + Track Number2 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3783097649 + Play Date UTC2023-11-17T17:27:29Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameFeuer und Wasser + Persistent ID7440B58FAFB526D3 + Track TypeRemote + Apple Music + + 17781 + + Track ID17781 + NameNebel + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size10147897 + Total Time274253 + Disc Number1 + Disc Count1 + Track Number3 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count9 + Play Date3783097924 + Play Date UTC2023-11-17T17:32:04Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameNebel + Persistent ID019A042C61706626 + Track TypeRemote + Apple Music + + 17786 + + Track ID17786 + NameSonne + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size8507884 + Total Time233120 + Disc Number1 + Disc Count1 + Track Number4 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count7 + Play Date3783694580 + Play Date UTC2023-11-24T15:16:20Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameSonne + Persistent ID5ABAEA8E0200FF77 + Track TypeRemote + Apple Music + + 17791 + + Track ID17791 + NameKlavier + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size9015970 + Total Time243453 + Disc Number1 + Disc Count1 + Track Number5 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783098403 + Play Date UTC2023-11-17T17:40:03Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameKlavier + Persistent ID130AADF1E5C9F4F4 + Track TypeRemote + Apple Music + + 17796 + + Track ID17796 + NameWilder Wein + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size7961805 + Total Time211333 + Disc Number1 + Disc Count1 + Track Number6 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count5 + Play Date3783098614 + Play Date UTC2023-11-17T17:43:34Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameWilder Wein + Persistent ID9395361C85E1CF87 + Track TypeRemote + Apple Music + + 17801 + + Track ID17801 + NameOhne dich + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size9580175 + Total Time270933 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783098885 + Play Date UTC2023-11-17T17:48:05Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameOhne dich + Persistent ID58775F5FFF2D185E + Track TypeRemote + Apple Music + + 17806 + + Track ID17806 + NameEin Lied + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size8244020 + Total Time221333 + Disc Number1 + Disc Count1 + Track Number8 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783099106 + Play Date UTC2023-11-17T17:51:46Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameEin Lied + Persistent ID4AC582429601E3ED + Track TypeRemote + Apple Music + + 17811 + + Track ID17811 + NameRoter Sand + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size7198461 + Total Time196107 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783099303 + Play Date UTC2023-11-17T17:55:03Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameRoter Sand + Persistent ID4FF79522C8B02D16 + Track TypeRemote + Apple Music + + 17816 + + Track ID17816 + NameEngel + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size9199571 + Total Time256107 + Disc Number1 + Disc Count1 + Track Number10 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783099559 + Play Date UTC2023-11-17T17:59:19Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameEngel + Persistent ID578074E40AE6E2CC + Track TypeRemote + Apple Music + + 17821 + + Track ID17821 + NameSeemann + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size9672477 + Total Time275027 + Disc Number1 + Disc Count1 + Track Number11 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count4 + Play Date3783715017 + Play Date UTC2023-11-24T20:56:57Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameSeemann + Persistent IDCC9201194ADA8FB2 + Track TypeRemote + Apple Music + + 17826 + + Track ID17826 + NameDonaukinder + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size8496087 + Total Time233893 + Disc Number1 + Disc Count1 + Track Number12 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783100068 + Play Date UTC2023-11-17T18:07:48Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameDonaukinder + Persistent IDE27C225E142252DC + Track TypeRemote + Apple Music + + 17831 + + Track ID17831 + NameMein Herz brennt + ArtistRammstein + Album ArtistRammstein + ComposerDoktor Christian Lorenz, Richard Z. Kruspe, Paul Landers, Till Lindemann, Oliver Riedel & Christoph Doom Schneider + AlbumXXI - Klavier + GenreMetal + KindApple Music AAC audio file + Size9418456 + Total Time271907 + Disc Number1 + Disc Count1 + Track Number13 + Track Count13 + Year2015 + Date Modified2023-11-06T11:46:48Z + Date Added2023-11-06T11:46:48Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783100340 + Play Date UTC2023-11-17T18:12:20Z + Release Date2015-12-18T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumXXI - Klavier + Sort ArtistRammstein + Sort NameMein Herz brennt + Persistent ID70AD39DABF3EA1BC + Track TypeRemote + Apple Music + + 17836 + + Track ID17836 + NameOhne dich + ArtistRammstein + GenreHeavy Metal + KindMPEG-4 video file + Size76911784 + Total Time340480 + Year2004 + Date Modified2023-11-06T11:57:38Z + Date Added2023-11-06T11:57:38Z + Bit Rate256 + Sample Rate44100 + Play Count2 + Play Date3782379945 + Play Date UTC2023-11-09T10:05:45Z + Release Date2004-11-22T08:00:00Z + Artwork Count1 + Sort ArtistRammstein + Sort NameOhne dich + Persistent IDE20A5EAEF06D789A + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 17841 + + Track ID17841 + NameSeemann + ArtistRammstein + GenreHeavy Metal + KindMPEG-4 video file + Size57905828 + Total Time256360 + Year1996 + Date Modified2023-11-06T12:03:44Z + Date Added2023-11-06T12:03:44Z + Bit Rate256 + Sample Rate44100 + Play Count1 + Play Date3782127924 + Play Date UTC2023-11-06T12:05:24Z + Release Date1996-01-08T08:00:00Z + Artwork Count1 + Sort ArtistRammstein + Sort NameSeemann + Persistent ID6E1D0F2A50C22D70 + Track TypeRemote + Apple Music + Has Video + HD + Music Video + + 17846 + + Track ID17846 + NameMutter + ArtistRammstein + Album ArtistRammstein + ComposerTill Lindemann, Paul Landers, Doktor Christian Lorenz, Christoph Doom Schneider, Oliver Riedel & Richard Z. Kruspe + AlbumMutter + GenreMetal + KindApple Music AAC audio file + Size9686115 + Total Time268600 + Disc Number1 + Disc Count1 + Track Number6 + Track Count11 + Year2001 + Date Modified2023-11-09T10:57:34Z + Date Added2023-11-09T10:57:34Z + Bit Rate256 + Sample Rate44100 + Play Count11 + Play Date3783097167 + Play Date UTC2023-11-17T17:19:27Z + Release Date2001-04-02T12:00:00Z + Artwork Count1 + Sort AlbumMutter + Sort ArtistRammstein + Sort NameMutter + Persistent IDE72FC1635CD8CED0 + Track TypeRemote + Apple Music + + 17851 + + Track ID17851 + NameFeuer frei + ArtistRammstein + Album ArtistRammstein + ComposerTill Lindemann, Paul Landers, Doktor Christian Lorenz, Christoph Doom Schneider, Oliver Riedel & Richard Z. Kruspe + AlbumMutter + GenreMetal + KindApple Music AAC audio file + Size7277373 + Total Time188600 + Disc Number1 + Disc Count1 + Track Number5 + Track Count11 + Year2001 + Date Modified2023-11-09T10:57:37Z + Date Added2023-11-09T10:57:37Z + Bit Rate256 + Sample Rate44100 + Play Count8 + Play Date3783096899 + Play Date UTC2023-11-17T17:14:59Z + Release Date2001-04-02T12:00:00Z + Artwork Count1 + Sort AlbumMutter + Sort ArtistRammstein + Sort NameFeuer frei + Persistent ID14F220BDC897869E + Track TypeRemote + Apple Music + + 17856 + + Track ID17856 + NameEngel + ArtistRammstein + Album ArtistRammstein + ComposerRichard Z. Kruspe, Till Lindemann, Paul Landers, Doktor Christian Lorenz, Christoph Doom Schneider & Oliver Riedel + AlbumSehnsucht + GenreMetal + KindApple Music AAC audio file + Size9990362 + Total Time264267 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year1997 + Date Modified2023-11-09T11:38:44Z + Date Added2023-11-09T11:38:44Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3783714358 + Play Date UTC2023-11-24T20:45:58Z + Release Date1997-04-01T12:00:00Z + Artwork Count1 + Sort AlbumSehnsucht + Sort ArtistRammstein + Sort NameEngel + Persistent ID176A2BC8166341CE + Track TypeRemote + Apple Music + + 17862 + + Track ID17862 + NameRosenrot + ArtistRammstein + Album ArtistRammstein + ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel + AlbumRosenrot + GenreMetal + KindApple Music AAC audio file + Size8432959 + Total Time234707 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2005 + Date Modified2023-11-09T11:55:35Z + Date Added2023-11-09T11:55:35Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3783096444 + Play Date UTC2023-11-17T17:07:24Z + Release Date2005-01-01T12:00:00Z + Artwork Count1 + Sort AlbumRosenrot + Sort ArtistRammstein + Sort NameRosenrot + Persistent ID0FED5AA4799A2E27 + Track TypeRemote + Apple Music + + 17867 + + Track ID17867 + NameReise, Reise + ArtistRammstein + Album ArtistRammstein + ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel + AlbumReise, Reise + GenreMetal + KindApple Music AAC audio file + Size9497398 + Total Time251147 + Disc Number1 + Disc Count1 + Track Number1 + Track Count11 + Year2004 + Date Modified2023-11-09T11:59:27Z + Date Added2023-11-09T11:59:27Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3783096210 + Play Date UTC2023-11-17T17:03:30Z + Release Date2004-09-27T12:00:00Z + Loved + Artwork Count1 + Sort AlbumReise, Reise + Sort ArtistRammstein + Sort NameReise, Reise + Persistent ID541CBF6AC9449E15 + Track TypeRemote + Apple Music + + 17873 + + Track ID17873 + NameMein Teil + ArtistRammstein + Album ArtistRammstein + ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel + AlbumReise, Reise + GenreMetal + KindApple Music AAC audio file + Size10093236 + Total Time272413 + Disc Number1 + Disc Count1 + Track Number2 + Track Count11 + Year2004 + Date Modified2023-11-09T12:20:21Z + Date Added2023-11-09T12:20:21Z + Bit Rate256 + Sample Rate44100 + Play Count10 + Play Date3783095958 + Play Date UTC2023-11-17T16:59:18Z + Release Date2004-07-26T12:00:00Z + Artwork Count1 + Sort AlbumReise, Reise + Sort ArtistRammstein + Sort NameMein Teil + Persistent ID4828DC2FF8958DF7 + Track TypeRemote + Apple Music + + 17878 + + Track ID17878 + NameOhne dich + ArtistRammstein + Album ArtistRammstein + ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel + AlbumReise, Reise + GenreMetal + KindApple Music AAC audio file + Size9794796 + Total Time271173 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2004 + Date Modified2023-11-09T12:32:23Z + Date Added2023-11-09T12:32:23Z + Bit Rate256 + Sample Rate44100 + Play Count12 + Play Date3783576134 + Play Date UTC2023-11-23T06:22:14Z + Release Date2004-09-27T12:00:00Z + Artwork Count1 + Sort AlbumReise, Reise + Sort ArtistRammstein + Sort NameOhne dich + Persistent IDAD13FEC396961B6B + Track TypeRemote + Apple Music + + 17883 + + Track ID17883 + NameKeine Lust + ArtistRammstein + Album ArtistRammstein + ComposerChristoph Doom Schneider, Doktor Christian Lorenz, Till Lindemann, Paul Landers, Richard Z. Kruspe & Oliver Riedel + AlbumReise, Reise + GenreMetal + KindApple Music AAC audio file + Size8409521 + Total Time222933 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2004 + Date Modified2023-11-09T12:51:38Z + Date Added2023-11-09T12:51:38Z + Bit Rate256 + Sample Rate44100 + Play Count13 + Play Date3783095415 + Play Date UTC2023-11-17T16:50:15Z + Release Date2004-01-01T12:00:00Z + Artwork Count1 + Sort AlbumReise, Reise + Sort ArtistRammstein + Sort NameKeine Lust + Persistent ID2309D0549526AD7A + Track TypeRemote + Apple Music + + 17888 + + Track ID17888 + NameICONIC (feat. Jaden Smith) + ArtistLogic + Album ArtistLogic + ComposerSir Robert Bryson Hall II, Arjun Ivatury & Melvin CHAOS Lewis + AlbumYSIV + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size10530747 + Total Time298136 + Disc Number1 + Disc Count1 + Track Number13 + Track Count14 + Year2018 + Date Modified2023-11-13T07:26:49Z + Bit Rate256 + Sample Rate44100 + Release Date2018-09-28T12:00:00Z + Loved + Artwork Count1 + Sort AlbumYSIV + Sort ArtistLogic + Sort NameICONIC (feat. Jaden Smith) + Persistent ID91CD0D0685E3B8A1 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 17989 + + Track ID17989 + NameCelebrity + ArtistRuss + Album ArtistRuss + AlbumBrain Dead + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6225928 + Total Time175125 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2014 + Date Modified2023-11-13T07:26:49Z + Bit Rate256 + Sample Rate44100 + Release Date2014-03-23T12:00:00Z + Loved + Artwork Count1 + Sort AlbumBrain Dead + Sort ArtistRuss + Sort NameCelebrity + Persistent IDE64C65B7B89575D4 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18025 + + Track ID18025 + NameThe Last Drop + ArtistFräulein + Album ArtistFräulein + AlbumThe Last Drop - Single + GenreIndie Rock + KindApple Music AAC audio file + Size5692418 + Total Time155074 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Date Modified2023-11-17T07:53:24Z + Date Added2023-11-17T07:53:24Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count9 + Play Date3783452188 + Play Date UTC2023-11-21T19:56:28Z + Release Date2023-10-11T12:00:00Z + Artwork Count1 + Sort AlbumLast Drop - Single + Sort ArtistFräulein + Sort NameLast Drop + Persistent IDAED542953411860B + Track TypeRemote + Apple Music + + 18032 + + Track ID18032 + NameThrone of Amber + ArtistHarp + Album ArtistHarp + ComposerTim Smith & Kathi Zung + AlbumAlbion + GenreFolk + KindApple Music AAC audio file + Size8967621 + Total Time250604 + Disc Number1 + Disc Count1 + Track Number11 + Track Count12 + Year2023 + Date Modified2023-11-17T10:12:44Z + Date Added2023-11-17T10:12:44Z + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Play Count8 + Play Date3783401585 + Play Date UTC2023-11-21T05:53:05Z + Release Date2023-11-07T08:00:00Z + Artwork Count1 + Sort AlbumAlbion + Sort ArtistHarp + Sort NameThrone of Amber + Persistent IDD44DC79C2F76AA34 + Track TypeRemote + Apple Music + + 18039 + + Track ID18039 + NameAmigo + ArtistLil Tecca + Album ArtistLil Tecca + ComposerTomas Martinez PKA Manso Beats, Joel Abraham PKA Jo L’Z, Taz Taylor & Lil Tecca + AlbumWe Love You Tecca + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5569731 + Total Time150092 + Disc Number1 + Disc Count1 + Track Number8 + Track Count17 + Year2019 + Date Modified2023-11-19T15:44:37Z + Date Added2023-11-19T15:44:37Z + Bit Rate256 + Sample Rate44100 + Play Count3 + Play Date3783401335 + Play Date UTC2023-11-21T05:48:55Z + Release Date2019-08-30T12:00:00Z + Artwork Count1 + Sort AlbumWe Love You Tecca + Sort ArtistLil Tecca + Sort NameAmigo + Persistent ID89FB1CA8F6C52D5F + Explicit + Track TypeRemote + Apple Music + + 18347 + + Track ID18347 + NameWants Vs. Needs + Artistwifisfuneral + Album Artistwifisfuneral + ComposerIsaih Rivera + AlbumBlack Heart Revenge 2 + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4518502 + Total Time120000 + Disc Number1 + Disc Count1 + Track Number8 + Track Count12 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-27T12:00:00Z + Artwork Count1 + Sort AlbumBlack Heart Revenge 2 + Sort Artistwifisfuneral + Sort NameWants Vs. Needs + Persistent IDE96F5811C4877B88 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18353 + + Track ID18353 + NameEverything You Want + ArtistJunior Prom + Album ArtistJunior Prom + AlbumEverything You Want - Single + GenreAlternative + KindApple Music AAC audio file + Size7681312 + Total Time207800 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-02-24T12:00:00Z + Artwork Count1 + Sort AlbumEverything You Want - Single + Sort ArtistJunior Prom + Sort NameEverything You Want + Persistent ID2A9128AC31B8A9B7 + Track TypeRemote + Apple Music + Playlist Only + + 18360 + + Track ID18360 + NameBackwards + Artistbbno$ & lentra + Album Artistbbno$ + ComposerAlexander Gumuchian & Garrett Hartnell + AlbumGood Luck Have Fun + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5711001 + Total Time156000 + Disc Number1 + Disc Count1 + Track Number7 + Track Count13 + Year2020 + Bit Rate256 + Sample Rate44100 + Release Date2020-08-14T12:00:00Z + Artwork Count1 + Sort AlbumGood Luck Have Fun + Sort Artistbbno$ & lentra + Sort NameBackwards + Persistent IDD7E653E159BFECE6 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18366 + + Track ID18366 + NameBallerina Out of Control + ArtistThe Laughing Chimes + Album ArtistThe Laughing Chimes + ComposerDavid Schelzel + AlbumA Promise To Keep - Single + GenreAlternative + KindApple Music AAC audio file + Size8956102 + Total Time230909 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-10-27T12:00:00Z + Artwork Count1 + Sort AlbumPromise To Keep - Single + Sort Album ArtistLaughing Chimes + Sort ArtistLaughing Chimes + Sort NameBallerina Out of Control + Persistent ID8646C953FD84BDA7 + Track TypeRemote + Apple Music + Playlist Only + + 18373 + + Track ID18373 + NameInés + ArtistCaifanes + Album ArtistCaifanes + ComposerSaúl Hernández + AlbumInés - Single + GenreRock y Alternativo + KindApple Music AAC audio file + Size9230957 + Total Time250372 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-04T12:00:00Z + Artwork Count1 + Sort AlbumInés - Single + Sort ArtistCaifanes + Sort NameInés + Persistent ID9FD9D69DC09CBA39 + Track TypeRemote + Apple Music + Playlist Only + + 18380 + + Track ID18380 + NameSoftly Spoken + ArtistGlimlip, azayaka & Soul Food Horns + Album ArtistGlimlip, azayaka & Soul Food Horns + ComposerThomas Philip Lieftinck, Louk Cox, Noé Mina & Jacob Henry Feingold + AlbumSoftly Spoken - Single + GenreJazz + KindApple Music AAC audio file + Size5179480 + Total Time138314 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-06T12:00:00Z + Artwork Count1 + Sort AlbumSoftly Spoken - Single + Sort ArtistGlimlip, azayaka & Soul Food Horns + Sort NameSoftly Spoken + Persistent IDD459F91E6B1F857B + Track TypeRemote + Apple Music + Playlist Only + + 18387 + + Track ID18387 + NameFold It Twice + ArtistYuri Yuri + Album ArtistYuri Yuri + ComposerYuri Yuri + AlbumFold It Twice - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4830637 + Total Time129083 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-20T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumFold It Twice - Single + Sort ArtistYuri Yuri + Sort NameFold It Twice + Persistent ID5A97FB89204EEC56 + Track TypeRemote + Apple Music + Playlist Only + + 18394 + + Track ID18394 + Nameneed/give me + Artistcehryl + Album Artistcehryl + ComposerCheryl Cheuk Wing Chow + Albumneed/give me - Single + GenreAlternative + KindApple Music AAC audio file + Size8130888 + Total Time201533 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-17T12:00:00Z + Artwork Count1 + Sort Albumneed/give me - Single + Sort Artistcehryl + Sort Nameneed/give me + Persistent ID44955E3BA0ADCC2F + Track TypeRemote + Apple Music + Playlist Only + + 18401 + + Track ID18401 + NameAn Idea + ArtistSaunder Jurriaans + Album ArtistSaunder Jurriaans + ComposerAlexander Jurriaans + AlbumPhantom Limb + GenreRock + KindApple Music AAC audio file + Size10269748 + Total Time289920 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-17T12:00:00Z + Artwork Count1 + Sort AlbumPhantom Limb + Sort ArtistSaunder Jurriaans + Sort NameIdea + Persistent ID8B0FA6499E2E2B47 + Track TypeRemote + Apple Music + Playlist Only + + 18408 + + Track ID18408 + NameLost It To Trying + ArtistSon Lux + Album ArtistSon Lux + ComposerRyan Lott + AlbumLanterns (Special Edition) + GenreAlternative + KindApple Music AAC audio file + Size10727816 + Total Time282587 + Disc Number1 + Disc Count2 + Track Number2 + Track Count9 + Year2013 + Bit Rate256 + Sample Rate44100 + Release Date2013-10-29T12:00:00Z + Artwork Count1 + Sort AlbumLanterns (Special Edition) + Sort ArtistSon Lux + Sort NameLost It To Trying + Persistent ID4AC075CDECAA517D + Track TypeRemote + Apple Music + Playlist Only + + 18414 + + Track ID18414 + NameWer schön sein will muss leiden + ArtistOOMPH! + Album ArtistOOMPH! + ComposerDero, CRAP & Flux + AlbumMonster + GenreRock + KindApple Music AAC audio file + Size6899579 + Total Time183973 + Disc Number1 + Disc Count1 + Track Number4 + Track Count14 + Year2008 + Bit Rate256 + Sample Rate44100 + Release Date2008-08-22T12:00:00Z + Artwork Count1 + Sort AlbumMonster + Sort ArtistOOMPH! + Sort NameWer schön sein will muss leiden + Persistent ID84FCA3FCC5D1EB15 + Track TypeRemote + Apple Music + Playlist Only + + 18421 + + Track ID18421 + Namethe hand that feeds + Artistabracadabra + Album Artistabracadabra + Albumthe hand that feeds / swim (extended dub mix) - Single + GenreAlternative + KindApple Music AAC audio file + Size8133695 + Total Time228138 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-17T12:00:00Z + Artwork Count1 + Sort Albumhand that feeds / swim (extended dub mix) - Single + Sort Artistabracadabra + Sort Namehand that feeds + Persistent ID6192311F1FF601C9 + Track TypeRemote + Apple Music + Playlist Only + + 18428 + + Track ID18428 + NameHaunted + ArtistPaklite + Album ArtistPaklite + ComposerCollin Wayne Stevic + AlbumAfter Dark - Single + GenreElectronic + KindApple Music AAC audio file + Size5070047 + Total Time129882 + Disc Number1 + Disc Count1 + Track Number2 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-27T12:00:00Z + Artwork Count1 + Sort AlbumAfter Dark - Single + Sort ArtistPaklite + Sort NameHaunted + Persistent ID660676DAEE0B5256 + Track TypeRemote + Apple Music + Playlist Only + + 18435 + + Track ID18435 + NameWe Are Here To Make You Feel + ArtistSPARKLING + Album ArtistSPARKLING + ComposerLevin Krasel, Leon Krasel & Luca Schüten + AlbumWe Are Here To Make You Feel + GenreElectronic + KindApple Music AAC audio file + Size7351749 + Total Time200973 + Disc Number1 + Disc Count1 + Track Number1 + Track Count9 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-27T12:00:00Z + Artwork Count1 + Sort AlbumWe Are Here To Make You Feel + Sort ArtistSPARKLING + Sort NameWe Are Here To Make You Feel + Persistent ID87E32C356261B784 + Track TypeRemote + Apple Music + Playlist Only + + 18442 + + Track ID18442 + NameHfcs + ArtistPACKS + Album ArtistPACKS + ComposerMadeline Link, Dexter Nash, Noah O'Neil & Shane Hooper + AlbumMelt the Honey + GenreAlternative + KindApple Music AAC audio file + Size5223573 + Total Time142883 + Disc Number1 + Disc Count1 + Track Number4 + Track Count11 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-11-15T12:00:00Z + Artwork Count1 + Sort AlbumMelt the Honey + Sort ArtistPACKS + Sort NameHfcs + Persistent ID3DF6EAEE4FEC835A + Track TypeRemote + Apple Music + Playlist Only + + 18449 + + Track ID18449 + NameSubtle Act + ArtistDani Catalá, MrAnthony & Odd Panda + Album ArtistDani Catalá, MrAnthony & Odd Panda + ComposerDani Catalá, MrAnthony & Odd Panda + AlbumSubtle Act - Single + GenreJazz + KindApple Music AAC audio file + Size5214131 + Total Time138924 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-17T12:00:00Z + Artwork Count1 + Sort AlbumSubtle Act - Single + Sort ArtistDani Catalá, MrAnthony & Odd Panda + Sort NameSubtle Act + Persistent ID2E95FFB38986E57E + Track TypeRemote + Apple Music + Playlist Only + + 18456 + + Track ID18456 + NameJuveniles (feat. YBN Nahmir) + Artistwifisfuneral + Album Artistwifisfuneral + ComposerIsaih Rivera, Nick Simmons, Orlando Tucker, Dwayne Carter & Byron O Thomas + AlbumEthernet + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5650894 + Total Time158000 + Disc Number1 + Disc Count1 + Track Number12 + Track Count12 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-06-08T12:00:00Z + Artwork Count1 + Sort AlbumEthernet + Sort Artistwifisfuneral + Sort NameJuveniles (feat. YBN Nahmir) + Persistent ID7352FFB543F1B409 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18462 + + Track ID18462 + NameCountry Girl + ArtistSoupbox & Run Wallace + Album ArtistSoupbox & Run Wallace + ComposerRobert Funk & Valentin Keil + AlbumHighs, Lows & Antidotes + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5563155 + Total Time151278 + Disc Number1 + Disc Count1 + Track Number11 + Track Count16 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-25T12:00:00Z + Artwork Count1 + Sort AlbumHighs, Lows & Antidotes + Sort ArtistSoupbox & Run Wallace + Sort NameCountry Girl + Persistent IDFE5928013AFDB3F2 + Track TypeRemote + Apple Music + Playlist Only + + 18469 + + Track ID18469 + NameEasier + ArtistMansionair + Album ArtistVarious Artists + ComposerMansionair + AlbumMore To Life, Vol. 1 by Sam Golbach + GenreAlternative + KindApple Music AAC audio file + Size9514120 + Total Time272681 + Disc Number1 + Disc Count1 + Track Number10 + Track Count20 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-10-17T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumMore To Life, Vol. 1 by Sam Golbach + Sort ArtistMansionair + Sort NameEasier + Persistent IDACEBB66909E026F6 + Track TypeRemote + Apple Music + Playlist Only + + 18475 + + Track ID18475 + NameMother Nature + ArtistMGMT + Album ArtistMGMT + ComposerBen Goldwasser & Brian Joseph Burton + AlbumLoss Of Life + GenreAlternative + KindApple Music AAC audio file + Size9289143 + Total Time236427 + Disc Number1 + Disc Count1 + Track Number2 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-31T12:00:00Z + Artwork Count1 + Sort AlbumLoss Of Life + Sort ArtistMGMT + Sort NameMother Nature + Persistent ID7A6FBA79D89B5536 + Track TypeRemote + Apple Music + Playlist Only + + 18481 + + Track ID18481 + NameIndica + ArtistLazlow & Django Del Mar + Album ArtistLazlow & Django Del Mar + ComposerAdam Laszlo & Johannes Weissschnur + AlbumIndica - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4722413 + Total Time126234 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-18T12:00:00Z + Artwork Count1 + Sort AlbumIndica - Single + Sort ArtistLazlow & Django Del Mar + Sort NameIndica + Persistent ID7DB61A5601866647 + Track TypeRemote + Apple Music + Playlist Only + + 18488 + + Track ID18488 + NameBaby Girl + Artist21 Savage + Album Artist21 Savage + ComposerShayaa Joseph & Pi’erre Bourne + AlbumIssa Album + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6087004 + Total Time169093 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-07-07T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumIssa Album + Sort Artist21 Savage + Sort NameBaby Girl + Persistent ID1321E5860CCC7A7E + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18493 + + Track ID18493 + NameShrimp Tempura + ArtistSharks Deli + Album ArtistSharks Deli + Composerandrew ho + AlbumMemories Point + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5124290 + Total Time140471 + Disc Number1 + Disc Count1 + Track Number4 + Track Count8 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-26T12:00:00Z + Artwork Count1 + Sort AlbumMemories Point + Sort ArtistSharks Deli + Sort NameShrimp Tempura + Persistent ID504310FDD0B9A434 + Track TypeRemote + Apple Music + Playlist Only + + 18498 + + Track ID18498 + NameGrief + ArtistJosh A + Album ArtistJosh A + AlbumThe Oldies + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7250069 + Total Time202841 + Disc Number1 + Disc Count1 + Track Number27 + Track Count28 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-06-28T12:00:00Z + Artwork Count1 + Sort AlbumOldies + Sort ArtistJosh A + Sort NameGrief + Persistent IDE9F890EFD9B71F72 + Track TypeRemote + Apple Music + Playlist Only + + 18504 + + Track ID18504 + NameDockside Daydream + ArtistWide Open Skies + Album ArtistWide Open Skies + ComposerLuc Veermeer & Greg Abrahams + AlbumThe Grand Bay of Begonia - Single + GenreElectronic + KindApple Music AAC audio file + Size4610771 + Total Time121000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-20T12:00:00Z + Artwork Count1 + Sort AlbumGrand Bay of Begonia - Single + Sort ArtistWide Open Skies + Sort NameDockside Daydream + Persistent IDA361FD824A8A5D7B + Track TypeRemote + Apple Music + Playlist Only + + 18511 + + Track ID18511 + NameSunday Morning + Artistdennisivnvc & Hoffy Beats + Album Artistdennisivnvc & Hoffy Beats + Composerdennisivnvc & Hoffy Beats + AlbumSunday Morning - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5360252 + Total Time148052 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-24T12:00:00Z + Artwork Count1 + Sort AlbumSunday Morning - Single + Sort Artistdennisivnvc & Hoffy Beats + Sort NameSunday Morning + Persistent IDB28C61DBED160DC5 + Track TypeRemote + Apple Music + Playlist Only + + 18518 + + Track ID18518 + NameHotel Corazon + ArtistDog Days + Album ArtistDog Days + ComposerAdam Redmond & Omri Dahan + AlbumDog Days - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5459185 + Total Time152229 + Disc Number1 + Disc Count1 + Track Number3 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-29T07:00:00Z + Artwork Count1 + Sort AlbumDog Days - EP + Sort ArtistDog Days + Sort NameHotel Corazon + Persistent ID6B66B4DA31BE1577 + Track TypeRemote + Apple Music + Playlist Only + + 18525 + + Track ID18525 + Namewhy dont we go + ArtistUMI + Album ArtistUMI + ComposerUMI & Vron + Albumwhy dont we go - Single + GenreR&B/Soul + KindApple Music AAC audio file + Size6132751 + Total Time166509 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-03T12:00:00Z + Artwork Count1 + Sort Albumwhy dont we go - Single + Sort ArtistUMI + Sort Namewhy dont we go + Persistent ID06CD08CBF122EC72 + Track TypeRemote + Apple Music + Playlist Only + + 18532 + + Track ID18532 + Namelet go + ArtistClap Cotton + Album ArtistClap Cotton + ComposerHans Schötz + Albumlet go - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5692339 + Total Time154032 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-27T12:00:00Z + Artwork Count1 + Sort Albumlet go - Single + Sort ArtistClap Cotton + Sort Namelet go + Persistent ID68D30D124B3E52A9 + Track TypeRemote + Apple Music + Playlist Only + + 18538 + + Track ID18538 + NameFirst Sip + ArtistDelphinium + Album ArtistDelphinium + ComposerLukas Nathan & Delphinium + AlbumFirst Sip - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size6341494 + Total Time174336 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-06T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumFirst Sip - Single + Sort ArtistDelphinium + Sort NameFirst Sip + Persistent ID02FD6C2C5218513A + Track TypeRemote + Apple Music + Playlist Only + + 18545 + + Track ID18545 + NameElectric Blue + ArtistArcade Fire + Album ArtistArcade Fire + ComposerEdwin Butler, Jeremy Gara, Regine Chassagne, Richard Reed Parry, Tim Kingsbury & William Butler + AlbumEverything Now + GenreAlternative + KindApple Music AAC audio file + Size8880173 + Total Time242373 + Disc Number1 + Disc Count1 + Track Number9 + Track Count13 + Year2017 + Bit Rate256 + Sample Rate44100 + Release Date2017-07-13T12:00:00Z + Artwork Count1 + Sort AlbumEverything Now + Sort ArtistArcade Fire + Sort NameElectric Blue + Persistent ID8E91DE7F623511F8 + Track TypeRemote + Apple Music + Playlist Only + + 18551 + + Track ID18551 + NameDowntown Jazz + ArtistWorldtraveller + Album ArtistWorldtraveller + ComposerIngolf Schapke + AlbumDowntown Jazz - Single + GenreElectronic + KindApple Music AAC audio file + Size3635084 + Total Time92571 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-29T12:00:00Z + Artwork Count1 + Sort AlbumDowntown Jazz - Single + Sort ArtistWorldtraveller + Sort NameDowntown Jazz + Persistent ID10FF16B70F68FE5B + Track TypeRemote + Apple Music + Playlist Only + + 18558 + + Track ID18558 + NameUr Purple Eyes + Artisthey, nothing + Album Artisthey, nothing + ComposerTyler Mabry & Harlow Phillips + AlbumWe're Starting to Look Like Each Other + GenreAlternative + KindApple Music AAC audio file + Size12162628 + Total Time349386 + Disc Number1 + Disc Count1 + Track Number9 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-31T12:00:00Z + Artwork Count1 + Sort AlbumWe're Starting to Look Like Each Other + Sort Artisthey, nothing + Sort NameUr Purple Eyes + Persistent ID1AF4EEB19C724BFE + Track TypeRemote + Apple Music + Playlist Only + + 18565 + + Track ID18565 + NameLeft Hand Free + Artistalt-J + Album Artistalt-J + ComposerGus Unger-Hamilton, Joe Newman & Thom Green + AlbumThis Is All Yours + GenreAlternative + KindApple Music AAC audio file + Size6551111 + Total Time173631 + Disc Number1 + Disc Count1 + Track Number5 + Track Count14 + Year2014 + Bit Rate256 + Sample Rate44100 + Release Date2014-07-07T12:00:00Z + Album Rating100 + Album Rating Computed + Artwork Count1 + Sort AlbumThis Is All Yours + Sort Artistalt-J + Sort NameLeft Hand Free + Persistent ID20E25E5BED1E0979 + Track TypeRemote + Apple Music + Playlist Only + + 18570 + + Track ID18570 + NameSki Mask (feat. Los & Sahtyre) + ArtistAtlantic Haze + Album ArtistAtlantic Haze + ComposerBenjamin Drees, Brian Moon, Cassidy Howell & Atlantic Haze + AlbumSki Mask (feat. LOS MOONWALKER & Sahtyre) - Single + GenreElectronic + KindApple Music AAC audio file + Size6026716 + Total Time162500 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2016 + Bit Rate256 + Sample Rate44100 + Release Date2016-07-29T12:00:00Z + Artwork Count1 + Sort AlbumSki Mask (feat. LOS MOONWALKER & Sahtyre) - Single + Sort ArtistAtlantic Haze + Sort NameSki Mask (feat. Los & Sahtyre) + Persistent IDA4EB7C47CCCFA8D0 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18576 + + Track ID18576 + NameUndo Last Move + ArtistState Artefact + Album ArtistState Artefact + ComposerJoe Knight & State Artefact + AlbumUndo Last Move - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5041771 + Total Time132439 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-06T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumUndo Last Move - Single + Sort ArtistState Artefact + Sort NameUndo Last Move + Persistent ID8FF5D2CE3E583E75 + Track TypeRemote + Apple Music + Playlist Only + + 18583 + + Track ID18583 + Nameaauuu! + ArtistLOUSELV + Album ArtistLOUSELV & Rhakim Ali + ComposerLeevi Lamade + Albumarctic monkeys / aauuu! - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4096348 + Total Time106162 + Disc Number1 + Disc Count1 + Track Number2 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-10-27T12:00:00Z + Artwork Count1 + Sort Albumarctic monkeys / aauuu! - Single + Sort ArtistLOUSELV + Sort Nameaauuu! + Persistent IDBC645D34D6D27B19 + Track TypeRemote + Apple Music + Playlist Only + + 18590 + + Track ID18590 + NameCall It A Day + ArtistDAVI JUNO + Album ArtistDAVI JUNO + ComposerFrancesco Grieco & David LaFlamme + AlbumDouble Dealer / Call It A Day - Single + GenreElectronic + KindApple Music AAC audio file + Size4361310 + Total Time108300 + Disc Number1 + Disc Count1 + Track Number2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-27T12:00:00Z + Artwork Count1 + Sort AlbumDouble Dealer / Call It A Day - Single + Sort ArtistDAVI JUNO + Sort NameCall It A Day + Persistent ID83A121E3B4404D26 + Track TypeRemote + Apple Music + Playlist Only + + 18596 + + Track ID18596 + NameRisk + ArtistDeftones + Album ArtistDeftones + ComposerAbe Cunningham, Chino Moreno, Frank Delgado, Sergio Vega & Stephen Carpenter + AlbumDiamond Eyes (Deluxe Edition) + GenreHard Rock + KindApple Music AAC audio file + Size8299005 + Total Time218827 + Disc Number1 + Disc Count1 + Track Number9 + Track Count14 + Year2010 + Bit Rate256 + Sample Rate44100 + Release Date2010-05-04T12:00:00Z + Artwork Count1 + Sort AlbumDiamond Eyes (Deluxe Edition) + Sort ArtistDeftones + Sort NameRisk + Persistent IDBFE2D800E3D8CA29 + Track TypeRemote + Apple Music + Playlist Only + + 18603 + + Track ID18603 + NameReally Hurts + ArtistHATAMITSUNAMI + Album ArtistHATAMITSUNAMI + ComposerSIAMAK HATAMI + AlbumThe Alchemist - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5319748 + Total Time142674 + Disc Number1 + Disc Count1 + Track Number2 + Track Count4 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-03T12:00:00Z + Artwork Count1 + Sort AlbumAlchemist - EP + Sort ArtistHATAMITSUNAMI + Sort NameReally Hurts + Persistent IDD3BC2363773C0311 + Track TypeRemote + Apple Music + Playlist Only + + 18609 + + Track ID18609 + NameBliss + ArtistNaptunes & Ornithology + Album ArtistNaptunes + ComposerRené Flächsenhaar, Shaan Chhadva & Christoph Bauss + AlbumNaptunes - EP + GenreElectronic + KindApple Music AAC audio file + Size4899599 + Total Time118549 + Disc Number1 + Disc Count1 + Track Number4 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-08-04T12:00:00Z + Artwork Count1 + Sort AlbumNaptunes - EP + Sort ArtistNaptunes & Ornithology + Sort NameBliss + Persistent IDD896945725F2C23E + Track TypeRemote + Apple Music + Playlist Only + + 18616 + + Track ID18616 + Namedemons are quiet + ArtistFarhot + Album ArtistFarhot + ComposerFarhad Samadzada + Albumdemons are quiet - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4158195 + Total Time107879 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-10-06T12:00:00Z + Artwork Count1 + Sort Albumdemons are quiet - Single + Sort ArtistFarhot + Sort Namedemons are quiet + Persistent IDE25427E1054F9FA5 + Track TypeRemote + Apple Music + Playlist Only + + 18622 + + Track ID18622 + NameWater Falls + Artistxander. & Søren Søstrom + Album Artistxander. & Søren Søstrom + ComposerAlexander Papamitrou & Elijah Fox-Peck + AlbumAll In Time - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size7580880 + Total Time210732 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-06T12:00:00Z + Artwork Count1 + Sort AlbumAll In Time - Single + Sort Artistxander. & Søren Søstrom + Sort NameWater Falls + Persistent IDE879DF7CCA56782E + Track TypeRemote + Apple Music + Playlist Only + + 18628 + + Track ID18628 + NameGuava Tree + Artistsloh rou + Album Artistsloh rou + ComposerNikos Heidinger + AlbumOcean Cove Estate - EP + GenreHip-Hop + KindApple Music AAC audio file + Size5085001 + Total Time138667 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-09-08T12:00:00Z + Artwork Count1 + Sort AlbumOcean Cove Estate - EP + Sort Artistsloh rou + Sort NameGuava Tree + Persistent IDB7E9A6B0F9CD102A + Track TypeRemote + Apple Music + Playlist Only + + 18634 + + Track ID18634 + NameRise n Grind + ArtistYounger Hunger + Album ArtistYounger Hunger + ComposerTony Davia + AlbumCyborg Tactics + GenreAlternative + KindApple Music AAC audio file + Size5853383 + Total Time160000 + Disc Number1 + Disc Count1 + Track Number3 + Track Count11 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-17T12:00:00Z + Artwork Count1 + Sort AlbumCyborg Tactics + Sort ArtistYounger Hunger + Sort NameRise n Grind + Persistent IDBAE135142CE308CB + Track TypeRemote + Apple Music + Playlist Only + + 18641 + + Track ID18641 + NameHurt + ArtistOliver Tree + Album ArtistOliver Tree + ComposerEthan Snoreck & Oliver Tree + AlbumUgly is Beautiful: Shorter, Thicker & Uglier (Deluxe) + GenreAlternative + KindApple Music AAC audio file + Size5409138 + Total Time145559 + Disc Number1 + Disc Count1 + Track Number19 + Track Count21 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-12-07T12:00:00Z + Artwork Count1 + Sort AlbumUgly is Beautiful: Shorter, Thicker & Uglier (Deluxe) + Sort ArtistOliver Tree + Sort NameHurt + Persistent ID1B337FCF80CC7430 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18647 + + Track ID18647 + NameSofa King + ArtistRoyel Otis + Album ArtistRoyel Otis + ComposerOtis Pavlovic, Chris Collins & Royel Maddell + AlbumSofa King - Single + GenreIndie Pop + KindApple Music AAC audio file + Size7038825 + Total Time196317 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-02T12:00:00Z + Artwork Count1 + Sort AlbumSofa King - Single + Sort ArtistRoyel Otis + Sort NameSofa King + Persistent ID29C346B17E46BAA0 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18654 + + Track ID18654 + NameNightmare + ArtistHalsey + Album ArtistHalsey + ComposerHalsey, benny blanco, Magnus August Høiberg, Happy Perez, Trevor Horn, Martin Kierszenbaum, Sergio Galoyan, Elena Kiper, Valerij Valentinovich Polienko & Ivan Nikolaevich Shapovalov + AlbumIf I Can’t Have Love, I Want Power (Extended) + GenreAlternative + KindApple Music AAC audio file + Size8267238 + Total Time231999 + Disc Number1 + Disc Count1 + Track Number14 + Track Count16 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-05-17T07:00:00Z + Artwork Count1 + Sort AlbumIf I Can’t Have Love, I Want Power (Extended) + Sort ArtistHalsey + Sort NameNightmare + Persistent ID881C7AD79C0C3428 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18660 + + Track ID18660 + NameAll My Thoughts (Loft Version) + ArtistFree Range + Album ArtistFree Range + ComposerSofia Jensen + AlbumLoft Sessions - EP + GenreIndie Pop + KindApple Music AAC audio file + Size9460356 + Total Time265525 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-17T12:00:00Z + Artwork Count1 + Sort AlbumLoft Sessions - EP + Sort ArtistFree Range + Sort NameAll My Thoughts (Loft Version) + Persistent IDD8EBB9A8AE378324 + Track TypeRemote + Apple Music + Playlist Only + + 18667 + + Track ID18667 + NameColibri + ArtistG Mills + Album ArtistG Mills + ComposerGabriel Millman + AlbumColibri - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5746277 + Total Time147573 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-13T12:00:00Z + Artwork Count1 + Sort AlbumColibri - Single + Sort ArtistG Mills + Sort NameColibri + Persistent ID2CDEA01535F0DC77 + Track TypeRemote + Apple Music + Playlist Only + + 18674 + + Track ID18674 + NameGreen Cascade + ArtistJobii + Album ArtistJobii + ComposerGabriel Millman + AlbumGreen Cascade - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5737092 + Total Time155456 + Disc Number1 + Disc Count1 + Track Number1 + Track Count2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-05T12:00:00Z + Artwork Count1 + Sort AlbumGreen Cascade - Single + Sort ArtistJobii + Sort NameGreen Cascade + Persistent ID6E8F5B9E7D3E0A6D + Track TypeRemote + Apple Music + Playlist Only + + 18680 + + Track ID18680 + NameSeasons + ArtistM.I Hakone + Album ArtistM.I Hakone + ComposerMichaeli Marcus & M.I Hakone + AlbumSeasons - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4628343 + Total Time124337 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-20T12:00:00Z + Compilation + Artwork Count1 + Sort AlbumSeasons - Single + Sort ArtistM.I Hakone + Sort NameSeasons + Persistent IDF73C5A60AA0EC067 + Track TypeRemote + Apple Music + Playlist Only + + 18687 + + Track ID18687 + NameGirlfriend + ArtistCanty + Album ArtistCanty + ComposerJames Canty + AlbumBoyfriend / Girlfriend - Single + GenreAlternative + KindApple Music AAC audio file + Size8032017 + Total Time225088 + Disc Number1 + Disc Count1 + Track Number3 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-11-10T12:00:00Z + Artwork Count1 + Sort AlbumBoyfriend / Girlfriend - Single + Sort ArtistCanty + Sort NameGirlfriend + Persistent ID77DD010AF4C3EE75 + Track TypeRemote + Apple Music + Playlist Only + + 18694 + + Track ID18694 + NameALL THAT U WANT + ArtistUnusual Demont + Album ArtistUnusual Demont + ComposerUnusual Demont, Dee Lilly & Jonah Feingold + AlbumALL THAT U WANT - Single + GenreAlternative + KindApple Music AAC audio file + Size5275814 + Total Time140241 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-08T12:00:00Z + Artwork Count1 + Sort AlbumALL THAT U WANT - Single + Sort ArtistUnusual Demont + Sort NameALL THAT U WANT + Persistent IDFC5B698335588382 + Track TypeRemote + Apple Music + Playlist Only + + 18700 + + Track ID18700 + NameAugust + ArtistCindy + Album ArtistCindy + ComposerKarina Gil + AlbumStandard Candle + GenreSinger/Songwriter + KindApple Music AAC audio file + Size5705139 + Total Time157051 + Disc Number1 + Disc Count1 + Track Number2 + Track Count8 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-01T07:00:00Z + Artwork Count1 + Sort AlbumStandard Candle + Sort ArtistCindy + Sort NameAugust + Persistent IDD82E1E569C55794F + Track TypeRemote + Apple Music + Playlist Only + + 18707 + + Track ID18707 + NameJe pars + ArtistVONFELT + Album ArtistVONFELT + AlbumVONFELT + GenreFrench Pop + KindApple Music AAC audio file + Size7476373 + Total Time210000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count8 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-06T12:00:00Z + Artwork Count1 + Sort AlbumVONFELT + Sort ArtistVONFELT + Sort NameJe pars + Persistent ID71F7B019B4F68932 + Track TypeRemote + Apple Music + Playlist Only + + 18714 + + Track ID18714 + NameLandmines + ArtistSum 41 + Album ArtistSum 41 + ComposerDeryck Whibley + AlbumLandmines - Single + GenreAlternative + KindApple Music AAC audio file + Size6404638 + Total Time175768 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-27T12:00:00Z + Artwork Count1 + Sort AlbumLandmines - Single + Sort ArtistSum 41 + Sort NameLandmines + Persistent ID81AE4716ED77578D + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18721 + + Track ID18721 + NameClose-Up + ArtistMozzie + Album ArtistMozzie + ComposerArseny Troshin + AlbumClose-Up - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5876016 + Total Time160000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-19T12:00:00Z + Artwork Count1 + Sort AlbumClose-Up - Single + Sort ArtistMozzie + Sort NameClose-Up + Persistent IDDC4CDCC4B4A2A196 + Track TypeRemote + Apple Music + Playlist Only + + 18727 + + Track ID18727 + NameStew + ArtistIona + Album ArtistIona + ComposerIona + AlbumStew - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5456598 + Total Time149333 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-06T12:00:00Z + Artwork Count1 + Sort AlbumStew - Single + Sort ArtistIona + Sort NameStew + Persistent ID1EEF99B3EDFF6504 + Track TypeRemote + Apple Music + Playlist Only + + 18734 + + Track ID18734 + NameParadiso + ArtistEnluv, 9ICK & Soul Food Horns + Album ArtistEnluv, 9ICK & Soul Food Horns + ComposerBrandon Hartt, Nicolas Stephensen, Louk Cox & Noé Mina + AlbumParadiso - Single + GenreJazz + KindApple Music AAC audio file + Size6153848 + Total Time165714 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-18T12:00:00Z + Artwork Count1 + Sort AlbumParadiso - Single + Sort ArtistEnluv, 9ICK & Soul Food Horns + Sort NameParadiso + Persistent ID52F42F71E1BC2CB6 + Track TypeRemote + Apple Music + Playlist Only + + 18741 + + Track ID18741 + NameAll My Friends + ArtistDylan Kelly + Album ArtistDylan Kelly + ComposerDylan Kelly + AlbumAll My Friends - Single + GenrePop + KindApple Music AAC audio file + Size7040389 + Total Time195933 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-01-13T12:00:00Z + Artwork Count1 + Sort AlbumAll My Friends - Single + Sort ArtistDylan Kelly + Sort NameAll My Friends + Persistent ID846F867E3C9AEF16 + Track TypeRemote + Apple Music + Playlist Only + + 18746 + + Track ID18746 + Namebiking + ArtistLoop Schrauber + Album ArtistLoop Schrauber + ComposerMaximilian Pauker + Albumbiking - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5231871 + Total Time141818 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-20T12:00:00Z + Artwork Count1 + Sort Albumbiking - Single + Sort ArtistLoop Schrauber + Sort Namebiking + Persistent ID39AD245070866C75 + Track TypeRemote + Apple Music + Playlist Only + + 18752 + + Track ID18752 + NameMITTE + ArtistKABEAUSHÉ + Album ArtistKABEAUSHÉ + ComposerKabochi Gitau + AlbumHOLD ON TO DEER LIFE, THERE'S A BLCAK BOY BEHIND YOU! + GenreElectronic + KindApple Music AAC audio file + Size6212241 + Total Time172087 + Disc Number1 + Disc Count1 + Track Number4 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-10T12:00:00Z + Artwork Count1 + Sort AlbumHOLD ON TO DEER LIFE, THERE'S A BLCAK BOY BEHIND YOU! + Sort ArtistKABEAUSHÉ + Sort NameMITTE + Persistent ID27C2D036D60C0549 + Track TypeRemote + Apple Music + Playlist Only + + 18759 + + Track ID18759 + NameThe Seeds You Plant Today + ArtistDYVN + Album ArtistDYVN + ComposerDavid Nilles + AlbumThe Seeds You Plant Today - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4402716 + Total Time106625 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-03T12:00:00Z + Artwork Count1 + Sort AlbumSeeds You Plant Today - Single + Sort ArtistDYVN + Sort NameSeeds You Plant Today + Persistent ID765ABC52535AECF2 + Track TypeRemote + Apple Music + Playlist Only + + 18765 + + Track ID18765 + NameAUSTRALIA + ArtistBoobie Lootaveli + Album ArtistBoobie Lootaveli + ComposerHabib Suz + AlbumLOOTAVELI + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5270842 + Total Time141429 + Disc Number1 + Disc Count1 + Track Number3 + Track Count10 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-11-20T12:00:00Z + Artwork Count1 + Sort AlbumLOOTAVELI + Sort ArtistBoobie Lootaveli + Sort NameAUSTRALIA + Persistent ID0F4073611BBAF71B + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18772 + + Track ID18772 + NameYour Majesty + ArtistBen Jammin' Beats + Album ArtistBen Jammin' Beats + ComposerBenjamin Kath + AlbumYour Majesty - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5254914 + Total Time135789 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-12T12:00:00Z + Artwork Count1 + Sort AlbumYour Majesty - Single + Sort ArtistBen Jammin' Beats + Sort NameYour Majesty + Persistent ID0AF042C1FD14608E + Track TypeRemote + Apple Music + Playlist Only + + 18779 + + Track ID18779 + NameI'm Going (feat. Ben West) + ArtistFredo Santana + Album ArtistFredo Santana + ComposerFredo Santana + AlbumAin't No Money Like Trap Money (Vol. 1) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size8692058 + Total Time254545 + Disc Number1 + Disc Count1 + Track Number6 + Track Count15 + Year2015 + Bit Rate256 + Sample Rate44100 + Release Date2015-05-20T12:00:00Z + Artwork Count1 + Sort AlbumAin't No Money Like Trap Money (Vol. 1) + Sort ArtistFredo Santana + Sort NameI'm Going (feat. Ben West) + Persistent ID4D6DFAC71E7AB948 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18785 + + Track ID18785 + NameAbout You + ArtistThe 1975 + Album ArtistThe 1975 + ComposerMatthew Healy & George Daniel + AlbumBeing Funny In a Foreign Language + GenreAlternative + KindApple Music AAC audio file + Size12003086 + Total Time326491 + Disc Number1 + Disc Count1 + Track Number10 + Track Count11 + Year2022 + Bit Rate256 + Sample Rate44100 + Release Date2022-10-14T12:00:00Z + Artwork Count1 + Sort AlbumBeing Funny In a Foreign Language + Sort Album Artist1975 + Sort Artist1975 + Sort NameAbout You + Persistent ID35580AD0DFAB88F8 + Track TypeRemote + Apple Music + Playlist Only + + 18792 + + Track ID18792 + NameTashmere Anthill + ArtistGraham Hunt + Album ArtistGraham Hunt + ComposerGraham Hunt + AlbumTashmere Anthill - Single + GenreAlternative + KindApple Music AAC audio file + Size8837348 + Total Time246613 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-06T12:00:00Z + Artwork Count1 + Sort AlbumTashmere Anthill - Single + Sort ArtistGraham Hunt + Sort NameTashmere Anthill + Persistent IDC5F63710D7157577 + Track TypeRemote + Apple Music + Playlist Only + + 18799 + + Track ID18799 + NameJanuary 18th + ArtistBeirut + Album ArtistBeirut + ComposerZachary F. Condon + AlbumHadsel + GenreAlternative + KindApple Music AAC audio file + Size8460919 + Total Time221981 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-10T12:00:00Z + Artwork Count1 + Sort AlbumHadsel + Sort ArtistBeirut + Sort NameJanuary 18th + Persistent ID716DB01F51D9B1E1 + Track TypeRemote + Apple Music + Playlist Only + + 18806 + + Track ID18806 + NameJukebox + ArtistAdé + Album ArtistAdé + ComposerAdelaide Chabannes + AlbumEt alors ??? + GenreFrench Pop + KindApple Music AAC audio file + Size7079027 + Total Time194427 + Disc Number1 + Disc Count1 + Track Number17 + Track Count18 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-03T07:00:00Z + Artwork Count1 + Sort AlbumEt alors ??? + Sort ArtistAdé + Sort NameJukebox + Persistent IDFF5F6F9253D5B5E9 + Track TypeRemote + Apple Music + Playlist Only + + 18813 + + Track ID18813 + NameBreezeblocks + Artistalt-J + Album Artistalt-J + ComposerCharlie Andrew, Gus Unger-Hamilton, Gwilym Sainsbury, Joe Newman & Thom Green + AlbumBreezeblocks - EP + GenreRock + KindApple Music AAC audio file + Size8205388 + Total Time227080 + Disc Number1 + Disc Count1 + Track Number1 + Track Count4 + Year1975 + Bit Rate256 + Sample Rate44100 + Release Date1975-01-01T12:00:00Z + Artwork Count1 + Sort AlbumBreezeblocks - EP + Sort Artistalt-J + Sort NameBreezeblocks + Persistent ID2C9A5A301C8B1496 + Track TypeRemote + Apple Music + Playlist Only + + 18819 + + Track ID18819 + NameThings That Stop You Dreaming (Anniversary Edition) + ArtistPassenger + Album ArtistPassenger + ComposerMichael Rosenberg + AlbumAll the Little Lights (Anniversary Edition) + GenreTraditional Folk + KindApple Music AAC audio file + Size9244499 + Total Time247880 + Disc Number1 + Disc Count2 + Track Number1 + Track Count11 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-10T12:00:00Z + Artwork Count1 + Sort AlbumAll the Little Lights (Anniversary Edition) + Sort ArtistPassenger + Sort NameThings That Stop You Dreaming (Anniversary Edition) + Persistent ID780D1B75D6F1D1AD + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18826 + + Track ID18826 + NameComo + ArtistSamuW & Kimmø + Album ArtistSamuW & Kimmø + ComposerSamuW & Kimmø + AlbumComo - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4722337 + Total Time125581 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-03T12:00:00Z + Artwork Count1 + Sort AlbumComo - Single + Sort ArtistSamuW & Kimmø + Sort NameComo + Persistent IDBEA4D160A7A438F2 + Track TypeRemote + Apple Music + Playlist Only + + 18833 + + Track ID18833 + NameThe Return + ArtistHans Hu$tle + Album ArtistHans Hu$tle + ComposerHans Vincent Heusterberg + AlbumThe Return - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4462178 + Total Time116083 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-01T12:00:00Z + Artwork Count1 + Sort AlbumReturn - Single + Sort ArtistHans Hu$tle + Sort NameReturn + Persistent IDE8E8C53CC2FD3484 + Track TypeRemote + Apple Music + Playlist Only + + 18839 + + Track ID18839 + NameMars + ArtistMF Eistee + Album ArtistMF Eistee + ComposerBenjamin Goss + AlbumMars - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4533897 + Total Time118519 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-10-13T12:00:00Z + Artwork Count1 + Sort AlbumMars - Single + Sort ArtistMF Eistee + Sort NameMars + Persistent ID03AE1AE393D518DA + Track TypeRemote + Apple Music + Playlist Only + + 18846 + + Track ID18846 + NameIze of the World + ArtistThe Strokes + Album ArtistThe Strokes + ComposerJulian Casablancas + AlbumFirst Impressions of Earth + GenrePop + KindApple Music AAC audio file + Size9506608 + Total Time265773 + Disc Number1 + Disc Count1 + Track Number12 + Track Count14 + Year2005 + Bit Rate256 + Sample Rate44100 + Release Date2005-01-01T12:00:00Z + Artwork Count1 + Sort AlbumFirst Impressions of Earth + Sort Album ArtistStrokes + Sort ArtistStrokes + Sort NameIze of the World + Persistent ID69770EA577AAF6AF + Track TypeRemote + Apple Music + Playlist Only + + 18852 + + Track ID18852 + NamePark Ride + ArtistØDYSSEE & Ruck P + Album ArtistØDYSSEE & Ruck P + ComposerLouis Le Clerc & Lucien Spielmann + AlbumPark Ride - Single + GenreInstrumental + KindApple Music AAC audio file + Size5854826 + Total Time150774 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-10-20T12:00:00Z + Artwork Count1 + Sort AlbumPark Ride - Single + Sort ArtistØDYSSEE & Ruck P + Sort NamePark Ride + Persistent ID3EE55D5B2C7BB5B8 + Track TypeRemote + Apple Music + Playlist Only + + 18859 + + Track ID18859 + NameStreet Life + ArtistBelleo + Album ArtistBelleo + ComposerAnton Hård af Segerstadt + AlbumAuras and Water / Street Life - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5127790 + Total Time138000 + Disc Number1 + Disc Count1 + Track Number2 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-16T12:00:00Z + Artwork Count1 + Sort AlbumAuras and Water / Street Life - Single + Sort ArtistBelleo + Sort NameStreet Life + Persistent IDAF45F02C435C837A + Track TypeRemote + Apple Music + Playlist Only + + 18866 + + Track ID18866 + NameOne + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi, Phil Cook & Tomas Mann + AlbumDivinely Uninspired To A Hellish Extent + GenreAlternative + KindApple Music AAC audio file + Size6520157 + Total Time179908 + Disc Number1 + Disc Count1 + Track Number7 + Track Count12 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-05-17T07:00:00Z + Artwork Count1 + Sort AlbumDivinely Uninspired To A Hellish Extent + Sort ArtistLewis Capaldi + Sort NameOne + Persistent ID8070F3D9B6C1C0E9 + Track TypeRemote + Apple Music + Playlist Only + + 18871 + + Track ID18871 + NameAmbling + ArtistBobby Dreamz BIG + Album ArtistBobby Dreamz BIG + ComposerMarc Lensing + AlbumAmbling - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5120367 + Total Time141176 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-03T12:00:00Z + Artwork Count1 + Sort AlbumAmbling - Single + Sort ArtistBobby Dreamz BIG + Sort NameAmbling + Persistent ID6927B154202AE302 + Track TypeRemote + Apple Music + Playlist Only + + 18877 + + Track ID18877 + NameHollywood + ArtistLewis Capaldi + Album ArtistLewis Capaldi + ComposerLewis Capaldi, Philip Plested, John Stewart & Kane Parfitt + AlbumDivinely Uninspired To A Hellish Extent + GenreAlternative + KindApple Music AAC audio file + Size6903780 + Total Time191844 + Disc Number1 + Disc Count1 + Track Number9 + Track Count12 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-05-17T07:00:00Z + Artwork Count1 + Sort AlbumDivinely Uninspired To A Hellish Extent + Sort ArtistLewis Capaldi + Sort NameHollywood + Persistent IDFC5D982B31A8CBA6 + Track TypeRemote + Apple Music + Playlist Only + + 18882 + + Track ID18882 + NameSyphilis + ArtistJuice WRLD + Album ArtistJuice WRLD + ComposerJarad Higgins, Daveon Jackson & Ronald LaTour + AlbumDeath Race For Love (Bonus Track Version) + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4986112 + Total Time131761 + Disc Number1 + Disc Count1 + Track Number12 + Track Count23 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-03-08T12:00:00Z + Artwork Count1 + Sort AlbumDeath Race For Love (Bonus Track Version) + Sort ArtistJuice WRLD + Sort NameSyphilis + Persistent IDC2ADAF1AB7AC6506 + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18888 + + Track ID18888 + NameLowfi Theory + ArtistGoedi & Veezo + Album ArtistGoedi & Veezo + ComposerDiego Montinaro & Fabio Visocchi + AlbumLowfi Theory - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4815444 + Total Time128000 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-10T12:00:00Z + Artwork Count1 + Sort AlbumLowfi Theory - Single + Sort ArtistGoedi & Veezo + Sort NameLowfi Theory + Persistent ID1CE92CBE8DC8D31D + Track TypeRemote + Apple Music + Playlist Only + + 18895 + + Track ID18895 + NameRescue Me + ArtistOneRepublic + Album ArtistOneRepublic + ComposerBrent Kutzle & Ryan Tedder + AlbumHuman (Deluxe) + GenrePop + KindApple Music AAC audio file + Size5831693 + Total Time159650 + Disc Number1 + Disc Count1 + Track Number5 + Track Count16 + Year2019 + Bit Rate256 + Sample Rate44100 + Release Date2019-05-17T07:00:00Z + Artwork Count1 + Sort AlbumHuman (Deluxe) + Sort ArtistOneRepublic + Sort NameRescue Me + Persistent ID33A03D3A98A9DDB4 + Track TypeRemote + Apple Music + Playlist Only + + 18900 + + Track ID18900 + NameBlack-Eyed + ArtistPlacebo + Album ArtistPlacebo + AlbumBlack Market Music + GenreAlternative + KindApple Music AAC audio file + Size8166391 + Total Time228107 + Disc Number1 + Disc Count1 + Track Number6 + Track Count13 + Year2000 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2000-10-09T12:00:00Z + Artwork Count1 + Sort AlbumBlack Market Music + Sort ArtistPlacebo + Sort NameBlack-Eyed + Persistent ID91713BAB762586A6 + Track TypeRemote + Apple Music + Playlist Only + + 18907 + + Track ID18907 + NamePure + ArtistAlistair + Album ArtistAlistair + ComposerAlistair Atzori + AlbumDay Dreaming - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3785609 + Total Time98462 + Disc Number1 + Disc Count1 + Track Number4 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-03-24T12:00:00Z + Artwork Count1 + Sort AlbumDay Dreaming - EP + Sort ArtistAlistair + Sort NamePure + Persistent ID379D6FF727585574 + Track TypeRemote + Apple Music + Playlist Only + + 18914 + + Track ID18914 + NameComplicated (feat. Xynothing) + ArtistAlistair + Album ArtistAlistair + ComposerMachado Joseph & Alistair Atzori + AlbumDay Dreaming - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3440848 + Total Time90353 + Disc Number1 + Disc Count1 + Track Number3 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-02-10T12:00:00Z + Artwork Count1 + Sort AlbumDay Dreaming - EP + Sort ArtistAlistair + Sort NameComplicated (feat. Xynothing) + Persistent IDAC7B1D9B6BF648F4 + Track TypeRemote + Apple Music + Playlist Only + + 18919 + + Track ID18919 + NameSubconscious (feat. El Train) + ArtistAlistair + Album ArtistAlistair + ComposerLuke Nyeke & Alistair Atzori + AlbumDay Dreaming - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4248152 + Total Time110711 + Disc Number1 + Disc Count1 + Track Number2 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-01T12:00:00Z + Artwork Count1 + Sort AlbumDay Dreaming - EP + Sort ArtistAlistair + Sort NameSubconscious (feat. El Train) + Persistent ID4DEA032D097C845D + Track TypeRemote + Apple Music + Playlist Only + + 18924 + + Track ID18924 + NameDivine + ArtistAlistair + Album ArtistAlistair + ComposerAlistair Atzori + AlbumDay Dreaming - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size3584697 + Total Time94861 + Disc Number1 + Disc Count1 + Track Number1 + Track Count6 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-09-01T12:00:00Z + Artwork Count1 + Sort AlbumDay Dreaming - EP + Sort ArtistAlistair + Sort NameDivine + Persistent ID55905E77825E983D + Track TypeRemote + Apple Music + Playlist Only + + 18929 + + Track ID18929 + NameNuance + ArtistMakzo & SYNC.EXE + Album ArtistMakzo & SYNC.EXE + ComposerZachary Mortimer & David Price + AlbumNuance - Single + GenreJazz + KindApple Music AAC audio file + Size5430725 + Total Time137708 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-10-11T12:00:00Z + Artwork Count1 + Sort AlbumNuance - Single + Sort ArtistMakzo & SYNC.EXE + Sort NameNuance + Persistent IDCF208E5AD6FF767C + Track TypeRemote + Apple Music + Playlist Only + + 18936 + + Track ID18936 + NameCouldn't Be Me + ArtistHarmless + Album ArtistHarmless + ComposerIgnacio Cano Sanchezbenitez + AlbumCouldn't Be Me - Single + GenreAlternative + KindApple Music AAC audio file + Size7941404 + Total Time225946 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-10T12:00:00Z + Artwork Count1 + Sort AlbumCouldn't Be Me - Single + Sort ArtistHarmless + Sort NameCouldn't Be Me + Persistent ID34E054EE608A19DD + Track TypeRemote + Apple Music + Playlist Only + + 18943 + + Track ID18943 + NameUnfold You + ArtistPsychic Shakes + Album ArtistPsychic Shakes + ComposerMax McLellan + AlbumForever Now + GenreIndie Rock + KindApple Music AAC audio file + Size9352817 + Total Time265657 + Disc Number1 + Disc Count1 + Track Number8 + Track Count9 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-11-07T12:00:00Z + Artwork Count1 + Sort AlbumForever Now + Sort ArtistPsychic Shakes + Sort NameUnfold You + Persistent ID877E27A72953882E + Track TypeRemote + Apple Music + Playlist Only + + 18950 + + Track ID18950 + NameSo Too + ArtistFed Nance + Album ArtistFed Nance + ComposerFederico Cavallini + AlbumSo Too - Single + GenreHip-Hop + KindApple Music AAC audio file + Size4965265 + Total Time134397 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-10-06T12:00:00Z + Artwork Count1 + Sort AlbumSo Too - Single + Sort ArtistFed Nance + Sort NameSo Too + Persistent ID730AC53899624DD4 + Track TypeRemote + Apple Music + Playlist Only + + 18957 + + Track ID18957 + NameIt's All Good Man + ArtistFelipe Gordon & Saib + Album ArtistFelipe Gordon & Saib + ComposerLuis Felipe Gordon Doncel & Hamza Saib + AlbumIt's All Good Man - Single + GenreAlternative Rap + KindApple Music AAC audio file + Size5247461 + Total Time131472 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-12T12:00:00Z + Artwork Count1 + Sort AlbumIt's All Good Man - Single + Sort ArtistFelipe Gordon & Saib + Sort NameIt's All Good Man + Persistent IDFAAE568FCE1F6F0A + Track TypeRemote + Apple Music + Playlist Only + + 18964 + + Track ID18964 + NamePremonitions + ArtistIsaac Delusion + Album ArtistIsaac Delusion + ComposerLoïc Fleury + AlbumPremonitions - Single + GenreAlternative + KindApple Music AAC audio file + Size7856072 + Total Time221987 + Disc Number1 + Disc Count1 + Track Number1 + Track Count3 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-11-03T12:00:00Z + Artwork Count1 + Sort AlbumPremonitions - Single + Sort ArtistIsaac Delusion + Sort NamePremonitions + Persistent ID5C0A096048E39BF0 + Track TypeRemote + Apple Music + Playlist Only + + 18971 + + Track ID18971 + NameExotic (feat. Starlito) + ArtistLil Baby + Album ArtistLil Baby + ComposerLil Baby, Brytavious Lakeith Chambers & Jermaine Shute + AlbumHarder Than Ever + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5958318 + Total Time162230 + Disc Number1 + Disc Count1 + Track Number4 + Track Count17 + Year2018 + Bit Rate256 + Sample Rate44100 + Release Date2018-05-18T12:00:00Z + Artwork Count1 + Sort AlbumHarder Than Ever + Sort ArtistLil Baby + Sort NameExotic (feat. Starlito) + Persistent ID85A1DBE77FAE646C + Explicit + Track TypeRemote + Apple Music + Playlist Only + + 18977 + + Track ID18977 + NameWallish Park + ArtistKatashi Kaitō & Kim Kozy + Album ArtistKatashi Kaitō & Kim Kozy + ComposerKatashi Kaitō & Kim Kozy + AlbumWallish Park - Single + GenreHip-Hop + KindApple Music AAC audio file + Size6276245 + Total Time171648 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Part Of Gapless Album + Release Date2023-10-20T12:00:00Z + Artwork Count1 + Sort AlbumWallish Park - Single + Sort ArtistKatashi Kaitō & Kim Kozy + Sort NameWallish Park + Persistent ID78D1CF92009C3B5F + Track TypeRemote + Apple Music + Playlist Only + + 18984 + + Track ID18984 + NameSunset Serenade + ArtistErvin Sprinkles + Album ArtistErvin Sprinkles + ComposerKonrad Birnbauer + AlbumSunset Serenades - EP + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size4604540 + Total Time122533 + Disc Number1 + Disc Count1 + Track Number1 + Track Count5 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-04T12:00:00Z + Artwork Count1 + Sort AlbumSunset Serenades - EP + Sort ArtistErvin Sprinkles + Sort NameSunset Serenade + Persistent IDB6F2D50864ED5DA5 + Track TypeRemote + Apple Music + Playlist Only + + 18991 + + Track ID18991 + NameMade Up + ArtistTom Doolie + Album ArtistTom Doolie + ComposerTom Doolie + AlbumMade Up - Single + GenreHip-Hop/Rap + KindApple Music AAC audio file + Size5113971 + Total Time136744 + Disc Number1 + Disc Count1 + Track Number1 + Track Count1 + Year2023 + Bit Rate256 + Sample Rate44100 + Release Date2023-10-20T12:00:00Z + Artwork Count1 + Sort AlbumMade Up - Single + Sort ArtistTom Doolie + Sort NameMade Up + Persistent ID6EB396954F8161A8 + Track TypeRemote + Apple Music + Playlist Only + + 19148 + + Track ID19148 + Namedownload + KindAAC audio file + Size9011329 + Total Time253333 + Date Modified2023-11-26T10:57:14Z + Date Added2023-11-26T11:03:59Z + Bit Rate256 + Sample Rate44100 + Normalization1382 + Persistent IDEAAD55117CD1EA0D + Track TypeFile + Locationfile://localhost/C:/Users/ilusha/Music/iTunes/iTunes%20Media/Downloads/The%20Motorcycle%20Song%20_%20-%20_%20Acid%20Ghost.tmp/download.m4p + File Folder Count4 + Library Folder Count1 + + + Playlists + + + NameLibrary + Description + Master + Playlist ID7635 + Playlist Persistent IDF97714CF7DB12040 + Visible + All Items + Playlist Items + + + Track ID2437 + + + Track ID2439 + + + Track ID2441 + + + Track ID2443 + + + Track ID2445 + + + Track ID2447 + + + Track ID2449 + + + Track ID2451 + + + Track ID2453 + + + Track ID2455 + + + Track ID2457 + + + Track ID2459 + + + Track ID2461 + + + Track ID2463 + + + Track ID2465 + + + Track ID2467 + + + Track ID2469 + + + Track ID2471 + + + Track ID2473 + + + Track ID2475 + + + Track ID2477 + + + Track ID2479 + + + Track ID2481 + + + Track ID2483 + + + Track ID2485 + + + Track ID2487 + + + Track ID2489 + + + Track ID2491 + + + Track ID2493 + + + Track ID2495 + + + Track ID2497 + + + Track ID2499 + + + Track ID2501 + + + Track ID2503 + + + Track ID2505 + + + Track ID2507 + + + Track ID2509 + + + Track ID2511 + + + Track ID2513 + + + Track ID2515 + + + Track ID2517 + + + Track ID2519 + + + Track ID2521 + + + Track ID2523 + + + Track ID2525 + + + Track ID2527 + + + Track ID2529 + + + Track ID2531 + + + Track ID2533 + + + Track ID2535 + + + Track ID2537 + + + Track ID2539 + + + Track ID2541 + + + Track ID2543 + + + Track ID2545 + + + Track ID2547 + + + Track ID2549 + + + Track ID2551 + + + Track ID2553 + + + Track ID2555 + + + Track ID2557 + + + Track ID2559 + + + Track ID2561 + + + Track ID2563 + + + Track ID2565 + + + Track ID2567 + + + Track ID2569 + + + Track ID2571 + + + Track ID2573 + + + Track ID2575 + + + Track ID2577 + + + Track ID2579 + + + Track ID2581 + + + Track ID2583 + + + Track ID2585 + + + Track ID2587 + + + Track ID2589 + + + Track ID2591 + + + Track ID2593 + + + Track ID2595 + + + Track ID2597 + + + Track ID2599 + + + Track ID2601 + + + Track ID2603 + + + Track ID2605 + + + Track ID2607 + + + Track ID2609 + + + Track ID2611 + + + Track ID2613 + + + Track ID2615 + + + Track ID2617 + + + Track ID2619 + + + Track ID2621 + + + Track ID2623 + + + Track ID2625 + + + Track ID2627 + + + Track ID2629 + + + Track ID2631 + + + Track ID2633 + + + Track ID2635 + + + Track ID2637 + + + Track ID2639 + + + Track ID2641 + + + Track ID2643 + + + Track ID2645 + + + Track ID2647 + + + Track ID2649 + + + Track ID2651 + + + Track ID2653 + + + Track ID2655 + + + Track ID2657 + + + Track ID2659 + + + Track ID2661 + + + Track ID2663 + + + Track ID2665 + + + Track ID2667 + + + Track ID2669 + + + Track ID2671 + + + Track ID2673 + + + Track ID2675 + + + Track ID2677 + + + Track ID2679 + + + Track ID2681 + + + Track ID2683 + + + Track ID2685 + + + Track ID2687 + + + Track ID2689 + + + Track ID2691 + + + Track ID2693 + + + Track ID2695 + + + Track ID2697 + + + Track ID2699 + + + Track ID2701 + + + Track ID2703 + + + Track ID2705 + + + Track ID2707 + + + Track ID2709 + + + Track ID2711 + + + Track ID2713 + + + Track ID2715 + + + Track ID2717 + + + Track ID2719 + + + Track ID2721 + + + Track ID2723 + + + Track ID2725 + + + Track ID2727 + + + Track ID2729 + + + Track ID2731 + + + Track ID2733 + + + Track ID2735 + + + Track ID2737 + + + Track ID2739 + + + Track ID2741 + + + Track ID2743 + + + Track ID2745 + + + Track ID2747 + + + Track ID2749 + + + Track ID2751 + + + Track ID2753 + + + Track ID2755 + + + Track ID2757 + + + Track ID2759 + + + Track ID2761 + + + Track ID2763 + + + Track ID2765 + + + Track ID2767 + + + Track ID2769 + + + Track ID2771 + + + Track ID2773 + + + Track ID2775 + + + Track ID2777 + + + Track ID2779 + + + Track ID2781 + + + Track ID2783 + + + Track ID2785 + + + Track ID2787 + + + Track ID2789 + + + Track ID2791 + + + Track ID2793 + + + Track ID2795 + + + Track ID2797 + + + Track ID2799 + + + Track ID2801 + + + Track ID2803 + + + Track ID2805 + + + Track ID2807 + + + Track ID2809 + + + Track ID2811 + + + Track ID2813 + + + Track ID2815 + + + Track ID2817 + + + Track ID2819 + + + Track ID2821 + + + Track ID2823 + + + Track ID2825 + + + Track ID2827 + + + Track ID2829 + + + Track ID2831 + + + Track ID2833 + + + Track ID2835 + + + Track ID2837 + + + Track ID2839 + + + Track ID2841 + + + Track ID2843 + + + Track ID2845 + + + Track ID2847 + + + Track ID2849 + + + Track ID2851 + + + Track ID2853 + + + Track ID2855 + + + Track ID2857 + + + Track ID2859 + + + Track ID2861 + + + Track ID2863 + + + Track ID2865 + + + Track ID2867 + + + Track ID2869 + + + Track ID2871 + + + Track ID2873 + + + Track ID2875 + + + Track ID2877 + + + Track ID2879 + + + Track ID2881 + + + Track ID2883 + + + Track ID2885 + + + Track ID2887 + + + Track ID2889 + + + Track ID2891 + + + Track ID2893 + + + Track ID2895 + + + Track ID2897 + + + Track ID2899 + + + Track ID2901 + + + Track ID2903 + + + Track ID2905 + + + Track ID2907 + + + Track ID2909 + + + Track ID2911 + + + Track ID2913 + + + Track ID2915 + + + Track ID2917 + + + Track ID2919 + + + Track ID2921 + + + Track ID2923 + + + Track ID2925 + + + Track ID2927 + + + Track ID2929 + + + Track ID2931 + + + Track ID2933 + + + Track ID2935 + + + Track ID2937 + + + Track ID2939 + + + Track ID2941 + + + Track ID2943 + + + Track ID2945 + + + Track ID2947 + + + Track ID2949 + + + Track ID2951 + + + Track ID2953 + + + Track ID2955 + + + Track ID2957 + + + Track ID2959 + + + Track ID2961 + + + Track ID2963 + + + Track ID2965 + + + Track ID2967 + + + Track ID2969 + + + Track ID2971 + + + Track ID2973 + + + Track ID2975 + + + Track ID2977 + + + Track ID2979 + + + Track ID2981 + + + Track ID2983 + + + Track ID2985 + + + Track ID2987 + + + Track ID2989 + + + Track ID2991 + + + Track ID2993 + + + Track ID2995 + + + Track ID2997 + + + Track ID2999 + + + Track ID3001 + + + Track ID3003 + + + Track ID3005 + + + Track ID3007 + + + Track ID3009 + + + Track ID3011 + + + Track ID3013 + + + Track ID3015 + + + Track ID3017 + + + Track ID3019 + + + Track ID3021 + + + Track ID3023 + + + Track ID3025 + + + Track ID3027 + + + Track ID3029 + + + Track ID3031 + + + Track ID3033 + + + Track ID3035 + + + Track ID3037 + + + Track ID3039 + + + Track ID3041 + + + Track ID3043 + + + Track ID3045 + + + Track ID3047 + + + Track ID3049 + + + Track ID3051 + + + Track ID3053 + + + Track ID3055 + + + Track ID3057 + + + Track ID3059 + + + Track ID3061 + + + Track ID3063 + + + Track ID3065 + + + Track ID3067 + + + Track ID3069 + + + Track ID3071 + + + Track ID3073 + + + Track ID3075 + + + Track ID3077 + + + Track ID3079 + + + Track ID3081 + + + Track ID3083 + + + Track ID3085 + + + Track ID3087 + + + Track ID3089 + + + Track ID3091 + + + Track ID3093 + + + Track ID3095 + + + Track ID3097 + + + Track ID3099 + + + Track ID3101 + + + Track ID3103 + + + Track ID3105 + + + Track ID3107 + + + Track ID3109 + + + Track ID3111 + + + Track ID3113 + + + Track ID3115 + + + Track ID3117 + + + Track ID3119 + + + Track ID3121 + + + Track ID3123 + + + Track ID3125 + + + Track ID3127 + + + Track ID3129 + + + Track ID3131 + + + Track ID3133 + + + Track ID3135 + + + Track ID3137 + + + Track ID3139 + + + Track ID3141 + + + Track ID3143 + + + Track ID3145 + + + Track ID3147 + + + Track ID3149 + + + Track ID3151 + + + Track ID3153 + + + Track ID3155 + + + Track ID3157 + + + Track ID3159 + + + Track ID3161 + + + Track ID3163 + + + Track ID3165 + + + Track ID3167 + + + Track ID3169 + + + Track ID3171 + + + Track ID3173 + + + Track ID3175 + + + Track ID3177 + + + Track ID3179 + + + Track ID3181 + + + Track ID3183 + + + Track ID3185 + + + Track ID3187 + + + Track ID3189 + + + Track ID3191 + + + Track ID3193 + + + Track ID3195 + + + Track ID3197 + + + Track ID3199 + + + Track ID3201 + + + Track ID3203 + + + Track ID3205 + + + Track ID3207 + + + Track ID3209 + + + Track ID3211 + + + Track ID3213 + + + Track ID3215 + + + Track ID3217 + + + Track ID3219 + + + Track ID3221 + + + Track ID3223 + + + Track ID3225 + + + Track ID3227 + + + Track ID3229 + + + Track ID3231 + + + Track ID3233 + + + Track ID3235 + + + Track ID3237 + + + Track ID3239 + + + Track ID3241 + + + Track ID3243 + + + Track ID3245 + + + Track ID3247 + + + Track ID3249 + + + Track ID3251 + + + Track ID3253 + + + Track ID3255 + + + Track ID3257 + + + Track ID3259 + + + Track ID3261 + + + Track ID3263 + + + Track ID3265 + + + Track ID3267 + + + Track ID3269 + + + Track ID3271 + + + Track ID3273 + + + Track ID3275 + + + Track ID3277 + + + Track ID3279 + + + Track ID3281 + + + Track ID3283 + + + Track ID3285 + + + Track ID3287 + + + Track ID3289 + + + Track ID3291 + + + Track ID3293 + + + Track ID3295 + + + Track ID3297 + + + Track ID3299 + + + Track ID3301 + + + Track ID3303 + + + Track ID3305 + + + Track ID3307 + + + Track ID3309 + + + Track ID3311 + + + Track ID3313 + + + Track ID3315 + + + Track ID3317 + + + Track ID3319 + + + Track ID3321 + + + Track ID3323 + + + Track ID3325 + + + Track ID3327 + + + Track ID3329 + + + Track ID3331 + + + Track ID3333 + + + Track ID3335 + + + Track ID3337 + + + Track ID3339 + + + Track ID3341 + + + Track ID3343 + + + Track ID3345 + + + Track ID3347 + + + Track ID3349 + + + Track ID3351 + + + Track ID3353 + + + Track ID3355 + + + Track ID3357 + + + Track ID3359 + + + Track ID3361 + + + Track ID3363 + + + Track ID3365 + + + Track ID3367 + + + Track ID3369 + + + Track ID3371 + + + Track ID3373 + + + Track ID3375 + + + Track ID3377 + + + Track ID3379 + + + Track ID3381 + + + Track ID3383 + + + Track ID3385 + + + Track ID3387 + + + Track ID3389 + + + Track ID3391 + + + Track ID3393 + + + Track ID3395 + + + Track ID3397 + + + Track ID3399 + + + Track ID3401 + + + Track ID3403 + + + Track ID3405 + + + Track ID3407 + + + Track ID3409 + + + Track ID3411 + + + Track ID3413 + + + Track ID3415 + + + Track ID3417 + + + Track ID3419 + + + Track ID3421 + + + Track ID3423 + + + Track ID3425 + + + Track ID3427 + + + Track ID3429 + + + Track ID3431 + + + Track ID3433 + + + Track ID3435 + + + Track ID3437 + + + Track ID3439 + + + Track ID3441 + + + Track ID3443 + + + Track ID3445 + + + Track ID3447 + + + Track ID3449 + + + Track ID3451 + + + Track ID3453 + + + Track ID3455 + + + Track ID3457 + + + Track ID3459 + + + Track ID3461 + + + Track ID3463 + + + Track ID3465 + + + Track ID3467 + + + Track ID3469 + + + Track ID3471 + + + Track ID3473 + + + Track ID3475 + + + Track ID3477 + + + Track ID3479 + + + Track ID3481 + + + Track ID3483 + + + Track ID3485 + + + Track ID3487 + + + Track ID3489 + + + Track ID3491 + + + Track ID3493 + + + Track ID3495 + + + Track ID3497 + + + Track ID3499 + + + Track ID3501 + + + Track ID3503 + + + Track ID3505 + + + Track ID3507 + + + Track ID3509 + + + Track ID3511 + + + Track ID3513 + + + Track ID3515 + + + Track ID3517 + + + Track ID3519 + + + Track ID3521 + + + Track ID3523 + + + Track ID3525 + + + Track ID3527 + + + Track ID3529 + + + Track ID3531 + + + Track ID3533 + + + Track ID3535 + + + Track ID3537 + + + Track ID3539 + + + Track ID3541 + + + Track ID3543 + + + Track ID3545 + + + Track ID3547 + + + Track ID3549 + + + Track ID3551 + + + Track ID3553 + + + Track ID3555 + + + Track ID3557 + + + Track ID3559 + + + Track ID3561 + + + Track ID3563 + + + Track ID3565 + + + Track ID3567 + + + Track ID3569 + + + Track ID3571 + + + Track ID3573 + + + Track ID3575 + + + Track ID3577 + + + Track ID3579 + + + Track ID3581 + + + Track ID3583 + + + Track ID3585 + + + Track ID3587 + + + Track ID3589 + + + Track ID3591 + + + Track ID3593 + + + Track ID3595 + + + Track ID3597 + + + Track ID3599 + + + Track ID3601 + + + Track ID3603 + + + Track ID3605 + + + Track ID3607 + + + Track ID3609 + + + Track ID3611 + + + Track ID3613 + + + Track ID3615 + + + Track ID3617 + + + Track ID3619 + + + Track ID3621 + + + Track ID3623 + + + Track ID3625 + + + Track ID3627 + + + Track ID3629 + + + Track ID3631 + + + Track ID3633 + + + Track ID3635 + + + Track ID3637 + + + Track ID3639 + + + Track ID3641 + + + Track ID3643 + + + Track ID3645 + + + Track ID3647 + + + Track ID3649 + + + Track ID3651 + + + Track ID3653 + + + Track ID3655 + + + Track ID3657 + + + Track ID3659 + + + Track ID3661 + + + Track ID3663 + + + Track ID3665 + + + Track ID3667 + + + Track ID3669 + + + Track ID3671 + + + Track ID3673 + + + Track ID3675 + + + Track ID3677 + + + Track ID3679 + + + Track ID3681 + + + Track ID3683 + + + Track ID3685 + + + Track ID3687 + + + Track ID3689 + + + Track ID3691 + + + Track ID3693 + + + Track ID3695 + + + Track ID3697 + + + Track ID3699 + + + Track ID3701 + + + Track ID3703 + + + Track ID3705 + + + Track ID3707 + + + Track ID3709 + + + Track ID3711 + + + Track ID3713 + + + Track ID3715 + + + Track ID3717 + + + Track ID3719 + + + Track ID3721 + + + Track ID3723 + + + Track ID3725 + + + Track ID3727 + + + Track ID3729 + + + Track ID3731 + + + Track ID3733 + + + Track ID3735 + + + Track ID3737 + + + Track ID3739 + + + Track ID3741 + + + Track ID3743 + + + Track ID3745 + + + Track ID3747 + + + Track ID3749 + + + Track ID3751 + + + Track ID3753 + + + Track ID3755 + + + Track ID3757 + + + Track ID3759 + + + Track ID3761 + + + Track ID3763 + + + Track ID3765 + + + Track ID3767 + + + Track ID3769 + + + Track ID3771 + + + Track ID3773 + + + Track ID3775 + + + Track ID3777 + + + Track ID3779 + + + Track ID3781 + + + Track ID3783 + + + Track ID3785 + + + Track ID3787 + + + Track ID3789 + + + Track ID3791 + + + Track ID3793 + + + Track ID3795 + + + Track ID3797 + + + Track ID3799 + + + Track ID3801 + + + Track ID3803 + + + Track ID3805 + + + Track ID3807 + + + Track ID3809 + + + Track ID3811 + + + Track ID3813 + + + Track ID3815 + + + Track ID3817 + + + Track ID3819 + + + Track ID3821 + + + Track ID3823 + + + Track ID3825 + + + Track ID3827 + + + Track ID3829 + + + Track ID3831 + + + Track ID3833 + + + Track ID3835 + + + Track ID3837 + + + Track ID3839 + + + Track ID3841 + + + Track ID3843 + + + Track ID3845 + + + Track ID3847 + + + Track ID3849 + + + Track ID3851 + + + Track ID3853 + + + Track ID3855 + + + Track ID3857 + + + Track ID3859 + + + Track ID3861 + + + Track ID3863 + + + Track ID3865 + + + Track ID3867 + + + Track ID3869 + + + Track ID3871 + + + Track ID3873 + + + Track ID3875 + + + Track ID3877 + + + Track ID3879 + + + Track ID3881 + + + Track ID3883 + + + Track ID3885 + + + Track ID3887 + + + Track ID3889 + + + Track ID3891 + + + Track ID3893 + + + Track ID3895 + + + Track ID3897 + + + Track ID3899 + + + Track ID3901 + + + Track ID3903 + + + Track ID3905 + + + Track ID3907 + + + Track ID3909 + + + Track ID3911 + + + Track ID3913 + + + Track ID3915 + + + Track ID3917 + + + Track ID3919 + + + Track ID3921 + + + Track ID3923 + + + Track ID3925 + + + Track ID3927 + + + Track ID3929 + + + Track ID3931 + + + Track ID3933 + + + Track ID3935 + + + Track ID3937 + + + Track ID3939 + + + Track ID3941 + + + Track ID3943 + + + Track ID3945 + + + Track ID3947 + + + Track ID3949 + + + Track ID3951 + + + Track ID3953 + + + Track ID3955 + + + Track ID3957 + + + Track ID3959 + + + Track ID3961 + + + Track ID3963 + + + Track ID3965 + + + Track ID3967 + + + Track ID3969 + + + Track ID3971 + + + Track ID3973 + + + Track ID3975 + + + Track ID3977 + + + Track ID3979 + + + Track ID3981 + + + Track ID3983 + + + Track ID3985 + + + Track ID3987 + + + Track ID3989 + + + Track ID3991 + + + Track ID3993 + + + Track ID3995 + + + Track ID3997 + + + Track ID3999 + + + Track ID4001 + + + Track ID4003 + + + Track ID4005 + + + Track ID4007 + + + Track ID4009 + + + Track ID4011 + + + Track ID4013 + + + Track ID4015 + + + Track ID4017 + + + Track ID4019 + + + Track ID4021 + + + Track ID4023 + + + Track ID4025 + + + Track ID4027 + + + Track ID4029 + + + Track ID4031 + + + Track ID4033 + + + Track ID4035 + + + Track ID4037 + + + Track ID4039 + + + Track ID4041 + + + Track ID4043 + + + Track ID4045 + + + Track ID4047 + + + Track ID4049 + + + Track ID4051 + + + Track ID4053 + + + Track ID4055 + + + Track ID4057 + + + Track ID4059 + + + Track ID4061 + + + Track ID4063 + + + Track ID4065 + + + Track ID4067 + + + Track ID4069 + + + Track ID4071 + + + Track ID4073 + + + Track ID4075 + + + Track ID4077 + + + Track ID4079 + + + Track ID4081 + + + Track ID4083 + + + Track ID4085 + + + Track ID4087 + + + Track ID4089 + + + Track ID4091 + + + Track ID4093 + + + Track ID4095 + + + Track ID4097 + + + Track ID4099 + + + Track ID4101 + + + Track ID4103 + + + Track ID4105 + + + Track ID4107 + + + Track ID4109 + + + Track ID4111 + + + Track ID4113 + + + Track ID4115 + + + Track ID4117 + + + Track ID4119 + + + Track ID4121 + + + Track ID4123 + + + Track ID4125 + + + Track ID4127 + + + Track ID4129 + + + Track ID4131 + + + Track ID4133 + + + Track ID4135 + + + Track ID4137 + + + Track ID4139 + + + Track ID4141 + + + Track ID4143 + + + Track ID4145 + + + Track ID4147 + + + Track ID4149 + + + Track ID4151 + + + Track ID4153 + + + Track ID4155 + + + Track ID4157 + + + Track ID4159 + + + Track ID4161 + + + Track ID4163 + + + Track ID4165 + + + Track ID4167 + + + Track ID4169 + + + Track ID4171 + + + Track ID4173 + + + Track ID4175 + + + Track ID4177 + + + Track ID4179 + + + Track ID4181 + + + Track ID4183 + + + Track ID4185 + + + Track ID4187 + + + Track ID4189 + + + Track ID4191 + + + Track ID4193 + + + Track ID4195 + + + Track ID4197 + + + Track ID4199 + + + Track ID4201 + + + Track ID4203 + + + Track ID4205 + + + Track ID4207 + + + Track ID4209 + + + Track ID4211 + + + Track ID4213 + + + Track ID4215 + + + Track ID4217 + + + Track ID4219 + + + Track ID4221 + + + Track ID4223 + + + Track ID4225 + + + Track ID4227 + + + Track ID4229 + + + Track ID4231 + + + Track ID4233 + + + Track ID4235 + + + Track ID4237 + + + Track ID4239 + + + Track ID4241 + + + Track ID4243 + + + Track ID4245 + + + Track ID4247 + + + Track ID4249 + + + Track ID4251 + + + Track ID4253 + + + Track ID4255 + + + Track ID4257 + + + Track ID4259 + + + Track ID4261 + + + Track ID4263 + + + Track ID4265 + + + Track ID4267 + + + Track ID4269 + + + Track ID4271 + + + Track ID4273 + + + Track ID4275 + + + Track ID4277 + + + Track ID4279 + + + Track ID4281 + + + Track ID4283 + + + Track ID4285 + + + Track ID4287 + + + Track ID4289 + + + Track ID4291 + + + Track ID4293 + + + Track ID4295 + + + Track ID4297 + + + Track ID4299 + + + Track ID4301 + + + Track ID4303 + + + Track ID4305 + + + Track ID4307 + + + Track ID4309 + + + Track ID4311 + + + Track ID4313 + + + Track ID4315 + + + Track ID4317 + + + Track ID4319 + + + Track ID4321 + + + Track ID4323 + + + Track ID4325 + + + Track ID4327 + + + Track ID4329 + + + Track ID4331 + + + Track ID4333 + + + Track ID4335 + + + Track ID4337 + + + Track ID4339 + + + Track ID4341 + + + Track ID4343 + + + Track ID4345 + + + Track ID4347 + + + Track ID4349 + + + Track ID4351 + + + Track ID4353 + + + Track ID4355 + + + Track ID4357 + + + Track ID4359 + + + Track ID4361 + + + Track ID4363 + + + Track ID4365 + + + Track ID4367 + + + Track ID4369 + + + Track ID4371 + + + Track ID4373 + + + Track ID4375 + + + Track ID4377 + + + Track ID4379 + + + Track ID4381 + + + Track ID4383 + + + Track ID4385 + + + Track ID4387 + + + Track ID4389 + + + Track ID4391 + + + Track ID4393 + + + Track ID4395 + + + Track ID4397 + + + Track ID4399 + + + Track ID4401 + + + Track ID4403 + + + Track ID4405 + + + Track ID4407 + + + Track ID4409 + + + Track ID4411 + + + Track ID4413 + + + Track ID4415 + + + Track ID4417 + + + Track ID4419 + + + Track ID4421 + + + Track ID4423 + + + Track ID4425 + + + Track ID4427 + + + Track ID4429 + + + Track ID4431 + + + Track ID4433 + + + Track ID4435 + + + Track ID4437 + + + Track ID4439 + + + Track ID4441 + + + Track ID4443 + + + Track ID4445 + + + Track ID4447 + + + Track ID4449 + + + Track ID4451 + + + Track ID4453 + + + Track ID4455 + + + Track ID4457 + + + Track ID4459 + + + Track ID4461 + + + Track ID4463 + + + Track ID4465 + + + Track ID4467 + + + Track ID4469 + + + Track ID4471 + + + Track ID4473 + + + Track ID4475 + + + Track ID4477 + + + Track ID4479 + + + Track ID4481 + + + Track ID4483 + + + Track ID4485 + + + Track ID4487 + + + Track ID4489 + + + Track ID4491 + + + Track ID4493 + + + Track ID4495 + + + Track ID4497 + + + Track ID4499 + + + Track ID4501 + + + Track ID4503 + + + Track ID4505 + + + Track ID4507 + + + Track ID4509 + + + Track ID4511 + + + Track ID4513 + + + Track ID4515 + + + Track ID4517 + + + Track ID4519 + + + Track ID4521 + + + Track ID4523 + + + Track ID4525 + + + Track ID4527 + + + Track ID4529 + + + Track ID4531 + + + Track ID4533 + + + Track ID4535 + + + Track ID4537 + + + Track ID4539 + + + Track ID4541 + + + Track ID4543 + + + Track ID4545 + + + Track ID4547 + + + Track ID4549 + + + Track ID4551 + + + Track ID4553 + + + Track ID4555 + + + Track ID4557 + + + Track ID4559 + + + Track ID4561 + + + Track ID4563 + + + Track ID4565 + + + Track ID4567 + + + Track ID4569 + + + Track ID4571 + + + Track ID4573 + + + Track ID4575 + + + Track ID4577 + + + Track ID4579 + + + Track ID4581 + + + Track ID4583 + + + Track ID4585 + + + Track ID4587 + + + Track ID4589 + + + Track ID4591 + + + Track ID4593 + + + Track ID4595 + + + Track ID4597 + + + Track ID4599 + + + Track ID4601 + + + Track ID4603 + + + Track ID4605 + + + Track ID4607 + + + Track ID4609 + + + Track ID4611 + + + Track ID4613 + + + Track ID4615 + + + Track ID4617 + + + Track ID4619 + + + Track ID4621 + + + Track ID4623 + + + Track ID4625 + + + Track ID4627 + + + Track ID4629 + + + Track ID4631 + + + Track ID4633 + + + Track ID4635 + + + Track ID4637 + + + Track ID4639 + + + Track ID4641 + + + Track ID4643 + + + Track ID4645 + + + Track ID4647 + + + Track ID4649 + + + Track ID4651 + + + Track ID4653 + + + Track ID4655 + + + Track ID4657 + + + Track ID4659 + + + Track ID4661 + + + Track ID4663 + + + Track ID4665 + + + Track ID4667 + + + Track ID4669 + + + Track ID4671 + + + Track ID4673 + + + Track ID4675 + + + Track ID4677 + + + Track ID4679 + + + Track ID4681 + + + Track ID4683 + + + Track ID4685 + + + Track ID4687 + + + Track ID4689 + + + Track ID4691 + + + Track ID4693 + + + Track ID4695 + + + Track ID4697 + + + Track ID4699 + + + Track ID4701 + + + Track ID4703 + + + Track ID4705 + + + Track ID4707 + + + Track ID4709 + + + Track ID4711 + + + Track ID4713 + + + Track ID4715 + + + Track ID4717 + + + Track ID4719 + + + Track ID4721 + + + Track ID4723 + + + Track ID4725 + + + Track ID4727 + + + Track ID4729 + + + Track ID4731 + + + Track ID4733 + + + Track ID4735 + + + Track ID4737 + + + Track ID4739 + + + Track ID4741 + + + Track ID4743 + + + Track ID4745 + + + Track ID4747 + + + Track ID4749 + + + Track ID4751 + + + Track ID4753 + + + Track ID4755 + + + Track ID4757 + + + Track ID4759 + + + Track ID4761 + + + Track ID4763 + + + Track ID4765 + + + Track ID4767 + + + Track ID4769 + + + Track ID4771 + + + Track ID4773 + + + Track ID4775 + + + Track ID4777 + + + Track ID4779 + + + Track ID4781 + + + Track ID4783 + + + Track ID4785 + + + Track ID4787 + + + Track ID4789 + + + Track ID4791 + + + Track ID4793 + + + Track ID4795 + + + Track ID4797 + + + Track ID4799 + + + Track ID4801 + + + Track ID4803 + + + Track ID4805 + + + Track ID4807 + + + Track ID4809 + + + Track ID4811 + + + Track ID4813 + + + Track ID4815 + + + Track ID4817 + + + Track ID4819 + + + Track ID4821 + + + Track ID4823 + + + Track ID4825 + + + Track ID4827 + + + Track ID4829 + + + Track ID4831 + + + Track ID4833 + + + Track ID4835 + + + Track ID4837 + + + Track ID4839 + + + Track ID4841 + + + Track ID4843 + + + Track ID4845 + + + Track ID4847 + + + Track ID4849 + + + Track ID4851 + + + Track ID4853 + + + Track ID4855 + + + Track ID4857 + + + Track ID4859 + + + Track ID4861 + + + Track ID4863 + + + Track ID4865 + + + Track ID4867 + + + Track ID4869 + + + Track ID4871 + + + Track ID4873 + + + Track ID4875 + + + Track ID4877 + + + Track ID4879 + + + Track ID4881 + + + Track ID4883 + + + Track ID4885 + + + Track ID4887 + + + Track ID4889 + + + Track ID4891 + + + Track ID4893 + + + Track ID4895 + + + Track ID4897 + + + Track ID4899 + + + Track ID4901 + + + Track ID4903 + + + Track ID4905 + + + Track ID4907 + + + Track ID4909 + + + Track ID4911 + + + Track ID4913 + + + Track ID4915 + + + Track ID4917 + + + Track ID4919 + + + Track ID4921 + + + Track ID4923 + + + Track ID4925 + + + Track ID4927 + + + Track ID4929 + + + Track ID4931 + + + Track ID4933 + + + Track ID4935 + + + Track ID4937 + + + Track ID4939 + + + Track ID4941 + + + Track ID4943 + + + Track ID4945 + + + Track ID4947 + + + Track ID4949 + + + Track ID4951 + + + Track ID4953 + + + Track ID4955 + + + Track ID4957 + + + Track ID4959 + + + Track ID4961 + + + Track ID4963 + + + Track ID4965 + + + Track ID4967 + + + Track ID4969 + + + Track ID4971 + + + Track ID4973 + + + Track ID4975 + + + Track ID4977 + + + Track ID4979 + + + Track ID4981 + + + Track ID4983 + + + Track ID4985 + + + Track ID4987 + + + Track ID4989 + + + Track ID4991 + + + Track ID4993 + + + Track ID4995 + + + Track ID4997 + + + Track ID4999 + + + Track ID5001 + + + Track ID5003 + + + Track ID5005 + + + Track ID5007 + + + Track ID5009 + + + Track ID5011 + + + Track ID5013 + + + Track ID5015 + + + Track ID5017 + + + Track ID5019 + + + Track ID5021 + + + Track ID5023 + + + Track ID5025 + + + Track ID5027 + + + Track ID5029 + + + Track ID5031 + + + Track ID5033 + + + Track ID5035 + + + Track ID5037 + + + Track ID5039 + + + Track ID5041 + + + Track ID5043 + + + Track ID5045 + + + Track ID5047 + + + Track ID5049 + + + Track ID5051 + + + Track ID5053 + + + Track ID5055 + + + Track ID5057 + + + Track ID5059 + + + Track ID5061 + + + Track ID5063 + + + Track ID5065 + + + Track ID5067 + + + Track ID5069 + + + Track ID5071 + + + Track ID5073 + + + Track ID5075 + + + Track ID5077 + + + Track ID5079 + + + Track ID5081 + + + Track ID5083 + + + Track ID5085 + + + Track ID5087 + + + Track ID5089 + + + Track ID5091 + + + Track ID5093 + + + Track ID5095 + + + Track ID5097 + + + Track ID5099 + + + Track ID5101 + + + Track ID5103 + + + Track ID5105 + + + Track ID5107 + + + Track ID5109 + + + Track ID5111 + + + Track ID5113 + + + Track ID5115 + + + Track ID5117 + + + Track ID5119 + + + Track ID5121 + + + Track ID5123 + + + Track ID5125 + + + Track ID5127 + + + Track ID5129 + + + Track ID5131 + + + Track ID5133 + + + Track ID5135 + + + Track ID5137 + + + Track ID5139 + + + Track ID5141 + + + Track ID5143 + + + Track ID5145 + + + Track ID5147 + + + Track ID5149 + + + Track ID5151 + + + Track ID5153 + + + Track ID5155 + + + Track ID5157 + + + Track ID5159 + + + Track ID5161 + + + Track ID5163 + + + Track ID5165 + + + Track ID5167 + + + Track ID5169 + + + Track ID5171 + + + Track ID5173 + + + Track ID5175 + + + Track ID5177 + + + Track ID5179 + + + Track ID5181 + + + Track ID5183 + + + Track ID5185 + + + Track ID5187 + + + Track ID5189 + + + Track ID5191 + + + Track ID5193 + + + Track ID5195 + + + Track ID5197 + + + Track ID5199 + + + Track ID5201 + + + Track ID5203 + + + Track ID5205 + + + Track ID5207 + + + Track ID5209 + + + Track ID5211 + + + Track ID5213 + + + Track ID5215 + + + Track ID5217 + + + Track ID5219 + + + Track ID5221 + + + Track ID5223 + + + Track ID5225 + + + Track ID5227 + + + Track ID5229 + + + Track ID5231 + + + Track ID5233 + + + Track ID5235 + + + Track ID5237 + + + Track ID5239 + + + Track ID5241 + + + Track ID5243 + + + Track ID5245 + + + Track ID5247 + + + Track ID5249 + + + Track ID5251 + + + Track ID5253 + + + Track ID5255 + + + Track ID5257 + + + Track ID5259 + + + Track ID5261 + + + Track ID5263 + + + Track ID5265 + + + Track ID5267 + + + Track ID5269 + + + Track ID5271 + + + Track ID5273 + + + Track ID5275 + + + Track ID5277 + + + Track ID5279 + + + Track ID5281 + + + Track ID5283 + + + Track ID5285 + + + Track ID5287 + + + Track ID5289 + + + Track ID5291 + + + Track ID5293 + + + Track ID5295 + + + Track ID5297 + + + Track ID5299 + + + Track ID5301 + + + Track ID5303 + + + Track ID5305 + + + Track ID5307 + + + Track ID5309 + + + Track ID5311 + + + Track ID5313 + + + Track ID5315 + + + Track ID5317 + + + Track ID5319 + + + Track ID5321 + + + Track ID5323 + + + Track ID5325 + + + Track ID5327 + + + Track ID5329 + + + Track ID5331 + + + Track ID5333 + + + Track ID5335 + + + Track ID5337 + + + Track ID5339 + + + Track ID5341 + + + Track ID5343 + + + Track ID5345 + + + Track ID5347 + + + Track ID5349 + + + Track ID5351 + + + Track ID5353 + + + Track ID5355 + + + Track ID5357 + + + Track ID5359 + + + Track ID5361 + + + Track ID5363 + + + Track ID5365 + + + Track ID5367 + + + Track ID5369 + + + Track ID5371 + + + Track ID5373 + + + Track ID5375 + + + Track ID5377 + + + Track ID5379 + + + Track ID5381 + + + Track ID5383 + + + Track ID5385 + + + Track ID5387 + + + Track ID5389 + + + Track ID5391 + + + Track ID5393 + + + Track ID5395 + + + Track ID5397 + + + Track ID5399 + + + Track ID5401 + + + Track ID5403 + + + Track ID5405 + + + Track ID5407 + + + Track ID5409 + + + Track ID5411 + + + Track ID5413 + + + Track ID5415 + + + Track ID5417 + + + Track ID5419 + + + Track ID5421 + + + Track ID5423 + + + Track ID5425 + + + Track ID5427 + + + Track ID5429 + + + Track ID5431 + + + Track ID5433 + + + Track ID5435 + + + Track ID5437 + + + Track ID5439 + + + Track ID5441 + + + Track ID5443 + + + Track ID5445 + + + Track ID5447 + + + Track ID5449 + + + Track ID5451 + + + Track ID5453 + + + Track ID5455 + + + Track ID5457 + + + Track ID5459 + + + Track ID5461 + + + Track ID5463 + + + Track ID5465 + + + Track ID5467 + + + Track ID5469 + + + Track ID5471 + + + Track ID5473 + + + Track ID5475 + + + Track ID5477 + + + Track ID5479 + + + Track ID5481 + + + Track ID5483 + + + Track ID5485 + + + Track ID5487 + + + Track ID5489 + + + Track ID5491 + + + Track ID5493 + + + Track ID5495 + + + Track ID5497 + + + Track ID5499 + + + Track ID5501 + + + Track ID5503 + + + Track ID5505 + + + Track ID5507 + + + Track ID5509 + + + Track ID5511 + + + Track ID5513 + + + Track ID5515 + + + Track ID5517 + + + Track ID5519 + + + Track ID5521 + + + Track ID5523 + + + Track ID5525 + + + Track ID5527 + + + Track ID5529 + + + Track ID5531 + + + Track ID5533 + + + Track ID5535 + + + Track ID5537 + + + Track ID5539 + + + Track ID5541 + + + Track ID5543 + + + Track ID5545 + + + Track ID5547 + + + Track ID5549 + + + Track ID5551 + + + Track ID5553 + + + Track ID5555 + + + Track ID5557 + + + Track ID5559 + + + Track ID5561 + + + Track ID5563 + + + Track ID5565 + + + Track ID5567 + + + Track ID5569 + + + Track ID5571 + + + Track ID5573 + + + Track ID5575 + + + Track ID5577 + + + Track ID5579 + + + Track ID5581 + + + Track ID5583 + + + Track ID5585 + + + Track ID5587 + + + Track ID5589 + + + Track ID5591 + + + Track ID5593 + + + Track ID5595 + + + Track ID5597 + + + Track ID5599 + + + Track ID5601 + + + Track ID5603 + + + Track ID5605 + + + Track ID5607 + + + Track ID5609 + + + Track ID5611 + + + Track ID5613 + + + Track ID5615 + + + Track ID5617 + + + Track ID5619 + + + Track ID5621 + + + Track ID5623 + + + Track ID5625 + + + Track ID5627 + + + Track ID5629 + + + Track ID5631 + + + Track ID5633 + + + Track ID5635 + + + Track ID5637 + + + Track ID5639 + + + Track ID5641 + + + Track ID5643 + + + Track ID5645 + + + Track ID5647 + + + Track ID5649 + + + Track ID5651 + + + Track ID5653 + + + Track ID5655 + + + Track ID5657 + + + Track ID5659 + + + Track ID5661 + + + Track ID5663 + + + Track ID5665 + + + Track ID5667 + + + Track ID5669 + + + Track ID5671 + + + Track ID5673 + + + Track ID5675 + + + Track ID5677 + + + Track ID5679 + + + Track ID5681 + + + Track ID5683 + + + Track ID5685 + + + Track ID5687 + + + Track ID5689 + + + Track ID5691 + + + Track ID5693 + + + Track ID5695 + + + Track ID5697 + + + Track ID5699 + + + Track ID5701 + + + Track ID5703 + + + Track ID5705 + + + Track ID5707 + + + Track ID5709 + + + Track ID5711 + + + Track ID5713 + + + Track ID5715 + + + Track ID5717 + + + Track ID5719 + + + Track ID5721 + + + Track ID5723 + + + Track ID5725 + + + Track ID5727 + + + Track ID5729 + + + Track ID5731 + + + Track ID5733 + + + Track ID5735 + + + Track ID5737 + + + Track ID5739 + + + Track ID5741 + + + Track ID5743 + + + Track ID5745 + + + Track ID5747 + + + Track ID5749 + + + Track ID5751 + + + Track ID5753 + + + Track ID5755 + + + Track ID5757 + + + Track ID5759 + + + Track ID5761 + + + Track ID5763 + + + Track ID5765 + + + Track ID5767 + + + Track ID5769 + + + Track ID5771 + + + Track ID5773 + + + Track ID5775 + + + Track ID5777 + + + Track ID5779 + + + Track ID5781 + + + Track ID5783 + + + Track ID5785 + + + Track ID5787 + + + Track ID5789 + + + Track ID5791 + + + Track ID5793 + + + Track ID5795 + + + Track ID5797 + + + Track ID5799 + + + Track ID5801 + + + Track ID5803 + + + Track ID5805 + + + Track ID5807 + + + Track ID5809 + + + Track ID5811 + + + Track ID5813 + + + Track ID5815 + + + Track ID5817 + + + Track ID5819 + + + Track ID5821 + + + Track ID5823 + + + Track ID5825 + + + Track ID5827 + + + Track ID5829 + + + Track ID5831 + + + Track ID5833 + + + Track ID5835 + + + Track ID5837 + + + Track ID5839 + + + Track ID5841 + + + Track ID5843 + + + Track ID5845 + + + Track ID5847 + + + Track ID5849 + + + Track ID5851 + + + Track ID5853 + + + Track ID5855 + + + Track ID5857 + + + Track ID5859 + + + Track ID5861 + + + Track ID5863 + + + Track ID5865 + + + Track ID5867 + + + Track ID5869 + + + Track ID5871 + + + Track ID5873 + + + Track ID5875 + + + Track ID5877 + + + Track ID5879 + + + Track ID5881 + + + Track ID5883 + + + Track ID5885 + + + Track ID5887 + + + Track ID5889 + + + Track ID5891 + + + Track ID5893 + + + Track ID5895 + + + Track ID5897 + + + Track ID5899 + + + Track ID5901 + + + Track ID5903 + + + Track ID5905 + + + Track ID5907 + + + Track ID5909 + + + Track ID5911 + + + Track ID5913 + + + Track ID5915 + + + Track ID5917 + + + Track ID5919 + + + Track ID5921 + + + Track ID5923 + + + Track ID5925 + + + Track ID5927 + + + Track ID5929 + + + Track ID5931 + + + Track ID5933 + + + Track ID5935 + + + Track ID5937 + + + Track ID5939 + + + Track ID5941 + + + Track ID5943 + + + Track ID5945 + + + Track ID5947 + + + Track ID5949 + + + Track ID5951 + + + Track ID5953 + + + Track ID5955 + + + Track ID5957 + + + Track ID5959 + + + Track ID5961 + + + Track ID5963 + + + Track ID5965 + + + Track ID5967 + + + Track ID5969 + + + Track ID5971 + + + Track ID5973 + + + Track ID5975 + + + Track ID5977 + + + Track ID5979 + + + Track ID5981 + + + Track ID5983 + + + Track ID5985 + + + Track ID5987 + + + Track ID5989 + + + Track ID5991 + + + Track ID5993 + + + Track ID5995 + + + Track ID5997 + + + Track ID5999 + + + Track ID6001 + + + Track ID6003 + + + Track ID6005 + + + Track ID6007 + + + Track ID6009 + + + Track ID6011 + + + Track ID6013 + + + Track ID6015 + + + Track ID6017 + + + Track ID6019 + + + Track ID6021 + + + Track ID6023 + + + Track ID6025 + + + Track ID6027 + + + Track ID6029 + + + Track ID6031 + + + Track ID6033 + + + Track ID6035 + + + Track ID6037 + + + Track ID6039 + + + Track ID6041 + + + Track ID6043 + + + Track ID6045 + + + Track ID6047 + + + Track ID6049 + + + Track ID6051 + + + Track ID6053 + + + Track ID6055 + + + Track ID6057 + + + Track ID6059 + + + Track ID6061 + + + Track ID6063 + + + Track ID6065 + + + Track ID6067 + + + Track ID6069 + + + Track ID6071 + + + Track ID6073 + + + Track ID6075 + + + Track ID6077 + + + Track ID6079 + + + Track ID6081 + + + Track ID6083 + + + Track ID6085 + + + Track ID6087 + + + Track ID6089 + + + Track ID6091 + + + Track ID6093 + + + Track ID6095 + + + Track ID6097 + + + Track ID6099 + + + Track ID6101 + + + Track ID6103 + + + Track ID6105 + + + Track ID6107 + + + Track ID6109 + + + Track ID6111 + + + Track ID6113 + + + Track ID6115 + + + Track ID6117 + + + Track ID6119 + + + Track ID6121 + + + Track ID6123 + + + Track ID6125 + + + Track ID6127 + + + Track ID6129 + + + Track ID6131 + + + Track ID6133 + + + Track ID6135 + + + Track ID6137 + + + Track ID6139 + + + Track ID6141 + + + Track ID6143 + + + Track ID6145 + + + Track ID6147 + + + Track ID6149 + + + Track ID6151 + + + Track ID6153 + + + Track ID6155 + + + Track ID6157 + + + Track ID6159 + + + Track ID6161 + + + Track ID6163 + + + Track ID6165 + + + Track ID6167 + + + Track ID6169 + + + Track ID6171 + + + Track ID6173 + + + Track ID6175 + + + Track ID6177 + + + Track ID6179 + + + Track ID6181 + + + Track ID6183 + + + Track ID6185 + + + Track ID6187 + + + Track ID6189 + + + Track ID6191 + + + Track ID6193 + + + Track ID6195 + + + Track ID6197 + + + Track ID6199 + + + Track ID6201 + + + Track ID6203 + + + Track ID6205 + + + Track ID6207 + + + Track ID6209 + + + Track ID6211 + + + Track ID6213 + + + Track ID6215 + + + Track ID6217 + + + Track ID6219 + + + Track ID6221 + + + Track ID6223 + + + Track ID6225 + + + Track ID6227 + + + Track ID6229 + + + Track ID6231 + + + Track ID6233 + + + Track ID6235 + + + Track ID6237 + + + Track ID6239 + + + Track ID6241 + + + Track ID6243 + + + Track ID6245 + + + Track ID6247 + + + Track ID6249 + + + Track ID6251 + + + Track ID6253 + + + Track ID6255 + + + Track ID6257 + + + Track ID6259 + + + Track ID6261 + + + Track ID6263 + + + Track ID6265 + + + Track ID6267 + + + Track ID6269 + + + Track ID6271 + + + Track ID6273 + + + Track ID6275 + + + Track ID6277 + + + Track ID6279 + + + Track ID6281 + + + Track ID6283 + + + Track ID6285 + + + Track ID6287 + + + Track ID6289 + + + Track ID6291 + + + Track ID6293 + + + Track ID6295 + + + Track ID6297 + + + Track ID6299 + + + Track ID6301 + + + Track ID6303 + + + Track ID6305 + + + Track ID6307 + + + Track ID6309 + + + Track ID6311 + + + Track ID6313 + + + Track ID6315 + + + Track ID6317 + + + Track ID6319 + + + Track ID6321 + + + Track ID6323 + + + Track ID6325 + + + Track ID6327 + + + Track ID6329 + + + Track ID6331 + + + Track ID6333 + + + Track ID6335 + + + Track ID6337 + + + Track ID6339 + + + Track ID6341 + + + Track ID6343 + + + Track ID6345 + + + Track ID6347 + + + Track ID6349 + + + Track ID6351 + + + Track ID6353 + + + Track ID6355 + + + Track ID6357 + + + Track ID6359 + + + Track ID6361 + + + Track ID6363 + + + Track ID6365 + + + Track ID6367 + + + Track ID6369 + + + Track ID6371 + + + Track ID6373 + + + Track ID6375 + + + Track ID6377 + + + Track ID6379 + + + Track ID6381 + + + Track ID6383 + + + Track ID6385 + + + Track ID6387 + + + Track ID6389 + + + Track ID6391 + + + Track ID6393 + + + Track ID6395 + + + Track ID6397 + + + Track ID6399 + + + Track ID6401 + + + Track ID6403 + + + Track ID6405 + + + Track ID6407 + + + Track ID6409 + + + Track ID6411 + + + Track ID6413 + + + Track ID6415 + + + Track ID6417 + + + Track ID6419 + + + Track ID6421 + + + Track ID6423 + + + Track ID6425 + + + Track ID6427 + + + Track ID6429 + + + Track ID6431 + + + Track ID6433 + + + Track ID6435 + + + Track ID6437 + + + Track ID6439 + + + Track ID6441 + + + Track ID6443 + + + Track ID6445 + + + Track ID6447 + + + Track ID6449 + + + Track ID6451 + + + Track ID6453 + + + Track ID6455 + + + Track ID6457 + + + Track ID6459 + + + Track ID6461 + + + Track ID6463 + + + Track ID6465 + + + Track ID6467 + + + Track ID6469 + + + Track ID6471 + + + Track ID6473 + + + Track ID6475 + + + Track ID6477 + + + Track ID6479 + + + Track ID6481 + + + Track ID6483 + + + Track ID6485 + + + Track ID6487 + + + Track ID6489 + + + Track ID6491 + + + Track ID6493 + + + Track ID6495 + + + Track ID6497 + + + Track ID6499 + + + Track ID6501 + + + Track ID6503 + + + Track ID6505 + + + Track ID6507 + + + Track ID6509 + + + Track ID6511 + + + Track ID6513 + + + Track ID6515 + + + Track ID6517 + + + Track ID6519 + + + Track ID6521 + + + Track ID6523 + + + Track ID6525 + + + Track ID6527 + + + Track ID6529 + + + Track ID6531 + + + Track ID6533 + + + Track ID6535 + + + Track ID6537 + + + Track ID6539 + + + Track ID6541 + + + Track ID6543 + + + Track ID6545 + + + Track ID6547 + + + Track ID6549 + + + Track ID6551 + + + Track ID6553 + + + Track ID6555 + + + Track ID6557 + + + Track ID6559 + + + Track ID6561 + + + Track ID6563 + + + Track ID6565 + + + Track ID6567 + + + Track ID6569 + + + Track ID6571 + + + Track ID6573 + + + Track ID6575 + + + Track ID6577 + + + Track ID6579 + + + Track ID6581 + + + Track ID6583 + + + Track ID6585 + + + Track ID6587 + + + Track ID6589 + + + Track ID6591 + + + Track ID6593 + + + Track ID6595 + + + Track ID6597 + + + Track ID6599 + + + Track ID6601 + + + Track ID6603 + + + Track ID6605 + + + Track ID6607 + + + Track ID6609 + + + Track ID6611 + + + Track ID6613 + + + Track ID6615 + + + Track ID6617 + + + Track ID6619 + + + Track ID6621 + + + Track ID6623 + + + Track ID6625 + + + Track ID6627 + + + Track ID6629 + + + Track ID6631 + + + Track ID6633 + + + Track ID6635 + + + Track ID6637 + + + Track ID6639 + + + Track ID6641 + + + Track ID6643 + + + Track ID6645 + + + Track ID6647 + + + Track ID6649 + + + Track ID6651 + + + Track ID6653 + + + Track ID6655 + + + Track ID6657 + + + Track ID6659 + + + Track ID6661 + + + Track ID6663 + + + Track ID6665 + + + Track ID6667 + + + Track ID6669 + + + Track ID6671 + + + Track ID6673 + + + Track ID6675 + + + Track ID6677 + + + Track ID6679 + + + Track ID6681 + + + Track ID6683 + + + Track ID6685 + + + Track ID6687 + + + Track ID6689 + + + Track ID6691 + + + Track ID6693 + + + Track ID6695 + + + Track ID6697 + + + Track ID6699 + + + Track ID6701 + + + Track ID6703 + + + Track ID6705 + + + Track ID6707 + + + Track ID6709 + + + Track ID6711 + + + Track ID6713 + + + Track ID6715 + + + Track ID6717 + + + Track ID6719 + + + Track ID6721 + + + Track ID6723 + + + Track ID6725 + + + Track ID6727 + + + Track ID6729 + + + Track ID6731 + + + Track ID6733 + + + Track ID6735 + + + Track ID6737 + + + Track ID6739 + + + Track ID6741 + + + Track ID6743 + + + Track ID6745 + + + Track ID6747 + + + Track ID6749 + + + Track ID6751 + + + Track ID6753 + + + Track ID6755 + + + Track ID6757 + + + Track ID6759 + + + Track ID6761 + + + Track ID6763 + + + Track ID6765 + + + Track ID6767 + + + Track ID6769 + + + Track ID6771 + + + Track ID6773 + + + Track ID6775 + + + Track ID6777 + + + Track ID6779 + + + Track ID6781 + + + Track ID6783 + + + Track ID6785 + + + Track ID6787 + + + Track ID6789 + + + Track ID6791 + + + Track ID6793 + + + Track ID6795 + + + Track ID6797 + + + Track ID6799 + + + Track ID6801 + + + Track ID6803 + + + Track ID6805 + + + Track ID6807 + + + Track ID6809 + + + Track ID6811 + + + Track ID6813 + + + Track ID6815 + + + Track ID6817 + + + Track ID6819 + + + Track ID6821 + + + Track ID6823 + + + Track ID6825 + + + Track ID17744 + + + Track ID17749 + + + Track ID17754 + + + Track ID17759 + + + Track ID17764 + + + Track ID17770 + + + Track ID17776 + + + Track ID17781 + + + Track ID17786 + + + Track ID17791 + + + Track ID17796 + + + Track ID17801 + + + Track ID17806 + + + Track ID17811 + + + Track ID17816 + + + Track ID17821 + + + Track ID17826 + + + Track ID17831 + + + Track ID17836 + + + Track ID17841 + + + Track ID17846 + + + Track ID17851 + + + Track ID17856 + + + Track ID17862 + + + Track ID17867 + + + Track ID17873 + + + Track ID17878 + + + Track ID17883 + + + Track ID18025 + + + Track ID18032 + + + Track ID18039 + + + Track ID19148 + + + + + NameDownloaded + Description + Playlist ID9833 + Playlist Persistent ID2EFD82EA6B49173F + Distinguished Kind65 + All Items + Playlist Items + + + Track ID19148 + + + + + NameMusic + Description + Playlist ID9836 + Playlist Persistent ID78FC0108E2E55656 + Distinguished Kind4 + Music + All Items + Playlist Items + + + Track ID6565 + + + Track ID5351 + + + Track ID5733 + + + Track ID4773 + + + Track ID5613 + + + Track ID4771 + + + Track ID4729 + + + Track ID6333 + + + Track ID3375 + + + Track ID6051 + + + Track ID6739 + + + Track ID6741 + + + Track ID6743 + + + Track ID6745 + + + Track ID6747 + + + Track ID6749 + + + Track ID6751 + + + Track ID6753 + + + Track ID6755 + + + Track ID6757 + + + Track ID6759 + + + Track ID6037 + + + Track ID6055 + + + Track ID6053 + + + Track ID6057 + + + Track ID6059 + + + Track ID5093 + + + Track ID4323 + + + Track ID2779 + + + Track ID3229 + + + Track ID2531 + + + Track ID3227 + + + Track ID2561 + + + Track ID2563 + + + Track ID2565 + + + Track ID2567 + + + Track ID5309 + + + Track ID5311 + + + Track ID5299 + + + Track ID5307 + + + Track ID5313 + + + Track ID5319 + + + Track ID5315 + + + Track ID5321 + + + Track ID5301 + + + Track ID5303 + + + Track ID5327 + + + Track ID5295 + + + Track ID5289 + + + Track ID3315 + + + Track ID3317 + + + Track ID3225 + + + Track ID3319 + + + Track ID3321 + + + Track ID3323 + + + Track ID3325 + + + Track ID3327 + + + Track ID3329 + + + Track ID3331 + + + Track ID5241 + + + Track ID4601 + + + Track ID3047 + + + Track ID6013 + + + Track ID6011 + + + Track ID6009 + + + Track ID6007 + + + Track ID6005 + + + Track ID6003 + + + Track ID4319 + + + Track ID6453 + + + Track ID2599 + + + Track ID4587 + + + Track ID4871 + + + Track ID3035 + + + Track ID2789 + + + Track ID2783 + + + Track ID5667 + + + Track ID2977 + + + Track ID2519 + + + Track ID5045 + + + Track ID4817 + + + Track ID5735 + + + Track ID5697 + + + Track ID5701 + + + Track ID5699 + + + Track ID5707 + + + Track ID5705 + + + Track ID5691 + + + Track ID5689 + + + Track ID5695 + + + Track ID5693 + + + Track ID5703 + + + Track ID3715 + + + Track ID3705 + + + Track ID3709 + + + Track ID3699 + + + Track ID3707 + + + Track ID3711 + + + Track ID3717 + + + Track ID3703 + + + Track ID3713 + + + Track ID3701 + + + Track ID3719 + + + Track ID4685 + + + Track ID2975 + + + Track ID5727 + + + Track ID5049 + + + Track ID5231 + + + Track ID3721 + + + Track ID5035 + + + Track ID4687 + + + Track ID2521 + + + Track ID5741 + + + Track ID4689 + + + Track ID5249 + + + Track ID5717 + + + Track ID2905 + + + Track ID5833 + + + Track ID2845 + + + Track ID2715 + + + Track ID6241 + + + Track ID4809 + + + Track ID3263 + + + Track ID3067 + + + Track ID5099 + + + Track ID2707 + + + Track ID6597 + + + Track ID4933 + + + Track ID3549 + + + Track ID3513 + + + Track ID6533 + + + Track ID3405 + + + Track ID3693 + + + Track ID3739 + + + Track ID3971 + + + Track ID6223 + + + Track ID5779 + + + Track ID4191 + + + Track ID3347 + + + Track ID6819 + + + Track ID2875 + + + Track ID2727 + + + Track ID5009 + + + Track ID4999 + + + Track ID5021 + + + Track ID6015 + + + Track ID4989 + + + Track ID5755 + + + Track ID5089 + + + Track ID3311 + + + Track ID3243 + + + Track ID4571 + + + Track ID3507 + + + Track ID6071 + + + Track ID6073 + + + Track ID3057 + + + Track ID4455 + + + Track ID4447 + + + Track ID4443 + + + Track ID4457 + + + Track ID4449 + + + Track ID4445 + + + Track ID4453 + + + Track ID4451 + + + Track ID4441 + + + Track ID4439 + + + Track ID5079 + + + Track ID2625 + + + Track ID4465 + + + Track ID4437 + + + Track ID5223 + + + Track ID5219 + + + Track ID5221 + + + Track ID5225 + + + Track ID5227 + + + Track ID3285 + + + Track ID3289 + + + Track ID3287 + + + Track ID3291 + + + Track ID3293 + + + Track ID3283 + + + Track ID6087 + + + Track ID6085 + + + Track ID6021 + + + Track ID4185 + + + Track ID5719 + + + Track ID6467 + + + Track ID5949 + + + Track ID6655 + + + Track ID5925 + + + Track ID5279 + + + Track ID6399 + + + Track ID5431 + + + Track ID5849 + + + Track ID5063 + + + Track ID3913 + + + Track ID6443 + + + Track ID5493 + + + Track ID6765 + + + Track ID5119 + + + Track ID5439 + + + Track ID5039 + + + Track ID5753 + + + Track ID5761 + + + Track ID5217 + + + Track ID5809 + + + Track ID5087 + + + Track ID5535 + + + Track ID3533 + + + Track ID3021 + + + Track ID5941 + + + Track ID3385 + + + Track ID3271 + + + Track ID5731 + + + Track ID2591 + + + Track ID2593 + + + Track ID2595 + + + Track ID4995 + + + Track ID2597 + + + Track ID2555 + + + Track ID2559 + + + Track ID2629 + + + Track ID3785 + + + Track ID2557 + + + Track ID3781 + + + Track ID4965 + + + Track ID3107 + + + Track ID2603 + + + Track ID2605 + + + Track ID2607 + + + Track ID2609 + + + Track ID2601 + + + Track ID2611 + + + Track ID3783 + + + Track ID2885 + + + Track ID2887 + + + Track ID2889 + + + Track ID2891 + + + Track ID2893 + + + Track ID2895 + + + Track ID2897 + + + Track ID2899 + + + Track ID2901 + + + Track ID4987 + + + Track ID4757 + + + Track ID4681 + + + Track ID4589 + + + Track ID4873 + + + Track ID5723 + + + Track ID4371 + + + Track ID3727 + + + Track ID5823 + + + Track ID6079 + + + Track ID3307 + + + Track ID3731 + + + Track ID3729 + + + Track ID5157 + + + Track ID3525 + + + Track ID3431 + + + Track ID3237 + + + Track ID3343 + + + Track ID3907 + + + Track ID3255 + + + Track ID5177 + + + Track ID2685 + + + Track ID2645 + + + Track ID2865 + + + Track ID2653 + + + Track ID2583 + + + Track ID6531 + + + Track ID2581 + + + Track ID2577 + + + Track ID3387 + + + Track ID6507 + + + Track ID6509 + + + Track ID6511 + + + Track ID6513 + + + Track ID6515 + + + Track ID6517 + + + Track ID6519 + + + Track ID6521 + + + Track ID6523 + + + Track ID6525 + + + Track ID6527 + + + Track ID2579 + + + Track ID6529 + + + Track ID6029 + + + Track ID2613 + + + Track ID3231 + + + Track ID4875 + + + Track ID4877 + + + Track ID4879 + + + Track ID6095 + + + Track ID4561 + + + Track ID5499 + + + Track ID5629 + + + Track ID6459 + + + Track ID6471 + + + Track ID5573 + + + Track ID5591 + + + Track ID5587 + + + Track ID5581 + + + Track ID5589 + + + Track ID5579 + + + Track ID5577 + + + Track ID5607 + + + Track ID5595 + + + Track ID5593 + + + Track ID5599 + + + Track ID5601 + + + Track ID5605 + + + Track ID5603 + + + Track ID5597 + + + Track ID5585 + + + Track ID5583 + + + Track ID5455 + + + Track ID5465 + + + Track ID5463 + + + Track ID5459 + + + Track ID5461 + + + Track ID5903 + + + Track ID5457 + + + Track ID6023 + + + Track ID6329 + + + Track ID6469 + + + Track ID5899 + + + Track ID6589 + + + Track ID4013 + + + Track ID2797 + + + Track ID6575 + + + Track ID6577 + + + Track ID6401 + + + Track ID6403 + + + Track ID6591 + + + Track ID3561 + + + Track ID6181 + + + Track ID5813 + + + Track ID6183 + + + Track ID6167 + + + Track ID6171 + + + Track ID6165 + + + Track ID6173 + + + Track ID6175 + + + Track ID6177 + + + Track ID6081 + + + Track ID6179 + + + Track ID5787 + + + Track ID5843 + + + Track ID6169 + + + Track ID4573 + + + Track ID4981 + + + Track ID5019 + + + Track ID6641 + + + Track ID5801 + + + Track ID6083 + + + Track ID2661 + + + Track ID2657 + + + Track ID2517 + + + Track ID2821 + + + Track ID4593 + + + Track ID6041 + + + Track ID2623 + + + Track ID3187 + + + Track ID5239 + + + Track ID6661 + + + Track ID5889 + + + Track ID3975 + + + Track ID3903 + + + Track ID2705 + + + Track ID2713 + + + Track ID5777 + + + Track ID5675 + + + Track ID5133 + + + Track ID6645 + + + Track ID5819 + + + Track ID3973 + + + Track ID5071 + + + Track ID2907 + + + Track ID6345 + + + Track ID6237 + + + Track ID6235 + + + Track ID6233 + + + Track ID3517 + + + Track ID6797 + + + Track ID6413 + + + Track ID5255 + + + Track ID5269 + + + Track ID4959 + + + Track ID2925 + + + Track ID2933 + + + Track ID2935 + + + Track ID2927 + + + Track ID2937 + + + Track ID2939 + + + Track ID2941 + + + Track ID2943 + + + Track ID2945 + + + Track ID2931 + + + Track ID2947 + + + Track ID2949 + + + Track ID5137 + + + Track ID6451 + + + Track ID5097 + + + Track ID4045 + + + Track ID4047 + + + Track ID4041 + + + Track ID4043 + + + Track ID4037 + + + Track ID4039 + + + Track ID4033 + + + Track ID4035 + + + Track ID4029 + + + Track ID4025 + + + Track ID4027 + + + Track ID4021 + + + Track ID4023 + + + Track ID4017 + + + Track ID4019 + + + Track ID4031 + + + Track ID4993 + + + Track ID5061 + + + Track ID5443 + + + Track ID4985 + + + Track ID4991 + + + Track ID6221 + + + Track ID2861 + + + Track ID6319 + + + Track ID5141 + + + Track ID4753 + + + Track ID6481 + + + Track ID5511 + + + Track ID4189 + + + Track ID3469 + + + Track ID4253 + + + Track ID5513 + + + Track ID3403 + + + Track ID2807 + + + Track ID4645 + + + Track ID3613 + + + Track ID3485 + + + Track ID6043 + + + Track ID6045 + + + Track ID3121 + + + Track ID5515 + + + Track ID5161 + + + Track ID6733 + + + Track ID2801 + + + Track ID3239 + + + Track ID3235 + + + Track ID3241 + + + Track ID3953 + + + Track ID3957 + + + Track ID3961 + + + Track ID3963 + + + Track ID3945 + + + Track ID3947 + + + Track ID3951 + + + Track ID3955 + + + Track ID3967 + + + Track ID3965 + + + Track ID3949 + + + Track ID3959 + + + Track ID3943 + + + Track ID6617 + + + Track ID3037 + + + Track ID3489 + + + Track ID3505 + + + Track ID5473 + + + Track ID5485 + + + Track ID5483 + + + Track ID5481 + + + Track ID5487 + + + Track ID5479 + + + Track ID5489 + + + Track ID5477 + + + Track ID5469 + + + Track ID5471 + + + Track ID5475 + + + Track ID4209 + + + Track ID3607 + + + Track ID3487 + + + Track ID5275 + + + Track ID2615 + + + Track ID3275 + + + Track ID4943 + + + Track ID4939 + + + Track ID5123 + + + Track ID5333 + + + Track ID6653 + + + Track ID5803 + + + Track ID4791 + + + Track ID5873 + + + Track ID5859 + + + Track ID5857 + + + Track ID5855 + + + Track ID5861 + + + Track ID5867 + + + Track ID5865 + + + Track ID5863 + + + Track ID5869 + + + Track ID5871 + + + Track ID4801 + + + Track ID6583 + + + Track ID5421 + + + Track ID3671 + + + Track ID3433 + + + Track ID5451 + + + Track ID6571 + + + Track ID6549 + + + Track ID5181 + + + Track ID6473 + + + Track ID3553 + + + Track ID5413 + + + Track ID5347 + + + Track ID5711 + + + Track ID6225 + + + Track ID5709 + + + Track ID5713 + + + Track ID4695 + + + Track ID3061 + + + Track ID4597 + + + Track ID2813 + + + Track ID4827 + + + Track ID3281 + + + Track ID4969 + + + Track ID5523 + + + Track ID3361 + + + Track ID5261 + + + Track ID3333 + + + Track ID3353 + + + Track ID3279 + + + Track ID3253 + + + Track ID4235 + + + Track ID5947 + + + Track ID6773 + + + Track ID6547 + + + Track ID2829 + + + Track ID2853 + + + Track ID4749 + + + Track ID4237 + + + Track ID4803 + + + Track ID5155 + + + Track ID3445 + + + Track ID3411 + + + Track ID3341 + + + Track ID5229 + + + Track ID2805 + + + Track ID4957 + + + Track ID3395 + + + Track ID3391 + + + Track ID3393 + + + Track ID3377 + + + Track ID3397 + + + Track ID3399 + + + Track ID5915 + + + Track ID3031 + + + Track ID6429 + + + Track ID5065 + + + Track ID4337 + + + Track ID5297 + + + Track ID4243 + + + Track ID3563 + + + Track ID2687 + + + Track ID5505 + + + Track ID4595 + + + Track ID5627 + + + Track ID4317 + + + Track ID4603 + + + Track ID5293 + + + Track ID5633 + + + Track ID4307 + + + Track ID4313 + + + Track ID4297 + + + Track ID4295 + + + Track ID4293 + + + Track ID4305 + + + Track ID4303 + + + Track ID4301 + + + Track ID4299 + + + Track ID4311 + + + Track ID4309 + + + Track ID6433 + + + Track ID4315 + + + Track ID5631 + + + Track ID6409 + + + Track ID2785 + + + Track ID2703 + + + Track ID3737 + + + Track ID5829 + + + Track ID5323 + + + Track ID5437 + + + Track ID3367 + + + Track ID6325 + + + Track ID6397 + + + Track ID6559 + + + Track ID2811 + + + Track ID5417 + + + Track ID4839 + + + Track ID4967 + + + Track ID3355 + + + Track ID5111 + + + Track ID2989 + + + Track ID3659 + + + Track ID3605 + + + Track ID5891 + + + Track ID3017 + + + Track ID2635 + + + Track ID2993 + + + Track ID4565 + + + Track ID2677 + + + Track ID2675 + + + Track ID3845 + + + Track ID3491 + + + Track ID6091 + + + Track ID5881 + + + Track ID5879 + + + Track ID2465 + + + Track ID4471 + + + Track ID4473 + + + Track ID4469 + + + Track ID4477 + + + Track ID4475 + + + Track ID4493 + + + Track ID4489 + + + Track ID4491 + + + Track ID4481 + + + Track ID4479 + + + Track ID4487 + + + Track ID4485 + + + Track ID4495 + + + Track ID4497 + + + Track ID4483 + + + Track ID5875 + + + Track ID5055 + + + Track ID5325 + + + Track ID2467 + + + Track ID2469 + + + Track ID2471 + + + Track ID2473 + + + Track ID2475 + + + Track ID2477 + + + Track ID2479 + + + Track ID2481 + + + Track ID2483 + + + Track ID5495 + + + Track ID5023 + + + Track ID2463 + + + Track ID5043 + + + Track ID5767 + + + Track ID2803 + + + Track ID5883 + + + Track ID2695 + + + Track ID5027 + + + Track ID5425 + + + Track ID5781 + + + Track ID5771 + + + Track ID3969 + + + Track ID5877 + + + Track ID2917 + + + Track ID2919 + + + Track ID2903 + + + Track ID2923 + + + Track ID2951 + + + Track ID2953 + + + Track ID2955 + + + Track ID2929 + + + Track ID2957 + + + Track ID2959 + + + Track ID2961 + + + Track ID2963 + + + Track ID2965 + + + Track ID2967 + + + Track ID6189 + + + Track ID2921 + + + Track ID3247 + + + Track ID4067 + + + Track ID4065 + + + Track ID4069 + + + Track ID4071 + + + Track ID4075 + + + Track ID4073 + + + Track ID4083 + + + Track ID2725 + + + Track ID4085 + + + Track ID4079 + + + Track ID4077 + + + Track ID4081 + + + Track ID5791 + + + Track ID5283 + + + Track ID4063 + + + Track ID4059 + + + Track ID4061 + + + Track ID4325 + + + Track ID4709 + + + Track ID3409 + + + Track ID3201 + + + Track ID2525 + + + Track ID5077 + + + Track ID3203 + + + Track ID3647 + + + Track ID5847 + + + Track ID2523 + + + Track ID3651 + + + Track ID5643 + + + Track ID4579 + + + Track ID5175 + + + Track ID3077 + + + Track ID4715 + + + Track ID3899 + + + Track ID3169 + + + Track ID5923 + + + Track ID6419 + + + Track ID4557 + + + Track ID4643 + + + Track ID5953 + + + Track ID5125 + + + Track ID6349 + + + Track ID6351 + + + Track ID6449 + + + Track ID6347 + + + Track ID6321 + + + Track ID3335 + + + Track ID5203 + + + Track ID5491 + + + Track ID5449 + + + Track ID5193 + + + Track ID3477 + + + Track ID6441 + + + Track ID3669 + + + Track ID5749 + + + Track ID5115 + + + Track ID6411 + + + Track ID5775 + + + Track ID4265 + + + Track ID4193 + + + Track ID5101 + + + Track ID3349 + + + Track ID3515 + + + Track ID3081 + + + Track ID6563 + + + Track ID6027 + + + Track ID4983 + + + Track ID2879 + + + Track ID3615 + + + Track ID3545 + + + Track ID4245 + + + Track ID3063 + + + Track ID3519 + + + Track ID5281 + + + Track ID4205 + + + Track ID5285 + + + Track ID5189 + + + Track ID3111 + + + Track ID4971 + + + Track ID2815 + + + Track ID6117 + + + Track ID6119 + + + Track ID6121 + + + Track ID6123 + + + Track ID6125 + + + Track ID6127 + + + Track ID6129 + + + Track ID6131 + + + Track ID6133 + + + Track ID6135 + + + Track ID6139 + + + Track ID6143 + + + Track ID6145 + + + Track ID6147 + + + Track ID6149 + + + Track ID6151 + + + Track ID6153 + + + Track ID6157 + + + Track ID6155 + + + Track ID6159 + + + Track ID6161 + + + Track ID6163 + + + Track ID6141 + + + Track ID6137 + + + Track ID4195 + + + Track ID4401 + + + Track ID4407 + + + Track ID4405 + + + Track ID4393 + + + Track ID4397 + + + Track ID4403 + + + Track ID4409 + + + Track ID4399 + + + Track ID4395 + + + Track ID4387 + + + Track ID4385 + + + Track ID4391 + + + Track ID4389 + + + Track ID4377 + + + Track ID4411 + + + Track ID4421 + + + Track ID4431 + + + Track ID4429 + + + Track ID4427 + + + Track ID4417 + + + Track ID4415 + + + Track ID4413 + + + Track ID4419 + + + Track ID4425 + + + Track ID4423 + + + Track ID5345 + + + Track ID6557 + + + Track ID6063 + + + Track ID2841 + + + Track ID6635 + + + Track ID6601 + + + Track ID4463 + + + Track ID5909 + + + Track ID4797 + + + Track ID4799 + + + Track ID4793 + + + Track ID4199 + + + Track ID4795 + + + Track ID2777 + + + Track ID3915 + + + Track ID5575 + + + Track ID5839 + + + Track ID4633 + + + Track ID4619 + + + Track ID4617 + + + Track ID4621 + + + Track ID4631 + + + Track ID4629 + + + Track ID4605 + + + Track ID4623 + + + Track ID4627 + + + Track ID4625 + + + Track ID4609 + + + Track ID4607 + + + Track ID4611 + + + Track ID4615 + + + Track ID4613 + + + Track ID4635 + + + Track ID4637 + + + Track ID5975 + + + Track ID5983 + + + Track ID3655 + + + Track ID5987 + + + Track ID5991 + + + Track ID5989 + + + Track ID5993 + + + Track ID5997 + + + Track ID5999 + + + Track ID5973 + + + Track ID5979 + + + Track ID5977 + + + Track ID5981 + + + Track ID3653 + + + Track ID5971 + + + Track ID5379 + + + Track ID5407 + + + Track ID5377 + + + Track ID4843 + + + Track ID5383 + + + Track ID5387 + + + Track ID5393 + + + Track ID5391 + + + Track ID5395 + + + Track ID4807 + + + Track ID5399 + + + Track ID5401 + + + Track ID5403 + + + Track ID5405 + + + Track ID5409 + + + Track ID5385 + + + Track ID5381 + + + Track ID5389 + + + Track ID4733 + + + Track ID3259 + + + Track ID5837 + + + Track ID5195 + + + Track ID5353 + + + Track ID5985 + + + Track ID5411 + + + Track ID5995 + + + Track ID5397 + + + Track ID5797 + + + Track ID4011 + + + Track ID2681 + + + Track ID5213 + + + Track ID6341 + + + Track ID6465 + + + Track ID6047 + + + Track ID3041 + + + Track ID2787 + + + Track ID3051 + + + Track ID3415 + + + Track ID6337 + + + Track ID2637 + + + Track ID3663 + + + Track ID3857 + + + Track ID6315 + + + Track ID3195 + + + Track ID3929 + + + Track ID3927 + + + Track ID3933 + + + Track ID3931 + + + Track ID3939 + + + Track ID3937 + + + Track ID3941 + + + Track ID4161 + + + Track ID4165 + + + Track ID4163 + + + Track ID4169 + + + Track ID4167 + + + Track ID4173 + + + Track ID4171 + + + Track ID4177 + + + Track ID4175 + + + Track ID4141 + + + Track ID4139 + + + Track ID4145 + + + Track ID4143 + + + Track ID4149 + + + Track ID4147 + + + Track ID4153 + + + Track ID4151 + + + Track ID4157 + + + Track ID4155 + + + Track ID4135 + + + Track ID4137 + + + Track ID4133 + + + Track ID4123 + + + Track ID4093 + + + Track ID4091 + + + Track ID4119 + + + Track ID4121 + + + Track ID4117 + + + Track ID4115 + + + Track ID4129 + + + Track ID4125 + + + Track ID4111 + + + Track ID4105 + + + Track ID4109 + + + Track ID4103 + + + Track ID4131 + + + Track ID4127 + + + Track ID4107 + + + Track ID4113 + + + Track ID4099 + + + Track ID4097 + + + Track ID4101 + + + Track ID4089 + + + Track ID4087 + + + Track ID4095 + + + Track ID4559 + + + Track ID4183 + + + Track ID4159 + + + Track ID4179 + + + Track ID5917 + + + Track ID5517 + + + Track ID5237 + + + Track ID5913 + + + Track ID2639 + + + Track ID2641 + + + Track ID2643 + + + Track ID6735 + + + Track ID5757 + + + Track ID4861 + + + Track ID4845 + + + Track ID4853 + + + Track ID4855 + + + Track ID4851 + + + Track ID4847 + + + Track ID4849 + + + Track ID4865 + + + Track ID4863 + + + Track ID4867 + + + Track ID4859 + + + Track ID4857 + + + Track ID5467 + + + Track ID5911 + + + Track ID6075 + + + Track ID4507 + + + Track ID4509 + + + Track ID4513 + + + Track ID4505 + + + Track ID4459 + + + Track ID4499 + + + Track ID4531 + + + Track ID4527 + + + Track ID4529 + + + Track ID4521 + + + Track ID4523 + + + Track ID4517 + + + Track ID4519 + + + Track ID4511 + + + Track ID4515 + + + Track ID4503 + + + Track ID6093 + + + Track ID6097 + + + Track ID6089 + + + Track ID4525 + + + Track ID5769 + + + Track ID4501 + + + Track ID3601 + + + Track ID5519 + + + Track ID3303 + + + Track ID4049 + + + Track ID4051 + + + Track ID2859 + + + Track ID3299 + + + Track ID3295 + + + Track ID3297 + + + Track ID3389 + + + Track ID5433 + + + Track ID2739 + + + Track ID3049 + + + Track ID5759 + + + Track ID5763 + + + Track ID3681 + + + Track ID3683 + + + Track ID5943 + + + Track ID3265 + + + Track ID4767 + + + Track ID4835 + + + Track ID4217 + + + Track ID4211 + + + Track ID4219 + + + Track ID4229 + + + Track ID4215 + + + Track ID4221 + + + Track ID4223 + + + Track ID4227 + + + Track ID4213 + + + Track ID3853 + + + Track ID4231 + + + Track ID4225 + + + Track ID2877 + + + Track ID4257 + + + Track ID6031 + + + Track ID5969 + + + Track ID3537 + + + Track ID5083 + + + Track ID5745 + + + Track ID2997 + + + Track ID2999 + + + Track ID3001 + + + Track ID3003 + + + Track ID3005 + + + Track ID3007 + + + Track ID3009 + + + Track ID3011 + + + Track ID3013 + + + Track ID3015 + + + Track ID6553 + + + Track ID3917 + + + Track ID3923 + + + Track ID3921 + + + Track ID6649 + + + Track ID6613 + + + Track ID6657 + + + Track ID3473 + + + Track ID3865 + + + Track ID3895 + + + Track ID5343 + + + Track ID5341 + + + Track ID6331 + + + Track ID6019 + + + Track ID5955 + + + Track ID6475 + + + Track ID5895 + + + Track ID2913 + + + Track ID2689 + + + Track ID3435 + + + Track ID6313 + + + Track ID4831 + + + Track ID4833 + + + Track ID6623 + + + Track ID6101 + + + Track ID3547 + + + Track ID3471 + + + Track ID5885 + + + Track ID5887 + + + Track ID5853 + + + Track ID4891 + + + Track ID4889 + + + Track ID4887 + + + Track ID4883 + + + Track ID4885 + + + Track ID4881 + + + Track ID4897 + + + Track ID4893 + + + Track ID4895 + + + Track ID3983 + + + Track ID3839 + + + Track ID3841 + + + Track ID3843 + + + Track ID3833 + + + Track ID3835 + + + Track ID3837 + + + Track ID3819 + + + Track ID3821 + + + Track ID3823 + + + Track ID3825 + + + Track ID3827 + + + Track ID3829 + + + Track ID3831 + + + Track ID3813 + + + Track ID3815 + + + Track ID3817 + + + Track ID3625 + + + Track ID3627 + + + Track ID3171 + + + Track ID2817 + + + Track ID3629 + + + Track ID3631 + + + Track ID2819 + + + Track ID5951 + + + Track ID2665 + + + Track ID2663 + + + Track ID4461 + + + Track ID4585 + + + Track ID3113 + + + Track ID4009 + + + Track ID6737 + + + Track ID4535 + + + Track ID3099 + + + Track ID3103 + + + Track ID3101 + + + Track ID3097 + + + Track ID3095 + + + Track ID3105 + + + Track ID5127 + + + Track ID6035 + + + Track ID4737 + + + Track ID3045 + + + Track ID5415 + + + Track ID3337 + + + Track ID5773 + + + Track ID3059 + + + Track ID5835 + + + Track ID5815 + + + Track ID5811 + + + Track ID6603 + + + Track ID3441 + + + Track ID5509 + + + Track ID5243 + + + Track ID5673 + + + Track ID5639 + + + Track ID3551 + + + Track ID5641 + + + Track ID4787 + + + Track ID3555 + + + Track ID5637 + + + Track ID2679 + + + Track ID3675 + + + Track ID3245 + + + Track ID5447 + + + Track ID4841 + + + Track ID3219 + + + Track ID4941 + + + Track ID3591 + + + Track ID6579 + + + Track ID3855 + + + Track ID4249 + + + Track ID2827 + + + Track ID4811 + + + Track ID2825 + + + Track ID2851 + + + Track ID2867 + + + Track ID4707 + + + Track ID3273 + + + Track ID4563 + + + Track ID6607 + + + Track ID5619 + + + Track ID4363 + + + Track ID4361 + + + Track ID4357 + + + Track ID4353 + + + Track ID4359 + + + Track ID4355 + + + Track ID4345 + + + Track ID4343 + + + Track ID4341 + + + Track ID4339 + + + Track ID4351 + + + Track ID4349 + + + Track ID4347 + + + Track ID5139 + + + Track ID2857 + + + Track ID5821 + + + Track ID3309 + + + Track ID3131 + + + Track ID3133 + + + Track ID2843 + + + Track ID3475 + + + Track ID5207 + + + Track ID5257 + + + Track ID6783 + + + Track ID6785 + + + Track ID6787 + + + Track ID6789 + + + Track ID6793 + + + Track ID6795 + + + Track ID6799 + + + Track ID6801 + + + Track ID6803 + + + Track ID6807 + + + Track ID6809 + + + Track ID6811 + + + Track ID6813 + + + Track ID6815 + + + Track ID6817 + + + Track ID6821 + + + Track ID6823 + + + Track ID6825 + + + Track ID4577 + + + Track ID4837 + + + Track ID5305 + + + Track ID2973 + + + Track ID5945 + + + Track ID4961 + + + Track ID3849 + + + Track ID6605 + + + Track ID4241 + + + Track ID5529 + + + Track ID3861 + + + Track ID4785 + + + Track ID3209 + + + Track ID4599 + + + Track ID3117 + + + Track ID4055 + + + Track ID4057 + + + Track ID4053 + + + Track ID3351 + + + Track ID5081 + + + Track ID3383 + + + Track ID3509 + + + Track ID5109 + + + Track ID5677 + + + Track ID5635 + + + Track ID5273 + + + Track ID5669 + + + Track ID5737 + + + Track ID3981 + + + Track ID5623 + + + Track ID6455 + + + Track ID4187 + + + Track ID5085 + + + Track ID5429 + + + Track ID3779 + + + Track ID5047 + + + Track ID6539 + + + Track ID3689 + + + Track ID4805 + + + Track ID5355 + + + Track ID6629 + + + Track ID5069 + + + Track ID3417 + + + Track ID3419 + + + Track ID3427 + + + Track ID3429 + + + Track ID3657 + + + Track ID4783 + + + Track ID6239 + + + Track ID2771 + + + Track ID5335 + + + Track ID2749 + + + Track ID2751 + + + Track ID2753 + + + Track ID2755 + + + Track ID2757 + + + Track ID2759 + + + Track ID2761 + + + Track ID2763 + + + Track ID2765 + + + Track ID2741 + + + Track ID2745 + + + Track ID2773 + + + Track ID2743 + + + Track ID2767 + + + Track ID2747 + + + Track ID2769 + + + Track ID5427 + + + Track ID5671 + + + Track ID3129 + + + Track ID6771 + + + Track ID4247 + + + Track ID3365 + + + Track ID3665 + + + Track ID5031 + + + Track ID6245 + + + Track ID6247 + + + Track ID6249 + + + Track ID6251 + + + Track ID6253 + + + Track ID6255 + + + Track ID6257 + + + Track ID6259 + + + Track ID6261 + + + Track ID6263 + + + Track ID6265 + + + Track ID6267 + + + Track ID6269 + + + Track ID6271 + + + Track ID6273 + + + Track ID6275 + + + Track ID6277 + + + Track ID6279 + + + Track ID6281 + + + Track ID6283 + + + Track ID6285 + + + Track ID6287 + + + Track ID6289 + + + Track ID6291 + + + Track ID2775 + + + Track ID4997 + + + Track ID5013 + + + Track ID6505 + + + Track ID6503 + + + Track ID4335 + + + Track ID6663 + + + Track ID3641 + + + Track ID6665 + + + Track ID4815 + + + Track ID3069 + + + Track ID6667 + + + Track ID6669 + + + Track ID6671 + + + Track ID6673 + + + Track ID6675 + + + Track ID6679 + + + Track ID6681 + + + Track ID4903 + + + Track ID6463 + + + Track ID6417 + + + Track ID6461 + + + Track ID4769 + + + Track ID6567 + + + Track ID6677 + + + Track ID6569 + + + Track ID6585 + + + Track ID5959 + + + Track ID5817 + + + Track ID6067 + + + Track ID3501 + + + Track ID3503 + + + Track ID4813 + + + Track ID5743 + + + Track ID6425 + + + Track ID6335 + + + Track ID4379 + + + Track ID5011 + + + Track ID5057 + + + Track ID6105 + + + Track ID5017 + + + Track ID2587 + + + Track ID3305 + + + Track ID5287 + + + Track ID2633 + + + Track ID2631 + + + Track ID2549 + + + Track ID3687 + + + Track ID3421 + + + Track ID6767 + + + Track ID3847 + + + Track ID3075 + + + Track ID6001 + + + Track ID4977 + + + Track ID4975 + + + Track ID4979 + + + Track ID5007 + + + Track ID5199 + + + Track ID6229 + + + Track ID3357 + + + Track ID3029 + + + Track ID3221 + + + Track ID2915 + + + Track ID5715 + + + Track ID3523 + + + Track ID3019 + + + Track ID4267 + + + Track ID3535 + + + Track ID3261 + + + Track ID6327 + + + Track ID5191 + + + Track ID3897 + + + Track ID3777 + + + Track ID4181 + + + Track ID3223 + + + Track ID3065 + + + Track ID4721 + + + Track ID4717 + + + Track ID2969 + + + Track ID5739 + + + Track ID5681 + + + Track ID3211 + + + Track ID3345 + + + Track ID4731 + + + Track ID4775 + + + Track ID6685 + + + Track ID6077 + + + Track ID2837 + + + Track ID2835 + + + Track ID2839 + + + Track ID5271 + + + Track ID2833 + + + Track ID2831 + + + Track ID3787 + + + Track ID3635 + + + Track ID3637 + + + Track ID2651 + + + Track ID3789 + + + Track ID3639 + + + Track ID6483 + + + Track ID3079 + + + Track ID3493 + + + Track ID6599 + + + Track ID3543 + + + Track ID6187 + + + Track ID4945 + + + Track ID3603 + + + Track ID6627 + + + Track ID3775 + + + Track ID3251 + + + Track ID4539 + + + Track ID2647 + + + Track ID3619 + + + Track ID3621 + + + Track ID3623 + + + Track ID6421 + + + Track ID6295 + + + Track ID6297 + + + Track ID6299 + + + Track ID6301 + + + Track ID6303 + + + Track ID6305 + + + Track ID6307 + + + Track ID6293 + + + Track ID6309 + + + Track ID6311 + + + Track ID2809 + + + Track ID3595 + + + Track ID3597 + + + Track ID3599 + + + Track ID2911 + + + Track ID5267 + + + Track ID4381 + + + Track ID4383 + + + Track ID6647 + + + Track ID5091 + + + Track ID6593 + + + Track ID2799 + + + Track ID3359 + + + Track ID6243 + + + Track ID5129 + + + Track ID5825 + + + Track ID6637 + + + Track ID6231 + + + Track ID6561 + + + Track ID4251 + + + Track ID3381 + + + Track ID5525 + + + Track ID3583 + + + Track ID5765 + + + Track ID6715 + + + Track ID4653 + + + Track ID6717 + + + Track ID4759 + + + Track ID6719 + + + Track ID2573 + + + Track ID4639 + + + Track ID2569 + + + Track ID2571 + + + Track ID5841 + + + Track ID6721 + + + Track ID5793 + + + Track ID4819 + + + Track ID5785 + + + Track ID6723 + + + Track ID2985 + + + Track ID6725 + + + Track ID2995 + + + Track ID6727 + + + Track ID3759 + + + Track ID3763 + + + Track ID3771 + + + Track ID3769 + + + Track ID3751 + + + Track ID3749 + + + Track ID3747 + + + Track ID3757 + + + Track ID3745 + + + Track ID3755 + + + Track ID3753 + + + Track ID3767 + + + Track ID3765 + + + Track ID3761 + + + Track ID3773 + + + Track ID5615 + + + Track ID3089 + + + Track ID3091 + + + Track ID5751 + + + Track ID2981 + + + Track ID6697 + + + Track ID6699 + + + Track ID6701 + + + Track ID6703 + + + Track ID6705 + + + Track ID4651 + + + Track ID5645 + + + Track ID4659 + + + Track ID6707 + + + Track ID4823 + + + Track ID4661 + + + Track ID2979 + + + Track ID6709 + + + Track ID2983 + + + Track ID4825 + + + Track ID6711 + + + Track ID6713 + + + Track ID6103 + + + Track ID6107 + + + Track ID3257 + + + Track ID6111 + + + Track ID6115 + + + Track ID6113 + + + Track ID6109 + + + Track ID3119 + + + Track ID6339 + + + Track ID3123 + + + Track ID4569 + + + Track ID3661 + + + Track ID5211 + + + Track ID6729 + + + Track ID3919 + + + Track ID3531 + + + Track ID3413 + + + Track ID3371 + + + Track ID6039 + + + Track ID3617 + + + Track ID6731 + + + Track ID2699 + + + Track ID2701 + + + Track ID5441 + + + Track ID5135 + + + Track ID3643 + + + Track ID6445 + + + Track ID5067 + + + Track ID5029 + + + Track ID5929 + + + Track ID5931 + + + Track ID5845 + + + Track ID5187 + + + Track ID6615 + + + Track ID3185 + + + Track ID3183 + + + Track ID6353 + + + Track ID5145 + + + Track ID5147 + + + Track ID5149 + + + Track ID3447 + + + Track ID3449 + + + Track ID3451 + + + Track ID3453 + + + Track ID3455 + + + Track ID3457 + + + Track ID3459 + + + Track ID3461 + + + Track ID6499 + + + Track ID3463 + + + Track ID3465 + + + Track ID5151 + + + Track ID5143 + + + Track ID6651 + + + Track ID6611 + + + Track ID3179 + + + Track ID3181 + + + Track ID3193 + + + Track ID3189 + + + Track ID3191 + + + Track ID3177 + + + Track ID4467 + + + Track ID4233 + + + Track ID6219 + + + Track ID2849 + + + Track ID5901 + + + Track ID3691 + + + Track ID3199 + + + Track ID3213 + + + Track ID4755 + + + Track ID4575 + + + Track ID3797 + + + Track ID3805 + + + Track ID3799 + + + Track ID3725 + + + Track ID3801 + + + Track ID3803 + + + Track ID3985 + + + Track ID3987 + + + Track ID3989 + + + Track ID3995 + + + Track ID3991 + + + Track ID3993 + + + Track ID3999 + + + Track ID4001 + + + Track ID4003 + + + Track ID3997 + + + Track ID4005 + + + Track ID4007 + + + Track ID3793 + + + Track ID3791 + + + Track ID3795 + + + Track ID5165 + + + Track ID3109 + + + Track ID3483 + + + Track ID3215 + + + Track ID5215 + + + Track ID3585 + + + Track ID4197 + + + Track ID6435 + + + Track ID6437 + + + Track ID4201 + + + Track ID3407 + + + Track ID3539 + + + Track ID4375 + + + Track ID3039 + + + Track ID3207 + + + Track ID5183 + + + Track ID3593 + + + Track ID3439 + + + Track ID3373 + + + Track ID3609 + + + Track ID3587 + + + Track ID3611 + + + Track ID2855 + + + Track ID5933 + + + Track ID3055 + + + Track ID5163 + + + Track ID5167 + + + Track ID6415 + + + Track ID5173 + + + Track ID6049 + + + Track ID5827 + + + Track ID6061 + + + Track ID6485 + + + Track ID6423 + + + Track ID6427 + + + Track ID4683 + + + Track ID5683 + + + Track ID4963 + + + Track ID5005 + + + Track ID5245 + + + Track ID6769 + + + Track ID6643 + + + Track ID3053 + + + Track ID4763 + + + Track ID5503 + + + Track ID2971 + + + Track ID4207 + + + Track ID2691 + + + Track ID5121 + + + Track ID4365 + + + Track ID6587 + + + Track ID2847 + + + Track ID3541 + + + Track ID5957 + + + Track ID6551 + + + Track ID5965 + + + Track ID3363 + + + Track ID3115 + + + Track ID6791 + + + Track ID6805 + + + Track ID5501 + + + Track ID4533 + + + Track ID5905 + + + Track ID2717 + + + Track ID2719 + + + Track ID2731 + + + Track ID2735 + + + Track ID2729 + + + Track ID4435 + + + Track ID2733 + + + Track ID4779 + + + Track ID2723 + + + Track ID5935 + + + Track ID2737 + + + Track ID2863 + + + Track ID4367 + + + Track ID4369 + + + Track ID6763 + + + Track ID4751 + + + Track ID3269 + + + Track ID5253 + + + Track ID3911 + + + Track ID5665 + + + Track ID5789 + + + Track ID5041 + + + Track ID3909 + + + Track ID3521 + + + Track ID3313 + + + Track ID5075 + + + Track ID4567 + + + Track ID3735 + + + Track ID5621 + + + Track ID6405 + + + Track ID6659 + + + Track ID5893 + + + Track ID4641 + + + Track ID6069 + + + Track ID6065 + + + Track ID6609 + + + Track ID5131 + + + Track ID6555 + + + Track ID3175 + + + Track ID5679 + + + Track ID2659 + + + Track ID2545 + + + Track ID2543 + + + Track ID5795 + + + Track ID4747 + + + Track ID4745 + + + Track ID4829 + + + Track ID5105 + + + Track ID3859 + + + Track ID3197 + + + Track ID3935 + + + Track ID3249 + + + Track ID6457 + + + Track ID6537 + + + Track ID5179 + + + Track ID5185 + + + Track ID5291 + + + Track ID3217 + + + Track ID5967 + + + Track ID5663 + + + Track ID5653 + + + Track ID5655 + + + Track ID5659 + + + Track ID5799 + + + Track ID4711 + + + Track ID4937 + + + Track ID5927 + + + Track ID3589 + + + Track ID4935 + + + Track ID2693 + + + Track ID5259 + + + Track ID3481 + + + Track ID5051 + + + Track ID6343 + + + Track ID5657 + + + Track ID5527 + + + Track ID5661 + + + Track ID6479 + + + Track ID3073 + + + Track ID4899 + + + Track ID4743 + + + Track ID2909 + + + Track ID4239 + + + Track ID4591 + + + Track ID5521 + + + Track ID3581 + + + Track ID6535 + + + Track ID2627 + + + Track ID2873 + + + Track ID6595 + + + Track ID6355 + + + Track ID6357 + + + Track ID6359 + + + Track ID6361 + + + Track ID6363 + + + Track ID6365 + + + Track ID6367 + + + Track ID6369 + + + Track ID6371 + + + Track ID6373 + + + Track ID6375 + + + Track ID6377 + + + Track ID6379 + + + Track ID6381 + + + Track ID6383 + + + Track ID6385 + + + Track ID6387 + + + Track ID6389 + + + Track ID6391 + + + Track ID6393 + + + Track ID6395 + + + Track ID3267 + + + Track ID4261 + + + Track ID6025 + + + Track ID6501 + + + Track ID4373 + + + Track ID3087 + + + Track ID3083 + + + Track ID3085 + + + Track ID4537 + + + Track ID3977 + + + Track ID3979 + + + Track ID5209 + + + Track ID3733 + + + Track ID3043 + + + Track ID5265 + + + Track ID5247 + + + Track ID6487 + + + Track ID3379 + + + Track ID5263 + + + Track ID5251 + + + Track ID4433 + + + Track ID2619 + + + Track ID2617 + + + Track ID2621 + + + Track ID5907 + + + Track ID2795 + + + Track ID3301 + + + Track ID5233 + + + Track ID3173 + + + Track ID3649 + + + Track ID2791 + + + Track ID6631 + + + Track ID5113 + + + Track ID4901 + + + Track ID5851 + + + Track ID3685 + + + Track ID6543 + + + Track ID4761 + + + Track ID6573 + + + Track ID4765 + + + Track ID6439 + + + Track ID5169 + + + Track ID3905 + + + Track ID6541 + + + Track ID5197 + + + Track ID3851 + + + Track ID5095 + + + Track ID4015 + + + Track ID5497 + + + Track ID5419 + + + Track ID5783 + + + Track ID4951 + + + Track ID5171 + + + Track ID4973 + + + Track ID5373 + + + Track ID5331 + + + Track ID5365 + + + Track ID5363 + + + Track ID5361 + + + Track ID5359 + + + Track ID5357 + + + Track ID5375 + + + Track ID5371 + + + Track ID5369 + + + Track ID5367 + + + Track ID5003 + + + Track ID2437 + + + Track ID2439 + + + Track ID2441 + + + Track ID2443 + + + Track ID2445 + + + Track ID2447 + + + Track ID2449 + + + Track ID2451 + + + Track ID2453 + + + Track ID2455 + + + Track ID2457 + + + Track ID2459 + + + Track ID2461 + + + Track ID4931 + + + Track ID5807 + + + Track ID4655 + + + Track ID4657 + + + Track ID6227 + + + Track ID4647 + + + Track ID5687 + + + Track ID4649 + + + Track ID4203 + + + Track ID4321 + + + Track ID4581 + + + Track ID5611 + + + Track ID5553 + + + Track ID5557 + + + Track ID5555 + + + Track ID5561 + + + Track ID5559 + + + Track ID5565 + + + Track ID5541 + + + Track ID5543 + + + Track ID5547 + + + Track ID5549 + + + Track ID5551 + + + Track ID5569 + + + Track ID5571 + + + Track ID5567 + + + Track ID5563 + + + Track ID5545 + + + Track ID6777 + + + Track ID6779 + + + Track ID6781 + + + Track ID6775 + + + Track ID4691 + + + Track ID4693 + + + Track ID5937 + + + Track ID4703 + + + Track ID4697 + + + Track ID5277 + + + Track ID5107 + + + Track ID4705 + + + Track ID4699 + + + Track ID4701 + + + Track ID4289 + + + Track ID4269 + + + Track ID4283 + + + Track ID4281 + + + Track ID4273 + + + Track ID4287 + + + Track ID4291 + + + Track ID4285 + + + Track ID4275 + + + Track ID4277 + + + Track ID4271 + + + Track ID4279 + + + Track ID5337 + + + Track ID5539 + + + Track ID4723 + + + Track ID5939 + + + Track ID4789 + + + Track ID6099 + + + Track ID5721 + + + Track ID3467 + + + Track ID5507 + + + Track ID4917 + + + Track ID4913 + + + Track ID5153 + + + Track ID5609 + + + Track ID3497 + + + Track ID2991 + + + Track ID5235 + + + Track ID3125 + + + Track ID4955 + + + Track ID5201 + + + Track ID6407 + + + Track ID3557 + + + Track ID2987 + + + Track ID4953 + + + Track ID4949 + + + Track ID4915 + + + Track ID4923 + + + Track ID4921 + + + Track ID4919 + + + Track ID4929 + + + Track ID4927 + + + Track ID4925 + + + Track ID4911 + + + Track ID4909 + + + Track ID4907 + + + Track ID2673 + + + Track ID3559 + + + Track ID3885 + + + Track ID3867 + + + Track ID3891 + + + Track ID3887 + + + Track ID3877 + + + Track ID3869 + + + Track ID3871 + + + Track ID3881 + + + Track ID3873 + + + Track ID3893 + + + Track ID3875 + + + Track ID3889 + + + Track ID3879 + + + Track ID3883 + + + Track ID3863 + + + Track ID3901 + + + Track ID2683 + + + Track ID5117 + + + Track ID2655 + + + Track ID3645 + + + Track ID3495 + + + Track ID4255 + + + Track ID3499 + + + Track ID3401 + + + Track ID5897 + + + Track ID5625 + + + Track ID6185 + + + Track ID2649 + + + Track ID5617 + + + Track ID4727 + + + Track ID5103 + + + Track ID4869 + + + Track ID3277 + + + Track ID5725 + + + Track ID3527 + + + Track ID2721 + + + Track ID3339 + + + Track ID5961 + + + Track ID2585 + + + Track ID2793 + + + Track ID5921 + + + Track ID5919 + + + Track ID2589 + + + Track ID5205 + + + Track ID6317 + + + Track ID4263 + + + Track ID6633 + + + Track ID6323 + + + Track ID2667 + + + Track ID2697 + + + Track ID2671 + + + Track ID2669 + + + Track ID3479 + + + Track ID3071 + + + Track ID3809 + + + Track ID3811 + + + Track ID6761 + + + Track ID3167 + + + Track ID3139 + + + Track ID3143 + + + Track ID3145 + + + Track ID3147 + + + Track ID3135 + + + Track ID3149 + + + Track ID3151 + + + Track ID3153 + + + Track ID3155 + + + Track ID3157 + + + Track ID3159 + + + Track ID3161 + + + Track ID3137 + + + Track ID3163 + + + Track ID4583 + + + Track ID3141 + + + Track ID5073 + + + Track ID4663 + + + Track ID4679 + + + Track ID4677 + + + Track ID4675 + + + Track ID4719 + + + Track ID4671 + + + Track ID4669 + + + Track ID4667 + + + Track ID4665 + + + Track ID4673 + + + Track ID3165 + + + Track ID4725 + + + Track ID5685 + + + Track ID5649 + + + Track ID5647 + + + Track ID5651 + + + Track ID4333 + + + Track ID4329 + + + Track ID4331 + + + Track ID5037 + + + Track ID2547 + + + Track ID5059 + + + Track ID2551 + + + Track ID5001 + + + Track ID4741 + + + Track ID3443 + + + Track ID3565 + + + Track ID3567 + + + Track ID3127 + + + Track ID3569 + + + Track ID3571 + + + Track ID3573 + + + Track ID3575 + + + Track ID3577 + + + Track ID3579 + + + Track ID3529 + + + Track ID2529 + + + Track ID2709 + + + Track ID5329 + + + Track ID5015 + + + Track ID2527 + + + Track ID2485 + + + Track ID2487 + + + Track ID2489 + + + Track ID2491 + + + Track ID2493 + + + Track ID2495 + + + Track ID2497 + + + Track ID2499 + + + Track ID2501 + + + Track ID2503 + + + Track ID2505 + + + Track ID2533 + + + Track ID2507 + + + Track ID2509 + + + Track ID2511 + + + Track ID2513 + + + Track ID2515 + + + Track ID2553 + + + Track ID4327 + + + Track ID5033 + + + Track ID5423 + + + Track ID3511 + + + Track ID2711 + + + Track ID5025 + + + Track ID4541 + + + Track ID3667 + + + Track ID3807 + + + Track ID4739 + + + Track ID5339 + + + Track ID6033 + + + Track ID5317 + + + Track ID2823 + + + Track ID5531 + + + Track ID5053 + + + Track ID2871 + + + Track ID3673 + + + Track ID3025 + + + Track ID3027 + + + Track ID3205 + + + Track ID3033 + + + Track ID3677 + + + Track ID3679 + + + Track ID2869 + + + Track ID2535 + + + Track ID2541 + + + Track ID2537 + + + Track ID2539 + + + Track ID5533 + + + Track ID5537 + + + Track ID3369 + + + Track ID6477 + + + Track ID4259 + + + Track ID6431 + + + Track ID3437 + + + Track ID5963 + + + Track ID5435 + + + Track ID3423 + + + Track ID5831 + + + Track ID3425 + + + Track ID3233 + + + Track ID5159 + + + Track ID3925 + + + Track ID3723 + + + Track ID3695 + + + Track ID3697 + + + Track ID4735 + + + Track ID5729 + + + Track ID4821 + + + Track ID6581 + + + Track ID3093 + + + Track ID6491 + + + Track ID6621 + + + Track ID6493 + + + Track ID6495 + + + Track ID6489 + + + Track ID6497 + + + Track ID5349 + + + Track ID2575 + + + Track ID3023 + + + Track ID4545 + + + Track ID4551 + + + Track ID3741 + + + Track ID4549 + + + Track ID4555 + + + Track ID4547 + + + Track ID4553 + + + Track ID3743 + + + Track ID4543 + + + Track ID6639 + + + Track ID6545 + + + Track ID5453 + + + Track ID6017 + + + Track ID6625 + + + Track ID4713 + + + Track ID3633 + + + Track ID6691 + + + Track ID4777 + + + Track ID6683 + + + Track ID6687 + + + Track ID6689 + + + Track ID6693 + + + Track ID6695 + + + Track ID6447 + + + Track ID6619 + + + Track ID2881 + + + Track ID2883 + + + Track ID5747 + + + Track ID5445 + + + Track ID4905 + + + Track ID4781 + + + Track ID4947 + + + Track ID2781 + + + Track ID5805 + + + Track ID6201 + + + Track ID6191 + + + Track ID6193 + + + Track ID6195 + + + Track ID6197 + + + Track ID6199 + + + Track ID6203 + + + Track ID6207 + + + Track ID6209 + + + Track ID6211 + + + Track ID6213 + + + Track ID6215 + + + Track ID6217 + + + Track ID6205 + + + Track ID17764 + + + Track ID17851 + + + Track ID17846 + + + Track ID17867 + + + Track ID17873 + + + Track ID17883 + + + Track ID17878 + + + Track ID17862 + + + Track ID17856 + + + Track ID17770 + + + Track ID17776 + + + Track ID17781 + + + Track ID17786 + + + Track ID17791 + + + Track ID17796 + + + Track ID17801 + + + Track ID17806 + + + Track ID17811 + + + Track ID17816 + + + Track ID17821 + + + Track ID17826 + + + Track ID17831 + + + Track ID17836 + + + Track ID17841 + + + Track ID17744 + + + Track ID17749 + + + Track ID17754 + + + Track ID17759 + + + Track ID18025 + + + Track ID18032 + + + Track ID18039 + + + Track ID19148 + + + + + NameDownloaded + Description + Playlist ID12050 + Playlist Persistent IDEED2353344D38607 + Distinguished Kind66 + All Items + + + NameMovies + Description + Playlist ID12053 + Playlist Persistent ID651F640A8E524298 + Distinguished Kind2 + Movies + All Items + + + NameDownloaded + Description + Playlist ID12059 + Playlist Persistent IDAF2DE612E75D1007 + Distinguished Kind67 + All Items + + + NameTV Shows + Description + Playlist ID12062 + Playlist Persistent ID9B4069937FD82150 + Distinguished Kind3 + TV Shows + All Items + + + NamePodcasts + Description + Playlist ID12065 + Playlist Persistent IDF98D22897141736B + Distinguished Kind10 + Podcasts + All Items + + + NameAudiobooks + Description + Playlist ID12072 + Playlist Persistent IDCB6B93072B4C17B5 + Distinguished Kind5 + Audiobooks + All Items + + + NameArchived + Description + Playlist ID12078 + Playlist Persistent ID8A39EB342DA454F4 + All Items + Folder + Playlist Items + + + Track ID2437 + + + Track ID2441 + + + Track ID2443 + + + Track ID2445 + + + Track ID2455 + + + Track ID2459 + + + Track ID2465 + + + Track ID2469 + + + Track ID2471 + + + Track ID2479 + + + Track ID2481 + + + Track ID2485 + + + Track ID2489 + + + Track ID2493 + + + Track ID2499 + + + Track ID2501 + + + Track ID2505 + + + Track ID2519 + + + Track ID2521 + + + Track ID2527 + + + Track ID2529 + + + Track ID2531 + + + Track ID2535 + + + Track ID2541 + + + Track ID2543 + + + Track ID2545 + + + Track ID2547 + + + Track ID2553 + + + Track ID2559 + + + Track ID2561 + + + Track ID2569 + + + Track ID2573 + + + Track ID2575 + + + Track ID2577 + + + Track ID2579 + + + Track ID2581 + + + Track ID2587 + + + Track ID2601 + + + Track ID2605 + + + Track ID2609 + + + Track ID2611 + + + Track ID2617 + + + Track ID2619 + + + Track ID2621 + + + Track ID2629 + + + Track ID2645 + + + Track ID2647 + + + Track ID2651 + + + Track ID2653 + + + Track ID2665 + + + Track ID2673 + + + Track ID2677 + + + Track ID2681 + + + Track ID2683 + + + Track ID2691 + + + Track ID2693 + + + Track ID2697 + + + Track ID2703 + + + Track ID2705 + + + Track ID2707 + + + Track ID2709 + + + Track ID2711 + + + Track ID2713 + + + Track ID2715 + + + Track ID2717 + + + Track ID2719 + + + Track ID2725 + + + Track ID2729 + + + Track ID2731 + + + Track ID2735 + + + Track ID2739 + + + Track ID2741 + + + Track ID2743 + + + Track ID2745 + + + Track ID2747 + + + Track ID2749 + + + Track ID2761 + + + Track ID2763 + + + Track ID2765 + + + Track ID2767 + + + Track ID2769 + + + Track ID2771 + + + Track ID2773 + + + Track ID2775 + + + Track ID2781 + + + Track ID2803 + + + Track ID2823 + + + Track ID2879 + + + Track ID2903 + + + Track ID2905 + + + Track ID2907 + + + Track ID2909 + + + Track ID2911 + + + Track ID2913 + + + Track ID2915 + + + Track ID2917 + + + Track ID2919 + + + Track ID2921 + + + Track ID2923 + + + Track ID2925 + + + Track ID2927 + + + Track ID2929 + + + Track ID2931 + + + Track ID2977 + + + Track ID2979 + + + Track ID2981 + + + Track ID2983 + + + Track ID2985 + + + Track ID2987 + + + Track ID2989 + + + Track ID2991 + + + Track ID2993 + + + Track ID2995 + + + Track ID3019 + + + Track ID3021 + + + Track ID3023 + + + Track ID3025 + + + Track ID3027 + + + Track ID3029 + + + Track ID3031 + + + Track ID3033 + + + Track ID3037 + + + Track ID3039 + + + Track ID3041 + + + Track ID3079 + + + Track ID3081 + + + Track ID3089 + + + Track ID3091 + + + Track ID3093 + + + Track ID3127 + + + Track ID3131 + + + Track ID3183 + + + Track ID3185 + + + Track ID3187 + + + Track ID3195 + + + Track ID3219 + + + Track ID3225 + + + Track ID3247 + + + Track ID3257 + + + Track ID3281 + + + Track ID3283 + + + Track ID3287 + + + Track ID3293 + + + Track ID3297 + + + Track ID3305 + + + Track ID3307 + + + Track ID3353 + + + Track ID3373 + + + Track ID3377 + + + Track ID3381 + + + Track ID3383 + + + Track ID3391 + + + Track ID3401 + + + Track ID3405 + + + Track ID3415 + + + Track ID3417 + + + Track ID3421 + + + Track ID3425 + + + Track ID3437 + + + Track ID3467 + + + Track ID3471 + + + Track ID3475 + + + Track ID3477 + + + Track ID3479 + + + Track ID3481 + + + Track ID3485 + + + Track ID3495 + + + Track ID3513 + + + Track ID3549 + + + Track ID3557 + + + Track ID3641 + + + Track ID3673 + + + Track ID3685 + + + Track ID3751 + + + Track ID3759 + + + Track ID3763 + + + Track ID3773 + + + Track ID3777 + + + Track ID3855 + + + Track ID3903 + + + Track ID3909 + + + Track ID4061 + + + Track ID4187 + + + Track ID4199 + + + Track ID4251 + + + Track ID4259 + + + Track ID4261 + + + Track ID4331 + + + Track ID4349 + + + Track ID4351 + + + Track ID4383 + + + Track ID4443 + + + Track ID4491 + + + Track ID4499 + + + Track ID4521 + + + Track ID4533 + + + Track ID4537 + + + Track ID4539 + + + Track ID4541 + + + Track ID4549 + + + Track ID4557 + + + Track ID4589 + + + Track ID4603 + + + Track ID4653 + + + Track ID4655 + + + Track ID4659 + + + Track ID4759 + + + Track ID4761 + + + Track ID4763 + + + Track ID4765 + + + Track ID4769 + + + Track ID4777 + + + Track ID4781 + + + Track ID4783 + + + Track ID4801 + + + Track ID4811 + + + Track ID4817 + + + Track ID4819 + + + Track ID4821 + + + Track ID4823 + + + Track ID4843 + + + Track ID4869 + + + Track ID4895 + + + Track ID4897 + + + Track ID4901 + + + Track ID4903 + + + Track ID4905 + + + Track ID4915 + + + Track ID4923 + + + Track ID4927 + + + Track ID4935 + + + Track ID4939 + + + Track ID4941 + + + Track ID4943 + + + Track ID4947 + + + Track ID4949 + + + Track ID4953 + + + Track ID4955 + + + Track ID4959 + + + Track ID4963 + + + Track ID4965 + + + Track ID4967 + + + Track ID4969 + + + Track ID4971 + + + Track ID4973 + + + Track ID4975 + + + Track ID4977 + + + Track ID4979 + + + Track ID4981 + + + Track ID4983 + + + Track ID4985 + + + Track ID4987 + + + Track ID4989 + + + Track ID4991 + + + Track ID4993 + + + Track ID4995 + + + Track ID4997 + + + Track ID4999 + + + Track ID5001 + + + Track ID5003 + + + Track ID5005 + + + Track ID5007 + + + Track ID5009 + + + Track ID5011 + + + Track ID5013 + + + Track ID5015 + + + Track ID5017 + + + Track ID5019 + + + Track ID5021 + + + Track ID5023 + + + Track ID5025 + + + Track ID5027 + + + Track ID5029 + + + Track ID5031 + + + Track ID5033 + + + Track ID5035 + + + Track ID5037 + + + Track ID5039 + + + Track ID5041 + + + Track ID5043 + + + Track ID5045 + + + Track ID5047 + + + Track ID5049 + + + Track ID5051 + + + Track ID5053 + + + Track ID5055 + + + Track ID5057 + + + Track ID5059 + + + Track ID5061 + + + Track ID5063 + + + Track ID5065 + + + Track ID5067 + + + Track ID5089 + + + Track ID5215 + + + Track ID5465 + + + Track ID5485 + + + Track ID5529 + + + Track ID5533 + + + Track ID5925 + + + Track ID6479 + + + + + Namechillout + Description1.12.2018 + Playlist ID12381 + Playlist Persistent IDD78B32B2865AECB8 + Parent Persistent ID8A39EB342DA454F4 + All Items + Playlist Items + + + Track ID2917 + + + Track ID2927 + + + Track ID2923 + + + Track ID2929 + + + Track ID2913 + + + Track ID2925 + + + Track ID2907 + + + Track ID2915 + + + Track ID2905 + + + Track ID2903 + + + Track ID2921 + + + Track ID2919 + + + Track ID2909 + + + Track ID2911 + + + Track ID2879 + + + Track ID2931 + + + + + NameDefend yakut from badass mom + Description + Playlist ID12400 + Playlist Persistent ID931C1DC3EEB6CC41 + Parent Persistent ID8A39EB342DA454F4 + All Items + Playlist Items + + + Track ID4537 + + + Track ID4331 + + + Track ID4061 + + + Track ID4491 + + + Track ID4443 + + + Track ID2719 + + + Track ID4541 + + + Track ID4533 + + + Track ID4499 + + + Track ID4259 + + + Track ID4539 + + + Track ID4383 + + + + + Nameloud + Description + Playlist ID12415 + Playlist Persistent ID8372313B5919A47E + Parent Persistent ID8A39EB342DA454F4 + All Items + Playlist Items + + + Track ID4761 + + + Track ID2569 + + + Track ID4653 + + + Track ID2995 + + + Track ID4759 + + + Track ID4659 + + + Track ID3855 + + + Track ID4655 + + + Track ID4557 + + + Track ID4199 + + + Track ID3219 + + + Track ID4781 + + + Track ID3673 + + + Track ID4763 + + + Track ID4801 + + + Track ID4765 + + + Track ID3381 + + + Track ID4769 + + + Track ID4777 + + + Track ID3641 + + + Track ID2823 + + + Track ID3777 + + + Track ID3909 + + + Track ID3475 + + + Track ID4251 + + + Track ID4811 + + + Track ID3685 + + + Track ID4819 + + + Track ID4823 + + + Track ID2979 + + + Track ID4843 + + + Track ID4351 + + + Track ID4349 + + + Track ID4897 + + + Track ID4895 + + + Track ID4869 + + + Track ID4901 + + + Track ID4903 + + + Track ID3027 + + + Track ID3773 + + + Track ID4939 + + + Track ID4941 + + + Track ID3759 + + + Track ID3763 + + + Track ID3751 + + + Track ID4943 + + + Track ID4905 + + + Track ID4947 + + + Track ID4949 + + + Track ID2987 + + + Track ID4953 + + + Track ID4955 + + + Track ID3557 + + + Track ID4959 + + + Track ID4927 + + + Track ID4923 + + + Track ID4821 + + + Track ID4589 + + + Track ID2781 + + + Track ID3281 + + + Track ID3247 + + + Track ID4915 + + + Track ID6479 + + + + + Namenice + Description + Playlist ID12481 + Playlist Persistent ID32D53C5FA6D27AA1 + Parent Persistent ID8A39EB342DA454F4 + All Items + Playlist Items + + + Track ID3381 + + + Track ID3383 + + + Track ID3377 + + + Track ID3039 + + + Track ID3297 + + + Track ID3485 + + + Track ID3495 + + + Track ID3421 + + + Track ID3401 + + + Track ID4557 + + + Track ID3437 + + + Track ID4261 + + + Track ID3391 + + + Track ID5925 + + + Track ID5533 + + + Track ID5529 + + + Track ID4187 + + + Track ID5465 + + + Track ID3373 + + + Track ID3471 + + + Track ID3467 + + + Track ID3479 + + + Track ID3477 + + + Track ID3425 + + + Track ID3405 + + + Track ID3353 + + + Track ID3481 + + + Track ID4589 + + + Track ID2677 + + + Track ID3415 + + + Track ID3417 + + + Track ID5089 + + + Track ID3549 + + + Track ID5485 + + + Track ID3187 + + + Track ID3513 + + + + + Nameon my own + Description + Playlist ID12520 + Playlist Persistent ID0C5DFD5B4DA93CF7 + Parent Persistent ID8A39EB342DA454F4 + All Items + Playlist Items + + + Track ID2981 + + + Track ID3093 + + + Track ID2979 + + + Track ID3023 + + + Track ID2983 + + + Track ID3037 + + + Track ID3025 + + + Track ID3027 + + + Track ID2575 + + + Track ID2995 + + + Track ID2985 + + + Track ID2989 + + + Track ID3033 + + + Track ID3091 + + + Track ID3089 + + + Track ID2991 + + + Track ID2993 + + + Track ID3131 + + + Track ID3031 + + + Track ID3019 + + + Track ID3021 + + + Track ID3029 + + + Track ID3079 + + + Track ID3081 + + + Track ID2735 + + + Track ID2731 + + + Track ID2719 + + + Track ID2717 + + + Track ID2729 + + + Track ID2739 + + + Track ID2743 + + + Track ID2745 + + + Track ID2767 + + + Track ID2773 + + + Track ID2749 + + + Track ID2761 + + + Track ID2765 + + + Track ID2769 + + + Track ID2747 + + + Track ID2763 + + + Track ID2771 + + + Track ID2741 + + + Track ID2707 + + + Track ID2715 + + + Track ID2691 + + + Track ID2693 + + + Track ID2725 + + + Track ID2683 + + + Track ID2703 + + + Track ID2681 + + + Track ID2697 + + + Track ID2775 + + + Track ID5215 + + + + + Namestory + Description + Playlist ID12576 + Playlist Persistent ID5A813973B84B9A5D + Parent Persistent ID8A39EB342DA454F4 + All Items + Playlist Items + + + Track ID4521 + + + Track ID2911 + + + Track ID4935 + + + Track ID5051 + + + Track ID4603 + + + Track ID5041 + + + Track ID3257 + + + Track ID3307 + + + Track ID4537 + + + Track ID4549 + + + Track ID3037 + + + Track ID5065 + + + Track ID5047 + + + Track ID2651 + + + Track ID2647 + + + Track ID2441 + + + Track ID2561 + + + Track ID5061 + + + Track ID5053 + + + Track ID5045 + + + Track ID2673 + + + Track ID5027 + + + Track ID5055 + + + Track ID5035 + + + Track ID5023 + + + Track ID5059 + + + Track ID2977 + + + Track ID5043 + + + Track ID2803 + + + Track ID5049 + + + Track ID4817 + + + Track ID2479 + + + Track ID2481 + + + Track ID2471 + + + Track ID2535 + + + Track ID2541 + + + Track ID5063 + + + Track ID2617 + + + Track ID5067 + + + Track ID5029 + + + Track ID5057 + + + Track ID2989 + + + Track ID2573 + + + Track ID2521 + + + Track ID2519 + + + Track ID5039 + + + Track ID5031 + + + Track ID5037 + + + Track ID2553 + + + Track ID5033 + + + Track ID5025 + + + Track ID4993 + + + Track ID4985 + + + Track ID4991 + + + Track ID5011 + + + Track ID2531 + + + Track ID4983 + + + Track ID4967 + + + Track ID4963 + + + Track ID5005 + + + Track ID5007 + + + Track ID4979 + + + Track ID4977 + + + Track ID4975 + + + Track ID2709 + + + Track ID2547 + + + Track ID2527 + + + Track ID2713 + + + Track ID2501 + + + Track ID3903 + + + Track ID4987 + + + Track ID2605 + + + Track ID2559 + + + Track ID4965 + + + Track ID4995 + + + Track ID2601 + + + Track ID5019 + + + Track ID4981 + + + Track ID4973 + + + Track ID5003 + + + Track ID3287 + + + Track ID4969 + + + Track ID5015 + + + Track ID2493 + + + Track ID2485 + + + Track ID5001 + + + Track ID2711 + + + Track ID2505 + + + Track ID4997 + + + Track ID5013 + + + Track ID4989 + + + Track ID5021 + + + Track ID5009 + + + Track ID4999 + + + Track ID4971 + + + Track ID4783 + + + Track ID2543 + + + Track ID2545 + + + Track ID5017 + + + + + Namethe begining + Description + Playlist ID12678 + Playlist Persistent IDAB6E951654000558 + Parent Persistent ID8A39EB342DA454F4 + All Items + Playlist Items + + + Track ID2529 + + + Track ID2489 + + + Track ID2527 + + + Track ID2547 + + + Track ID2553 + + + Track ID2499 + + + Track ID3127 + + + Track ID2443 + + + Track ID2441 + + + Track ID2445 + + + Track ID2459 + + + Track ID2437 + + + Track ID2455 + + + Track ID2471 + + + Track ID2481 + + + Track ID2479 + + + Track ID2469 + + + Track ID2465 + + + Track ID2587 + + + Track ID2653 + + + Track ID2645 + + + Track ID2619 + + + Track ID2621 + + + Track ID2629 + + + Track ID2601 + + + Track ID2611 + + + Track ID2609 + + + Track ID2577 + + + Track ID2579 + + + Track ID2581 + + + Track ID2665 + + + Track ID2573 + + + Track ID2569 + + + Track ID2705 + + + Track ID2703 + + + Track ID2683 + + + Track ID3041 + + + Track ID3183 + + + Track ID3185 + + + Track ID3195 + + + Track ID3225 + + + Track ID3283 + + + Track ID3293 + + + Track ID3305 + + + Loved + + + NameGenius + Description + Playlist ID12725 + Playlist Persistent ID6870E938A2EEA122 + All Items + Folder + Playlist Items + + + Track ID2559 + + + Track ID2587 + + + Track ID2701 + + + Track ID2875 + + + Track ID2977 + + + Track ID3139 + + + Track ID3147 + + + Track ID3305 + + + Track ID3335 + + + Track ID3527 + + + Track ID3785 + + + Track ID3807 + + + Track ID3901 + + + Track ID4065 + + + Track ID4223 + + + Track ID4229 + + + Track ID4301 + + + Track ID4307 + + + Track ID4381 + + + Track ID4739 + + + Track ID4817 + + + Track ID4993 + + + Track ID4999 + + + Track ID5035 + + + Track ID5041 + + + + + NameThe Golden Age + Description + Playlist ID12753 + Playlist Persistent IDCA1B9041390E65E3 + Parent Persistent ID6870E938A2EEA122 + All Items + Genius Track ID3139 + Playlist Items + + + Track ID3139 + + + Track ID2977 + + + Track ID4301 + + + Track ID5041 + + + Track ID4381 + + + Track ID3807 + + + Track ID4229 + + + Track ID5035 + + + Track ID4999 + + + Track ID3335 + + + Track ID2587 + + + Track ID3785 + + + Track ID3147 + + + Track ID3901 + + + Track ID2701 + + + Track ID4065 + + + Track ID4307 + + + Track ID4817 + + + Track ID4739 + + + Track ID4223 + + + Track ID4993 + + + Track ID2559 + + + Track ID3305 + + + Track ID3527 + + + Track ID2875 + + + + + Name90’s Music + Description + Playlist ID12781 + Playlist Persistent IDE43560A263092BAE + All Items + Smart Info + + AQEAAwAAAAIAAAAZAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA== + + Smart Criteria + + U0xzdAABAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAEAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAB8YAAAAAAAAAAAAAAAAAAAAB + AAAAAAAAB88AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgFNMc3QAAQAB + AAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAABAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAIAAAAAAAAAAA + AAAAAAAAAAEAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + Playlist Items + + + Track ID4871 + + + Track ID4873 + + + Track ID5513 + + + Track ID5031 + + + Track ID2775 + + + Track ID4997 + + + Track ID5013 + + + Track ID6505 + + + Track ID6503 + + + Track ID5017 + + + Track ID5681 + + + Track ID3775 + + + Track ID2699 + + + Track ID2701 + + + Track ID2659 + + + Track ID2545 + + + Track ID2543 + + + Track ID17856 + + + Track ID17841 + + + + + NameClassical Music + Description + Playlist ID12801 + Playlist Persistent ID30BFC20A9BAC575C + All Items + Smart Info + + AQEAAwAAAAIAAAAZAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA== + + Smart Criteria + + U0xzdAABAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAU0xzdAABAAEAAAACAAAAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAADwAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABEAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAg + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVxTTHN0AAEAAQAAABEAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAACAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAABIAQwBsAGEAcwBzAGkAYwBhAGwAAAAIAQAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABLAGwAYQBzAHMAaQBlAGsAAAAI + AQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgBD + AGwAYQBzAHMAaQBxAHUAZQAAAAgBAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAOAEsAbABhAHMAcwBpAGsAAAAIAQAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABDAGwAYQBzAHMAaQBjAGEAAAAI + AQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjCv + MOkwtzDDMK8AAAAIAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAADgBDAGwA4QBzAGkAYwBhAAAACAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAASwBsAGEAcwBzAGkAcwBrAAAACAEAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAQwBsAOEAcwBz + AGkAYwBhAAAACAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAABIASwBsAGEAcwBzAGkAcwBrAHQAAAAIAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAQaBDsEMARBBEEEOARHBDUEQQQ6BDAETwAA + AAgBAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS + AEsAbABhAHMAeQBjAHoAbgBhAAAACAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAABIASwBsAGEAcwBzAGkAbgBlAG4AAAAIAQAAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADABLAGwAYQBzAGkAawAA + AAgBAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU + AEsAbABhAHMAcwB6AGkAawB1AHMAAAAIAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAFgBWAOEBfgBuAOEAIABoAHUAZABiAGEAAAAIAQAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgZDBkQGJwYz + BkoGQwZK + + Playlist Items + + + Track ID4871 + + + Track ID4873 + + + Track ID5305 + + + Track ID2973 + + + + + NamePlaylist + Description + Playlist ID12808 + Playlist Persistent ID5E2F91E21BC1B745 + All Items + Smart Info + + AQEBAwAAABoAAAD6AAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA== + + Smart Criteria + + U0xzdAABAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAU0xzdAABAAEAAAACAAAAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAADwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABEAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAg + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQRTTHN0AAEAAQAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAmgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEQAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAA + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + Playlist Items + + + Track ID4201 + + + Track ID2577 + + + Track ID2599 + + + Track ID4759 + + + Track ID2523 + + + Track ID3273 + + + Track ID4235 + + + Track ID2683 + + + Track ID5645 + + + Track ID2979 + + + Track ID4965 + + + Track ID4765 + + + Track ID3855 + + + Track ID4511 + + + Track ID3199 + + + Track ID3569 + + + Track ID3187 + + + Track ID2995 + + + Track ID2569 + + + Track ID4517 + + + Track ID4287 + + + Track ID3441 + + + Track ID2981 + + + Track ID4363 + + + Track ID3453 + + + Track ID2767 + + + Track ID3905 + + + Track ID2715 + + + Track ID2441 + + + Track ID3101 + + + Track ID3257 + + + Track ID2719 + + + Track ID3067 + + + Track ID3221 + + + Track ID3669 + + + Track ID2765 + + + Track ID3451 + + + Track ID3511 + + + Track ID2761 + + + Track ID3283 + + + Track ID3499 + + + Track ID2729 + + + Track ID2575 + + + Track ID2983 + + + Track ID3751 + + + Track ID2521 + + + Track ID3763 + + + Track ID3773 + + + Track ID3275 + + + Track ID3173 + + + Track ID17759 + + + Track ID17749 + + + Track ID17867 + + + Track ID4819 + + + Track ID2457 + + + Track ID2439 + + + Track ID2437 + + + Track ID3381 + + + Track ID2849 + + + Track ID2855 + + + Track ID3179 + + + Track ID3447 + + + Track ID2803 + + + Track ID3309 + + + Track ID2973 + + + Track ID3175 + + + Track ID3629 + + + Track ID3111 + + + Track ID3869 + + + Track ID3777 + + + Track ID3459 + + + Track ID2499 + + + Track ID2763 + + + Track ID2739 + + + Track ID2741 + + + Track ID2805 + + + Track ID2649 + + + Track ID3009 + + + Track ID2795 + + + Track ID2667 + + + Track ID3775 + + + Track ID3247 + + + Track ID2579 + + + Track ID3027 + + + Track ID3171 + + + Track ID2519 + + + Track ID3089 + + + Track ID2571 + + + Track ID3759 + + + Track ID3091 + + + Track ID2985 + + + Track ID2573 + + + Track ID3495 + + + Track ID2531 + + + Track ID2775 + + + Track ID3659 + + + Track ID3037 + + + Track ID2773 + + + Track ID3463 + + + Track ID3465 + + + Track ID3457 + + + Track ID2991 + + + Track ID3023 + + + Track ID3621 + + + Track ID3039 + + + Track ID3651 + + + Track ID3697 + + + Track ID3881 + + + Track ID3201 + + + Track ID3481 + + + Track ID3109 + + + Track ID3903 + + + Track ID3851 + + + Track ID2815 + + + Track ID3407 + + + Track ID2589 + + + Track ID2823 + + + Track ID3571 + + + Track ID3857 + + + Track ID3017 + + + Track ID3729 + + + Track ID4153 + + + Track ID4167 + + + Track ID4185 + + + Track ID4145 + + + Track ID4159 + + + Track ID4187 + + + Track ID4147 + + + Track ID4061 + + + Track ID4057 + + + Track ID4071 + + + Track ID4109 + + + Track ID4063 + + + Track ID4049 + + + Track ID4179 + + + Track ID3969 + + + Track ID4205 + + + Track ID4417 + + + Track ID4607 + + + Track ID4265 + + + Track ID4249 + + + Track ID4269 + + + Track ID4565 + + + Track ID4351 + + + Track ID4211 + + + Track ID4193 + + + Track ID4273 + + + Track ID4281 + + + Track ID4605 + + + Track ID4603 + + + Track ID4525 + + + Track ID5651 + + + Track ID5277 + + + Track ID5673 + + + Track ID5409 + + + Track ID5047 + + + Track ID5663 + + + Track ID5329 + + + Track ID5477 + + + Track ID5293 + + + Track ID5751 + + + Track ID5711 + + + Track ID5045 + + + Track ID5437 + + + Track ID4967 + + + Track ID5291 + + + Track ID5475 + + + Track ID5543 + + + Track ID4815 + + + Track ID5521 + + + Track ID5647 + + + Track ID5287 + + + Track ID5389 + + + Track ID4761 + + + Track ID4779 + + + Track ID4963 + + + Track ID4741 + + + Track ID5725 + + + Track ID4833 + + + Track ID5317 + + + Track ID5545 + + + Track ID5017 + + + Track ID4927 + + + Track ID4687 + + + Track ID5041 + + + Track ID5159 + + + Track ID4721 + + + Track ID4661 + + + Track ID4955 + + + Track ID5793 + + + Track ID4639 + + + Track ID5615 + + + Track ID4659 + + + Track ID4651 + + + Track ID5841 + + + Track ID5785 + + + Track ID5091 + + + Track ID4643 + + + Track ID5561 + + + Track ID5863 + + + Track ID5773 + + + Track ID5547 + + + Track ID5151 + + + Track ID5573 + + + Track ID5851 + + + Track ID4645 + + + Track ID5075 + + + Track ID5051 + + + Track ID5567 + + + Track ID5529 + + + Track ID5005 + + + Track ID5683 + + + Track ID5137 + + + Track ID5281 + + + Track ID4861 + + + Track ID4873 + + + Track ID5213 + + + Track ID4991 + + + Track ID4925 + + + Track ID5595 + + + Track ID6417 + + + Track ID6317 + + + Track ID6061 + + + Track ID6187 + + + Track ID6079 + + + Track ID6093 + + + Track ID5871 + + + Track ID6805 + + + Track ID6433 + + + Track ID6351 + + + Track ID6095 + + + Track ID6227 + + + Track ID6463 + + + Track ID6717 + + + Track ID6033 + + + Track ID6353 + + + Track ID6773 + + + Track ID5923 + + + Track ID6527 + + + Track ID6131 + + + Track ID6293 + + + Track ID6071 + + + Track ID6347 + + + Track ID6049 + + + Track ID5931 + + + Track ID6333 + + + Track ID6427 + + + Track ID6399 + + + Track ID6089 + + + Track ID6097 + + + + + NamePlaylist + Description + Playlist ID13061 + Playlist Persistent ID8A5A118A08822005 + All Items + Smart Info + + AQEBAwAAABoAAAnEAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA== + + Smart Criteria + + U0xzdAABAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAU0xzdAABAAEAAAACAAAAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAADwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABEAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAg + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQRTTHN0AAEAAQAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAmgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEQAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAA + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + Playlist Items + + + Track ID2717 + + + Track ID4201 + + + Track ID3019 + + + Track ID3685 + + + Track ID5065 + + + Track ID3213 + + + Track ID6791 + + + Track ID6795 + + + Track ID6819 + + + Track ID2727 + + + Track ID5175 + + + Track ID4847 + + + Track ID4241 + + + Track ID6093 + + + Track ID3417 + + + Track ID5931 + + + Track ID2577 + + + Track ID2809 + + + Track ID2599 + + + Track ID4759 + + + Track ID2523 + + + Track ID3273 + + + Track ID4629 + + + Track ID4235 + + + Track ID2683 + + + Track ID6105 + + + Track ID4959 + + + Track ID5645 + + + Track ID5533 + + + Track ID3479 + + + Track ID6717 + + + Track ID5633 + + + Track ID2979 + + + Track ID4965 + + + Track ID3205 + + + Track ID4765 + + + Track ID4801 + + + Track ID3855 + + + Track ID4511 + + + Track ID3199 + + + Track ID2583 + + + Track ID3569 + + + Track ID5285 + + + Track ID5549 + + + Track ID3187 + + + Track ID5389 + + + Track ID3219 + + + Track ID4659 + + + Track ID2995 + + + Track ID2569 + + + Track ID4761 + + + Track ID5929 + + + Track ID4517 + + + Track ID4537 + + + Track ID4287 + + + Track ID6065 + + + Track ID6731 + + + Track ID5411 + + + Track ID3441 + + + Track ID6407 + + + Track ID4967 + + + Track ID2825 + + + Track ID6033 + + + Track ID3297 + + + Track ID6227 + + + Track ID5919 + + + Track ID2981 + + + Track ID5475 + + + Track ID4363 + + + Track ID3657 + + + Track ID2635 + + + Track ID4535 + + + Track ID3453 + + + Track ID6309 + + + Track ID5235 + + + Track ID2767 + + + Track ID6025 + + + Track ID4495 + + + Track ID4433 + + + Track ID2737 + + + Track ID6523 + + + Track ID6773 + + + Track ID3475 + + + Track ID4017 + + + Track ID2637 + + + Track ID5047 + + + Track ID6761 + + + Track ID6763 + + + Track ID6327 + + + Track ID3905 + + + Track ID4289 + + + Track ID6369 + + + Track ID2715 + + + Track ID5501 + + + Track ID5407 + + + Track ID2665 + + + Track ID4963 + + + Track ID5467 + + + Track ID5317 + + + Track ID5163 + + + Track ID6425 + + + Track ID5665 + + + Track ID4417 + + + Track ID4191 + + + Track ID4617 + + + Track ID2441 + + + Track ID3633 + + + Track ID4605 + + + Track ID5647 + + + Track ID5711 + + + Track ID2469 + + + Track ID3033 + + + Track ID3101 + + + Track ID5709 + + + Track ID3271 + + + Track ID3257 + + + Track ID2719 + + + Track ID2735 + + + Track ID4589 + + + Track ID6433 + + + Track ID3067 + + + Track ID3221 + + + Track ID2459 + + + Track ID4769 + + + Track ID5281 + + + Track ID4853 + + + Track ID5075 + + + Track ID6333 + + + Track ID5803 + + + Track ID4461 + + + Track ID2743 + + + Track ID3217 + + + Track ID4671 + + + Track ID2527 + + + Track ID3693 + + + Track ID5059 + + + Track ID3669 + + + Track ID6695 + + + Track ID2663 + + + Track ID2765 + + + Track ID4319 + + + Track ID3451 + + + Track ID4079 + + + Track ID4813 + + + Track ID2771 + + + Track ID4351 + + + Track ID6037 + + + Track ID4935 + + + Track ID6051 + + + Track ID3511 + + + Track ID5393 + + + Track ID3737 + + + Track ID5159 + + + Track ID2761 + + + Track ID4645 + + + Track ID3283 + + + Track ID3499 + + + Track ID5643 + + + Track ID2729 + + + Track ID5679 + + + Track ID3069 + + + Track ID3553 + + + Track ID4153 + + + Track ID5461 + + + Track ID4721 + + + Track ID4259 + + + Track ID5841 + + + Track ID5485 + + + Track ID5581 + + + Track ID5107 + + + Track ID6095 + + + Track ID2813 + + + Track ID5597 + + + Track ID5137 + + + Track ID2953 + + + Track ID3723 + + + Track ID2535 + + + Track ID2575 + + + Track ID2983 + + + Track ID3177 + + + Track ID4437 + + + Track ID6099 + + + Track ID5967 + + + Track ID6087 + + + Track ID6187 + + + Track ID5663 + + + Track ID3923 + + + Track ID3641 + + + Track ID4879 + + + Track ID5589 + + + Track ID6347 + + + Track ID6495 + + + Track ID6691 + + + Track ID3751 + + + Track ID5229 + + + Track ID6477 + + + Track ID6089 + + + Track ID5541 + + + Track ID3793 + + + Track ID3683 + + + Track ID5691 + + + Track ID6021 + + + Track ID5167 + + + Track ID5021 + + + Track ID4317 + + + Track ID4603 + + + Track ID4999 + + + Track ID5293 + + + Track ID6271 + + + Track ID6241 + + + Track ID5215 + + + Track ID2521 + + + Track ID4203 + + + Track ID2615 + + + Track ID3763 + + + Track ID4541 + + + Track ID3265 + + + Track ID3773 + + + Track ID3043 + + + Track ID2581 + + + Track ID5573 + + + Track ID5109 + + + Track ID5283 + + + Track ID2553 + + + Track ID3275 + + + Track ID3847 + + + Track ID3173 + + + Track ID4841 + + + Track ID5115 + + + Track ID5477 + + + Track ID2629 + + + Track ID5773 + + + Track ID4061 + + + Track ID6463 + + + Track ID4607 + + + Track ID4063 + + + Track ID5521 + + + Track ID3601 + + + Track ID6503 + + + Track ID3645 + + + Track ID2443 + + + Track ID3039 + + + Track ID2561 + + + Track ID3809 + + + Track ID3079 + + + Track ID6423 + + + Track ID6061 + + + Track ID3391 + + + Track ID4733 + + + Track ID4719 + + + Track ID4223 + + + Track ID4985 + + + Track ID5335 + + + Track ID5577 + + + Track ID2439 + + + Track ID2989 + + + Track ID6427 + + + Track ID5017 + + + Track ID3035 + + + Track ID4249 + + + Track ID4943 + + + Track ID3903 + + + Track ID3189 + + + Track ID3571 + + + Track ID4925 + + + Track ID5139 + + + Track ID3457 + + + Track ID2969 + + + Track ID2667 + + + Track ID3131 + + + Track ID2633 + + + Track ID4015 + + + Track ID3459 + + + Track ID6417 + + + Track ID2697 + + + Track ID3859 + + + Track ID2455 + + + Track ID5455 + + + Track ID5697 + + + Track ID6461 + + + Track ID3729 + + + Track ID5725 + + + Track ID5277 + + + Track ID2973 + + + Track ID2671 + + + Track ID6351 + + + Track ID3195 + + + Track ID2799 + + + Track ID3465 + + + Track ID4049 + + + Track ID4375 + + + Track ID5935 + + + Track ID4233 + + + Track ID6091 + + + Track ID3567 + + + Track ID3191 + + + Track ID4187 + + + Track ID4525 + + + Track ID5683 + + + Track ID2781 + + + Track ID6039 + + + Track ID3021 + + + Track ID6045 + + + Track ID5925 + + + Track ID4669 + + + Track ID5245 + + + Track ID6049 + + + Track ID4779 + + + Track ID5859 + + + Track ID3697 + + + Track ID4661 + + + Track ID2843 + + + Track ID3027 + + + Track ID2833 + + + Track ID3881 + + + Track ID3919 + + + Track ID3309 + + + Track ID3037 + + + Track ID3857 + + + Track ID5195 + + + Track ID2457 + + + Track ID4915 + + + Track ID6067 + + + Track ID5943 + + + Track ID2795 + + + Track ID2803 + + + Track ID4677 + + + Track ID4205 + + + Track ID5033 + + + Track ID4531 + + + Track ID2651 + + + Track ID2597 + + + Track ID5635 + + + Track ID2763 + + + Track ID5911 + + + Track ID5687 + + + Track ID5837 + + + Track ID3907 + + + Track ID3447 + + + Track ID3341 + + + Track ID4335 + + + Track ID4997 + + + Track ID3429 + + + Track ID3377 + + + Track ID5785 + + + Track ID5555 + + + Track ID4597 + + + Track ID5465 + + + Track ID3307 + + + Track ID5853 + + + Track ID3655 + + + Track ID2589 + + + Track ID4145 + + + Track ID4499 + + + Track ID4331 + + + Track ID2489 + + + Track ID6047 + + + Track ID5543 + + + Track ID3549 + + + Track ID3619 + + + Track ID5651 + + + Track ID5437 + + + Track ID5561 + + + Track ID2587 + + + Track ID4439 + + + Track ID2531 + + + Track ID5123 + + + Track ID5179 + + + Track ID5751 + + + Track ID4273 + + + Track ID2655 + + + Track ID5207 + + + Track ID4455 + + + Track ID6069 + + + Track ID4591 + + + Track ID5153 + + + Track ID4377 + + + Track ID5019 + + + Track ID3851 + + + Track ID3735 + + + Track ID2739 + + + Track ID3635 + + + Track ID3085 + + + Track ID4071 + + + Track ID5015 + + + Track ID3415 + + + Track ID2789 + + + Track ID5435 + + + Track ID5121 + + + Track ID4587 + + + Track ID5459 + + + Track ID4021 + + + Track ID5213 + + + Track ID5379 + + + Track ID4443 + + + Track ID6429 + + + Track ID6431 + + + Track ID2573 + + + Track ID4269 + + + Track ID2579 + + + Track ID5611 + + + Track ID3109 + + + Track ID5653 + + + Track ID2529 + + + Track ID4565 + + + Track ID5325 + + + Track ID6421 + + + Track ID3171 + + + Track ID4955 + + + Track ID5341 + + + Track ID3093 + + + Track ID4903 + + + Track ID4167 + + + Track ID3025 + + + Track ID2445 + + + Track ID3193 + + + Track ID5793 + + + Track ID2855 + + + Track ID4533 + + + Track ID3303 + + + Track ID5041 + + + Track ID3091 + + + Track ID4281 + + + Track ID2817 + + + Track ID2985 + + + Track ID2471 + + + Track ID3621 + + + Track ID5297 + + + Track ID6079 + + + Track ID2627 + + + Track ID2991 + + + Track ID4199 + + + Track ID4923 + + + Track ID4655 + + + Track ID2823 + + + Track ID4777 + + + Track ID3659 + + + Track ID3247 + + + Track ID3489 + + + Track ID4643 + + + Track ID2693 + + + Track ID5395 + + + Track ID4521 + + + Track ID5615 + + + Track ID2917 + + + Track ID5923 + + + Track ID4339 + + + Track ID4265 + + + Track ID2805 + + + Track ID5003 + + + Track ID5305 + + + Track ID2617 + + + Track ID3629 + + + Track ID3565 + + + Track ID6027 + + + Track ID3207 + + + Track ID5547 + + + Track ID2749 + + + Track ID4611 + + + Track ID2929 + + + Track ID3201 + + + Track ID3009 + + + Track ID2621 + + + Track ID5051 + + + Track ID6101 + + + Track ID3519 + + + Track ID4159 + + + Track ID5347 + + + Track ID3529 + + + Track ID3665 + + + Track ID4681 + + + Track ID5091 + + + Track ID2673 + + + Track ID3509 + + + Track ID5939 + + + Track ID2857 + + + Track ID2499 + + + Track ID6349 + + + Track ID4767 + + + Track ID4193 + + + Track ID4913 + + + Track ID3775 + + + Track ID4741 + + + Track ID2669 + + + Track ID3869 + + + Track ID2691 + + + Track ID3175 + + + Track ID5377 + + + Track ID4833 + + + Track ID6319 + + + Track ID4179 + + + Track ID3045 + + + Track ID4057 + + + Track ID6221 + + + Track ID6381 + + + Track ID3943 + + + Track ID6131 + + + Track ID2819 + + + Track ID5291 + + + Track ID5799 + + + Track ID2769 + + + Track ID5595 + + + Track ID5673 + + + Track ID4639 + + + Track ID2653 + + + Track ID2703 + + + Track ID3695 + + + Track ID2807 + + + Track ID6097 + + + Track ID5933 + + + Track ID2571 + + + Track ID3485 + + + Track ID3901 + + + Track ID2547 + + + Track ID5863 + + + Track ID3481 + + + Track ID3969 + + + Track ID2519 + + + Track ID5539 + + + Track ID5409 + + + Track ID3861 + + + Track ID2699 + + + Track ID4737 + + + Track ID4513 + + + Track ID3501 + + + Track ID3077 + + + Track ID3495 + + + Track ID2725 + + + Track ID2903 + + + Track ID6293 + + + Track ID6311 + + + Track ID4379 + + + Track ID5071 + + + Track ID4059 + + + Track ID3311 + + + Track ID2447 + + + Track ID3853 + + + Track ID6071 + + + Track ID3381 + + + Track ID2867 + + + Track ID2619 + + + Track ID2731 + + + Track ID3089 + + + Track ID2549 + + + Track ID3971 + + + Track ID2623 + + + Track ID2783 + + + Track ID3651 + + + Track ID5567 + + + Track ID3065 + + + Track ID5269 + + + Track ID2705 + + + Track ID3777 + + + Track ID4861 + + + Track ID6317 + + + Track ID2533 + + + Track ID4651 + + + Track ID5529 + + + Track ID6353 + + + Track ID4665 + + + Track ID2955 + + + Track ID5569 + + + Track ID3759 + + + Track ID2747 + + + Track ID4491 + + + Track ID5871 + + + Track ID3977 + + + Track ID6213 + + + Track ID2849 + + + Track ID4815 + + + Track ID4917 + + + Track ID5851 + + + Track ID4185 + + + Track ID4209 + + + Track ID2785 + + + Track ID4539 + + + Track ID4667 + + + Track ID5329 + + + Track ID3559 + + + Track ID4211 + + + Track ID2741 + + + Track ID2775 + + + Track ID3023 + + + Track ID4789 + + + Track ID5287 + + + Track ID2831 + + + Track ID4155 + + + Track ID2461 + + + Track ID3179 + + + Track ID3203 + + + Track ID3589 + + + Track ID2649 + + + Track ID5545 + + + Track ID6117 + + + Track ID4133 + + + Track ID4217 + + + Track ID3383 + + + Track ID2851 + + + Track ID4147 + + + Track ID3639 + + + Track ID5005 + + + Track ID2643 + + + Track ID2647 + + + Track ID4349 + + + Track ID4991 + + + Track ID5887 + + + Track ID2745 + + + Track ID2613 + + + Track ID2437 + + + Track ID2815 + + + Track ID5713 + + + Track ID5151 + + + Track ID3111 + + + Track ID2681 + + + Track ID4873 + + + Track ID3407 + + + Track ID4909 + + + Track ID5057 + + + Track ID3691 + + + Track ID2465 + + + Track ID4255 + + + Track ID3017 + + + Track ID2757 + + + Track ID3161 + + + Track ID4615 + + + Track ID4109 + + + Track ID5937 + + + Track ID2773 + + + Track ID4927 + + + Track ID5401 + + + Track ID5323 + + + Track ID5789 + + + Track ID4631 + + + Track ID6081 + + + Track ID6179 + + + Track ID5819 + + + Track ID5535 + + + Track ID5945 + + + Track ID3209 + + + Track ID3711 + + + Track ID5741 + + + Track ID3721 + + + Track ID5045 + + + Track ID4689 + + + Track ID4687 + + + Track ID3741 + + + Track ID3719 + + + Track ID5035 + + + Track ID3715 + + + Track ID4465 + + + Track ID4551 + + + Track ID3287 + + + Track ID2975 + + + Track ID3709 + + + Track ID3705 + + + Track ID5227 + + + Track ID4869 + + + Track ID3743 + + + Track ID2685 + + + Track ID3811 + + + Track ID2645 + + + Track ID17759 + + + Track ID17749 + + + Track ID17867 + + + Track ID4819 + + + Track ID6527 + + + Track ID6805 + + + Track ID3463 + + + Track ID6399 + + + Track ID5677 + + + + + NamePlaylist 2 + Description + Playlist ID13725 + Playlist Persistent IDF421559E8B050798 + All Items + Smart Info + + AQEBAwAAABoAAAnEAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA== + + Smart Criteria + + U0xzdAABAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAU0xzdAABAAEAAAACAAAAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAADwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABEAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAg + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQRTTHN0AAEAAQAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAmgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEQAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAA + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + Playlist Items + + + Track ID2717 + + + Track ID4201 + + + Track ID3019 + + + Track ID3685 + + + Track ID5065 + + + Track ID3213 + + + Track ID6791 + + + Track ID6795 + + + Track ID6819 + + + Track ID2727 + + + Track ID5175 + + + Track ID4847 + + + Track ID4241 + + + Track ID6093 + + + Track ID3417 + + + Track ID5931 + + + Track ID2577 + + + Track ID2809 + + + Track ID2599 + + + Track ID4759 + + + Track ID2523 + + + Track ID3273 + + + Track ID4629 + + + Track ID4235 + + + Track ID2683 + + + Track ID6105 + + + Track ID4959 + + + Track ID5645 + + + Track ID5533 + + + Track ID3479 + + + Track ID6717 + + + Track ID5633 + + + Track ID2979 + + + Track ID4965 + + + Track ID3205 + + + Track ID4765 + + + Track ID4801 + + + Track ID3855 + + + Track ID4511 + + + Track ID3199 + + + Track ID2583 + + + Track ID3569 + + + Track ID5285 + + + Track ID5549 + + + Track ID3187 + + + Track ID5389 + + + Track ID3219 + + + Track ID4659 + + + Track ID2995 + + + Track ID2569 + + + Track ID4761 + + + Track ID5929 + + + Track ID4517 + + + Track ID4537 + + + Track ID4287 + + + Track ID6065 + + + Track ID6731 + + + Track ID5411 + + + Track ID3441 + + + Track ID6407 + + + Track ID4967 + + + Track ID2825 + + + Track ID6033 + + + Track ID3297 + + + Track ID6227 + + + Track ID5919 + + + Track ID2981 + + + Track ID5475 + + + Track ID4363 + + + Track ID3657 + + + Track ID2635 + + + Track ID4535 + + + Track ID3453 + + + Track ID6309 + + + Track ID5235 + + + Track ID2767 + + + Track ID6025 + + + Track ID4495 + + + Track ID4433 + + + Track ID2737 + + + Track ID6523 + + + Track ID6773 + + + Track ID3475 + + + Track ID4017 + + + Track ID2637 + + + Track ID5047 + + + Track ID6761 + + + Track ID6763 + + + Track ID6327 + + + Track ID3905 + + + Track ID4289 + + + Track ID6369 + + + Track ID2715 + + + Track ID5501 + + + Track ID5407 + + + Track ID2665 + + + Track ID4963 + + + Track ID5467 + + + Track ID5317 + + + Track ID5163 + + + Track ID6425 + + + Track ID5665 + + + Track ID4417 + + + Track ID4191 + + + Track ID4617 + + + Track ID2441 + + + Track ID3633 + + + Track ID4605 + + + Track ID5647 + + + Track ID5711 + + + Track ID2469 + + + Track ID3033 + + + Track ID3101 + + + Track ID5709 + + + Track ID3271 + + + Track ID3257 + + + Track ID2719 + + + Track ID2735 + + + Track ID4589 + + + Track ID6433 + + + Track ID3067 + + + Track ID3221 + + + Track ID2459 + + + Track ID4769 + + + Track ID5281 + + + Track ID4853 + + + Track ID5075 + + + Track ID6333 + + + Track ID5803 + + + Track ID4461 + + + Track ID2743 + + + Track ID3217 + + + Track ID4671 + + + Track ID2527 + + + Track ID3693 + + + Track ID5059 + + + Track ID3669 + + + Track ID6695 + + + Track ID2663 + + + Track ID2765 + + + Track ID4319 + + + Track ID3451 + + + Track ID4079 + + + Track ID4813 + + + Track ID2771 + + + Track ID4351 + + + Track ID6037 + + + Track ID4935 + + + Track ID6051 + + + Track ID3511 + + + Track ID5393 + + + Track ID3737 + + + Track ID5159 + + + Track ID2761 + + + Track ID4645 + + + Track ID3283 + + + Track ID3499 + + + Track ID5643 + + + Track ID2729 + + + Track ID5679 + + + Track ID3069 + + + Track ID3553 + + + Track ID4153 + + + Track ID5461 + + + Track ID4721 + + + Track ID4259 + + + Track ID5841 + + + Track ID5485 + + + Track ID5581 + + + Track ID5107 + + + Track ID6095 + + + Track ID2813 + + + Track ID5597 + + + Track ID5137 + + + Track ID2953 + + + Track ID3723 + + + Track ID2535 + + + Track ID2575 + + + Track ID2983 + + + Track ID3177 + + + Track ID4437 + + + Track ID6099 + + + Track ID5967 + + + Track ID6087 + + + Track ID6187 + + + Track ID5663 + + + Track ID3923 + + + Track ID3641 + + + Track ID4879 + + + Track ID5589 + + + Track ID6347 + + + Track ID6495 + + + Track ID6691 + + + Track ID3751 + + + Track ID5229 + + + Track ID6477 + + + Track ID6089 + + + Track ID5541 + + + Track ID3793 + + + Track ID3683 + + + Track ID5691 + + + Track ID6021 + + + Track ID5167 + + + Track ID5021 + + + Track ID4317 + + + Track ID4603 + + + Track ID4999 + + + Track ID5293 + + + Track ID6271 + + + Track ID6241 + + + Track ID5215 + + + Track ID2521 + + + Track ID4203 + + + Track ID2615 + + + Track ID3763 + + + Track ID4541 + + + Track ID3265 + + + Track ID3773 + + + Track ID3043 + + + Track ID2581 + + + Track ID5573 + + + Track ID5109 + + + Track ID5283 + + + Track ID2553 + + + Track ID3275 + + + Track ID3847 + + + Track ID3173 + + + Track ID4841 + + + Track ID5115 + + + Track ID5477 + + + Track ID2629 + + + Track ID5773 + + + Track ID4061 + + + Track ID6463 + + + Track ID4607 + + + Track ID4063 + + + Track ID5521 + + + Track ID3601 + + + Track ID6503 + + + Track ID3645 + + + Track ID2443 + + + Track ID3039 + + + Track ID2561 + + + Track ID3809 + + + Track ID3079 + + + Track ID6423 + + + Track ID6061 + + + Track ID3391 + + + Track ID4733 + + + Track ID4719 + + + Track ID4223 + + + Track ID4985 + + + Track ID5335 + + + Track ID5577 + + + Track ID2439 + + + Track ID2989 + + + Track ID6427 + + + Track ID5017 + + + Track ID3035 + + + Track ID4249 + + + Track ID4943 + + + Track ID3903 + + + Track ID3189 + + + Track ID3571 + + + Track ID4925 + + + Track ID5139 + + + Track ID3457 + + + Track ID2969 + + + Track ID2667 + + + Track ID3131 + + + Track ID2633 + + + Track ID4015 + + + Track ID3459 + + + Track ID6417 + + + Track ID2697 + + + Track ID3859 + + + Track ID2455 + + + Track ID5455 + + + Track ID5697 + + + Track ID6461 + + + Track ID3729 + + + Track ID5725 + + + Track ID5277 + + + Track ID2973 + + + Track ID2671 + + + Track ID6351 + + + Track ID3195 + + + Track ID2799 + + + Track ID3465 + + + Track ID4049 + + + Track ID4375 + + + Track ID5935 + + + Track ID4233 + + + Track ID6091 + + + Track ID3567 + + + Track ID3191 + + + Track ID4187 + + + Track ID4525 + + + Track ID5683 + + + Track ID2781 + + + Track ID6039 + + + Track ID3021 + + + Track ID6045 + + + Track ID5925 + + + Track ID4669 + + + Track ID5245 + + + Track ID6049 + + + Track ID4779 + + + Track ID5859 + + + Track ID3697 + + + Track ID4661 + + + Track ID2843 + + + Track ID3027 + + + Track ID2833 + + + Track ID3881 + + + Track ID3919 + + + Track ID3309 + + + Track ID3037 + + + Track ID3857 + + + Track ID5195 + + + Track ID2457 + + + Track ID4915 + + + Track ID6067 + + + Track ID5943 + + + Track ID2795 + + + Track ID2803 + + + Track ID4677 + + + Track ID4205 + + + Track ID5033 + + + Track ID4531 + + + Track ID2651 + + + Track ID2597 + + + Track ID5635 + + + Track ID2763 + + + Track ID5911 + + + Track ID5687 + + + Track ID5837 + + + Track ID3907 + + + Track ID3447 + + + Track ID3341 + + + Track ID4335 + + + Track ID4997 + + + Track ID3429 + + + Track ID3377 + + + Track ID5785 + + + Track ID5555 + + + Track ID4597 + + + Track ID5465 + + + Track ID3307 + + + Track ID5853 + + + Track ID3655 + + + Track ID2589 + + + Track ID4145 + + + Track ID4499 + + + Track ID4331 + + + Track ID2489 + + + Track ID6047 + + + Track ID5543 + + + Track ID3549 + + + Track ID3619 + + + Track ID5651 + + + Track ID5437 + + + Track ID5561 + + + Track ID2587 + + + Track ID4439 + + + Track ID2531 + + + Track ID5123 + + + Track ID5179 + + + Track ID5751 + + + Track ID4273 + + + Track ID2655 + + + Track ID5207 + + + Track ID4455 + + + Track ID6069 + + + Track ID4591 + + + Track ID5153 + + + Track ID4377 + + + Track ID5019 + + + Track ID3851 + + + Track ID3735 + + + Track ID2739 + + + Track ID3635 + + + Track ID3085 + + + Track ID4071 + + + Track ID5015 + + + Track ID3415 + + + Track ID2789 + + + Track ID5435 + + + Track ID5121 + + + Track ID4587 + + + Track ID5459 + + + Track ID4021 + + + Track ID5213 + + + Track ID5379 + + + Track ID4443 + + + Track ID6429 + + + Track ID6431 + + + Track ID2573 + + + Track ID4269 + + + Track ID2579 + + + Track ID5611 + + + Track ID3109 + + + Track ID5653 + + + Track ID2529 + + + Track ID4565 + + + Track ID5325 + + + Track ID6421 + + + Track ID3171 + + + Track ID4955 + + + Track ID5341 + + + Track ID3093 + + + Track ID4903 + + + Track ID4167 + + + Track ID3025 + + + Track ID2445 + + + Track ID3193 + + + Track ID5793 + + + Track ID2855 + + + Track ID4533 + + + Track ID3303 + + + Track ID5041 + + + Track ID3091 + + + Track ID4281 + + + Track ID2817 + + + Track ID2985 + + + Track ID2471 + + + Track ID3621 + + + Track ID5297 + + + Track ID6079 + + + Track ID2627 + + + Track ID2991 + + + Track ID4199 + + + Track ID4923 + + + Track ID4655 + + + Track ID2823 + + + Track ID4777 + + + Track ID3659 + + + Track ID3247 + + + Track ID3489 + + + Track ID4643 + + + Track ID2693 + + + Track ID5395 + + + Track ID4521 + + + Track ID5615 + + + Track ID2917 + + + Track ID5923 + + + Track ID4339 + + + Track ID4265 + + + Track ID2805 + + + Track ID5003 + + + Track ID5305 + + + Track ID2617 + + + Track ID3629 + + + Track ID3565 + + + Track ID6027 + + + Track ID3207 + + + Track ID5547 + + + Track ID2749 + + + Track ID4611 + + + Track ID2929 + + + Track ID3201 + + + Track ID3009 + + + Track ID2621 + + + Track ID5051 + + + Track ID6101 + + + Track ID3519 + + + Track ID4159 + + + Track ID5347 + + + Track ID3529 + + + Track ID3665 + + + Track ID4681 + + + Track ID5091 + + + Track ID2673 + + + Track ID3509 + + + Track ID5939 + + + Track ID2857 + + + Track ID2499 + + + Track ID6349 + + + Track ID4767 + + + Track ID4193 + + + Track ID4913 + + + Track ID3775 + + + Track ID4741 + + + Track ID2669 + + + Track ID3869 + + + Track ID2691 + + + Track ID3175 + + + Track ID5377 + + + Track ID4833 + + + Track ID6319 + + + Track ID4179 + + + Track ID3045 + + + Track ID4057 + + + Track ID6221 + + + Track ID6381 + + + Track ID3943 + + + Track ID6131 + + + Track ID2819 + + + Track ID5291 + + + Track ID5799 + + + Track ID2769 + + + Track ID5595 + + + Track ID5673 + + + Track ID4639 + + + Track ID2653 + + + Track ID2703 + + + Track ID3695 + + + Track ID2807 + + + Track ID6097 + + + Track ID5933 + + + Track ID2571 + + + Track ID3485 + + + Track ID3901 + + + Track ID2547 + + + Track ID5863 + + + Track ID3481 + + + Track ID3969 + + + Track ID2519 + + + Track ID5539 + + + Track ID5409 + + + Track ID3861 + + + Track ID2699 + + + Track ID4737 + + + Track ID4513 + + + Track ID3501 + + + Track ID3077 + + + Track ID3495 + + + Track ID2725 + + + Track ID2903 + + + Track ID6293 + + + Track ID6311 + + + Track ID4379 + + + Track ID5071 + + + Track ID4059 + + + Track ID3311 + + + Track ID2447 + + + Track ID3853 + + + Track ID6071 + + + Track ID3381 + + + Track ID2867 + + + Track ID2619 + + + Track ID2731 + + + Track ID3089 + + + Track ID2549 + + + Track ID3971 + + + Track ID2623 + + + Track ID2783 + + + Track ID3651 + + + Track ID5567 + + + Track ID3065 + + + Track ID5269 + + + Track ID2705 + + + Track ID3777 + + + Track ID4861 + + + Track ID6317 + + + Track ID2533 + + + Track ID4651 + + + Track ID5529 + + + Track ID6353 + + + Track ID4665 + + + Track ID2955 + + + Track ID5569 + + + Track ID3759 + + + Track ID2747 + + + Track ID4491 + + + Track ID5871 + + + Track ID3977 + + + Track ID6213 + + + Track ID2849 + + + Track ID4815 + + + Track ID4917 + + + Track ID5851 + + + Track ID4185 + + + Track ID4209 + + + Track ID2785 + + + Track ID4539 + + + Track ID4667 + + + Track ID5329 + + + Track ID3559 + + + Track ID4211 + + + Track ID2741 + + + Track ID2775 + + + Track ID3023 + + + Track ID4789 + + + Track ID5287 + + + Track ID2831 + + + Track ID4155 + + + Track ID2461 + + + Track ID3179 + + + Track ID3203 + + + Track ID3589 + + + Track ID2649 + + + Track ID5545 + + + Track ID6117 + + + Track ID4133 + + + Track ID4217 + + + Track ID3383 + + + Track ID2851 + + + Track ID4147 + + + Track ID3639 + + + Track ID5005 + + + Track ID2643 + + + Track ID2647 + + + Track ID4349 + + + Track ID4991 + + + Track ID5887 + + + Track ID2745 + + + Track ID2613 + + + Track ID2437 + + + Track ID2815 + + + Track ID5713 + + + Track ID5151 + + + Track ID3111 + + + Track ID2681 + + + Track ID4873 + + + Track ID3407 + + + Track ID4909 + + + Track ID5057 + + + Track ID3691 + + + Track ID2465 + + + Track ID4255 + + + Track ID3017 + + + Track ID2757 + + + Track ID3161 + + + Track ID4615 + + + Track ID4109 + + + Track ID5937 + + + Track ID2773 + + + Track ID4927 + + + Track ID5401 + + + Track ID5323 + + + Track ID5789 + + + Track ID4631 + + + Track ID6081 + + + Track ID6179 + + + Track ID5819 + + + Track ID5535 + + + Track ID5945 + + + Track ID3209 + + + Track ID3711 + + + Track ID5741 + + + Track ID3721 + + + Track ID5045 + + + Track ID4689 + + + Track ID4687 + + + Track ID3741 + + + Track ID3719 + + + Track ID5035 + + + Track ID3715 + + + Track ID4465 + + + Track ID4551 + + + Track ID3287 + + + Track ID2975 + + + Track ID3709 + + + Track ID3705 + + + Track ID5227 + + + Track ID4869 + + + Track ID3743 + + + Track ID2685 + + + Track ID3811 + + + Track ID2645 + + + Track ID17759 + + + Track ID17749 + + + Track ID17867 + + + Track ID4819 + + + Track ID6527 + + + Track ID6805 + + + Track ID3463 + + + Track ID6399 + + + Track ID5677 + + + + + NamePlaylist 3 + Description + Playlist ID14389 + Playlist Persistent IDD857F0F6379E46C1 + All Items + Smart Info + + AQEBAwAAABoAAAnEAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA== + + Smart Criteria + + U0xzdAABAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAU0xzdAABAAEAAAACAAAAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAADwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABEAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAg + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQRTTHN0AAEAAQAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAmgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEQAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAA + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + Playlist Items + + + Track ID2717 + + + Track ID4201 + + + Track ID3019 + + + Track ID3685 + + + Track ID5065 + + + Track ID3213 + + + Track ID6791 + + + Track ID6795 + + + Track ID6819 + + + Track ID2727 + + + Track ID5175 + + + Track ID4847 + + + Track ID4241 + + + Track ID6093 + + + Track ID3417 + + + Track ID5931 + + + Track ID2577 + + + Track ID2809 + + + Track ID2599 + + + Track ID4759 + + + Track ID2523 + + + Track ID3273 + + + Track ID4629 + + + Track ID4235 + + + Track ID2683 + + + Track ID6105 + + + Track ID4959 + + + Track ID5645 + + + Track ID5533 + + + Track ID3479 + + + Track ID6717 + + + Track ID5633 + + + Track ID2979 + + + Track ID4965 + + + Track ID3205 + + + Track ID4765 + + + Track ID4801 + + + Track ID3855 + + + Track ID4511 + + + Track ID3199 + + + Track ID2583 + + + Track ID3569 + + + Track ID5285 + + + Track ID5549 + + + Track ID3187 + + + Track ID5389 + + + Track ID3219 + + + Track ID4659 + + + Track ID2995 + + + Track ID2569 + + + Track ID4761 + + + Track ID5929 + + + Track ID4517 + + + Track ID4537 + + + Track ID4287 + + + Track ID6065 + + + Track ID6731 + + + Track ID5411 + + + Track ID3441 + + + Track ID6407 + + + Track ID4967 + + + Track ID2825 + + + Track ID6033 + + + Track ID3297 + + + Track ID6227 + + + Track ID5919 + + + Track ID2981 + + + Track ID5475 + + + Track ID4363 + + + Track ID3657 + + + Track ID2635 + + + Track ID4535 + + + Track ID3453 + + + Track ID6309 + + + Track ID5235 + + + Track ID2767 + + + Track ID6025 + + + Track ID4495 + + + Track ID4433 + + + Track ID2737 + + + Track ID6523 + + + Track ID6773 + + + Track ID3475 + + + Track ID4017 + + + Track ID2637 + + + Track ID5047 + + + Track ID6761 + + + Track ID6763 + + + Track ID6327 + + + Track ID3905 + + + Track ID4289 + + + Track ID6369 + + + Track ID2715 + + + Track ID5501 + + + Track ID5407 + + + Track ID2665 + + + Track ID4963 + + + Track ID5467 + + + Track ID5317 + + + Track ID5163 + + + Track ID6425 + + + Track ID5665 + + + Track ID4417 + + + Track ID4191 + + + Track ID4617 + + + Track ID2441 + + + Track ID3633 + + + Track ID4605 + + + Track ID5647 + + + Track ID5711 + + + Track ID2469 + + + Track ID3033 + + + Track ID3101 + + + Track ID5709 + + + Track ID3271 + + + Track ID3257 + + + Track ID2719 + + + Track ID2735 + + + Track ID4589 + + + Track ID6433 + + + Track ID3067 + + + Track ID3221 + + + Track ID2459 + + + Track ID4769 + + + Track ID5281 + + + Track ID4853 + + + Track ID5075 + + + Track ID6333 + + + Track ID5803 + + + Track ID4461 + + + Track ID2743 + + + Track ID3217 + + + Track ID4671 + + + Track ID2527 + + + Track ID3693 + + + Track ID5059 + + + Track ID3669 + + + Track ID6695 + + + Track ID2663 + + + Track ID2765 + + + Track ID4319 + + + Track ID3451 + + + Track ID4079 + + + Track ID4813 + + + Track ID2771 + + + Track ID4351 + + + Track ID6037 + + + Track ID4935 + + + Track ID6051 + + + Track ID3511 + + + Track ID5393 + + + Track ID3737 + + + Track ID5159 + + + Track ID2761 + + + Track ID4645 + + + Track ID3283 + + + Track ID3499 + + + Track ID5643 + + + Track ID2729 + + + Track ID5679 + + + Track ID3069 + + + Track ID3553 + + + Track ID4153 + + + Track ID5461 + + + Track ID4721 + + + Track ID4259 + + + Track ID5841 + + + Track ID5485 + + + Track ID5581 + + + Track ID5107 + + + Track ID6095 + + + Track ID2813 + + + Track ID5597 + + + Track ID5137 + + + Track ID2953 + + + Track ID3723 + + + Track ID2535 + + + Track ID2575 + + + Track ID2983 + + + Track ID3177 + + + Track ID4437 + + + Track ID6099 + + + Track ID5967 + + + Track ID6087 + + + Track ID6187 + + + Track ID5663 + + + Track ID3923 + + + Track ID3641 + + + Track ID4879 + + + Track ID5589 + + + Track ID6347 + + + Track ID6495 + + + Track ID6691 + + + Track ID3751 + + + Track ID5229 + + + Track ID6477 + + + Track ID6089 + + + Track ID5541 + + + Track ID3793 + + + Track ID3683 + + + Track ID5691 + + + Track ID6021 + + + Track ID5167 + + + Track ID5021 + + + Track ID4317 + + + Track ID4603 + + + Track ID4999 + + + Track ID5293 + + + Track ID6271 + + + Track ID6241 + + + Track ID5215 + + + Track ID2521 + + + Track ID4203 + + + Track ID2615 + + + Track ID3763 + + + Track ID4541 + + + Track ID3265 + + + Track ID3773 + + + Track ID3043 + + + Track ID2581 + + + Track ID5573 + + + Track ID5109 + + + Track ID5283 + + + Track ID2553 + + + Track ID3275 + + + Track ID3847 + + + Track ID3173 + + + Track ID4841 + + + Track ID5115 + + + Track ID5477 + + + Track ID2629 + + + Track ID5773 + + + Track ID4061 + + + Track ID6463 + + + Track ID4607 + + + Track ID4063 + + + Track ID5521 + + + Track ID3601 + + + Track ID6503 + + + Track ID3645 + + + Track ID2443 + + + Track ID3039 + + + Track ID2561 + + + Track ID3809 + + + Track ID3079 + + + Track ID6423 + + + Track ID6061 + + + Track ID3391 + + + Track ID4733 + + + Track ID4719 + + + Track ID4223 + + + Track ID4985 + + + Track ID5335 + + + Track ID5577 + + + Track ID2439 + + + Track ID2989 + + + Track ID6427 + + + Track ID5017 + + + Track ID3035 + + + Track ID4249 + + + Track ID4943 + + + Track ID3903 + + + Track ID3189 + + + Track ID3571 + + + Track ID4925 + + + Track ID5139 + + + Track ID3457 + + + Track ID2969 + + + Track ID2667 + + + Track ID3131 + + + Track ID2633 + + + Track ID4015 + + + Track ID3459 + + + Track ID6417 + + + Track ID2697 + + + Track ID3859 + + + Track ID2455 + + + Track ID5455 + + + Track ID5697 + + + Track ID6461 + + + Track ID3729 + + + Track ID5725 + + + Track ID5277 + + + Track ID2973 + + + Track ID2671 + + + Track ID6351 + + + Track ID3195 + + + Track ID2799 + + + Track ID3465 + + + Track ID4049 + + + Track ID4375 + + + Track ID5935 + + + Track ID4233 + + + Track ID6091 + + + Track ID3567 + + + Track ID3191 + + + Track ID4187 + + + Track ID4525 + + + Track ID5683 + + + Track ID2781 + + + Track ID6039 + + + Track ID3021 + + + Track ID6045 + + + Track ID5925 + + + Track ID4669 + + + Track ID5245 + + + Track ID6049 + + + Track ID4779 + + + Track ID5859 + + + Track ID3697 + + + Track ID4661 + + + Track ID2843 + + + Track ID3027 + + + Track ID2833 + + + Track ID3881 + + + Track ID3919 + + + Track ID3309 + + + Track ID3037 + + + Track ID3857 + + + Track ID5195 + + + Track ID2457 + + + Track ID4915 + + + Track ID6067 + + + Track ID5943 + + + Track ID2795 + + + Track ID2803 + + + Track ID4677 + + + Track ID4205 + + + Track ID5033 + + + Track ID4531 + + + Track ID2651 + + + Track ID2597 + + + Track ID5635 + + + Track ID2763 + + + Track ID5911 + + + Track ID5687 + + + Track ID5837 + + + Track ID3907 + + + Track ID3447 + + + Track ID3341 + + + Track ID4335 + + + Track ID4997 + + + Track ID3429 + + + Track ID3377 + + + Track ID5785 + + + Track ID5555 + + + Track ID4597 + + + Track ID5465 + + + Track ID3307 + + + Track ID5853 + + + Track ID3655 + + + Track ID2589 + + + Track ID4145 + + + Track ID4499 + + + Track ID4331 + + + Track ID2489 + + + Track ID6047 + + + Track ID5543 + + + Track ID3549 + + + Track ID3619 + + + Track ID5651 + + + Track ID5437 + + + Track ID5561 + + + Track ID2587 + + + Track ID4439 + + + Track ID2531 + + + Track ID5123 + + + Track ID5179 + + + Track ID5751 + + + Track ID4273 + + + Track ID2655 + + + Track ID5207 + + + Track ID4455 + + + Track ID6069 + + + Track ID4591 + + + Track ID5153 + + + Track ID4377 + + + Track ID5019 + + + Track ID3851 + + + Track ID3735 + + + Track ID2739 + + + Track ID3635 + + + Track ID3085 + + + Track ID4071 + + + Track ID5015 + + + Track ID3415 + + + Track ID2789 + + + Track ID5435 + + + Track ID5121 + + + Track ID4587 + + + Track ID5459 + + + Track ID4021 + + + Track ID5213 + + + Track ID5379 + + + Track ID4443 + + + Track ID6429 + + + Track ID6431 + + + Track ID2573 + + + Track ID4269 + + + Track ID2579 + + + Track ID5611 + + + Track ID3109 + + + Track ID5653 + + + Track ID2529 + + + Track ID4565 + + + Track ID5325 + + + Track ID6421 + + + Track ID3171 + + + Track ID4955 + + + Track ID5341 + + + Track ID3093 + + + Track ID4903 + + + Track ID4167 + + + Track ID3025 + + + Track ID2445 + + + Track ID3193 + + + Track ID5793 + + + Track ID2855 + + + Track ID4533 + + + Track ID3303 + + + Track ID5041 + + + Track ID3091 + + + Track ID4281 + + + Track ID2817 + + + Track ID2985 + + + Track ID2471 + + + Track ID3621 + + + Track ID5297 + + + Track ID6079 + + + Track ID2627 + + + Track ID2991 + + + Track ID4199 + + + Track ID4923 + + + Track ID4655 + + + Track ID2823 + + + Track ID4777 + + + Track ID3659 + + + Track ID3247 + + + Track ID3489 + + + Track ID4643 + + + Track ID2693 + + + Track ID5395 + + + Track ID4521 + + + Track ID5615 + + + Track ID2917 + + + Track ID5923 + + + Track ID4339 + + + Track ID4265 + + + Track ID2805 + + + Track ID5003 + + + Track ID5305 + + + Track ID2617 + + + Track ID3629 + + + Track ID3565 + + + Track ID6027 + + + Track ID3207 + + + Track ID5547 + + + Track ID2749 + + + Track ID4611 + + + Track ID2929 + + + Track ID3201 + + + Track ID3009 + + + Track ID2621 + + + Track ID5051 + + + Track ID6101 + + + Track ID3519 + + + Track ID4159 + + + Track ID5347 + + + Track ID3529 + + + Track ID3665 + + + Track ID4681 + + + Track ID5091 + + + Track ID2673 + + + Track ID3509 + + + Track ID5939 + + + Track ID2857 + + + Track ID2499 + + + Track ID6349 + + + Track ID4767 + + + Track ID4193 + + + Track ID4913 + + + Track ID3775 + + + Track ID4741 + + + Track ID2669 + + + Track ID3869 + + + Track ID2691 + + + Track ID3175 + + + Track ID5377 + + + Track ID4833 + + + Track ID6319 + + + Track ID4179 + + + Track ID3045 + + + Track ID4057 + + + Track ID6221 + + + Track ID6381 + + + Track ID3943 + + + Track ID6131 + + + Track ID2819 + + + Track ID5291 + + + Track ID5799 + + + Track ID2769 + + + Track ID5595 + + + Track ID5673 + + + Track ID4639 + + + Track ID2653 + + + Track ID2703 + + + Track ID3695 + + + Track ID2807 + + + Track ID6097 + + + Track ID5933 + + + Track ID2571 + + + Track ID3485 + + + Track ID3901 + + + Track ID2547 + + + Track ID5863 + + + Track ID3481 + + + Track ID3969 + + + Track ID2519 + + + Track ID5539 + + + Track ID5409 + + + Track ID3861 + + + Track ID2699 + + + Track ID4737 + + + Track ID4513 + + + Track ID3501 + + + Track ID3077 + + + Track ID3495 + + + Track ID2725 + + + Track ID2903 + + + Track ID6293 + + + Track ID6311 + + + Track ID4379 + + + Track ID5071 + + + Track ID4059 + + + Track ID3311 + + + Track ID2447 + + + Track ID3853 + + + Track ID6071 + + + Track ID3381 + + + Track ID2867 + + + Track ID2619 + + + Track ID2731 + + + Track ID3089 + + + Track ID2549 + + + Track ID3971 + + + Track ID2623 + + + Track ID2783 + + + Track ID3651 + + + Track ID5567 + + + Track ID3065 + + + Track ID5269 + + + Track ID2705 + + + Track ID3777 + + + Track ID4861 + + + Track ID6317 + + + Track ID2533 + + + Track ID4651 + + + Track ID5529 + + + Track ID6353 + + + Track ID4665 + + + Track ID2955 + + + Track ID5569 + + + Track ID3759 + + + Track ID2747 + + + Track ID4491 + + + Track ID5871 + + + Track ID3977 + + + Track ID6213 + + + Track ID2849 + + + Track ID4815 + + + Track ID4917 + + + Track ID5851 + + + Track ID4185 + + + Track ID4209 + + + Track ID2785 + + + Track ID4539 + + + Track ID4667 + + + Track ID5329 + + + Track ID3559 + + + Track ID4211 + + + Track ID2741 + + + Track ID2775 + + + Track ID3023 + + + Track ID4789 + + + Track ID5287 + + + Track ID2831 + + + Track ID4155 + + + Track ID2461 + + + Track ID3179 + + + Track ID3203 + + + Track ID3589 + + + Track ID2649 + + + Track ID5545 + + + Track ID6117 + + + Track ID4133 + + + Track ID4217 + + + Track ID3383 + + + Track ID2851 + + + Track ID4147 + + + Track ID3639 + + + Track ID5005 + + + Track ID2643 + + + Track ID2647 + + + Track ID4349 + + + Track ID4991 + + + Track ID5887 + + + Track ID2745 + + + Track ID2613 + + + Track ID2437 + + + Track ID2815 + + + Track ID5713 + + + Track ID5151 + + + Track ID3111 + + + Track ID2681 + + + Track ID4873 + + + Track ID3407 + + + Track ID4909 + + + Track ID5057 + + + Track ID3691 + + + Track ID2465 + + + Track ID4255 + + + Track ID3017 + + + Track ID2757 + + + Track ID3161 + + + Track ID4615 + + + Track ID4109 + + + Track ID5937 + + + Track ID2773 + + + Track ID4927 + + + Track ID5401 + + + Track ID5323 + + + Track ID5789 + + + Track ID4631 + + + Track ID6081 + + + Track ID6179 + + + Track ID5819 + + + Track ID5535 + + + Track ID5945 + + + Track ID3209 + + + Track ID3711 + + + Track ID5741 + + + Track ID3721 + + + Track ID5045 + + + Track ID4689 + + + Track ID4687 + + + Track ID3741 + + + Track ID3719 + + + Track ID5035 + + + Track ID3715 + + + Track ID4465 + + + Track ID4551 + + + Track ID3287 + + + Track ID2975 + + + Track ID3709 + + + Track ID3705 + + + Track ID5227 + + + Track ID4869 + + + Track ID3743 + + + Track ID2685 + + + Track ID3811 + + + Track ID2645 + + + Track ID17759 + + + Track ID17749 + + + Track ID17867 + + + Track ID4819 + + + Track ID6527 + + + Track ID6805 + + + Track ID3463 + + + Track ID6399 + + + Track ID5677 + + + + + NamePlaylist 4 + Description + Playlist ID15053 + Playlist Persistent IDF44FF024230C4717 + All Items + Smart Info + + AQEBAwAAABUAAAnEAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA== + + Smart Criteria + + U0xzdAABAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAU0xzdAABAAEAAAACAAAAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAADwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABEAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAg + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQRTTHN0AAEAAQAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAmgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEQAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAA + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + Playlist Items + + + Track ID6819 + + + Track ID6795 + + + Track ID6791 + + + Track ID6773 + + + Track ID6523 + + + Track ID6763 + + + Track ID6761 + + + Track ID6731 + + + Track ID6717 + + + Track ID6691 + + + Track ID6695 + + + Track ID6503 + + + Track ID6495 + + + Track ID6477 + + + Track ID6463 + + + Track ID6461 + + + Track ID6433 + + + Track ID6431 + + + Track ID6429 + + + Track ID6427 + + + Track ID6425 + + + Track ID6423 + + + Track ID6421 + + + Track ID6417 + + + Track ID6407 + + + Track ID6369 + + + Track ID6381 + + + Track ID6353 + + + Track ID6351 + + + Track ID6349 + + + Track ID6347 + + + Track ID6333 + + + Track ID6327 + + + Track ID6319 + + + Track ID6317 + + + Track ID6309 + + + Track ID6311 + + + Track ID6293 + + + Track ID6271 + + + Track ID6241 + + + Track ID6227 + + + Track ID6221 + + + Track ID6213 + + + Track ID6187 + + + Track ID6179 + + + Track ID6089 + + + Track ID6087 + + + Track ID6117 + + + Track ID6131 + + + Track ID6095 + + + Track ID6091 + + + Track ID6093 + + + Track ID6097 + + + Track ID6101 + + + Track ID6105 + + + Track ID6099 + + + Track ID6081 + + + Track ID6079 + + + Track ID6071 + + + Track ID6069 + + + Track ID6067 + + + Track ID6065 + + + Track ID6061 + + + Track ID6051 + + + Track ID6049 + + + Track ID6047 + + + Track ID6045 + + + Track ID6039 + + + Track ID6037 + + + Track ID6033 + + + Track ID6027 + + + Track ID6025 + + + Track ID6021 + + + Track ID5967 + + + Track ID5945 + + + Track ID5943 + + + Track ID5939 + + + Track ID5937 + + + Track ID5935 + + + Track ID5933 + + + Track ID5931 + + + Track ID5929 + + + Track ID5691 + + + Track ID5925 + + + Track ID5923 + + + Track ID5919 + + + Track ID5911 + + + Track ID5887 + + + Track ID5859 + + + Track ID5863 + + + Track ID5871 + + + Track ID5853 + + + Track ID5851 + + + Track ID5841 + + + Track ID5837 + + + Track ID5819 + + + Track ID5803 + + + Track ID5799 + + + Track ID5793 + + + Track ID5789 + + + Track ID5785 + + + Track ID5773 + + + Track ID5751 + + + Track ID5741 + + + Track ID5725 + + + Track ID5713 + + + Track ID5711 + + + Track ID5709 + + + Track ID5697 + + + Track ID5687 + + + Track ID5683 + + + Track ID5679 + + + Track ID5673 + + + Track ID5665 + + + Track ID5663 + + + Track ID5653 + + + Track ID5651 + + + Track ID5647 + + + Track ID5645 + + + Track ID5643 + + + Track ID5635 + + + Track ID5633 + + + Track ID5615 + + + Track ID5611 + + + Track ID5581 + + + Track ID5589 + + + Track ID5577 + + + Track ID5595 + + + Track ID5597 + + + Track ID5573 + + + Track ID5555 + + + Track ID5561 + + + Track ID5547 + + + Track ID5549 + + + Track ID5569 + + + Track ID5567 + + + Track ID5545 + + + Track ID5543 + + + Track ID5541 + + + Track ID5539 + + + Track ID5535 + + + Track ID5533 + + + Track ID5529 + + + Track ID5521 + + + Track ID5501 + + + Track ID5485 + + + Track ID5477 + + + Track ID5475 + + + Track ID5467 + + + Track ID5465 + + + Track ID5461 + + + Track ID5459 + + + Track ID5455 + + + Track ID5437 + + + Track ID5435 + + + Track ID5407 + + + Track ID5393 + + + Track ID5395 + + + Track ID5401 + + + Track ID5409 + + + Track ID5389 + + + Track ID5411 + + + Track ID5379 + + + Track ID5377 + + + Track ID5347 + + + Track ID5341 + + + Track ID5335 + + + Track ID5297 + + + Track ID5293 + + + Track ID5323 + + + Track ID5325 + + + Track ID5283 + + + Track ID5281 + + + Track ID5285 + + + Track ID5305 + + + Track ID5287 + + + Track ID5291 + + + Track ID5329 + + + Track ID5317 + + + Track ID5277 + + + Track ID5269 + + + Track ID5245 + + + Track ID5235 + + + Track ID5229 + + + Track ID5227 + + + Track ID5215 + + + Track ID5213 + + + Track ID5207 + + + Track ID5195 + + + Track ID5179 + + + Track ID5175 + + + Track ID5167 + + + Track ID5163 + + + Track ID5159 + + + Track ID5153 + + + Track ID5151 + + + Track ID5139 + + + Track ID5137 + + + Track ID5123 + + + Track ID5121 + + + Track ID5115 + + + Track ID5109 + + + Track ID5091 + + + Track ID5107 + + + Track ID5075 + + + Track ID5071 + + + Track ID5065 + + + Track ID5045 + + + Track ID5035 + + + Track ID5047 + + + Track ID5057 + + + Track ID5041 + + + Track ID5051 + + + Track ID5059 + + + Track ID5033 + + + Track ID4999 + + + Track ID5021 + + + Track ID4965 + + + Track ID5019 + + + Track ID4985 + + + Track ID4991 + + + Track ID4967 + + + Track ID4997 + + + Track ID5017 + + + Track ID4963 + + + Track ID5005 + + + Track ID5003 + + + Track ID5015 + + + Track ID4959 + + + Track ID4955 + + + Track ID4943 + + + Track ID4935 + + + Track ID4917 + + + Track ID4913 + + + Track ID4915 + + + Track ID4923 + + + Track ID4927 + + + Track ID4925 + + + Track ID4909 + + + Track ID4903 + + + Track ID4879 + + + Track ID4873 + + + Track ID4869 + + + Track ID4861 + + + Track ID4853 + + + Track ID4847 + + + Track ID4841 + + + Track ID4833 + + + Track ID4815 + + + Track ID4813 + + + Track ID4801 + + + Track ID4789 + + + Track ID4779 + + + Track ID4777 + + + Track ID4769 + + + Track ID4767 + + + Track ID4765 + + + Track ID4761 + + + Track ID4759 + + + Track ID4741 + + + Track ID4737 + + + Track ID4733 + + + Track ID4721 + + + Track ID4719 + + + Track ID4677 + + + Track ID4671 + + + Track ID4669 + + + Track ID4667 + + + Track ID4689 + + + Track ID4687 + + + Track ID4681 + + + Track ID4665 + + + Track ID4661 + + + Track ID4659 + + + Track ID4655 + + + Track ID4513 + + + Track ID4521 + + + Track ID4517 + + + Track ID4511 + + + Track ID4525 + + + Track ID4651 + + + Track ID4645 + + + Track ID4643 + + + Track ID4639 + + + Track ID4631 + + + Track ID4629 + + + Track ID4605 + + + Track ID4607 + + + Track ID4611 + + + Track ID4615 + + + Track ID4617 + + + Track ID4603 + + + Track ID4597 + + + Track ID4591 + + + Track ID4589 + + + Track ID4587 + + + Track ID4495 + + + Track ID4565 + + + Track ID4551 + + + Track ID4541 + + + Track ID4539 + + + Track ID4537 + + + Track ID4535 + + + Track ID4533 + + + Track ID4499 + + + Track ID4531 + + + Track ID4491 + + + Track ID4439 + + + Track ID4465 + + + Track ID4461 + + + Track ID4455 + + + Track ID4443 + + + Track ID4437 + + + Track ID4433 + + + Track ID4417 + + + Track ID4379 + + + Track ID4377 + + + Track ID4375 + + + Track ID4363 + + + Track ID4339 + + + Track ID4351 + + + Track ID4349 + + + Track ID4335 + + + Track ID4331 + + + Track ID4319 + + + Track ID4317 + + + Track ID4289 + + + Track ID4281 + + + Track ID4273 + + + Track ID4287 + + + Track ID4269 + + + Track ID4265 + + + Track ID4259 + + + Track ID4255 + + + Track ID4249 + + + Track ID4241 + + + Track ID4235 + + + Track ID4233 + + + Track ID4217 + + + Track ID4211 + + + Track ID4223 + + + Track ID4209 + + + Track ID4205 + + + Track ID4203 + + + Track ID4201 + + + Track ID4199 + + + Track ID4193 + + + Track ID4191 + + + Track ID4187 + + + Track ID4185 + + + Track ID4179 + + + Track ID4167 + + + Track ID4145 + + + Track ID4147 + + + Track ID4153 + + + Track ID4155 + + + Track ID4159 + + + Track ID4133 + + + Track ID4109 + + + Track ID4071 + + + Track ID4079 + + + Track ID4063 + + + Track ID4061 + + + Track ID4059 + + + Track ID4057 + + + Track ID4049 + + + Track ID4021 + + + Track ID4017 + + + Track ID4015 + + + Track ID3977 + + + Track ID3971 + + + Track ID3969 + + + Track ID3943 + + + Track ID3923 + + + Track ID3919 + + + Track ID3907 + + + Track ID3905 + + + Track ID3903 + + + Track ID3901 + + + Track ID3869 + + + Track ID3881 + + + Track ID3861 + + + Track ID3859 + + + Track ID3857 + + + Track ID3855 + + + Track ID3853 + + + Track ID3851 + + + Track ID3847 + + + Track ID3811 + + + Track ID3809 + + + Track ID3793 + + + Track ID3777 + + + Track ID3775 + + + Track ID3759 + + + Track ID3763 + + + Track ID3751 + + + Track ID3773 + + + Track ID3743 + + + Track ID3741 + + + Track ID3737 + + + Track ID3735 + + + Track ID3729 + + + Track ID3723 + + + Track ID3721 + + + Track ID3715 + + + Track ID3705 + + + Track ID3709 + + + Track ID3711 + + + Track ID3719 + + + Track ID3697 + + + Track ID3695 + + + Track ID3693 + + + Track ID3691 + + + Track ID3685 + + + Track ID3683 + + + Track ID3669 + + + Track ID3665 + + + Track ID3659 + + + Track ID3657 + + + Track ID3655 + + + Track ID3651 + + + Track ID3645 + + + Track ID3641 + + + Track ID3639 + + + Track ID3635 + + + Track ID3633 + + + Track ID3629 + + + Track ID3621 + + + Track ID3619 + + + Track ID3601 + + + Track ID3589 + + + Track ID3569 + + + Track ID3571 + + + Track ID3567 + + + Track ID3565 + + + Track ID3559 + + + Track ID3553 + + + Track ID3549 + + + Track ID3529 + + + Track ID3519 + + + Track ID3511 + + + Track ID3509 + + + Track ID3453 + + + Track ID3451 + + + Track ID3457 + + + Track ID3459 + + + Track ID3465 + + + Track ID3501 + + + Track ID3499 + + + Track ID3495 + + + Track ID3489 + + + Track ID3485 + + + Track ID3481 + + + Track ID3479 + + + Track ID3475 + + + Track ID3447 + + + Track ID3441 + + + Track ID3429 + + + Track ID3417 + + + Track ID3415 + + + Track ID3407 + + + Track ID3391 + + + Track ID3383 + + + Track ID3381 + + + Track ID3377 + + + Track ID3341 + + + Track ID3311 + + + Track ID3309 + + + Track ID3307 + + + Track ID3303 + + + Track ID3297 + + + Track ID3287 + + + Track ID3283 + + + Track ID3271 + + + Track ID3275 + + + Track ID3265 + + + Track ID3273 + + + Track ID3257 + + + Track ID3247 + + + Track ID3221 + + + Track ID3219 + + + Track ID3217 + + + Track ID3213 + + + Track ID3209 + + + Track ID3207 + + + Track ID3205 + + + Track ID3203 + + + Track ID3201 + + + Track ID3199 + + + Track ID3195 + + + Track ID3193 + + + Track ID3191 + + + Track ID3189 + + + Track ID3187 + + + Track ID3179 + + + Track ID3177 + + + Track ID3175 + + + Track ID3173 + + + Track ID3171 + + + Track ID3161 + + + Track ID3131 + + + Track ID3111 + + + Track ID3109 + + + Track ID3101 + + + Track ID3093 + + + Track ID3091 + + + Track ID3089 + + + Track ID3085 + + + Track ID3079 + + + Track ID3077 + + + Track ID3069 + + + Track ID3067 + + + Track ID3065 + + + Track ID3045 + + + Track ID3043 + + + Track ID3039 + + + Track ID3037 + + + Track ID3035 + + + Track ID3033 + + + Track ID3027 + + + Track ID3025 + + + Track ID3023 + + + Track ID3019 + + + Track ID3021 + + + Track ID2995 + + + Track ID3017 + + + Track ID3009 + + + Track ID2991 + + + Track ID2989 + + + Track ID2985 + + + Track ID2983 + + + Track ID2973 + + + Track ID2981 + + + Track ID2979 + + + Track ID2975 + + + Track ID2969 + + + Track ID2953 + + + Track ID2955 + + + Track ID2929 + + + Track ID2917 + + + Track ID2903 + + + Track ID2867 + + + Track ID2857 + + + Track ID2855 + + + Track ID2851 + + + Track ID2849 + + + Track ID2843 + + + Track ID2833 + + + Track ID2831 + + + Track ID2825 + + + Track ID2823 + + + Track ID2819 + + + Track ID2817 + + + Track ID2805 + + + Track ID2815 + + + Track ID2809 + + + Track ID2813 + + + Track ID2807 + + + Track ID2803 + + + Track ID2799 + + + Track ID2795 + + + Track ID2789 + + + Track ID2785 + + + Track ID2783 + + + Track ID2781 + + + Track ID2775 + + + Track ID2773 + + + Track ID2771 + + + Track ID2769 + + + Track ID2767 + + + Track ID2749 + + + Track ID2757 + + + Track ID2761 + + + Track ID2763 + + + Track ID2765 + + + Track ID2747 + + + Track ID2745 + + + Track ID2743 + + + Track ID2741 + + + Track ID2739 + + + Track ID2737 + + + Track ID2735 + + + Track ID2731 + + + Track ID2729 + + + Track ID2727 + + + Track ID2725 + + + Track ID2719 + + + Track ID2717 + + + Track ID2715 + + + Track ID2705 + + + Track ID2703 + + + Track ID2699 + + + Track ID2697 + + + Track ID2693 + + + Track ID2691 + + + Track ID2685 + + + Track ID2683 + + + Track ID2681 + + + Track ID2673 + + + Track ID2671 + + + Track ID2669 + + + Track ID2667 + + + Track ID2665 + + + Track ID2663 + + + Track ID2655 + + + Track ID2653 + + + Track ID2651 + + + Track ID2649 + + + Track ID2647 + + + Track ID2645 + + + Track ID2643 + + + Track ID2637 + + + Track ID2635 + + + Track ID2633 + + + Track ID2629 + + + Track ID2627 + + + Track ID2623 + + + Track ID2621 + + + Track ID2619 + + + Track ID2617 + + + Track ID2615 + + + Track ID2613 + + + Track ID2599 + + + Track ID2597 + + + Track ID2589 + + + Track ID2587 + + + Track ID2583 + + + Track ID2581 + + + Track ID2579 + + + Track ID2577 + + + Track ID2575 + + + Track ID2573 + + + Track ID2571 + + + Track ID2569 + + + Track ID2561 + + + Track ID2553 + + + Track ID2549 + + + Track ID2547 + + + Track ID2535 + + + Track ID2533 + + + Track ID2531 + + + Track ID2529 + + + Track ID2527 + + + Track ID2523 + + + Track ID2521 + + + Track ID2519 + + + Track ID2489 + + + Track ID2499 + + + Track ID2465 + + + Track ID2469 + + + Track ID2471 + + + Track ID2437 + + + Track ID2439 + + + Track ID2441 + + + Track ID2443 + + + Track ID2445 + + + Track ID2447 + + + Track ID2455 + + + Track ID2457 + + + Track ID2459 + + + Track ID2461 + + + Track ID17867 + + + Track ID17759 + + + Track ID17749 + + + Track ID6527 + + + Track ID6805 + + + Track ID6399 + + + Track ID5677 + + + Track ID4819 + + + Track ID3463 + + + + + NameПлейлист + Description + Playlist ID15717 + Playlist Persistent IDFD8AB78ED08466C1 + All Items + Smart Info + + AQEBAwAAABoAAGGoAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA== + + Smart Criteria + + U0xzdAABAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAU0xzdAABAAEAAAACAAAAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAADwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABEAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAg + AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQRTTHN0AAEAAQAAAAEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAmgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEQAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAA + AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + Playlist Items + + + Track ID2717 + + + Track ID4201 + + + Track ID3019 + + + Track ID3685 + + + Track ID5065 + + + Track ID3213 + + + Track ID6791 + + + Track ID6795 + + + Track ID6819 + + + Track ID2727 + + + Track ID5175 + + + Track ID4847 + + + Track ID4241 + + + Track ID6093 + + + Track ID3417 + + + Track ID5931 + + + Track ID2577 + + + Track ID2809 + + + Track ID2599 + + + Track ID4759 + + + Track ID2523 + + + Track ID3273 + + + Track ID4629 + + + Track ID4235 + + + Track ID2683 + + + Track ID6105 + + + Track ID4959 + + + Track ID5645 + + + Track ID5533 + + + Track ID3479 + + + Track ID6717 + + + Track ID5633 + + + Track ID2979 + + + Track ID4965 + + + Track ID3205 + + + Track ID4765 + + + Track ID4801 + + + Track ID3855 + + + Track ID4511 + + + Track ID3199 + + + Track ID2583 + + + Track ID3569 + + + Track ID5285 + + + Track ID5549 + + + Track ID3187 + + + Track ID5389 + + + Track ID3219 + + + Track ID4659 + + + Track ID2995 + + + Track ID2569 + + + Track ID4761 + + + Track ID5929 + + + Track ID4517 + + + Track ID4537 + + + Track ID4287 + + + Track ID6065 + + + Track ID6731 + + + Track ID5411 + + + Track ID3441 + + + Track ID6407 + + + Track ID4967 + + + Track ID2825 + + + Track ID6033 + + + Track ID3297 + + + Track ID6227 + + + Track ID5919 + + + Track ID2981 + + + Track ID5475 + + + Track ID4363 + + + Track ID3657 + + + Track ID2635 + + + Track ID4535 + + + Track ID3453 + + + Track ID6309 + + + Track ID5235 + + + Track ID2767 + + + Track ID6025 + + + Track ID4495 + + + Track ID4433 + + + Track ID2737 + + + Track ID6523 + + + Track ID6773 + + + Track ID3475 + + + Track ID4017 + + + Track ID2637 + + + Track ID5047 + + + Track ID6761 + + + Track ID6763 + + + Track ID6327 + + + Track ID3905 + + + Track ID4289 + + + Track ID6369 + + + Track ID2715 + + + Track ID5501 + + + Track ID5407 + + + Track ID2665 + + + Track ID4963 + + + Track ID5467 + + + Track ID5317 + + + Track ID5163 + + + Track ID6425 + + + Track ID5665 + + + Track ID4417 + + + Track ID4191 + + + Track ID4617 + + + Track ID2441 + + + Track ID3633 + + + Track ID4605 + + + Track ID5647 + + + Track ID5711 + + + Track ID2469 + + + Track ID3033 + + + Track ID3101 + + + Track ID5709 + + + Track ID3271 + + + Track ID3257 + + + Track ID2719 + + + Track ID2735 + + + Track ID4589 + + + Track ID6433 + + + Track ID3067 + + + Track ID3221 + + + Track ID2459 + + + Track ID4769 + + + Track ID5281 + + + Track ID4853 + + + Track ID5075 + + + Track ID6333 + + + Track ID5803 + + + Track ID4461 + + + Track ID2743 + + + Track ID3217 + + + Track ID4671 + + + Track ID2527 + + + Track ID3693 + + + Track ID5059 + + + Track ID3669 + + + Track ID6695 + + + Track ID2663 + + + Track ID2765 + + + Track ID4319 + + + Track ID3451 + + + Track ID4079 + + + Track ID4813 + + + Track ID2771 + + + Track ID4351 + + + Track ID6037 + + + Track ID4935 + + + Track ID6051 + + + Track ID3511 + + + Track ID5393 + + + Track ID3737 + + + Track ID5159 + + + Track ID2761 + + + Track ID4645 + + + Track ID3283 + + + Track ID3499 + + + Track ID5643 + + + Track ID2729 + + + Track ID5679 + + + Track ID3069 + + + Track ID3553 + + + Track ID4153 + + + Track ID5461 + + + Track ID4721 + + + Track ID4259 + + + Track ID5841 + + + Track ID5485 + + + Track ID5581 + + + Track ID5107 + + + Track ID6095 + + + Track ID2813 + + + Track ID5597 + + + Track ID5137 + + + Track ID2953 + + + Track ID3723 + + + Track ID2535 + + + Track ID2575 + + + Track ID2983 + + + Track ID3177 + + + Track ID4437 + + + Track ID6099 + + + Track ID5967 + + + Track ID6087 + + + Track ID6187 + + + Track ID5663 + + + Track ID3923 + + + Track ID3641 + + + Track ID4879 + + + Track ID5589 + + + Track ID6347 + + + Track ID6495 + + + Track ID6691 + + + Track ID3751 + + + Track ID5229 + + + Track ID6477 + + + Track ID6089 + + + Track ID5541 + + + Track ID3793 + + + Track ID3683 + + + Track ID5691 + + + Track ID6021 + + + Track ID5167 + + + Track ID5021 + + + Track ID4317 + + + Track ID4603 + + + Track ID4999 + + + Track ID5293 + + + Track ID6271 + + + Track ID6241 + + + Track ID5215 + + + Track ID2521 + + + Track ID4203 + + + Track ID2615 + + + Track ID3763 + + + Track ID4541 + + + Track ID3265 + + + Track ID3773 + + + Track ID3043 + + + Track ID2581 + + + Track ID5573 + + + Track ID5109 + + + Track ID5283 + + + Track ID2553 + + + Track ID3275 + + + Track ID3847 + + + Track ID3173 + + + Track ID4841 + + + Track ID5115 + + + Track ID5477 + + + Track ID2629 + + + Track ID5773 + + + Track ID4061 + + + Track ID6463 + + + Track ID4607 + + + Track ID4063 + + + Track ID5521 + + + Track ID3601 + + + Track ID6503 + + + Track ID3645 + + + Track ID2443 + + + Track ID3039 + + + Track ID2561 + + + Track ID3809 + + + Track ID3079 + + + Track ID6423 + + + Track ID6061 + + + Track ID3391 + + + Track ID4733 + + + Track ID4719 + + + Track ID4223 + + + Track ID4985 + + + Track ID5335 + + + Track ID5577 + + + Track ID2439 + + + Track ID2989 + + + Track ID6427 + + + Track ID5017 + + + Track ID3035 + + + Track ID4249 + + + Track ID4943 + + + Track ID3903 + + + Track ID3189 + + + Track ID3571 + + + Track ID4925 + + + Track ID5139 + + + Track ID3457 + + + Track ID2969 + + + Track ID2667 + + + Track ID3131 + + + Track ID2633 + + + Track ID4015 + + + Track ID3459 + + + Track ID6417 + + + Track ID2697 + + + Track ID3859 + + + Track ID2455 + + + Track ID5455 + + + Track ID5697 + + + Track ID6461 + + + Track ID3729 + + + Track ID5725 + + + Track ID5277 + + + Track ID2973 + + + Track ID2671 + + + Track ID6351 + + + Track ID3195 + + + Track ID2799 + + + Track ID3465 + + + Track ID4049 + + + Track ID4375 + + + Track ID5935 + + + Track ID4233 + + + Track ID6091 + + + Track ID3567 + + + Track ID3191 + + + Track ID4187 + + + Track ID4525 + + + Track ID5683 + + + Track ID2781 + + + Track ID6039 + + + Track ID3021 + + + Track ID6045 + + + Track ID5925 + + + Track ID4669 + + + Track ID5245 + + + Track ID6049 + + + Track ID4779 + + + Track ID5859 + + + Track ID3697 + + + Track ID4661 + + + Track ID2843 + + + Track ID3027 + + + Track ID2833 + + + Track ID3881 + + + Track ID3919 + + + Track ID3309 + + + Track ID3037 + + + Track ID3857 + + + Track ID5195 + + + Track ID2457 + + + Track ID4915 + + + Track ID6067 + + + Track ID5943 + + + Track ID2795 + + + Track ID2803 + + + Track ID4677 + + + Track ID4205 + + + Track ID5033 + + + Track ID4531 + + + Track ID2651 + + + Track ID2597 + + + Track ID5635 + + + Track ID2763 + + + Track ID5911 + + + Track ID5687 + + + Track ID5837 + + + Track ID3907 + + + Track ID3447 + + + Track ID3341 + + + Track ID4335 + + + Track ID4997 + + + Track ID3429 + + + Track ID3377 + + + Track ID5785 + + + Track ID5555 + + + Track ID4597 + + + Track ID5465 + + + Track ID3307 + + + Track ID5853 + + + Track ID3655 + + + Track ID2589 + + + Track ID4145 + + + Track ID4499 + + + Track ID4331 + + + Track ID2489 + + + Track ID6047 + + + Track ID5543 + + + Track ID3549 + + + Track ID3619 + + + Track ID5651 + + + Track ID5437 + + + Track ID5561 + + + Track ID2587 + + + Track ID4439 + + + Track ID2531 + + + Track ID5123 + + + Track ID5179 + + + Track ID5751 + + + Track ID4273 + + + Track ID2655 + + + Track ID5207 + + + Track ID4455 + + + Track ID6069 + + + Track ID4591 + + + Track ID5153 + + + Track ID4377 + + + Track ID5019 + + + Track ID3851 + + + Track ID3735 + + + Track ID2739 + + + Track ID3635 + + + Track ID3085 + + + Track ID4071 + + + Track ID5015 + + + Track ID3415 + + + Track ID2789 + + + Track ID5435 + + + Track ID5121 + + + Track ID4587 + + + Track ID5459 + + + Track ID4021 + + + Track ID5213 + + + Track ID5379 + + + Track ID4443 + + + Track ID6429 + + + Track ID6431 + + + Track ID2573 + + + Track ID4269 + + + Track ID2579 + + + Track ID5611 + + + Track ID3109 + + + Track ID5653 + + + Track ID2529 + + + Track ID4565 + + + Track ID5325 + + + Track ID6421 + + + Track ID3171 + + + Track ID4955 + + + Track ID5341 + + + Track ID3093 + + + Track ID4903 + + + Track ID4167 + + + Track ID3025 + + + Track ID2445 + + + Track ID3193 + + + Track ID5793 + + + Track ID2855 + + + Track ID4533 + + + Track ID3303 + + + Track ID5041 + + + Track ID3091 + + + Track ID4281 + + + Track ID2817 + + + Track ID2985 + + + Track ID2471 + + + Track ID3621 + + + Track ID5297 + + + Track ID6079 + + + Track ID2627 + + + Track ID2991 + + + Track ID4199 + + + Track ID4923 + + + Track ID4655 + + + Track ID2823 + + + Track ID4777 + + + Track ID3659 + + + Track ID3247 + + + Track ID3489 + + + Track ID4643 + + + Track ID2693 + + + Track ID5395 + + + Track ID4521 + + + Track ID5615 + + + Track ID2917 + + + Track ID5923 + + + Track ID4339 + + + Track ID4265 + + + Track ID2805 + + + Track ID5003 + + + Track ID5305 + + + Track ID2617 + + + Track ID3629 + + + Track ID3565 + + + Track ID6027 + + + Track ID3207 + + + Track ID5547 + + + Track ID2749 + + + Track ID4611 + + + Track ID2929 + + + Track ID3201 + + + Track ID3009 + + + Track ID2621 + + + Track ID5051 + + + Track ID6101 + + + Track ID3519 + + + Track ID4159 + + + Track ID5347 + + + Track ID3529 + + + Track ID3665 + + + Track ID4681 + + + Track ID5091 + + + Track ID2673 + + + Track ID3509 + + + Track ID5939 + + + Track ID2857 + + + Track ID2499 + + + Track ID6349 + + + Track ID4767 + + + Track ID4193 + + + Track ID4913 + + + Track ID3775 + + + Track ID4741 + + + Track ID2669 + + + Track ID3869 + + + Track ID2691 + + + Track ID3175 + + + Track ID5377 + + + Track ID4833 + + + Track ID6319 + + + Track ID4179 + + + Track ID3045 + + + Track ID4057 + + + Track ID6221 + + + Track ID6381 + + + Track ID3943 + + + Track ID6131 + + + Track ID2819 + + + Track ID5291 + + + Track ID5799 + + + Track ID2769 + + + Track ID5595 + + + Track ID5673 + + + Track ID4639 + + + Track ID2653 + + + Track ID2703 + + + Track ID3695 + + + Track ID2807 + + + Track ID6097 + + + Track ID5933 + + + Track ID2571 + + + Track ID3485 + + + Track ID3901 + + + Track ID2547 + + + Track ID5863 + + + Track ID3481 + + + Track ID3969 + + + Track ID2519 + + + Track ID5539 + + + Track ID5409 + + + Track ID3861 + + + Track ID2699 + + + Track ID4737 + + + Track ID4513 + + + Track ID3501 + + + Track ID3077 + + + Track ID3495 + + + Track ID2725 + + + Track ID2903 + + + Track ID6293 + + + Track ID6311 + + + Track ID4379 + + + Track ID5071 + + + Track ID4059 + + + Track ID3311 + + + Track ID2447 + + + Track ID3853 + + + Track ID6071 + + + Track ID3381 + + + Track ID2867 + + + Track ID2619 + + + Track ID2731 + + + Track ID3089 + + + Track ID2549 + + + Track ID3971 + + + Track ID2623 + + + Track ID2783 + + + Track ID3651 + + + Track ID5567 + + + Track ID3065 + + + Track ID5269 + + + Track ID2705 + + + Track ID3777 + + + Track ID4861 + + + Track ID6317 + + + Track ID2533 + + + Track ID4651 + + + Track ID5529 + + + Track ID6353 + + + Track ID4665 + + + Track ID2955 + + + Track ID5569 + + + Track ID3759 + + + Track ID2747 + + + Track ID4491 + + + Track ID5871 + + + Track ID3977 + + + Track ID6213 + + + Track ID2849 + + + Track ID4815 + + + Track ID4917 + + + Track ID5851 + + + Track ID4185 + + + Track ID4209 + + + Track ID2785 + + + Track ID4539 + + + Track ID4667 + + + Track ID5329 + + + Track ID3559 + + + Track ID4211 + + + Track ID2741 + + + Track ID2775 + + + Track ID3023 + + + Track ID4789 + + + Track ID5287 + + + Track ID2831 + + + Track ID4155 + + + Track ID2461 + + + Track ID3179 + + + Track ID3203 + + + Track ID3589 + + + Track ID2649 + + + Track ID5545 + + + Track ID6117 + + + Track ID4133 + + + Track ID4217 + + + Track ID3383 + + + Track ID2851 + + + Track ID4147 + + + Track ID3639 + + + Track ID5005 + + + Track ID2643 + + + Track ID2647 + + + Track ID4349 + + + Track ID4991 + + + Track ID5887 + + + Track ID2745 + + + Track ID2613 + + + Track ID2437 + + + Track ID2815 + + + Track ID5713 + + + Track ID5151 + + + Track ID3111 + + + Track ID2681 + + + Track ID4873 + + + Track ID3407 + + + Track ID4909 + + + Track ID5057 + + + Track ID3691 + + + Track ID2465 + + + Track ID4255 + + + Track ID3017 + + + Track ID2757 + + + Track ID3161 + + + Track ID4615 + + + Track ID4109 + + + Track ID5937 + + + Track ID2773 + + + Track ID4927 + + + Track ID5401 + + + Track ID5323 + + + Track ID5789 + + + Track ID4631 + + + Track ID6081 + + + Track ID6179 + + + Track ID5819 + + + Track ID5535 + + + Track ID5945 + + + Track ID3209 + + + Track ID3711 + + + Track ID5741 + + + Track ID3721 + + + Track ID5045 + + + Track ID4689 + + + Track ID4687 + + + Track ID3741 + + + Track ID3719 + + + Track ID5035 + + + Track ID3715 + + + Track ID4465 + + + Track ID4551 + + + Track ID3287 + + + Track ID2975 + + + Track ID3709 + + + Track ID3705 + + + Track ID5227 + + + Track ID4869 + + + Track ID3743 + + + Track ID2685 + + + Track ID3811 + + + Track ID2645 + + + Track ID17759 + + + Track ID17749 + + + Track ID17867 + + + Track ID4819 + + + Track ID6527 + + + Track ID6805 + + + Track ID3463 + + + Track ID6399 + + + Track ID5677 + + + + + Name16 + DescriptionThis playlist was created by https://www.tunemymusic.com that lets you transfer your playlist to Apple from any music platform such as Spotify, YouTube, Deezer etc. + Playlist ID16381 + Playlist Persistent IDC3E62E6F058CEB3B + All Items + Playlist Items + + + Track ID6609 + + + Track ID6653 + + + Track ID6731 + + + Track ID6733 + + + + + Name21 + DescriptionThis playlist was created by https://www.tunemymusic.com that lets you transfer your playlist to Apple from any music platform such as Spotify, YouTube, Deezer etc. + Playlist ID16388 + Playlist Persistent ID0319B5D3AB6BA5CE + All Items + Playlist Items + + + Track ID6631 + + + Track ID6551 + + + Track ID6479 + + + Track ID6611 + + + Track ID6587 + + + Track ID6477 + + + Track ID6655 + + + Track ID6637 + + + Track ID6621 + + + Track ID6623 + + + Track ID4287 + + + Track ID6643 + + + Track ID4659 + + + Track ID6615 + + + Track ID6629 + + + Track ID6633 + + + Track ID6609 + + + + + NameALT CTRL + DescriptionALT CTRL is home to the latest and greatest in alternative music. This week’s featured track is “hotline”, the debut single from London rock outfit bby. Check back often, as our editors update this playlist regularly—and if you hear something you like, add it to your library. + Playlist ID16408 + Playlist Persistent IDA3777B3290C29254 + All Items + Playlist Items + + + Track ID18475 + + + Track ID7183 + + + Track ID18785 + + + Track ID18714 + + + Track ID6911 + + + Track ID6925 + + + Track ID6885 + + + Track ID7463 + + + Track ID7281 + + + Track ID7389 + + + Track ID7071 + + + Track ID18647 + + + Track ID7399 + + + Track ID6941 + + + Track ID7121 + + + Track ID7329 + + + Track ID7495 + + + Track ID7001 + + + Track ID7111 + + + + + Nameawol + Description + Playlist ID16429 + Playlist Persistent IDDB26BA8298D24AD8 + All Items + Playlist Items + + + Track ID2681 + + + Track ID3283 + + + + + NameAWOLNATION & Elohim - My Echo, My Shadow, My Covers & Me + Description + Playlist ID16434 + Playlist Persistent ID1B980CCFDDFF5055 + All Items + Playlist Items + + + Track ID6021 + + + Track ID6025 + + + Track ID6035 + + + Track ID6037 + + + Track ID6065 + + + Track ID6089 + + + Track ID6447 + + + Track ID6495 + + + Track ID4701 + + + Track ID6347 + + + Track ID6333 + + + Track ID5929 + + + Track ID5691 + + + Track ID5933 + + + Track ID6323 + + + Track ID5229 + + + Track ID6621 + + + Track ID6695 + + + Track ID6691 + + + Track ID5785 + + + Track ID2535 + + + Track ID6773 + + + Track ID4437 + + + Track ID6445 + + + Track ID5157 + + + + + NameBEATstrumentals + DescriptionWhether they’re derived from jazz, funk, soul or ambient music, these chill hip-hop beats from around the world provide a soothing soundtrack for breezing through to-do lists, focusing on work or unwinding after a long day. We regularly update this playlist with new instrumentals. If you hear something you like, add it to your library. + Playlist ID16462 + Playlist Persistent ID67D2BA2D38DF04D8 + All Items + Playlist Items + + + Track ID18622 + + + Track ID18511 + + + Track ID18518 + + + Track ID18759 + + + Track ID7109 + + + Track ID18449 + + + Track ID18852 + + + Track ID7485 + + + Track ID18888 + + + Track ID18826 + + + Track ID18493 + + + Track ID18532 + + + Track ID7507 + + + Track ID7369 + + + Track ID18616 + + + Track ID18833 + + + Track ID7497 + + + Track ID18734 + + + Track ID18603 + + + Track ID18538 + + + Track ID18583 + + + Track ID18914 + + + Track ID18428 + + + Track ID18387 + + + Track ID18380 + + + Track ID6915 + + + Track ID18991 + + + Track ID18721 + + + Track ID7225 + + + Track ID18628 + + + Track ID6857 + + + Track ID18609 + + + Track ID18674 + + + Track ID18871 + + + Track ID18576 + + + Track ID6909 + + + Track ID18929 + + + Track ID7375 + + + Track ID18919 + + + Track ID18746 + + + Track ID18462 + + + Track ID18481 + + + Track ID7423 + + + Track ID18667 + + + Track ID7477 + + + Track ID7333 + + + Track ID7095 + + + Track ID18772 + + + Track ID18551 + + + Track ID18924 + + + Track ID7601 + + + Track ID18859 + + + Track ID7353 + + + Track ID6913 + + + Track ID7471 + + + Track ID18950 + + + Track ID7031 + + + Track ID7573 + + + Track ID18907 + + + Track ID18839 + + + Track ID18727 + + + Track ID18984 + + + Track ID18957 + + + Track ID7411 + + + Track ID7107 + + + Track ID18590 + + + Track ID18977 + + + Track ID18680 + + + Track ID7415 + + + Track ID18504 + + + Track ID7479 + + + Track ID7103 + + + Track ID6841 + + + Track ID6853 + + + Track ID6993 + + + Track ID7419 + + + Track ID7227 + + + Track ID7537 + + + Track ID7335 + + + Track ID7079 + + + Track ID6827 + + + Track ID6999 + + + Track ID7409 + + + Track ID7531 + + + Track ID6945 + + + Track ID7295 + + + Track ID7003 + + + Track ID7417 + + + Track ID6905 + + + Track ID6973 + + + Track ID7157 + + + Track ID6871 + + + Track ID7129 + + + Track ID6971 + + + Track ID7443 + + + Track ID7131 + + + Track ID7625 + + + Track ID7311 + + + Track ID7277 + + + Track ID6865 + + + Track ID7581 + + + Track ID7319 + + + Track ID7487 + + + Track ID7093 + + + Track ID7345 + + + Track ID6969 + + + Track ID6947 + + + Track ID7607 + + + Track ID7505 + + + Track ID7447 + + + Track ID7077 + + + Track ID7557 + + + Track ID6957 + + + Track ID7315 + + + Track ID7501 + + + Track ID7119 + + + Track ID7233 + + + Track ID7309 + + + Track ID7073 + + + Track ID7289 + + + Track ID6829 + + + Track ID6959 + + + Track ID7475 + + + Track ID7397 + + + Track ID6849 + + + Track ID7105 + + + Track ID7603 + + + Track ID7509 + + + Track ID6979 + + + Track ID7321 + + + Track ID7299 + + + Track ID7565 + + + Track ID6923 + + + Track ID7199 + + + Track ID7547 + + + Track ID7303 + + + Track ID7457 + + + Track ID7571 + + + Track ID7393 + + + Track ID6897 + + + Track ID6843 + + + Track ID7149 + + + Track ID7297 + + + Track ID7503 + + + Track ID7257 + + + Track ID6879 + + + Track ID6933 + + + Track ID7371 + + + Track ID7205 + + + Track ID7451 + + + Track ID6875 + + + Track ID7263 + + + Track ID7313 + + + Track ID7057 + + + Track ID7527 + + + Track ID7301 + + + Track ID7171 + + + Track ID7407 + + + Track ID7267 + + + Track ID7455 + + + Track ID7519 + + + Track ID6839 + + + Track ID7137 + + + Track ID7285 + + + Track ID7383 + + + Track ID7193 + + + Track ID6961 + + + Track ID6949 + + + Track ID6863 + + + Track ID7127 + + + Track ID7541 + + + Track ID7357 + + + Track ID7425 + + + Track ID7317 + + + Track ID7483 + + + Track ID7163 + + + Track ID6981 + + + Track ID7239 + + + Track ID7385 + + + Track ID7089 + + + Track ID6881 + + + Track ID7633 + + + Track ID7113 + + + Track ID6929 + + + Track ID7049 + + + Track ID7207 + + + Track ID7631 + + + Track ID7515 + + + Track ID7029 + + + Track ID7069 + + + Track ID7461 + + + Track ID7043 + + + Track ID7403 + + + Track ID7337 + + + Track ID6989 + + + Track ID7153 + + + Track ID7247 + + + Track ID7165 + + + Track ID7051 + + + Track ID7421 + + + Track ID7629 + + + Track ID7099 + + + Track ID7075 + + + Track ID7377 + + + Track ID6967 + + + Track ID7055 + + + Track ID6899 + + + Track ID7245 + + + Track ID7355 + + + Track ID7181 + + + Track ID6855 + + + Track ID6887 + + + Track ID7091 + + + Track ID7413 + + + Track ID7147 + + + Track ID7325 + + + Track ID7351 + + + Track ID7323 + + + Track ID7481 + + + Track ID7123 + + + Track ID7525 + + + Track ID7363 + + + Track ID7493 + + + Track ID7551 + + + Track ID7589 + + + Track ID7053 + + + Track ID7223 + + + Track ID7559 + + + Track ID7401 + + + Track ID6847 + + + Track ID7027 + + + Track ID7185 + + + Track ID7067 + + + Track ID7231 + + + Track ID7037 + + + Track ID7203 + + + Track ID7271 + + + Track ID7159 + + + Track ID6907 + + + Track ID7499 + + + Track ID7291 + + + Track ID6987 + + + Track ID7167 + + + Track ID7517 + + + Track ID7019 + + + Track ID7341 + + + Track ID7361 + + + Track ID7569 + + + Track ID6963 + + + Track ID7347 + + + Track ID7539 + + + Track ID6891 + + + Track ID6889 + + + Track ID7115 + + + Track ID7545 + + + Track ID7177 + + + Track ID7009 + + + Track ID7255 + + + Track ID7445 + + + Track ID7143 + + + Track ID7249 + + + Track ID7543 + + + Track ID7331 + + + Track ID7087 + + + Track ID7381 + + + Track ID6873 + + + Track ID7395 + + + Track ID7373 + + + Track ID7253 + + + Track ID7161 + + + Track ID6939 + + + Track ID7195 + + + Track ID7023 + + + Track ID7283 + + + Track ID7379 + + + Track ID6997 + + + Track ID7585 + + + Track ID6903 + + + Track ID7059 + + + Track ID7139 + + + Track ID7327 + + + Track ID7191 + + + Track ID7555 + + + Track ID7549 + + + Track ID7125 + + + Track ID7449 + + + Track ID6877 + + + Track ID6851 + + + Track ID7155 + + + Track ID7065 + + + Track ID7599 + + + + + Nameborrowed love + Description + Playlist ID16758 + Playlist Persistent IDA1B08EFB9D37B1CF + All Items + Playlist Items + + + Track ID4769 + + + Track ID4199 + + + Track ID3407 + + + Track ID3583 + + + Track ID5871 + + + Track ID4201 + + + Track ID5645 + + + Track ID5923 + + + Track ID5687 + + + Track ID3465 + + + Track ID5713 + + + Track ID5709 + + + Track ID3923 + + + Track ID5943 + + + Track ID5071 + + + + + Namecamon + Description + Playlist ID16776 + Playlist Persistent ID930538B1B7B3A2F1 + All Items + Playlist Items + + + Track ID5153 + + + Track ID4437 + + + + + NameFavourites Mix + DescriptionThe songs you love. The more you use Apple Music, the better the mix. Refreshed every Tuesday. + Playlist ID16781 + Playlist Persistent ID714062ED9878CD84 + All Items + Playlist Items + + + Track ID5773 + + + Track ID4319 + + + Track ID4575 + + + Track ID3253 + + + Track ID5081 + + + Track ID3661 + + + Track ID3667 + + + Track ID5343 + + + Track ID3373 + + + Track ID2677 + + + Track ID18570 + + + Track ID3441 + + + Track ID4947 + + + Track ID6341 + + + Track ID6733 + + + Track ID4055 + + + Track ID2909 + + + Track ID18408 + + + Track ID18469 + + + Track ID2697 + + + Track ID5271 + + + Track ID3597 + + + Track ID18741 + + + Track ID5463 + + + Track ID3827 + + + + + Nameflex + DescriptionThis playlist was created by https://www.tunemymusic.com that lets you transfer your playlist to Apple from any music platform such as Spotify, YouTube, Deezer etc. + Playlist ID16809 + Playlist Persistent IDF3688467D6BFAB37 + All Items + Playlist Items + + + Track ID6629 + + + Track ID6657 + + + Track ID6729 + + + + + Nameflex + Description + Playlist ID16815 + Playlist Persistent IDC93CE0EADF552AF1 + All Items + Playlist Items + + + Track ID6479 + + + Track ID6477 + + + Track ID6467 + + + Track ID6475 + + + Track ID2991 + + + + + NameGet Up! Mix + DescriptionWhether it’s Monday morning or Friday night, get going with this personalised mix of upbeat music. + Playlist ID16823 + Playlist Persistent IDBC5D0AF5048F295E + All Items + Playlist Items + + + Track ID3755 + + + Track ID18895 + + + Track ID18654 + + + Track ID4573 + + + Track ID18353 + + + Track ID18545 + + + Track ID18565 + + + Track ID2727 + + + Track ID18846 + + + Track ID18641 + + + Track ID5641 + + + Track ID18900 + + + Track ID18488 + + + Track ID18971 + + + Track ID18882 + + + Track ID5393 + + + Track ID5613 + + + Track ID18498 + + + Track ID2623 + + + Track ID18360 + + + Track ID18456 + + + Track ID5733 + + + Track ID18414 + + + Track ID18596 + + + Track ID2619 + + + + + NameLewis Capaldi Essentials + DescriptionThough West Lothian-raised singer Lewis Capaldi’s public persona is predicated on bone-dry self-deprecation (this, after all, is the man whose early promotional activity offered him up as “the Scottish Beyoncé”), it is heartfelt sincerity that gives his music its potency. Breakthrough single “Someone You Loved” is perhaps the purest expression of this: a gruffly melodic howl of heartache, driven forward by irresistible skeletal piano. But Capaldi—as especially proven on 2019 debut album Divinely Uninspired To a Hellish Extent—is no one-shot songwriter. Early cut “Mercy” crackles with bluesy, garment-rending yearning, “Before You Go” adds urgent, finger-plucked guitar and “Hold Me While You Wait” reveals that this deadpan king of the internet may, plot twist, be the most affecting gospel singer this side of Glasgow. + Playlist ID16851 + Playlist Persistent ID14DA78277D2E7F39 + All Items + Playlist Items + + + Track ID7577 + + + Track ID7265 + + + Track ID7217 + + + Track ID7575 + + + Track ID7213 + + + Track ID18866 + + + Track ID7145 + + + Track ID18877 + + + Track ID7491 + + + + + NameNew Music Mix + DescriptionDiscover new music from artists we think you'll like. Refreshed every Friday. + Playlist ID16864 + Playlist Persistent ID8DAB96EADCD748BD + All Items + Playlist Items + + + Track ID18442 + + + Track ID18660 + + + Track ID18752 + + + Track ID18700 + + + Track ID18792 + + + Track ID18366 + + + Track ID18421 + + + Track ID18799 + + + Track ID18964 + + + Track ID18806 + + + Track ID18707 + + + Track ID18435 + + + Track ID18687 + + + Track ID18634 + + + Track ID18558 + + + Track ID18936 + + + Track ID18943 + + + Track ID18394 + + + Track ID18373 + + + Track ID18347 + + + Track ID18765 + + + Track ID18694 + + + Track ID18525 + + + Track ID18401 + + + Track ID18819 + + + + + Nameon my own + kuko + Description + Playlist ID16892 + Playlist Persistent IDC02AD0CFF5068328 + All Items + Playlist Items + + + Track ID5045 + + + Track ID4365 + + + Track ID5091 + + + Track ID5665 + + + Track ID5681 + + + Track ID2441 + + + Track ID5061 + + + Track ID5031 + + + Track ID4683 + + + Track ID5683 + + + Track ID5039 + + + Track ID5049 + + + Track ID4939 + + + Track ID5011 + + + Track ID4985 + + + Track ID5679 + + + Track ID4465 + + + Track ID2833 + + + Track ID5123 + + + Track ID5575 + + + Track ID5519 + + + Track ID5227 + + + Track ID5271 + + + Track ID5035 + + + Track ID4951 + + + Track ID4999 + + + Track ID4861 + + + Track ID4845 + + + Track ID4847 + + + Track ID4507 + + + Track ID4521 + + + Track ID4513 + + + Track ID4641 + + + Track ID4603 + + + Track ID4561 + + + Track ID4205 + + + Track ID3979 + + + Track ID3909 + + + Track ID3729 + + + Track ID3657 + + + Track ID3649 + + + Track ID3779 + + + Track ID4327 + + + Track ID5063 + + + Track ID4533 + + + Track ID3187 + + + Track ID3175 + + + Track ID5267 + + + Track ID4937 + + + Track ID4935 + + + Track ID5297 + + + Track ID5175 + + + Track ID2847 + + + Track ID2929 + + + Track ID4449 + + + Track ID3283 + + + Track ID3975 + + + Track ID4259 + + + Track ID5823 + + + Track ID4517 + + + Track ID3499 + + + Track ID3481 + + + Track ID3221 + + + Track ID3709 + + + Track ID3485 + + + + + NameReplay 2018 + DescriptionRelive your favourite tracks from 2018, all in one playlist. + Playlist ID16960 + Playlist Persistent IDF9FCE9237D34DCD0 + All Items + Playlist Items + + + Track ID6985 + + + Track ID7427 + + + Track ID5303 + + + Track ID7033 + + + Track ID7047 + + + Track ID2573 + + + Track ID5301 + + + Track ID2455 + + + Track ID2569 + + + Track ID2575 + + + Track ID6845 + + + Track ID2531 + + + Track ID7469 + + + Track ID2457 + + + Track ID7439 + + + Track ID7621 + + + Track ID7619 + + + Track ID7437 + + + Track ID6861 + + + Track ID7307 + + + Track ID5289 + + + Track ID5319 + + + Track ID7627 + + + Track ID2997 + + + Track ID2999 + + + Track ID7013 + + + Track ID2459 + + + Track ID2991 + + + Track ID4435 + + + Track ID2819 + + + Track ID5327 + + + Track ID2443 + + + Track ID7387 + + + Track ID2739 + + + Track ID2707 + + + Track ID2587 + + + Track ID2821 + + + Track ID6835 + + + Track ID2693 + + + Track ID7011 + + + Track ID7141 + + + Track ID2823 + + + Track ID7623 + + + Track ID2773 + + + Track ID5321 + + + Track ID2621 + + + Track ID2649 + + + Track ID2663 + + + Track ID7237 + + + Track ID7179 + + + Track ID2681 + + + Track ID2809 + + + Track ID6883 + + + Track ID2619 + + + Track ID2985 + + + Track ID6723 + + + Track ID7473 + + + Track ID6983 + + + Track ID2591 + + + Track ID2637 + + + Track ID2635 + + + Track ID2647 + + + Track ID2657 + + + Track ID2849 + + + Track ID2697 + + + Track ID2725 + + + Track ID2581 + + + Track ID5287 + + + Track ID7021 + + + Track ID4661 + + + Track ID7453 + + + Track ID2783 + + + Track ID2585 + + + Track ID2579 + + + Track ID2653 + + + Track ID2843 + + + Track ID2577 + + + Track ID7005 + + + Track ID6833 + + + Track ID2667 + + + Track ID2671 + + + Track ID2669 + + + Track ID2665 + + + Track ID2989 + + + Track ID2995 + + + Track ID2815 + + + Track ID2905 + + + Track ID2857 + + + Track ID7533 + + + Track ID2683 + + + Track ID2993 + + + Track ID2727 + + + Track ID7521 + + + Track ID6975 + + + Track ID2743 + + + Track ID2715 + + + + + NameReplay 2019 + DescriptionRelive your favourite tracks from 2019, all in one playlist. + Playlist ID17059 + Playlist Persistent ID8BF2E30B687F30C1 + All Items + Playlist Items + + + Track ID3037 + + + Track ID3039 + + + Track ID3023 + + + Track ID3377 + + + Track ID2575 + + + Track ID7469 + + + Track ID3093 + + + Track ID3257 + + + Track ID3025 + + + Track ID7237 + + + Track ID2991 + + + Track ID3353 + + + Track ID3373 + + + Track ID6723 + + + Track ID3027 + + + Track ID2995 + + + Track ID7021 + + + Track ID2985 + + + Track ID3019 + + + Track ID3033 + + + Track ID6859 + + + Track ID3131 + + + Track ID3481 + + + Track ID3303 + + + Track ID3021 + + + Track ID3381 + + + Track ID3383 + + + Track ID3437 + + + Track ID3127 + + + Track ID3275 + + + Track ID3273 + + + Track ID3081 + + + Track ID3031 + + + Track ID3187 + + + Track ID3199 + + + Track ID3401 + + + Track ID4651 + + + Track ID3309 + + + Track ID3265 + + + Track ID3357 + + + Track ID3263 + + + Track ID3255 + + + Track ID3029 + + + Track ID3859 + + + Track ID2989 + + + Track ID18779 + + + Track ID3079 + + + Track ID2725 + + + Track ID3121 + + + Track ID3865 + + + Track ID3259 + + + Track ID3407 + + + Track ID6705 + + + Track ID7173 + + + Track ID3179 + + + Track ID3359 + + + Track ID2993 + + + Track ID3307 + + + Track ID3175 + + + Track ID7045 + + + Track ID6991 + + + Track ID17989 + + + Track ID3129 + + + Track ID4241 + + + Track ID3475 + + + Track ID3633 + + + Track ID3485 + + + Track ID3421 + + + Track ID3405 + + + Track ID3505 + + + Track ID3181 + + + Track ID3391 + + + Track ID3361 + + + Track ID17888 + + + Track ID3217 + + + Track ID3435 + + + Track ID3191 + + + Track ID3343 + + + Track ID3693 + + + Track ID3123 + + + Track ID6953 + + + Track ID3495 + + + Track ID3341 + + + Track ID3189 + + + Track ID3109 + + + Track ID3551 + + + Track ID3305 + + + Track ID3125 + + + Track ID3431 + + + Track ID3773 + + + Track ID3737 + + + Track ID3479 + + + Track ID3071 + + + Track ID3367 + + + Track ID3351 + + + Track ID3723 + + + Track ID3427 + + + Track ID3725 + + + + + NameReplay 2020 + DescriptionRelive your favourite tracks from 2020, all in one playlist. + Playlist ID17161 + Playlist Persistent ID381F3C12D359962B + All Items + Playlist Items + + + Track ID5767 + + + Track ID4287 + + + Track ID4583 + + + Track ID4199 + + + Track ID2995 + + + Track ID4443 + + + Track ID3257 + + + Track ID4499 + + + Track ID4455 + + + Track ID4283 + + + Track ID4651 + + + Track ID7619 + + + Track ID4459 + + + Track ID4269 + + + Track ID5781 + + + Track ID4557 + + + Track ID4655 + + + Track ID4291 + + + Track ID7593 + + + Track ID4541 + + + Track ID4289 + + + Track ID4447 + + + Track ID2569 + + + Track ID4259 + + + Track ID7237 + + + Track ID4273 + + + Track ID4659 + + + Track ID3855 + + + Track ID4449 + + + Track ID7279 + + + Track ID4411 + + + Track ID4531 + + + Track ID4441 + + + Track ID4277 + + + Track ID4661 + + + Track ID7427 + + + Track ID4275 + + + Track ID4285 + + + Track ID18813 + + + Track ID3751 + + + Track ID4271 + + + Track ID4421 + + + Track ID4427 + + + Track ID4423 + + + Track ID7179 + + + Track ID7085 + + + Track ID7005 + + + Track ID4419 + + + Track ID4415 + + + Track ID4417 + + + Track ID4513 + + + Track ID4445 + + + Track ID6861 + + + Track ID4533 + + + Track ID7307 + + + Track ID3381 + + + Track ID4467 + + + Track ID4439 + + + Track ID4457 + + + Track ID4279 + + + Track ID4679 + + + Track ID4429 + + + Track ID4431 + + + Track ID4641 + + + Track ID4453 + + + Track ID2573 + + + Track ID2977 + + + Track ID4589 + + + Track ID7033 + + + Track ID2571 + + + Track ID4381 + + + Track ID4471 + + + Track ID4539 + + + Track ID4451 + + + Track ID4437 + + + Track ID4311 + + + Track ID4383 + + + Track ID4507 + + + Track ID4501 + + + Track ID3039 + + + Track ID4567 + + + Track ID4565 + + + Track ID3335 + + + Track ID4331 + + + Track ID4413 + + + Track ID4509 + + + Track ID4521 + + + Track ID4573 + + + Track ID4569 + + + Track ID4327 + + + Track ID4505 + + + Track ID7469 + + + Track ID3925 + + + Track ID4425 + + + Track ID7021 + + + Track ID3757 + + + + + NameReplay 2021 + DescriptionRelive your favourite tracks from 2021, all in one playlist. + Playlist ID17259 + Playlist Persistent ID7272C2B939B013FF + All Items + Playlist Items + + + Track ID7135 + + + Track ID2995 + + + Track ID3381 + + + Track ID7469 + + + Track ID7237 + + + Track ID4287 + + + Track ID4847 + + + Track ID2569 + + + Track ID4861 + + + Track ID2991 + + + Track ID7021 + + + Track ID2985 + + + Track ID2571 + + + Track ID3037 + + + Track ID2573 + + + Track ID5591 + + + Track ID3751 + + + Track ID7197 + + + Track ID5615 + + + Track ID5645 + + + Track ID5581 + + + Track ID6723 + + + Track ID3633 + + + Track ID5595 + + + Track ID4845 + + + Track ID3039 + + + Track ID5587 + + + Track ID5607 + + + Track ID5467 + + + Track ID5577 + + + Track ID5599 + + + Track ID3377 + + + Track ID5579 + + + Track ID5609 + + + Track ID3023 + + + Track ID5523 + + + Track ID3257 + + + Track ID5603 + + + Track ID5601 + + + Track ID5575 + + + Track ID5589 + + + Track ID5611 + + + Track ID4499 + + + Track ID4853 + + + Track ID5465 + + + Track ID3759 + + + Track ID4759 + + + Track ID4659 + + + Track ID4269 + + + Track ID4849 + + + Track ID3495 + + + Track ID5573 + + + Track ID5593 + + + Track ID5605 + + + Track ID5613 + + + Track ID2575 + + + Track ID4851 + + + Track ID3763 + + + Track ID4639 + + + Track ID4513 + + + Track ID5045 + + + Track ID4521 + + + Track ID4855 + + + Track ID3437 + + + Track ID5527 + + + Track ID5665 + + + Track ID4661 + + + Track ID4289 + + + Track ID4863 + + + Track ID4865 + + + Track ID5567 + + + Track ID5585 + + + Track ID4273 + + + Track ID3383 + + + Track ID4507 + + + Track ID3093 + + + Track ID4867 + + + Track ID5597 + + + Track ID5583 + + + Track ID3773 + + + Track ID4283 + + + Track ID4859 + + + Track ID5533 + + + Track ID3027 + + + Track ID4557 + + + Track ID5215 + + + Track ID7307 + + + Track ID5557 + + + Track ID5123 + + + Track ID5687 + + + Track ID3769 + + + Track ID4187 + + + Track ID5571 + + + Track ID4819 + + + Track ID4823 + + + Track ID4653 + + + Track ID4459 + + + + + NameSEX + DescriptionPlaylist Created with https://www.tunemymusic.com?source=plcreateda that lets you transfer your playlist to Apple from any music platform such as Spotify, YouTube, Deezer etc + Playlist ID17359 + Playlist Persistent IDD53AD7BCB876571E + All Items + Playlist Items + + + Track ID5785 + + + + + NameSpotify sync + DescriptionPlaylist converted by Soundiiz from another music platform ! https://soundiiz.com + Playlist ID17363 + Playlist Persistent ID77BC07E61E5A7D99 + All Items + Playlist Items + + + Track ID5101 + + + Track ID5099 + + + Track ID5103 + + + Track ID5089 + + + Track ID5105 + + + Track ID5095 + + + Track ID5079 + + + Track ID5093 + + + Track ID2485 + + + Track ID4759 + + + Track ID5087 + + + Track ID4825 + + + Track ID5091 + + + Track ID5081 + + + Track ID5107 + + + Track ID5109 + + + Track ID4647 + + + Track ID5111 + + + Track ID5085 + + + Track ID5083 + + + Track ID5097 + + + Track ID2485 + + + Track ID2485 + + + Track ID2485 + + + Track ID2485 + + + Track ID2485 + + + Track ID2485 + + + Track ID4825 + + + + + Namespoty sync 2 + DescriptionPlaylist converted by Soundiiz from another music platform ! https://soundiiz.com + Playlist ID17394 + Playlist Persistent ID7D9FD531421BDF56 + All Items + Playlist Items + + + Track ID5717 + + + Track ID5735 + + + Track ID5741 + + + Track ID5727 + + + Track ID5739 + + + Track ID5743 + + + Track ID5731 + + + Track ID5737 + + + Track ID5719 + + + Track ID5729 + + + Track ID5721 + + + Track ID5733 + + + Track ID5723 + + + Track ID5725 + + + + + Namestupid + Description + Playlist ID17411 + Playlist Persistent IDEE7041BCF4472AE9 + All Items + Playlist Items + + + Track ID5213 + + + Track ID3737 + + + + + NameThe American Dollar - A Memory Stream + Description + Playlist ID17416 + Playlist Persistent ID26A9BCAA15EE76E9 + All Items + Playlist Items + + + Track ID6241 + + + + + Nametmp + DescriptionThis playlist was created by https://www.tunemymusic.com that lets you transfer your playlist to Apple from any music platform such as Spotify, YouTube, Deezer etc. + Playlist ID17420 + Playlist Persistent IDB39B57BC08631835 + All Items + Playlist Items + + + Track ID6611 + + + + + Nametoday + Description + Playlist ID17424 + Playlist Persistent ID83F7C322C52E3F45 + All Items + Playlist Items + + + Track ID4433 + + + + + Nametroubled youth + Description + Playlist ID17428 + Playlist Persistent IDCD0DC1606512AF35 + All Items + Playlist Items + + + Track ID5675 + + + Track ID5591 + + + Track ID5573 + + + Track ID5465 + + + Track ID5463 + + + Track ID5461 + + + Track ID5459 + + + Track ID5609 + + + Track ID4949 + + + Track ID4955 + + + Track ID5201 + + + + + Nametwenty nineteen 1/4 + Description + Playlist ID17442 + Playlist Persistent IDD7B059525070D28E + All Items + Playlist Items + + + Track ID3037 + + + Track ID3023 + + + Track ID2575 + + + Track ID3093 + + + Track ID3297 + + + Track ID3481 + + + Track ID3495 + + + Track ID2981 + + + Track ID2979 + + + Track ID2983 + + + Track ID3091 + + + Track ID3089 + + + Track ID2995 + + + Track ID2985 + + + Track ID3025 + + + Track ID3027 + + + Track ID3033 + + + Track ID2991 + + + Track ID3273 + + + Track ID3257 + + + Track ID3275 + + + Track ID3265 + + + Track ID3255 + + + Track ID3263 + + + Track ID3259 + + + Track ID3437 + + + Track ID3019 + + + Track ID3021 + + + Track ID3485 + + + Track ID3131 + + + Loved + + + NameUntitled Playlist + Description + Playlist ID17475 + Playlist Persistent ID3B33337AE36F3D13 + All Items + Playlist Items + + + Track ID3189 + + + Track ID2775 + + + Track ID5035 + + + + + NameWombo - Thread + Description + Playlist ID17481 + Playlist Persistent ID10549E8F7256C9C3 + All Items + Playlist Items + + + Track ID6761 + + + Track ID6763 + + + Track ID6765 + + + Track ID6767 + + + Track ID6769 + + + Track ID6771 + + + + + NameYour Top Songs 2020 + DescriptionPlaylist Created with https://www.tunemymusic.com?source=plcreateda that lets you transfer your playlist to Apple from any music platform such as Spotify, YouTube, Deezer etc + Playlist ID17490 + Playlist Persistent ID45F8930867C99FD9 + All Items + Playlist Items + + + Track ID3751 + + + Track ID4603 + + + Track ID5783 + + + Track ID5785 + + + Track ID4287 + + + Track ID2727 + + + Track ID4647 + + + Track ID2719 + + + Track ID4279 + + + Track ID5787 + + + Track ID4495 + + + Track ID3759 + + + Track ID5789 + + + Track ID5791 + + + Track ID5771 + + + Track ID5745 + + + Track ID5793 + + + Track ID5087 + + + Track ID5229 + + + Track ID4289 + + + Track ID5795 + + + Track ID5797 + + + Track ID5799 + + + Track ID5801 + + + Track ID5111 + + + Track ID4825 + + + Track ID4273 + + + Track ID4655 + + + Track ID5765 + + + Track ID5729 + + + Track ID5803 + + + Track ID4473 + + + Track ID3967 + + + Track ID5805 + + + Track ID5807 + + + Track ID5809 + + + Track ID5811 + + + Track ID3943 + + + Track ID5813 + + + Track ID2519 + + + Track ID5815 + + + Track ID5767 + + + Track ID4639 + + + Track ID5817 + + + Track ID4283 + + + Track ID5687 + + + Track ID5819 + + + Track ID5821 + + + Track ID5823 + + + Track ID3965 + + + Track ID2735 + + + Track ID4493 + + + Track ID5825 + + + Track ID5827 + + + Track ID5829 + + + Track ID5085 + + + Track ID3307 + + + Track ID5831 + + + Track ID2481 + + + Track ID4499 + + + Track ID4269 + + + Track ID5097 + + + Track ID5833 + + + Track ID5107 + + + Track ID5109 + + + Track ID5835 + + + Track ID2471 + + + Track ID4459 + + + Track ID4531 + + + Track ID5837 + + + Track ID5719 + + + Track ID4843 + + + Track ID5769 + + + Track ID5839 + + + Track ID5841 + + + Track ID5843 + + + Track ID4285 + + + Track ID5737 + + + Track ID5845 + + + Track ID5847 + + + Track ID3771 + + + + + NameНовый плейлист + Description20.10.2018 + Playlist ID17574 + Playlist Persistent IDF5DA729D6DF02598 + All Items + Playlist Items + + + Track ID2665 + + + Track ID2645 + + + Track ID2653 + + + Track ID2669 + + + Track ID2671 + + + Track ID2667 + + + Track ID2663 + + + Track ID2657 + + + Track ID2647 + + + Track ID2649 + + + Track ID2635 + + + Track ID2651 + + + Track ID2637 + + + Loved + + + NameНовый плейлист + Description27.10.2018 + Playlist ID17590 + Playlist Persistent IDA53FF7D958875AF0 + All Items + Playlist Items + + + Track ID2735 + + + Track ID2731 + + + Track ID2719 + + + Track ID2717 + + + Track ID2729 + + + Track ID2739 + + + Track ID2743 + + + Track ID2745 + + + Track ID2767 + + + Track ID2773 + + + Track ID2749 + + + Track ID2761 + + + Track ID2765 + + + Track ID2769 + + + Track ID2747 + + + Track ID2763 + + + Track ID2771 + + + Track ID2741 + + + Track ID2707 + + + Track ID2715 + + + Track ID2691 + + + Track ID2693 + + + Track ID2725 + + + Track ID2683 + + + Track ID2703 + + + Track ID2681 + + + Track ID2697 + + + Track ID2775 + + + + + NameНовый плейлист + Description + Playlist ID17621 + Playlist Persistent IDD6F55508CE0B820F + All Items + Playlist Items + + + Track ID3307 + + + Track ID3309 + + + Track ID3387 + + + Track ID3313 + + + Track ID3301 + + + Track ID3305 + + + Track ID3333 + + + Track ID3311 + + + Track ID3335 + + + Track ID3385 + + + Track ID6763 + + + + + NameНовый плейлист + Description + Playlist ID17635 + Playlist Persistent ID182721522C4F8081 + All Items + Playlist Items + + + Track ID3253 + + + Track ID3243 + + + Track ID3247 + + + Track ID3223 + + + Track ID3239 + + + Track ID3215 + + + Track ID3209 + + + Track ID3199 + + + Track ID3237 + + + Track ID3187 + + + Track ID3217 + + + Track ID3221 + + + Track ID3235 + + + Track ID3175 + + + Track ID3213 + + + Track ID3273 + + + Track ID3245 + + + Track ID3233 + + + Track ID3201 + + + Track ID3207 + + + Track ID3219 + + + Track ID3249 + + + Track ID3191 + + + Track ID3189 + + + Track ID3181 + + + Track ID3179 + + + Track ID3173 + + + Track ID3123 + + + Track ID3129 + + + Track ID3193 + + + Track ID3279 + + + + + + diff --git a/LibraryViewer/library/convert.py b/LibraryViewer/library/convert.py new file mode 100644 index 0000000..6e4485e --- /dev/null +++ b/LibraryViewer/library/convert.py @@ -0,0 +1,96 @@ +import xmltodict +import json + + +def flatten_dict(d): + + out = [] + for song in d: + newSong = {} + + strCount = 0 + intCount = 0 + dateCount = 0 + + def getStr(id): + nonlocal strCount + if id not in song["key"]: + return "undef" + if len(song["string"]) <= strCount: + return "error" + strCount += 1 + return song["string"][strCount - 1] + + def getInt(id): + nonlocal intCount + if id not in song["key"]: + return -1 + if len(song["integer"]) <= intCount: + return -1 + intCount += 1 + return song["integer"][intCount - 1] + + def getDate(id): + nonlocal dateCount + if id not in song["key"]: + return "undef" + if len(song["date"]) <= dateCount: + return "error" + dateCount += 1 + return song["date"][dateCount - 1] + + newSong["Track ID"] = getInt("Track ID") + newSong["Name"] = getStr("Name") + newSong["Artist"] = getStr("Artist") + newSong["Album Artist"] = getStr("Album Artist") + newSong["Composer"] = getStr("Composer") + newSong["Album"] = getStr("Album") + newSong["Genre"] = getStr("Genre") + newSong["Kind"] = getStr("Kind") + newSong["Size"] = getInt("Size") + newSong["Total Time"] = getInt("Total Time") + newSong["Disc Number"] = getInt("Disc Number") + newSong["Disc Count"] = getInt("Disc Count") + newSong["Track Number"] = getInt("Track Number") + newSong["Track Count"] = getInt("Track Count") + newSong["Year"] = getInt("Year") + newSong["Date Modified"] = getDate("Date Modified") + newSong["Date Added"] = getDate("Date Added") + newSong["Bit Rate"] = getInt("Bit Rate") + newSong["Sample Rate"] = getInt("Sample Rate") + newSong["Play Count"] = getInt("Play Count") + newSong["Play Date"] = getInt("Play Date") + newSong["Play Date UTC"] = getDate("Play Date UTC") + newSong["Skip Count"] = getInt("Skip Count") + newSong["Skip Date"] = getDate("Skip Date") + newSong["Release Date"] = getDate("Release Date") + newSong["Album Rating"] = getInt("Album Rating") + newSong["Album Rating Computed"] = "Album Rating Computed" in song["key"] + newSong["Loved"] = "Loved" in song["key"] + newSong["Album Loved"] = "Album Loved" in song["key"] + newSong["Explicit"] = "Explicit" in song["key"] + newSong["Compilation"] = "Compilation" in song["key"] + newSong["Artwork Count"] = getInt("Artwork Count") + newSong["Sort Album"] = getStr("Sort Album") + newSong["Sort Artist"] = getStr("Sort Artist") + newSong["Sort Name"] = getStr("Sort Name") + newSong["Persistent ID"] = getStr("Persistent ID") + newSong["Track Type"] = getStr("Track Type") + + out.append(newSong) + + return out + +with open('Library.xml', 'r', encoding='utf-8') as xml_file: + data_dict = xmltodict.parse(xml_file.read()) + +# Extract the "Tracks" dictionary to be flattened +tracks_dict = data_dict['plist']['dict']['dict'] + +flat_tracks_dict = flatten_dict(tracks_dict["dict"]) + + +json_data = json.dumps(flat_tracks_dict, indent=2) + +with open('output.json', 'w', encoding='utf-8') as json_file: + json_file.write(json_data) diff --git a/LibraryViewer/library/tracks/2437.flac b/LibraryViewer/library/tracks/2437.flac new file mode 100644 index 0000000..1f66c7c Binary files /dev/null and b/LibraryViewer/library/tracks/2437.flac differ diff --git a/LibraryViewer/library/tracks/2439.flac b/LibraryViewer/library/tracks/2439.flac new file mode 100644 index 0000000..1f66c7c Binary files /dev/null and b/LibraryViewer/library/tracks/2439.flac differ diff --git a/LibraryViewer/library/tracks/6477.flac b/LibraryViewer/library/tracks/6477.flac new file mode 100644 index 0000000..1f66c7c Binary files /dev/null and b/LibraryViewer/library/tracks/6477.flac differ diff --git a/LibraryViewer/library/tracks/6479.flac b/LibraryViewer/library/tracks/6479.flac new file mode 100644 index 0000000..1f66c7c Binary files /dev/null and b/LibraryViewer/library/tracks/6479.flac differ diff --git a/LibraryViewer/private/Library.cpp b/LibraryViewer/private/Library.cpp new file mode 100644 index 0000000..d94ea1b --- /dev/null +++ b/LibraryViewer/private/Library.cpp @@ -0,0 +1,100 @@ + +#include "Library.hpp" +#include "LocalConnection.hpp" +#include "WidgetBase.hpp" + +#include "picojson.h" +#include + +using namespace tp; + +#define AS_STR (int1*) trackProperty.second.to_str().c_str() +#define AS_INT std::stoll((int1*) trackProperty.second.to_str().c_str()) +#define AS_BOOL trackProperty.second.evaluate_as_boolean() +#define PROP(name) trackProperty.first == #name + +std::string getHome() { + const char* envVarName = "LIB_VIEW_HOME"; + char* envVarValue = std::getenv(envVarName); + if (envVarValue != nullptr) { + std::string out; + out = (int1*) (std::string(envVarValue) + "/").c_str(); + return out; + } else { + return "library/"; + } +} + +std::string getSongLocalPath(SongId id) { return getHome() + "tracks/" + std::to_string((tp::alni) id); } + +SONG_FORMAT getSongFormat(const std::string& localPath) { + std::filesystem::path wavFormat((localPath + ".wav").c_str()); + std::filesystem::path flacFormat((localPath + ".flac").c_str()); + if (std::filesystem::exists(flacFormat)) return SONG_FORMAT::FLAC; + if (std::filesystem::exists(wavFormat)) return SONG_FORMAT::WAV; + return SONG_FORMAT::NONE; +} + +void Library::checkExisting() { + for (auto track : mTraks) { + auto const path = getSongLocalPath(track->mId); + track->mExists = getSongFormat(path) != SONG_FORMAT::NONE; + } +} + +bool Library::loadJson(const std::string& path) { + LocalConnection libraryFile; + Buffer libraryFileMem; + + if (!libraryFile.connect(LocalConnection::Location(path.c_str()), LocalConnection::Type(true))) return false; + + libraryFileMem.reserve(libraryFile.size()); + libraryFile.readBytes(libraryFileMem.getBuff(), libraryFile.size()); + + std::string json = libraryFileMem.getBuff(); + picojson::value jsonNode; + std::string err = picojson::parse(jsonNode, json); + + if (!err.empty()) { + printf("Given path - %s\n", path.c_str()); + printf("Home for library is - '%s'. Set it in the env as LIB_VIEW_HOME \n", getHome().c_str()); + printf("Error parsing json library file - check your paths and files\n %s \n", err.c_str()); + return false; + } + + auto& traks = jsonNode.get(); + for (auto& trackNode : traks) { + Track newTrack; + + auto& track = trackNode.get(); + for (auto& trackProperty : track) { + if (PROP(Name)) newTrack.mName = AS_STR; + else if (PROP(Artist)) newTrack.mArtist = AS_STR; + else if (PROP(Track ID)) newTrack.mId = AS_INT; + else if (PROP(Album Artist)) newTrack.mAlbumArtist = AS_STR; + else if (PROP(Composer)) newTrack.mComposer = AS_STR; + else if (PROP(Album)) newTrack.mAlbum = AS_STR; + else if (PROP(Genre)) newTrack.mGenre = AS_STR; + else if (PROP(Size)) newTrack.mSize = AS_INT; + else if (PROP(Total Time)) newTrack.mTotalTime = AS_INT; + else if (PROP(Year)) newTrack.mYear = AS_INT; + else if (PROP(Date Modified)) newTrack.mDateModified = AS_STR; + else if (PROP(Date Added)) newTrack.mDateAdded = AS_STR; + else if (PROP(Play Count)) newTrack.mPlayCount = AS_INT; + else if (PROP(Play Date)) newTrack.mPlayDate = AS_STR; + else if (PROP(Play Date UTC)) newTrack.mPlayDateUTC = AS_STR; + else if (PROP(Skip Count)) newTrack.mSkipCount = AS_INT; + else if (PROP(Skip Date)) newTrack.mSkipDate = AS_STR; + else if (PROP(Release Date)) newTrack.mReleaseDate = AS_STR; + else if (PROP(Album Rating)) newTrack.mAlbumRating = AS_INT; + else if (PROP(Album Rating Computed)) newTrack.mAlbumRatingComputed = AS_BOOL; + else if (PROP(Loved)) newTrack.mLoved = AS_BOOL; + else if (PROP(Album Loved)) newTrack.mAlbumLoved = AS_BOOL; + else if (PROP(Explicit)) newTrack.mExplicit = AS_BOOL; + } + + mTraks.append(newTrack); + } + + return true; +} \ No newline at end of file diff --git a/LibraryViewer/private/Player.cpp b/LibraryViewer/private/Player.cpp new file mode 100644 index 0000000..81202bb --- /dev/null +++ b/LibraryViewer/private/Player.cpp @@ -0,0 +1,202 @@ +#include "Player.hpp" +#include "Buffer.hpp" + +#include "portaudio.h" + +class DeviceStream { + friend class Player; + +public: + DeviceStream() { + auto paStatus = Pa_Initialize() ; + mInitializationStatus = paStatus == paNoError; + if (!mInitializationStatus) { + fprintf(stderr, "An error occurred while using the portaudio stream\n"); + fprintf(stderr, "Error number: %d\n", paStatus); + fprintf(stderr, "Error message: %s\n", Pa_GetErrorText(paStatus)); + } + } + + ~DeviceStream() { + if (mInitializationStatus) { + Pa_Terminate(); + } + } + + bool openStream(const tp::halnf* buffer, const tp::ualni* pointerMax, tp::ualni sampleRate) { + if (!mInitializationStatus) return false; + + mPointerMax = pointerMax; + mBuffer = buffer; + + PaStreamParameters outputParameters; + + outputParameters.device = Pa_GetDefaultOutputDevice(); + if (outputParameters.device == paNoDevice) { + return false; + } + + const PaDeviceInfo* pInfo = Pa_GetDeviceInfo(outputParameters.device); + if (pInfo != 0) { + printf("Output device name: '%s'\r", pInfo->name); + } + + outputParameters.channelCount = 2; + outputParameters.sampleFormat = paFloat32; /* 32 bit floating point output */ + outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency; + outputParameters.hostApiSpecificStreamInfo = NULL; + + PaError err = Pa_OpenStream(&mPaStream, NULL, &outputParameters, sampleRate, 44100 * 0.2f, 0, &DeviceStream::paCallback, this); + + if (err != paNoError) { + return false; + } + + err = Pa_SetStreamFinishedCallback(mPaStream, &DeviceStream::paStreamFinished); + + if (err != paNoError) { + Pa_CloseStream(mPaStream); + mPaStream = 0; + return false; + } + + return true; + } + + bool closeStream() { + if (mPaStream == 0) return false; + PaError err = Pa_CloseStream(mPaStream); + + mPaStream = 0; + mBuffer = nullptr; + mPointerMax = 0; + mPointer = 0; + + return (err == paNoError); + } + + bool continueStream() { + if (mPaStream == 0) return false; + PaError err = Pa_StartStream(mPaStream); + return (err == paNoError); + } + + bool freezeStream() { + if (mPaStream == 0) return false; + PaError err = Pa_StopStream(mPaStream); + return (err == paNoError); + } + + tp::ualni getCurrentFrame() const { + return mPointer; + } + + void setCurrentFrame(tp::ualni ptr) { + ptr = tp::clamp(ptr, (tp::ualni) 0, *mPointerMax); + mMutex.lock(); + mPointer = ptr; + mMutex.unlock(); + } + +private: + int paCallbackMethod(const void* inputBuffer, void* outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags) { + if (mPointer + framesPerBuffer >= *mPointerMax) return paContinue; + + float* out = (float*) outputBuffer; + mMutex.lock(); + for (unsigned long i = 0; i < framesPerBuffer; i++) { + *out++ = (mBuffer)[mPointer * 2] * mVolume; + *out++ = (mBuffer)[mPointer * 2 + 1] * mVolume; + mPointer++; + } + mMutex.unlock(); + return paContinue; + } + + void paStreamFinishedMethod() { printf("Stream Completed\n"); } + + static int paCallback(const void* inputBuffer, void* outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void* userData) { + return ((DeviceStream*) userData)->paCallbackMethod(inputBuffer, outputBuffer, framesPerBuffer, timeInfo, statusFlags); + } + + static void paStreamFinished(void* userData) { return ((DeviceStream*) userData)->paStreamFinishedMethod(); } + +private: + bool mInitializationStatus = false; + PaStream* mPaStream = nullptr; + std::mutex mMutex; + + const tp::halnf* mBuffer = nullptr; + const tp::ualni* mPointerMax = nullptr; + + tp::ualni mPointer = 0; + tp::halnf mVolume = 1.f; +}; + +Player::Player() { + mDeviceStream = new DeviceStream(); +} + +Player::~Player() { + delete mDeviceStream; +} + +bool Player::startStreamTrack(SongId id) { + mDeviceStream->closeStream(); + + if (!mMusicStream.openStream(id)) { + connected = 0; + return false; + } + + if (!mDeviceStream->openStream(mMusicStream.getBuffer(), mMusicStream.getProgressLive(), mMusicStream.getRate())) { + connected = 0; + return false; + } + + mMusicStream.continueStream(); + + connected = id; + return true; +} + +SongId Player::getPlayingId() const { + return connected; +} + +void Player::continuePlayback() { + if (!connected) return; + mDeviceStream->continueStream(); +} + +void Player::freezePlayback() { + if (!connected) return; + mDeviceStream->freezeStream(); +} + +tp::halnf Player::getPlaybackProgress() const { + if (!connected) return 0; + return (tp::halnf) mDeviceStream->getCurrentFrame() / (tp::halnf) mMusicStream.getFramesLength(); +} + +tp::halnf Player::getDurationSec() const { return 0; } + +void Player::setPlaybackProgress(tp::halnf val) { + if (!connected) return; + mDeviceStream->setCurrentFrame(val * mMusicStream.getFramesLength()); +} + +void Player::setVolume(tp::halnf vol) { + if (!connected) return; + mDeviceStream->mVolume = vol; +} + +tp::halnf Player::getLoadProgress() const { + if (!connected) return 0; + return (tp::halnf) mMusicStream.getFramesLoaded() / (tp::halnf) mMusicStream.getFramesLength(); +} + +tp::halnf Player::getVolume() { + if (!connected) return 0; + return mDeviceStream->mVolume; +} diff --git a/LibraryViewer/private/Streamer.cpp b/LibraryViewer/private/Streamer.cpp new file mode 100644 index 0000000..2dc0a66 --- /dev/null +++ b/LibraryViewer/private/Streamer.cpp @@ -0,0 +1,127 @@ +#include "Streamer.hpp" + +#ifndef ENV_OS_WINDOWS +typedef u_int8_t uint8_t; +typedef u_int16_t uint16_t; +typedef u_int32_t uint32_t; +#endif + +#define DR_FLAC_IMPLEMENTATION +#include "dr_flac.h" + +#include + +class Context { +public: + Context() = default; + + bool preloadInfo(const std::string& path, MusicStream* owner) { + mOwner = owner; + + pFlac = drflac_open_file((path + ".flac").c_str(), NULL); + + if (pFlac == NULL) { + return false; + } + + if (pFlac->channels != 2) { + drflac_close(pFlac); + return false; + } + + mOwner->mLengthFrames = pFlac->totalPCMFrameCount; + mOwner->mChanels = pFlac->channels; + mOwner->mRate = pFlac->sampleRate; + + mOwner->mBuffer.reserve(mOwner->mLengthFrames * 2); + + return true; + } + + void runThread() { + if (threadRunning) return; + threadRunning = true; + threadObj = std::thread(&Context::threadWorkStatic, this); + } + + void stop() { + if (threadRunning) { + exitThread = true; + threadObj.join(); + threadRunning = false; + exitThread = false; + } + + if (pFlac) drflac_close(pFlac); + pFlac = nullptr; + } + + ~Context() { + stop(); + } + +private: + std::thread threadObj; + bool threadRunning = false; + bool exitThread = false; + + void threadWork() { + int framesRead = 0; + while (!exitThread && (framesRead = drflac_read_pcm_frames_f32(pFlac, mOwner->mRate, mOwner->mBuffer.getBuff() + mOwner->mProgress * 2)) > 0) { + mOwner->mProgress += framesRead; + // drflac_seek_to_pcm_frame(pFlac, mOwner->mProgress); + // tp::sleep(500); + } + } + + static void threadWorkStatic(void* p) { ((Context*) p)->threadWork(); } + +public: + drflac* pFlac = nullptr; + MusicStream* mOwner; +}; + +MusicStream::MusicStream() { + mContext = new Context(); +} + +MusicStream::~MusicStream() { + delete mContext; +} + +bool MusicStream::openStream(SongId id) { + closeStream(); + auto const path = getSongLocalPath(id); + auto format = getSongFormat(path); + if (format != SONG_FORMAT::FLAC) return false; + return mContext->preloadInfo(path, this); +} + +void MusicStream::closeStream() { + mContext->stop(); + mProgress = 0; +} + +tp::halnf* MusicStream::getBuffer() { + return mBuffer.getBuff(); +} + +tp::ualni* MusicStream::getProgressLive() { + return &mProgress; +} + +tp::uhalni MusicStream::getRate() const { + return mRate; +} + +void MusicStream::continueStream() { + mContext->runThread(); +} + +tp::ualni MusicStream::getFramesLength() const { + return mLengthFrames; +} + +tp::ualni MusicStream::getFramesLoaded() const { + return mProgress; +} \ No newline at end of file diff --git a/LibraryViewer/public/GUI.hpp b/LibraryViewer/public/GUI.hpp new file mode 100644 index 0000000..ae899ca --- /dev/null +++ b/LibraryViewer/public/GUI.hpp @@ -0,0 +1,297 @@ +#pragma once + +#include "Library.hpp" +#include "Player.hpp" +#include "Widgets.hpp" + +#include "imgui.h" + +namespace tp { + + template + class TrackWidget : public Widget { + public: + explicit TrackWidget(const Track* track = nullptr) : + mTrack(track) { + this->mArea.w = 70; + col.mColor.setAnimTime(0); + col.mColor.setNoTransition({ 0.15f, 0.15f, 0.15f, 0.f }); + }; + + void proc(const Events& events, const RectF& areaParent, const RectF& area) override { + mSelected = false; + this->mArea = area; + this->mVisible = area.isOverlap(areaParent); + if (!this->mVisible) return; + + if (!mTrack) return; + if (!areaParent.isOverlap(area)) return; + if (area.isInside(events.getPointer())) { + col.set({ 0.15f, 0.15f, 0.15f, 1.f }); + mSelected = events.isReleased(InputID::MOUSE1); + } else { + col.set({ 0.15f, 0.15f, 0.15f, 0.f }); + } + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + if (!mTrack) return; + + canvas.rect(this->mArea, col.get(), 4.f); + + const RectF imageArea = { + this->mArea.x + margin, this->mArea.y + margin, this->mArea.w - margin * 2, this->mArea.w - margin * 2 + }; + + canvas.rect(imageArea, { 0.25f, 0.25f, 0.25f, 1.f }, 4.f); + + const RectF textArea = { this->mArea.x + this->mArea.w + margin, + this->mArea.y + margin, + this->mArea.z - this->mArea.w - margin * 2, + this->mArea.w - margin * 2 }; + + // canvas.rect(textArea, { 0.25f, 0.25f, 0.25f, 1.f }, 4.f); + + const RectF textAreaName = { textArea.x, textArea.y, textArea.z, textArea.w * 0.5f }; + const RectF textAreaAuthor = { textArea.x, textArea.y + textArea.w * 0.5f, textArea.z, textArea.w * 0.5f }; + + canvas.text(mTrack->mName.c_str(), textAreaName, 15.f, Canvas::LC, 4.f, { 0.9f, 0.9f, 0.9f, 1.f }); + canvas.text(mTrack->mArtist.c_str(), textAreaAuthor, 12.f, Canvas::LC, 4.f, { 0.8f, 0.8f, 0.8f, 1.f }); + } + + public: + halnf margin = 5.f; + AnimColor col; + const Track* mTrack; + bool mSelected = false; + }; + + template + class TrackInfoWidget : public Widget { + struct SortType { + std::string text; + bool dec = false; + bool inc = false; + }; + + public: + explicit TrackInfoWidget(const Track* track = nullptr) : + mTrack(track) { + items.append({ "Date Added" }); + items.append({ "Date Last Played" }); + } + + void proc(const Events&, const RectF& areaParent, const RectF& area) override { + this->mArea = area; + this->mVisible = area.isOverlap(areaParent); + if (!this->mVisible) return; + if (!mTrack) return; + // renderUI(); + } + + void draw(Canvas&) override { + if (!this->mVisible) return; + if (!mTrack) return; + // canvas.rect(this->mArea, { 0.13f, 0.13f, 0.13f, 1.f }, 4.f); + renderUI(); + } + + void renderUI() { + ImGui::SetNextWindowPos({ this->mArea.x, this->mArea.y }); + ImGui::SetNextWindowSize({ this->mArea.z, this->mArea.w }); + + ImGui::Begin( + "InfoWindow", + nullptr, + ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBackground | + ImGuiWindowFlags_NoResize + ); + + if (mTrack) { + + ImGui::Text(" Load Status : %s", mLoadStatus ? "Loaded" : "Not Loaded"); + + if (ImGui::Button("Play")) { + if (mPlayer->getPlayingId() != mTrack->mId) { + mLoadStatus = mPlayer->startStreamTrack(mTrack->mId); + } + mPlayer->continuePlayback(); + } + + if (mLoadStatus) { + + ImGui::SameLine(); + if (ImGui::Button("Stop")) { + mPlayer->freezePlayback(); + } + + auto songProgress = mPlayer->getPlaybackProgress(); + auto vol = mPlayer->getVolume(); + ImGui::Text("Load Progress : %f", mPlayer->getLoadProgress()); + if (ImGui::SliderFloat("Progress", &songProgress, 0.f, 1.f)) { + mPlayer->setPlaybackProgress(songProgress); + } + if (ImGui::SliderFloat("Volume", &vol, 0.f, 1.f)) { + mPlayer->setVolume(vol); + } + } + } + + ImGui::Text("Song Info:"); + if (mTrack) { + ImGui::Text("Name : %s", mTrack->mName.c_str()); + ImGui::Text("Author : %s", mTrack->mArtist.c_str()); + ImGui::Text("Love : %s", mTrack->mLoved ? "true" : "false"); + ImGui::Text("Id : %lli", mTrack->mId); + ImGui::Text("Total Time : %lli", mTrack->mTotalTime); + ImGui::Text("Play Count : %lli", mTrack->mPlayCount); + ImGui::Text("Skip Count : %lli", mTrack->mSkipCount); + ImGui::Text("Date Added : %s", mTrack->mDateAdded.c_str()); + ImGui::Text("Album : %s", mTrack->mAlbum.c_str()); + } else { + ImGui::Text("Not Selected"); + } + + ImGui::Separator(); + + if (ImGui::Checkbox("Loved only", &filterLoved)) { + isSongFilterChanged |= true; + } + + if (ImGui::SliderInt("Existing only", &filterExisting, 0, 3)) { + isSongFilterChanged |= true; + } + + isSongFilterChanged |= songFilter.Draw("Song Filter"); + + sortFilter.Draw("Sorting Type"); + + for (int i = 0; i < items.size(); ++i) { + if (!sortFilter.PassFilter(items[i].text.c_str())) continue; + + ImGui::PushID(i); + + if (ImGui::Button("Inc")) { + items[i].inc = true; + } + ImGui::SameLine(); + if (ImGui::Button("Dec")) { + items[i].dec = true; + } + + ImGui::AlignTextToFramePadding(); + ImGui::SameLine(); + ImGui::Text("%s", items[i].text.c_str()); + ImGui::PopID(); + } + + ImGui::End(); + } + + public: + ImGuiTextFilter songFilter{}; + ImGuiTextFilter sortFilter{}; + Buffer items; + const Track* mTrack; + bool filterLoved = false; + Player* mPlayer = nullptr; + bool mLoadStatus = false; + bool isSongFilterChanged = true; + int filterExisting = 0; // all existing no-existing + }; + + template + class LibraryWidget : public Widget { + public: + LibraryWidget(Library* lib, Player* player) { + mLibrary = (lib); + mPlayer = (player); + + updateTracks(); + + mCurrentTrackInfo.mPlayer = mPlayer; + } + + void updateTracks() { + mTracks.clear(); + for (auto track : mLibrary->mTraks) { + mTracks.append(TrackWidget(&track.data())); + } + } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + this->mVisible = this->mArea.isOverlap(areaParent); + if (!this->mVisible) return; + + filter(); + + mSplitView.proc(events, this->mArea, this->mArea); + mSongList.proc(events, this->mArea, mSplitView.getFirst()); + + for (auto track : mSongList.mContents) { + auto trackWidget = (TrackWidget*) track.data(); + if (trackWidget->mSelected) { + mCurrentTrackInfo.mTrack = trackWidget->mTrack; + } + } + + mCurrentTrackInfo.proc(events, this->mArea, mSplitView.getSecond()); + + // mCurrentTrack.proc(events, this->mArea, mSplitView.getFirst()); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + canvas.rect(this->mArea, { 0.1f, 0.1f, 0.1f, 1.f }); + + mSplitView.draw(canvas); + mSongList.draw(canvas); + mCurrentTrackInfo.draw(canvas); + } + + void filter() { + if (!mCurrentTrackInfo.isSongFilterChanged) return; + + mSongList.mContents.clear(); + + for (auto track : mTracks) { + if (!mCurrentTrackInfo.songFilter.PassFilter(track->mTrack->mName.c_str()) && + !mCurrentTrackInfo.songFilter.PassFilter(track->mTrack->mArtist.c_str())) { + continue; + } + + if (mCurrentTrackInfo.filterLoved && !track->mTrack->mLoved) { + continue; + } + + switch (mCurrentTrackInfo.filterExisting) { + case 1: + if (!track->mTrack->mExists) continue; + break; + + case 2: + if (track->mTrack->mExists) continue; + break; + } + + mSongList.mContents.append(&track.data()); + } + + mCurrentTrackInfo.isSongFilterChanged = false; + } + + private: + Library* mLibrary = nullptr; + Player* mPlayer = nullptr; + + Buffer> mTracks; + + SplitView mSplitView; + ScrollableWindow mSongList; + TrackInfoWidget mCurrentTrackInfo; + TrackWidget mCurrentTrack; + }; +} \ No newline at end of file diff --git a/LibraryViewer/public/Library.hpp b/LibraryViewer/public/Library.hpp new file mode 100644 index 0000000..7b34d42 --- /dev/null +++ b/LibraryViewer/public/Library.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "Window.hpp" + +typedef tp::ualni SongId; +enum class SONG_FORMAT { WAV, FLAC, NONE }; + +std::string getHome(); +std::string getSongLocalPath(SongId id); +SONG_FORMAT getSongFormat(const std::string& path); + +class Track { +public: + Track() = default; + +public: + SongId mId = 0; + std::string mName = "undef"; + std::string mArtist = "undef"; + std::string mAlbumArtist = "undef"; + std::string mComposer = "undef"; + std::string mAlbum = "undef"; + std::string mGenre = "undef"; + tp::ualni mSize = 0; + tp::ualni mTotalTime = 0; + tp::ualni mYear = 0; + std::string mDateModified = "undef"; + std::string mDateAdded = "undef"; + tp::ualni mPlayCount = 0; + std::string mPlayDate = "undef"; + std::string mPlayDateUTC = "undef"; + tp::ualni mSkipCount = 0; + std::string mSkipDate = "undef"; + std::string mReleaseDate = "undef"; + tp::ualni mAlbumRating = 0; + bool mAlbumRatingComputed = false; + bool mLoved = false; + bool mAlbumLoved = false; + bool mExplicit = false; + bool mExists = false; +}; + +class Library { +public: + Library() = default; + +public: + bool loadJson(const std::string& path); + void checkExisting(); + +public: + tp::Buffer mTraks; +}; \ No newline at end of file diff --git a/LibraryViewer/public/Player.hpp b/LibraryViewer/public/Player.hpp new file mode 100644 index 0000000..526e9d3 --- /dev/null +++ b/LibraryViewer/public/Player.hpp @@ -0,0 +1,32 @@ +#pragma once + +#include "Library.hpp" +#include "Streamer.hpp" + +class DeviceStream; + +class Player { +public: + Player(); + ~Player(); + + bool startStreamTrack(SongId id); + SongId getPlayingId() const; + void continuePlayback(); + void freezePlayback(); + + tp::halnf getDurationSec() const; + + void setVolume(tp::halnf volume); + tp::halnf getVolume(); + + tp::halnf getPlaybackProgress() const; + void setPlaybackProgress(tp::halnf newProgress); + + tp::halnf getLoadProgress() const; + +private: + SongId connected = 0; + MusicStream mMusicStream; + DeviceStream* mDeviceStream; +}; \ No newline at end of file diff --git a/LibraryViewer/public/Streamer.hpp b/LibraryViewer/public/Streamer.hpp new file mode 100644 index 0000000..6471261 --- /dev/null +++ b/LibraryViewer/public/Streamer.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "Library.hpp" + +class Context; + +class MusicStream { + friend Context; + +public: + MusicStream(); + ~MusicStream(); + + bool openStream(SongId id); + void closeStream(); + + tp::halnf* getBuffer(); + tp::ualni* getProgressLive(); + tp::uhalni getRate() const; + + void continueStream(); + tp::ualni getFramesLength() const; + tp::ualni getFramesLoaded() const; + +public: + class Context* mContext = nullptr; + // tp::Mutex mMutex; + + tp::ualni mLengthFrames = 0; + tp::ualni mChanels = 0; + tp::ualni mRate = 0; + tp::ualni mProgress; + tp::Buffer mBuffer; +}; \ No newline at end of file diff --git a/Math/CMakeLists.txt b/Math/CMakeLists.txt index abe8459..919e11c 100644 --- a/Math/CMakeLists.txt +++ b/Math/CMakeLists.txt @@ -1,8 +1,3 @@ - -cmake_minimum_required(VERSION 3.2) - -set(CMAKE_CXX_STANDARD 23) - project(Math) ### ---------------------- Static Library --------------------- ### @@ -10,13 +5,10 @@ file(GLOB SOURCES "./private/*.cpp") file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) -target_link_libraries(${PROJECT_NAME} PUBLIC Utils) +target_link_libraries(${PROJECT_NAME} PUBLIC Containers) ### -------------------------- Tests -------------------------- ### -enable_testing() file(GLOB TEST_SOURCES "./tests/*.cpp") -add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) -target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) -add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) - -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file +add_executable(Test${PROJECT_NAME} ${TEST_SOURCES}) +target_link_libraries(Test${PROJECT_NAME} ${PROJECT_NAME} UnitTest++) +add_test(NAME Test${PROJECT_NAME} COMMAND Test${PROJECT_NAME}) diff --git a/Math/private/Camera.cpp b/Math/private/Camera.cpp index d024aab..f1cc43e 100644 --- a/Math/private/Camera.cpp +++ b/Math/private/Camera.cpp @@ -2,19 +2,17 @@ using namespace tp; -Camera::Camera() { - lookAtPoint({ 0, 0, 0 }, { 2, 0, 0 }, { 0, 0, 1 }); -} +Camera::Camera() { lookAtPoint({ 0, 0, 0 }, { 2, 0, 0 }, { 0, 0, 1 }); } -Vec3F Camera::getTarget() const { return mTarget; } +const Vec3F& Camera::getTarget() const { return mTarget; } void Camera::offset_target(halnf val) { mTarget += (mPos - mTarget).normalize() * val; } Vec3F Camera::getForward() const { return (mTarget - mPos).normalize(); } -Vec3F Camera::getUp() const { return mUp; } +const Vec3F& Camera::getUp() const { return mUp; } -Vec3F& Camera::getPos() { return mPos; } +const Vec3F& Camera::getPos() const { return mPos; } halnf Camera::getFar() const { return mFar; } @@ -26,13 +24,13 @@ void Camera::setRatio(halnf in) { mRatio = in; } void Camera::setFOV(halnf in) { mFOV = in; } +void Camera::setFar(halnf in) { mFar = in; } + halnf Camera::getFOV() const { return mFOV; } -Mat4F Camera::calculateTransformationMatrix() { - return calculateProjectionMatrix() * calculateViewMatrix(); -} +Mat4F Camera::calculateTransformationMatrix() const { return calculateProjectionMatrix() * calculateViewMatrix(); } -Mat4F Camera::calculateViewMatrix() { +Mat4F Camera::calculateViewMatrix() const { const Vec3F& F = (mPos - mTarget).unitV(); const Vec3F& S = mUp * F; const Vec3F& U = F * S; @@ -67,7 +65,7 @@ Vec3F Camera::project(Vec2F normalized) { halnf w = halnf((mTarget - mPos).length()); Vec4 world_pos4(normalized.x * w, normalized.y * w, z, w); - return inv * world_pos4; + return Vec3F(inv * world_pos4); } Vec2F Camera::project(const Vec3F& world) { @@ -85,7 +83,9 @@ Vec2F Camera::project(const tp::Vec3F& world, const tp::Mat4F& viewMat, const tp } void Camera::lookAtPoint(const Vec3F& aTarget, const Vec3F& aPos, Vec3F aUp) { - if (aTarget == aPos) return; + if (aTarget == aPos) { + return; + } mPos = aPos; mTarget = aTarget; Vec3F f = (mPos - mTarget).normalize(); @@ -129,4 +129,4 @@ void Camera::rotate(halnf angleX, halnf angleY) { mPos += mTarget; lookAtPoint(mTarget, mPos, mUp); -} \ No newline at end of file +} diff --git a/Math/private/Color.cpp b/Math/private/Color.cpp index 22741e3..de16799 100644 --- a/Math/private/Color.cpp +++ b/Math/private/Color.cpp @@ -1,169 +1,169 @@ - -#include "Color.hpp" - -using namespace tp; - -RGB::RGB() { r = g = b = 1.f; } -RGB::RGB(flt4 pr, flt4 pg, flt4 pb) { set(pr, pg, pb); } -RGB::RGB(flt4 val) { set(val, val, val); } - -void RGB::set(flt4 pr, flt4 pg, flt4 pb) { - r = pr; - b = pb; - g = pg; -} - -RGB::operator HSV() const { - - HSV out; - alnf min, max, delta; - - min = r < g ? r : g; - min = min < b ? min : b; - max = r > g ? r : g; - max = max > b ? max : b; - - out.v = (halnf) max; - delta = max - min; - - if (delta < 0.00001) { - out.s = 0; - // undefined, maybe nan? - out.h = 0; - return out; - } - if (max > 0.f) { - // NOTE: if Max is == 0, this divide would cause a crash - out.s = (halnf) (delta / max); - - } else { - // if max is 0, then r = g = b = 0 - // s = 0, h is undefined - out.s = 0.f; - out.h = 0.f; - return out; - } - if (r >= max) { - // between yellow & magenta - out.h = (halnf) ((g - b) / delta); - } else { - if (g >= max) { - // between cyan & yellow - out.h = (halnf) (2.0 + (b - r) / delta); - } else { - // between magenta & cyan - out.h = (halnf) (4.0 + (r - g) / delta); - } - } - - out.h *= 60.f; - - if (out.h < 0.0) { - out.h += 360.f; - } - - out.h = (halnf) (out.h / 360.f * (PI2)); - - return out; -} - -HSV::HSV() { h = s = v = 0.f; } - -HSV::HSV(flt4 ph, flt4 ps, flt4 pv) { set(ph, ps, pv); } - -void HSV::set(flt4 ph, flt4 ps, flt4 pv) { - h = ph; - s = ps; - v = pv; -} - -HSV::operator RGB() const { - alnf hh, p, q, t, ff; - alni i; - RGB out; - - if (s <= 0.0) { // < is bogus, just shuts up warnings - out.r = v; - out.g = v; - out.b = v; - return out; - } - - hh = h / (PI2) * 360; - - if (hh >= 360.0) { - hh = 0.0; - } - - hh /= 60.0; - i = (long) hh; - ff = hh - i; - p = v * (1.0 - s); - q = v * (1.0 - (s * ff)); - t = v * (1.0 - (s * (1.0 - ff))); - - switch (i) { - case 0: - out.r = (halnf) v; - out.g = (halnf) t; - out.b = (halnf) p; - break; - case 1: - out.r = (halnf) q; - out.g = (halnf) v; - out.b = (halnf) p; - break; - case 2: - out.r = (halnf) p; - out.g = (halnf) v; - out.b = (halnf) t; - break; - - case 3: - out.r = (halnf) p; - out.g = (halnf) q; - out.b = (halnf) v; - break; - case 4: - out.r = (halnf) t; - out.g = (halnf) p; - out.b = (halnf) v; - break; - case 5: - default: - out.r = (halnf) v; - out.g = (halnf) p; - out.b = (halnf) q; - break; - } - return out; -} - -/* -struct rgbab { - - uint4 RGBA; - - rgbab() { RGBA = 0xFFFFFFFF; } - rgbab(uint4 color) { RGBA = color; } - rgbab(uint1 r, uint1 b, uint1 g, uint1 a) { set(r, b, g, a); } - rgbab(const rgbab& in) { RGBA = in.RGBA; } - - void set(uint4 color) { RGBA = color; } - void set(uint1 r, uint1 b, uint1 g, uint1 a) { - RGBA = (uint1)(a); - RGBA <<= 8; RGBA |= (uint1)(r); - RGBA <<= 8; RGBA |= (uint1)(g); - RGBA <<= 8; RGBA |= (uint1)(b); - } - - operator rgbaf() { - rgbaf out; - out.r = uint1((RGBA & 0x00FF0000) >> 16) / 255.f; - out.g = uint1((RGBA & 0x0000FF00) >> 8) / 255.f; - out.b = uint1(RGBA & 0x000000FF) / 255.f; - out.a = uint1((RGBA & 0xFF000000) >> 24) / 255.f; - return out; - } -}; + +#include "Color.hpp" + +using namespace tp; + +RGB::RGB() { r = g = b = 1.f; } +RGB::RGB(flt4 pr, flt4 pg, flt4 pb) { set(pr, pg, pb); } +RGB::RGB(flt4 val) { set(val, val, val); } + +void RGB::set(flt4 pr, flt4 pg, flt4 pb) { + r = pr; + b = pb; + g = pg; +} + +RGB::operator HSV() const { + + HSV out; + alnf min, max, delta; + + min = r < g ? r : g; + min = min < b ? min : b; + max = r > g ? r : g; + max = max > b ? max : b; + + out.v = (halnf) max; + delta = max - min; + + if (delta < 0.00001) { + out.s = 0; + // undefined, maybe nan? + out.h = 0; + return out; + } + if (max > 0.f) { + // NOTE: if Max is == 0, this divide would cause a crash + out.s = (halnf) (delta / max); + + } else { + // if max is 0, then r = g = b = 0 + // s = 0, h is undefined + out.s = 0.f; + out.h = 0.f; + return out; + } + if (r >= max) { + // between yellow & magenta + out.h = (halnf) ((g - b) / delta); + } else { + if (g >= max) { + // between cyan & yellow + out.h = (halnf) (2.0 + (b - r) / delta); + } else { + // between magenta & cyan + out.h = (halnf) (4.0 + (r - g) / delta); + } + } + + out.h *= 60.f; + + if (out.h < 0.0) { + out.h += 360.f; + } + + out.h = (halnf) (out.h / 360.f * (PI2)); + + return out; +} + +HSV::HSV() { h = s = v = 0.f; } + +HSV::HSV(flt4 ph, flt4 ps, flt4 pv) { set(ph, ps, pv); } + +void HSV::set(flt4 ph, flt4 ps, flt4 pv) { + h = ph; + s = ps; + v = pv; +} + +HSV::operator RGB() const { + alnf hh, p, q, t, ff; + alni i; + RGB out; + + if (s <= 0.0) { // < is bogus, just shuts up warnings + out.r = v; + out.g = v; + out.b = v; + return out; + } + + hh = h / (PI2) *360; + + if (hh >= 360.0) { + hh = 0.0; + } + + hh /= 60.0; + i = (long) hh; + ff = hh - i; + p = v * (1.0 - s); + q = v * (1.0 - (s * ff)); + t = v * (1.0 - (s * (1.0 - ff))); + + switch (i) { + case 0: + out.r = (halnf) v; + out.g = (halnf) t; + out.b = (halnf) p; + break; + case 1: + out.r = (halnf) q; + out.g = (halnf) v; + out.b = (halnf) p; + break; + case 2: + out.r = (halnf) p; + out.g = (halnf) v; + out.b = (halnf) t; + break; + + case 3: + out.r = (halnf) p; + out.g = (halnf) q; + out.b = (halnf) v; + break; + case 4: + out.r = (halnf) t; + out.g = (halnf) p; + out.b = (halnf) v; + break; + case 5: + default: + out.r = (halnf) v; + out.g = (halnf) p; + out.b = (halnf) q; + break; + } + return out; +} + +/* +struct rgbab { + + uint4 RGBA; + + rgbab() { RGBA = 0xFFFFFFFF; } + rgbab(uint4 color) { RGBA = color; } + rgbab(uint1 r, uint1 b, uint1 g, uint1 a) { set(r, b, g, a); } + rgbab(const rgbab& in) { RGBA = in.RGBA; } + + void set(uint4 color) { RGBA = color; } + void set(uint1 r, uint1 b, uint1 g, uint1 a) { + RGBA = (uint1)(a); + RGBA <<= 8; RGBA |= (uint1)(r); + RGBA <<= 8; RGBA |= (uint1)(g); + RGBA <<= 8; RGBA |= (uint1)(b); + } + + operator rgbaf() { + rgbaf out; + out.r = uint1((RGBA & 0x00FF0000) >> 16) / 255.f; + out.g = uint1((RGBA & 0x0000FF00) >> 8) / 255.f; + out.b = uint1(RGBA & 0x000000FF) / 255.f; + out.a = uint1((RGBA & 0xFF000000) >> 24) / 255.f; + return out; + } +}; */ \ No newline at end of file diff --git a/Math/private/MathCommon.cpp b/Math/private/MathCommon.cpp deleted file mode 100644 index 4ee0ef7..0000000 --- a/Math/private/MathCommon.cpp +++ /dev/null @@ -1,43 +0,0 @@ - -#include "MathCommon.hpp" - -#include "ContainersCommon.hpp" - -static tp::ModuleManifest* sModuleDependencies[] = { - &tp::gModuleContainers, - nullptr -}; - -tp::ModuleManifest tp::gModuleMath = ModuleManifest("Math", nullptr, nullptr, sModuleDependencies); - -tp::alnf std_sin(tp::alnf radians); -tp::alnf std_tan(tp::alnf radians); -tp::alnf std_cos(tp::alnf radians); -tp::alnf std_acos(tp::alnf val); -tp::alnf std_sqrt(tp::alnf val); -tp::alnf std_rad(tp::alnf val); -tp::alnf std_deg(tp::alnf val); -tp::alnf std_atan2(tp::alnf X, tp::alnf Y); -tp::alnf std_atan(tp::alnf val); - -tp::alnf tp::sin(const tp::alnf radians) { return std_sin((halnf) radians); } -tp::alnf tp::tan(const tp::alnf radians) { return std_tan((halnf) radians); } -tp::alnf tp::cos(const tp::alnf radians) { return std_cos((halnf) radians); } -tp::alnf tp::acos(const tp::alnf val) { return std_acos((halnf) val); } -tp::alnf tp::sqrt(const tp::alnf val) { return std_sqrt((halnf) val); } -tp::alnf tp::rad(const tp::alnf val) { return val * (PI / 180.f); } -tp::alnf tp::deg(const tp::alnf val) { return val * (180.f / PI); } -tp::alnf tp::atan2(const tp::alnf X, const tp::alnf Y) { return std_atan2((halnf) X, (halnf) Y); } -tp::alnf tp::atan(const tp::alnf val) { return std_atan((halnf) val); } - -#include - -tp::alnf std_sin(const tp::alnf radians) { return sinf((tp::halnf)radians); } -tp::alnf std_tan(const tp::alnf radians) { return tanf((tp::halnf)radians); } -tp::alnf std_cos(const tp::alnf radians) { return cosf((tp::halnf)radians); } -tp::alnf std_acos(const tp::alnf val) { return acos((tp::halnf)val); } -tp::alnf std_sqrt(const tp::alnf val) { return sqrt((tp::halnf)val); } -tp::alnf std_rad(const tp::alnf val) { return val * (PI / 180.f); } -tp::alnf std_deg(const tp::alnf val) { return val * (180.f / PI); } -tp::alnf std_atan2(const tp::alnf X, const tp::alnf Y) { return atan2((tp::halnf)X, (tp::halnf)Y); } -tp::alnf std_atan(const tp::alnf val) { return atan((tp::halnf)val); } \ No newline at end of file diff --git a/Math/private/Ray.cpp b/Math/private/Ray.cpp index d9f2cbd..bce97ce 100644 --- a/Math/private/Ray.cpp +++ b/Math/private/Ray.cpp @@ -1,9 +1,9 @@ - -#include "Ray.hpp" - -using namespace tp; - -Ray::Ray(const Vec3F& aDir, const Vec3F& aPos) { - this->dir = aDir.unitV(); - this->pos = aPos; + +#include "Ray.hpp" + +using namespace tp; + +Ray::Ray(const Vec3F& aDir, const Vec3F& aPos) { + this->dir = aDir.unitV(); + this->pos = aPos; } \ No newline at end of file diff --git a/Math/private/Topology.cpp b/Math/private/Topology.cpp index e8c4c53..7ce89df 100644 --- a/Math/private/Topology.cpp +++ b/Math/private/Topology.cpp @@ -1,105 +1,108 @@ - -#include "Topology.hpp" - -void* operator new(std::size_t, void* in) { return in; } - -using namespace tp; - -Vec3F TrigCache::gHitPos; - -TrigCache::TrigCache() : mP1(0), mP2(0), mP3(0) {} - -TrigCache::TrigCache(ualni v1, ualni v2, ualni v3) : mP1(v1), mP2(v2), mP3(v3) {} - -TrigCache::TrigCache(const TrigCache& in) { - mP1 = in.mP1; - mP2 = in.mP2; - mP3 = in.mP3; - - mEdgeP1P2 = in.mEdgeP1P2; - mEdgeP1P3 = in.mEdgeP1P3; - - mOrigin = in.mOrigin; - mNormal = in.mNormal; -} - -void TrigCache::updateCache(const Buffer& points) { - mOrigin = points[mP1]; - mEdgeP1P2 = points[mP2] - points[mP1]; - mEdgeP1P3 = points[mP3] - points[mP1]; - mNormal = (points[mP2] - points[mP1]).cross(points[mP3] - points[mP1]).unitV(); -} - -bool TrigCache::castRay(const Ray& ray) const { - static Vec3F h, s, q; - static halnf a, f, u, v; - static halnf t; - - h = ray.dir.cross(mEdgeP1P3); - a = mEdgeP1P2.dot(h); - - if (a > -EPSILON && a < EPSILON) { - return false; - } - - f = 1.f / a; - s = ray.pos - mOrigin; - u = f * s.dot(h); - - if (u < 0.0 || u > 1.0) { - return false; - } - - q = s.cross(mEdgeP1P2); - v = f * ray.dir.dot(q); - - if (v < 0.f || u + v > 1.f) { - return false; - } - - t = f * mEdgeP1P3.dot(q); - if (t > EPSILON) { - gHitPos = ray.pos + ray.dir * t; - return true; - } else { - return false; - } -} - -const Vec3F& TrigCache::getHitPos() { return gHitPos; } - -const Vec3F& TrigCache::getNormal() const { return mNormal; } - -void Topology::addTrig(const Vec3F& v1, const Vec3F& v2, const Vec3F& v3) { - auto trigIdx = mPoints.size(); - - Buffer newPoints(3); - newPoints[0] = v1; - newPoints[1] = v2; - newPoints[2] = v3; - mPoints.append(newPoints); - - transformPoint(newPoints[0]); - transformPoint(newPoints[1]); - transformPoint(newPoints[2]); - mPointsTransformed.append(newPoints); - - TrigCache newTrig(trigIdx, trigIdx + 1, trigIdx + 2); - newTrig.updateCache(mPointsTransformed); - mTrigCaches.append(newTrig); -} - -void Topology::transformPoint(Vec3F& vert) { - mBasis.transform(vert); - vert += mOrigin; -} - -void Topology::updateTransformed() { - mPointsTransformed = mPoints; - for (auto idx : Range(mPointsTransformed.size())) { - transformPoint(mPointsTransformed[idx]); - } - for (auto idx : Range(mTrigCaches.size())) { - mTrigCaches[idx].updateCache(mPointsTransformed); - } -} \ No newline at end of file + +#include "Topology.hpp" + +using namespace tp; + +Vec3F TrigCache::gHitPos; + +TrigCache::TrigCache() : + mP1(0), + mP2(0), + mP3(0) {} + +TrigCache::TrigCache(ualni v1, ualni v2, ualni v3) : + mP1(v1), + mP2(v2), + mP3(v3) {} + +TrigCache::TrigCache(const TrigCache& in) { + mP1 = in.mP1; + mP2 = in.mP2; + mP3 = in.mP3; + + mEdgeP1P2 = in.mEdgeP1P2; + mEdgeP1P3 = in.mEdgeP1P3; + + mOrigin = in.mOrigin; + mNormal = in.mNormal; +} + +void TrigCache::updateCache(const Buffer& points) { + mOrigin = points[mP1]; + mEdgeP1P2 = points[mP2] - points[mP1]; + mEdgeP1P3 = points[mP3] - points[mP1]; + mNormal = (points[mP2] - points[mP1]).cross(points[mP3] - points[mP1]).unitV(); +} + +bool TrigCache::castRay(const Ray& ray) const { + static Vec3F h, s, q; + static halnf a, f, u, v; + static halnf t; + + if (ray.dir.dot(mNormal) > 0) { + return false; + } + + h = ray.dir.cross(mEdgeP1P3); + a = mEdgeP1P2.dot(h); + + if (a > -EPSILON && a < EPSILON) { + return false; + } + + f = 1.f / a; + s = ray.pos - mOrigin; + u = f * s.dot(h); + + if (u < 0.0 || u > 1.0) { + return false; + } + + q = s.cross(mEdgeP1P2); + v = f * ray.dir.dot(q); + + if (v < 0.f || u + v > 1.f) { + return false; + } + + t = f * mEdgeP1P3.dot(q); + if (t > EPSILON) { + gHitPos = ray.pos + ray.dir * t; + return true; + } else { + return false; + } +} + +const Vec3F& TrigCache::getHitPos() { return gHitPos; } + +const Vec3F& TrigCache::getNormal() const { return mNormal; } + +void TopologyCache::updateCache() { + TransformedNormals.clear(); + TransformedPoints.clear(); + TrigCaches.clear(); + + if (!Source) { + return; + } + + TransformedPoints.reserve(Source->Points.size()); + for (auto idx : Range(TransformedPoints.size())) { + TransformedPoints[idx] = Source->Basis.transform(Source->Points[idx]); + TransformedPoints[idx] += Source->Origin; + } + + TransformedNormals.reserve(Source->Normals.size()); + for (auto idx : Range(TransformedNormals.size())) { + TransformedNormals[idx] = Source->Basis.transform(Source->Normals[idx]); + } + + TrigCaches.reserve(Source->Indexes.size()); + for (auto idx : Range(TrigCaches.size())) { + TrigCaches[idx].mP1 = Source->Indexes[idx].x; + TrigCaches[idx].mP2 = Source->Indexes[idx].y; + TrigCaches[idx].mP3 = Source->Indexes[idx].z; + TrigCaches[idx].updateCache(TransformedPoints); + } +} diff --git a/Math/private/Trig.cpp b/Math/private/Trig.cpp index b4212da..4ba274d 100644 --- a/Math/private/Trig.cpp +++ b/Math/private/Trig.cpp @@ -1,72 +1,71 @@ - -#include "Trig.hpp" - -#include "Ray.hpp" - -using namespace tp; - -Trig::Trig() { - MODULE_SANITY_CHECK(gModuleMath) - p1.assign(0.f, 0.f, 0.f); - p2.assign(0.f, 0.f, 0.f); - p3.assign(0.f, 0.f, 0.f); -} - -Trig::Trig(const Vec3F& v0, const Vec3F& v1, const Vec3F& v2) { - p1 = v0; - p2 = v1; - p3 = v2; -} - -void Trig::assign(const Vec3F& v0, const Vec3F& v1, const Vec3F& v2) { - p1 = v0; - p2 = v1; - p3 = v2; -} - -Trig::~Trig() = default; - -void Trig::normal(Vec3F& dir) const { - dir = (p2 - p1).cross(p3 - p1); - dir.normalize(); -} - -Vec3F edge1, edge2, h, s, q; -halnf a, f, u, v; -halnf t; - -bool Trig::rayHit(class Ray& ray, Vec3F& HitPos) const { - - edge1 = p2 - p1; - edge2 = p3 - p1; - - h = ray.dir.cross(edge2); - a = edge1.dot(h); - - if (a > -EPSILON && a < EPSILON) { - return false; - } - - f = 1.f / a; - s = ray.pos - p1; - u = f * s.dot(h); - - if (u < 0.0 || u > 1.0) { - return false; - } - - q = s.cross(edge1); - v = f * ray.dir.dot(q); - - if (v < 0.f || u + v > 1.f) { - return false; - } - - t = f * edge2.dot(q); - if (t > EPSILON) { - HitPos = ray.pos + ray.dir * t; - return true; - } else { - return false; - } -} + +#include "Trig.hpp" + +#include "Ray.hpp" + +using namespace tp; + +Trig::Trig() { + p1.assign(0.f, 0.f, 0.f); + p2.assign(0.f, 0.f, 0.f); + p3.assign(0.f, 0.f, 0.f); +} + +Trig::Trig(const Vec3F& v0, const Vec3F& v1, const Vec3F& v2) { + p1 = v0; + p2 = v1; + p3 = v2; +} + +void Trig::assign(const Vec3F& v0, const Vec3F& v1, const Vec3F& v2) { + p1 = v0; + p2 = v1; + p3 = v2; +} + +Trig::~Trig() = default; + +void Trig::normal(Vec3F& dir) const { + dir = (p2 - p1).cross(p3 - p1); + dir.normalize(); +} + +Vec3F edge1, edge2, h, s, q; +halnf a, f, u, v; +halnf t; + +bool Trig::rayHit(class Ray& ray, Vec3F& HitPos) const { + + edge1 = p2 - p1; + edge2 = p3 - p1; + + h = ray.dir.cross(edge2); + a = edge1.dot(h); + + if (a > -EPSILON && a < EPSILON) { + return false; + } + + f = 1.f / a; + s = ray.pos - p1; + u = f * s.dot(h); + + if (u < 0.0 || u > 1.0) { + return false; + } + + q = s.cross(edge1); + v = f * ray.dir.dot(q); + + if (v < 0.f || u + v > 1.f) { + return false; + } + + t = f * edge2.dot(q); + if (t > EPSILON) { + HitPos = ray.pos + ray.dir * t; + return true; + } else { + return false; + } +} diff --git a/Math/public/Camera.hpp b/Math/public/Camera.hpp index 01123af..11f4b73 100644 --- a/Math/public/Camera.hpp +++ b/Math/public/Camera.hpp @@ -17,11 +17,12 @@ namespace tp { void setRatio(halnf ratio); void setFOV(halnf fov); + void setFar(halnf far); - [[nodiscard]] Vec3F& getPos(); - [[nodiscard]] Vec3F getTarget() const; + [[nodiscard]] const Vec3F& getPos() const; + [[nodiscard]] const Vec3F& getTarget() const; [[nodiscard]] Vec3F getForward() const; - [[nodiscard]] Vec3F getUp() const; + [[nodiscard]] const Vec3F& getUp() const; [[nodiscard]] halnf getRatio() const; [[nodiscard]] halnf getFOV() const; [[nodiscard]] halnf getFar() const; @@ -35,12 +36,11 @@ namespace tp { void offset_target(halnf val); public: - [[nodiscard]] Mat4F calculateTransformationMatrix(); + [[nodiscard]] Mat4F calculateTransformationMatrix() const; [[nodiscard]] Mat calculateProjectionMatrix() const; - [[nodiscard]] Mat calculateViewMatrix(); + [[nodiscard]] Mat calculateViewMatrix() const; [[nodiscard]] Vec3F project(Vec2F normalized); [[nodiscard]] Vec2F project(const Vec3F& world); [[nodiscard]] static Vec2F project(const tp::Vec3F& world, const tp::Mat4F& viewMat, const tp::Mat4F& projMat); - }; -} \ No newline at end of file +} diff --git a/Math/public/Color.hpp b/Math/public/Color.hpp index 3387fb7..f7d46cc 100644 --- a/Math/public/Color.hpp +++ b/Math/public/Color.hpp @@ -1,84 +1,100 @@ -#pragma once - -#include "Vec.hpp" - -namespace tp { - - class RGB; - class HSV; - - class RGB { - public: - RGB(); - RGB(flt4 pr, flt4 pg, flt4 pb); - RGB(flt4 val); - - public: - void set(flt4 pr, flt4 pg, flt4 pb); - operator HSV() const; - - public: - halnf r, g, b; - }; - - class HSV { - public: - HSV(); - HSV(flt4 ph, flt4 ps, flt4 pv); - - public: - void set(flt4 ph, flt4 ps, flt4 pv); - operator RGB() const; - - public: - halnf h, s, v; - }; - - class RGBA { - public: - RGBA() : r(0), g(0), b(0), a(0) {} - RGBA(flt4 val) : rgbs(val), a(val) {} - RGBA(const RGB& RGBs, flt4 val) : rgbs(RGBs), a(val) {} - RGBA(flt4 pr, flt4 pg, flt4 pb, flt4 pa) : rgbs(pr, pg, pb), a(pa) {} - - public: - RGBA& operator=(const HSV& in) { - rgbs = in; - a = 1; - return *this; - } - - RGBA operator-(const RGBA& in) const { - auto const nr = tp::clamp(r - in.r, 0.f, 1.f); - auto const ng = tp::clamp(g - in.g, 0.f, 1.f); - auto const nb = tp::clamp(b - in.b, 0.f, 1.f); - auto const na = tp::clamp(a - in.a, 0.f, 1.f); - return { nr, ng, nb, na }; - } - - RGBA operator+(const RGBA& in) const { - auto const nr = tp::clamp(r + in.r, 0.f, 1.f); - auto const ng = tp::clamp(g + in.g, 0.f, 1.f); - auto const nb = tp::clamp(b + in.b, 0.f, 1.f); - auto const na = tp::clamp(a + in.a, 0.f, 1.f); - return { nr, ng, nb, na }; - } - - public: - flt4 a; - - union { - RGB rgbs; - struct { - flt4 r; - flt4 g; - flt4 b; - }; - }; - }; - - class HSVA { - HSV rgbs; - flt4 a = 1.f; - }; -} +#pragma once + +#include "Vec.hpp" + +namespace tp { + + class RGB; + class HSV; + + class RGB { + public: + RGB(); + RGB(flt4 pr, flt4 pg, flt4 pb); + RGB(flt4 val); + + public: + void set(flt4 pr, flt4 pg, flt4 pb); + operator HSV() const; + + public: + halnf r, g, b; + }; + + class HSV { + public: + HSV(); + HSV(flt4 ph, flt4 ps, flt4 pv); + + public: + void set(flt4 ph, flt4 ps, flt4 pv); + operator RGB() const; + + public: + halnf h, s, v; + }; + + class RGBA { + public: + RGBA() : + r(0), + g(0), + b(0), + a(0) {} + + RGBA(flt4 val) : + rgbs(val), + a(val) {} + + RGBA(const RGB& RGBs, flt4 val) : + rgbs(RGBs), + a(val) {} + + RGBA(flt4 pr, flt4 pg, flt4 pb, flt4 pa) : + rgbs(pr, pg, pb), + a(pa) {} + + public: + RGBA& operator=(const HSV& in) { + rgbs = in; + a = 1; + return *this; + } + + RGBA operator-(const RGBA& in) const { + const auto nr = tp::clamp(r - in.r, 0.f, 1.f); + const auto ng = tp::clamp(g - in.g, 0.f, 1.f); + const auto nb = tp::clamp(b - in.b, 0.f, 1.f); + const auto na = tp::clamp(a - in.a, 0.f, 1.f); + return { nr, ng, nb, na }; + } + + RGBA operator+(const RGBA& in) const { + const auto nr = tp::clamp(r + in.r, 0.f, 1.f); + const auto ng = tp::clamp(g + in.g, 0.f, 1.f); + const auto nb = tp::clamp(b + in.b, 0.f, 1.f); + const auto na = tp::clamp(a + in.a, 0.f, 1.f); + return { nr, ng, nb, na }; + } + + bool operator==(const RGBA& in) const { return r == in.r && g == in.g && b == in.b && a == in.a; } + + public: + flt4 a; + + union { + RGB rgbs; + + struct { + flt4 r; + flt4 g; + flt4 b; + }; + }; + }; + + class HSVA { + HSV rgbs; + flt4 a = 1.f; + }; +} diff --git a/Math/public/ComplexNumbers.hpp b/Math/public/ComplexNumbers.hpp new file mode 100644 index 0000000..acb4b23 --- /dev/null +++ b/Math/public/ComplexNumbers.hpp @@ -0,0 +1,57 @@ +#pragma once + +#include "MathCommon.hpp" + +namespace tp { + + struct ComplexCart { + typedef alnf Number; + Number r = 0; + Number i = 0; + + public: + [[nodiscard]] ComplexCart operator*(const ComplexCart& in) const { return { in.r * r - in.i * i, in.r * i + in.i * r }; } + + [[nodiscard]] ComplexCart operator*(Number in) const { return { in * r, in * i }; } + + [[nodiscard]] ComplexCart operator+(const ComplexCart& in) const { return { in.r + r, in.i + i }; } + + [[nodiscard]] ComplexCart operator-(const ComplexCart& in) const { return { in.r - r, in.i - i }; } + + [[nodiscard]] Number mod() const { return sqrt(i * i + r * r); } + + [[nodiscard]] Number arg() const { return atan2(r, i); } + + [[nodiscard]] Number norm2() const { return this->operator*(conjugate()).r; } + + [[nodiscard]] ComplexCart reciprocal() const { return { r / norm2(), -i / norm2() }; } + + void set(Number mod, Number arg) { + r = mod * cos(arg); + i = mod * sin(arg); + } + + bool operator==(const ComplexCart& in) const { return in.r == r && in.i == i; } + + [[nodiscard]] ComplexCart conjugate() const { return { r, -i }; } + }; + + struct ComplexRad { + typedef alnf Number; + Number r = 0; + Number a = 0; + + public: + [[nodiscard]] ComplexRad operator*(const ComplexRad& in) const { return { r * in.r, a + in.a }; } + + [[nodiscard]] ComplexRad operator*(Number in) const { return { r * in, a }; } + + [[nodiscard]] ComplexCart cart() const { + ComplexCart out; + out.set(r, a); + return out; + } + + bool operator==(const ComplexRad& in) const { return in.r == r && in.a == a; } + }; +} diff --git a/Math/public/Intersections.hpp b/Math/public/Intersections.hpp index 80de87f..843093d 100644 --- a/Math/public/Intersections.hpp +++ b/Math/public/Intersections.hpp @@ -1,34 +1,33 @@ -#pragma once - -#include "Vec.hpp" - -namespace tp { - - template - bool intersectLines2D(const Vec2& p1, const Vec2& p2, const Vec2& v1, const Vec2& v2, Vec2* out) { - auto a1 = p2.x - p1.x; - auto a2 = p2.y - p1.y; - - auto b1 = v2.x - v1.x; - auto b2 = v2.y - v1.y; - - auto c1 = v1.x - p1.x; - auto c2 = v1.y - p1.y; - - auto det = a2 * b1 - a1 * b2; - - auto t1 = ( -b2 * c1 + b1 * c2 ) / det; - auto t2 = ( -a2 * c1 + a1 * c2 ) / det; - - if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) { - if (out != nullptr) { - out->x = p1.x + (a1 * t1); - out->y = p1.y + (a2 * t1); - } - return true; - } - return false; - } - -} - +#pragma once + +#include "Vec.hpp" + +namespace tp { + + template + bool intersectLines2D(const Vec2& p1, const Vec2& p2, const Vec2& v1, const Vec2& v2, Vec2* out) { + auto a1 = p2.x - p1.x; + auto a2 = p2.y - p1.y; + + auto b1 = v2.x - v1.x; + auto b2 = v2.y - v1.y; + + auto c1 = v1.x - p1.x; + auto c2 = v1.y - p1.y; + + auto det = a2 * b1 - a1 * b2; + + auto t1 = (-b2 * c1 + b1 * c2) / det; + auto t2 = (-a2 * c1 + a1 * c2) / det; + + if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) { + if (out != nullptr) { + out->x = p1.x + (a1 * t1); + out->y = p1.y + (a2 * t1); + } + return true; + } + return false; + } + +} diff --git a/Math/public/Mat.hpp b/Math/public/Mat.hpp index e5ce928..967a832 100644 --- a/Math/public/Mat.hpp +++ b/Math/public/Mat.hpp @@ -1,768 +1,710 @@ -#pragma once - -#include "Vec.hpp" - -namespace tp { - - template - class Mat { - typedef Vec MVec; - - private: - MVec mCol[tNColoumns]; - - public: - Mat() = default; - - explicit Mat(const Type& val) { - operator=(val); - } - - Mat(const Mat& in) { - operator=(in); - } - - MVec& operator[](alni i) { - DEBUG_ASSERT(i < tNColoumns && i >= 0) - return mCol[i]; - } - - const MVec& operator[](alni i) const { - DEBUG_ASSERT(i < tNColoumns && i >= 0) - return mCol[i]; - } - - Mat& operator=(const Mat& in) { - if (&in == this) return *this; - memCopy(this, &in, sizeof(Mat)); - return *this; - } - - Mat& operator=(const Type& val) { - clear(val); - return *this; - } - - void clear(const Type& val) { - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - (*this)[i][j] = val; - } - } - } - - void setDiagonal(const Type& val) { - halni len = min(tNColoumns, tNRows); - for (halni i = 0; i < len; i++) { - (*this)[i][i] = val; - } - } - - Mat& fillRandom() { - DEBUG_ASSERT(0) - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - (*this)[i][j] = (Type) 0; - } - } - return *this; - } - - Mat operator-() { - Mat out; - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - out[i][j] = -(*this)[i][j]; - } - } - return out; - } - - Mat& operator+=(const Mat& in) { - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - (*this)[i][j] += in[i][j]; - } - } - return *this; - } - - Mat& operator-=(const Mat& in) { - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - (*this)[i][j] -= in[i][j]; - } - } - return *this; - } - - Mat& operator+=(const Type& val) { - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - (*this)[i][j] += val; - } - } - return *this; - } - - Mat& operator-=(const Type& val) { - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - (*this)[i][j] -= val; - } - } - return *this; - } - - Mat& operator/=(const Type& val) { - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - (*this)[i][j] /= val; - } - } - return *this; - } - - Mat& operator*=(const Type& val) { - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - (*this)[i][j] *= val; - } - } - return *this; - } - - Mat operator+(const Mat& in) { - Mat out; - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - out[i][j] = (*this)[i][j] + in[i]; - } - } - return out; - } - - Mat operator-(const Mat& in) { - Mat out; - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - out[i][j] = (*this)[i][j] - in[i]; - } - } - return out; - } - - Mat operator+(const Type& val) { - Mat out; - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - out[i][j] = (*this)[i][j] + val; - } - } - return out; - } - - Mat operator-(const Type& val) { - Mat out; - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - out[i][j] = (*this)[i][j] - val; - } - } - return out; - } - - Mat operator*(const Type& val) { - Mat out; - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - out[i][j] = (*this)[i][j] * val; - } - } - return out; - } - - Mat operator/(const Type& val) { - Mat out; - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = 0; j < tNRows; j++) { - out[i][j] = (*this)[i][j] / val; - } - } - return out; - } - - // Matrix Properties - MVec transform(const MVec& in) const { - static_assert(tNRows == tNColoumns); - MVec out; - for (halni i = 0; i < tNRows; i++) { - Type tmp = 0; - for (halni j = 0; j < tNColoumns; j++) { - tmp += (*this)[i][j] * in[j]; - } - out[i] = tmp; - } - return out; - } - - Mat transform(const Mat& in) const { - Mat out; - out.clear(0); - for (halni i = 0; i < tNRows; i++) { - for (halni j = 0; j < tNRows; j++) { - for (halni u = 0; u < tNRows; u++) { - out[i][j] += (*this)[i][u] * in[u][j]; - } - } - } - return out; - } - - Mat& transpose() { - static_assert( tNRows == tNColoumns); - for (halni i = 0; i < tNColoumns; i++) { - for (halni j = i + 1; j < tNColoumns; j++) { - swap((*this)[i][j], (*this)[j][i]); - } - } - return *this; - } - - Mat operator*(const Mat& in) const { - return transform(in); - } - - MVec operator*(const MVec& in) const { - return transform(in); - } - - Mat minor(halni p, halni q) { - Mat out; - halni i = 0, j = 0; - for (halni row = 0; row < tNRows; row++) { - for (halni col = 0; col < tNRows; col++) { - if (row != p && col != q) { - out[i][j++] = (*this)[row][col]; - if (j == tNRows - 1) { - j = 0; - i++; - } - } - } - } - return out; - } - - Type det() { - static_assert( tNRows == tNColoumns); - - Type out = 0; - - if (tNRows == 1) { - return (*this)[0][0]; - } - if (tNRows == 2) { - return ((*this)[0][0] * (*this)[1][1]) - ((*this)[1][0] * (*this)[0][1]); - } - - halni sign = 1; - for (int i = 0; i < tNRows; i++) { - out += sign * (*this)[0][i] * minor(0, i).det(); - sign = -sign; - } - return out; - } - - Mat cofactors() { - static_assert( tNRows == tNColoumns); - Mat out; - for (int i = 0; i < tNRows; i++) { - for (int j = 0; j < tNRows; j++) { - Type sign = (Type) ((i + j + 2) & 1 ? -1 : 1); - out[i][j] = minor(j, i).det() * sign; - } - } - return out; - } - - Mat inv() { - Type detV = det(); - DEBUG_ASSERT(detV) - return cofactors() /= detV; - } - }; - - template - using Mat2 = Mat; - using Mat2F = Mat2; - - template - class Mat { - typedef Vec MVec; - - MVec i; - MVec j; - - public: - - Mat() = default; - - explicit Mat(const Type& val) { - operator=(val); - } - - Mat(const MVec& pi, const MVec& pj) { - i.x = pi.x; - i.y = pi.y; - j.x = pj.x; - j.y = pj.y; - } - - Mat(Type ix, Type iy, Type jx, Type jy) { - i.x = ix; - i.y = iy; - j.x = jx; - j.y = jy; - } - - Mat(const Mat& in) { - operator=(in); - } - - MVec& operator[](alni idx) { - DEBUG_ASSERT(idx < 2 && idx >= 0) - return (&i)[idx]; - } - - const MVec& operator[](alni idx) const { - DEBUG_ASSERT(idx < 2 && idx >= 0) - return (&i)[idx]; - } - - Mat& operator=(const Mat& in) { - memCopy(this, &in, sizeof(Mat2)); - return *this; - } - - Mat& operator=(const Type& val) { - clear(val); - return *this; - } - - void clear(const Type& val) { - i.x = val; - i.y = val; - j.x = val; - j.y = val; - } - - void setDiagonal(const Type& val) { - i.x = val; - j.y = val; - } - - Mat& fillRandom() { - DEBUG_ASSERT(0) - i.x = (Type) 0; - i.y = (Type) 0; - j.x = (Type) 0; - j.y = (Type) 0; - return *this; - } - - Mat operator-() { - return Mat(-i.x, -i.y, -j.x, -j.y); - } - - Mat& operator+=(const Mat& in) { - i.x += in.i.x; - i.y += in.i.y; - j.x += in.j.x; - j.y += in.j.y; - return *this; - } - - Mat& operator-=(const Mat& in) { - i.x -= in.i.x; - i.y -= in.i.y; - j.x -= in.j.x; - j.y -= in.j.y; - return *this; - } - - Mat& operator+=(Type val) { - i.x += val; - i.y += val; - j.x += val; - j.y += val; - return *this; - } - - Mat& operator-=(Type val) { - i.x -= val; - i.y -= val; - j.x -= val; - j.y -= val; - return *this; - } - - Mat& operator/=(Type val) { - i.x /= val; - i.y /= val; - j.x /= val; - j.y /= val; - return *this; - } - - Mat& operator*=(Type val) { - i.x *= val; - i.y *= val; - j.x *= val; - j.y *= val; - return *this; - } - - Mat operator+(const Mat& in) { - Mat out; - out.i.x = i.x + in.i.x; - out.i.y = i.y + in.i.y; - out.j.x = j.x + in.j.x; - out.j.y = j.y + in.j.y; - return out; - } - - Mat operator-(const Mat& in) { - Mat out; - out.i.x = i.x - in.i.x; - out.i.y = i.y - in.i.y; - out.j.x = j.x - in.j.x; - out.j.y = j.y - in.j.y; - return out; - } - - Mat operator+(const Type& val) { - Mat out; - out.i.x = i.x + val; - out.i.y = i.y + val; - out.j.x = j.x + val; - out.j.y = j.y + val; - return out; - } - - Mat operator-(const Type& val) { - Mat out; - out.i.x = i.x - val; - out.i.y = i.y - val; - out.j.x = j.x - val; - out.j.y = j.y - val; - return out; - } - - Mat operator*(const Type& val) { - Mat out; - out.i.x = i.x * val; - out.i.y = i.y * val; - out.j.x = j.x * val; - out.j.y = j.y * val; - return out; - } - - Mat operator/(const Type& val) { - Mat out; - out.i.x = i.x / val; - out.i.y = i.y / val; - out.j.x = j.x / val; - out.j.y = j.y / val; - return out; - } - - // Matrix Properties - MVec transform(const MVec& in) const { - return MVec(i.x * in.x + i.y * in.y, j.x * in.y + j.y * in.x); - } - - Mat transform(const Mat& in) const { - Mat out; - out.i.x = i.x * in.i.x + j.x * in.i.y; - out.i.y = i.y * in.i.x + j.y * in.i.y; - out.j.x = i.x * in.j.x + j.x * in.j.y; - out.j.y = i.y * in.j.x + j.y * in.j.y; - return out; - } - - Mat operator*(const Mat& in) { - return transform(in); - } - - Mat& transpose() { - swap(j.x, i.y); - return *this; - } - - Type det() { - return i.x * j.y - i.y * j.x; - } - - Mat cofactors() { - return Mat(j.y, -i.y, -j.x, i.x); - } - - Mat inv() { - Type detV = det(); - DEBUG_ASSERT(detV != 0) - return (cofactors() /= detV); - } - }; - - template - using mat3 = Mat; - using mat3f = mat3; - - template - class Mat { - typedef Vec3 vec; - - public: - vec I; - vec J; - vec K; - - public: - Mat() = default; - - explicit Mat(Type val) { - I.assign(val, 0.f, 0.f); - J.assign(0.f, val, 0.f); - K.assign(0.f, 0.f, val); - } - - Mat(const vec& i, const vec& j, const vec& k) { - I = i; - J = j; - K = k; - } - - Mat(const Mat& in) { - this->I = in.I; - this->J = in.J; - this->K = in.K; - } - - void assign(const vec& i, const vec& j, const vec& k) { - I = i; - J = j; - K = k; - } - - Mat& fillRandom() { - I.randf(); - J.randf(); - K.randf(); - return *this; - } - - vec& operator[](alni i) { - DEBUG_ASSERT(i < 3 && i >= 0) - return (&I)[i]; - } - - const vec& operator[](alni i) const { - DEBUG_ASSERT(i < 3 && i >= 0) - return (&I)[i]; - } - - // create on stack - Mat operator+(const Mat& in) { return Mat(I + in.I, J + in.J, K + in.K); } - Mat operator-(const Mat& in) { return Mat(I - in.I, J - in.J, K - in.K); } - Mat operator+(Type val) { return Mat(I + val, J + val, K + val); } - Mat operator-(Type val) { return Mat(I - val, J - val, K - val); } - Mat operator*(Type val) { return Mat(I * val, J * val, K * val); } - Mat operator/(Type val) { return Mat(I / val, J / val, K / val); } - - // write - Mat& operator=(const Mat& in) { - I = in.I; - J = in.J; - K = in.K; - return *this; - } - - Mat& operator+=(const Mat& in) { - I += in.I; - J += in.J; - K += in.K; - return *this; - } - - Mat& operator-=(const Mat& in) { - I -= in.I; - J -= in.J; - K -= in.K; - return *this; - } - - Mat& operator+=(Type val) { - I += val; - J += val; - K += val; - return *this; - } - - Mat& operator-=(Type val) { - I -= val; - J -= val; - K -= val; - return *this; - } - - Mat& operator*=(Type val) { - I *= val; - J *= val; - K *= val; - return *this; - } - - Mat& operator/=(Type val) { - I /= val; - J /= val; - K /= val; - return *this; - } - - // Matrix transformation - vec transform(const vec& in) { - return vec( - I.x * in.x + I.y * in.y + I.z * in.z, - J.x * in.x + J.y * in.y + J.z * in.z, - K.x * in.x + K.y * in.y + K.z * in.z - ); - } - - Mat transform(const Mat& in) { - return Mat( - {(in.I.x * I.x + in.I.y * J.x + in.I.z * K.x), (in.I.x * I.y + in.I.y * J.y + in.I.z * K.y), (in.I.x * I.z + in.I.y * J.z + in.I.z * K.z)}, - {(in.J.x * I.x + in.J.y * J.x + in.J.z * K.x), (in.J.x * I.y + in.J.y * J.y + in.J.z * K.y), (in.J.x * I.z + in.J.y * J.z + in.J.z * K.z)}, - {(in.K.x * I.x + in.K.y * J.x + in.K.z * K.x), (in.K.x * I.y + in.K.y * J.y + in.K.z * K.y), (in.K.x * I.z + in.K.y * J.z + in.K.z * K.z)} - ); - } - - vec operator*(const vec& in) { - return transform(in); - } - - Mat operator*(const Mat& in) { - return transform(in); - } - - Mat minor(halni, halni) { - Mat out; - return out; - } - - Mat& transpose() { - swap(I.y, J.x); - swap(I.z, K.x); - swap(J.z, K.y); - return *this; - } - - Type det() { - return ( - +I.x * (J.y * K.z - J.z * K.y) - - I.y * (J.x * K.z - J.z * K.x) - + I.z * (J.x * K.y - J.y * K.x) - ); - } - - Mat cofactors() { - return Mat( - vec(+(J.y * K.z - J.z * K.y), -(I.y * K.z - I.z * K.y), +(I.y * J.z - I.z * J.y)), - vec(-(J.x * K.z - J.z * K.x), +(I.x * K.z - I.z * K.x), -(I.x * J.z - I.z * J.x)), - vec(+(J.x * K.y - J.y * K.x), -(I.x * K.y - I.y * K.x), +(I.x * J.y - I.y * J.x)) - ); - } - - Mat inv() { - return cofactors() /= det(); - } - - Mat rotatorX(alnf angle) { - alnf cosA = (alnf) cos(angle); - alnf sinA = (alnf) sin(angle); - return { - {1, 0, 0}, - {0, cosA, -sinA}, - {0, sinA, cosA} - }; - } - - Mat rotatorY(alnf angle) { - alnf cosA = (alnf) cos(angle); - alnf sinA = (alnf) sin(angle); - return { - {cosA, 0, sinA}, - {0, 1, 0}, - {-sinA, 0, cosA} - }; - } - - Mat rotatorZ(alnf angle) { - alnf cosA = (alnf) cos(angle); - alnf sinA = (alnf) sin(angle); - return { - {cosA, -sinA, 0}, - {sinA, cosA, 0}, - {0, 0, 1} - }; - } - - static Mat rotatorDir(vec dir, alnf angle) { - dir.normalize(); - - Mat out; - alnf cosA = (alnf) cos(angle); - alnf sinA = (alnf) sin(angle); - alnf tmp = 1 - cosA; - - out.I.x = (Type) (cosA + dir.x * dir.x * tmp); - out.I.y = (Type) (dir.x * dir.y * tmp - dir.z * sinA); - out.I.z = (Type) (dir.x * dir.z * tmp + dir.y * sinA); - - out.J.x = (Type) (dir.y * dir.x * tmp + dir.z * sinA); - out.J.y = (Type) (cosA + dir.y * dir.y * tmp); - out.J.z = (Type) (dir.y * dir.z * tmp - dir.x * sinA); - - out.K.x = (Type) (dir.z * dir.x * tmp - dir.y * sinA); - out.K.y = (Type) (dir.z * dir.y * tmp + dir.x * sinA); - out.K.z = (Type) (cosA + dir.z * dir.z * tmp); - - return out; - } - }; - - template - using Mat4 = Mat; - - using Mat4F = Mat4; - using Mat4I = Mat4; - - template - class Mat< Type, 0, 0 > { - typedef Vec MVec; - MVec dummy; - - public: - MVec& operator[](alni) { - return dummy; - } - - const MVec& operator[](alni) const { - return dummy; - } - - Type det() { - return Type(); - } - }; -} \ No newline at end of file +#pragma once + +#include "Vec.hpp" + +namespace tp { + + template + class Mat { + typedef Vec MVec; + + private: + MVec mCol[tNColoumns]; + + public: + Mat() = default; + + explicit Mat(const Type& val) { operator=(val); } + + Mat(const Mat& in) { operator=(in); } + + MVec& operator[](alni i) { + DEBUG_ASSERT(i < tNColoumns && i >= 0) + return mCol[i]; + } + + const MVec& operator[](alni i) const { + DEBUG_ASSERT(i < tNColoumns && i >= 0) + return mCol[i]; + } + + Mat& operator=(const Mat& in) { + if (&in == this) { + return *this; + } + memCopy(this, &in, sizeof(Mat)); + return *this; + } + + Mat& operator=(const Type& val) { + clear(val); + return *this; + } + + void clear(const Type& val) { + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + (*this)[i][j] = val; + } + } + } + + void setDiagonal(const Type& val) { + halni len = min(tNColoumns, tNRows); + for (halni i = 0; i < len; i++) { + (*this)[i][i] = val; + } + } + + Mat& fillRandom() { + DEBUG_ASSERT(0) + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + (*this)[i][j] = (Type) 0; + } + } + return *this; + } + + Mat operator-() { + Mat out; + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + out[i][j] = -(*this)[i][j]; + } + } + return out; + } + + Mat& operator+=(const Mat& in) { + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + (*this)[i][j] += in[i][j]; + } + } + return *this; + } + + Mat& operator-=(const Mat& in) { + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + (*this)[i][j] -= in[i][j]; + } + } + return *this; + } + + Mat& operator+=(const Type& val) { + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + (*this)[i][j] += val; + } + } + return *this; + } + + Mat& operator-=(const Type& val) { + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + (*this)[i][j] -= val; + } + } + return *this; + } + + Mat& operator/=(const Type& val) { + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + (*this)[i][j] /= val; + } + } + return *this; + } + + Mat& operator*=(const Type& val) { + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + (*this)[i][j] *= val; + } + } + return *this; + } + + Mat operator+(const Mat& in) { + Mat out; + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + out[i][j] = (*this)[i][j] + in[i]; + } + } + return out; + } + + Mat operator-(const Mat& in) { + Mat out; + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + out[i][j] = (*this)[i][j] - in[i]; + } + } + return out; + } + + Mat operator+(const Type& val) { + Mat out; + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + out[i][j] = (*this)[i][j] + val; + } + } + return out; + } + + Mat operator-(const Type& val) { + Mat out; + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + out[i][j] = (*this)[i][j] - val; + } + } + return out; + } + + Mat operator*(const Type& val) { + Mat out; + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + out[i][j] = (*this)[i][j] * val; + } + } + return out; + } + + Mat operator/(const Type& val) { + Mat out; + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = 0; j < tNRows; j++) { + out[i][j] = (*this)[i][j] / val; + } + } + return out; + } + + // Matrix Properties + MVec transform(const MVec& in) const { + static_assert(tNRows == tNColoumns); + MVec out; + for (halni i = 0; i < tNRows; i++) { + Type tmp = 0; + for (halni j = 0; j < tNColoumns; j++) { + tmp += (*this)[i][j] * in[j]; + } + out[i] = tmp; + } + return out; + } + + Mat transform(const Mat& in) const { + Mat out; + out.clear(0); + for (halni i = 0; i < tNRows; i++) { + for (halni j = 0; j < tNRows; j++) { + for (halni u = 0; u < tNRows; u++) { + out[i][j] += (*this)[i][u] * in[u][j]; + } + } + } + return out; + } + + Mat& transpose() { + static_assert(tNRows == tNColoumns); + for (halni i = 0; i < tNColoumns; i++) { + for (halni j = i + 1; j < tNColoumns; j++) { + swap((*this)[i][j], (*this)[j][i]); + } + } + return *this; + } + + Mat operator*(const Mat& in) const { return transform(in); } + + MVec operator*(const MVec& in) const { return transform(in); } + + Mat minor(halni p, halni q) { + Mat out; + halni i = 0, j = 0; + for (halni row = 0; row < tNRows; row++) { + for (halni col = 0; col < tNRows; col++) { + if (row != p && col != q) { + out[i][j++] = (*this)[row][col]; + if (j == tNRows - 1) { + j = 0; + i++; + } + } + } + } + return out; + } + + Type det() { + static_assert(tNRows == tNColoumns); + + Type out = 0; + + if (tNRows == 1) { + return (*this)[0][0]; + } + if (tNRows == 2) { + return ((*this)[0][0] * (*this)[1][1]) - ((*this)[1][0] * (*this)[0][1]); + } + + halni sign = 1; + for (int i = 0; i < tNRows; i++) { + out += sign * (*this)[0][i] * minor(0, i).det(); + sign = -sign; + } + return out; + } + + Mat cofactors() { + static_assert(tNRows == tNColoumns); + Mat out; + for (int i = 0; i < tNRows; i++) { + for (int j = 0; j < tNRows; j++) { + Type sign = (Type) ((i + j + 2) & 1 ? -1 : 1); + out[i][j] = minor(j, i).det() * sign; + } + } + return out; + } + + Mat inv() { + Type detV = det(); + DEBUG_ASSERT(detV) + return cofactors() /= detV; + } + }; + + template + using Mat2 = Mat; + using Mat2F = Mat2; + + template + class Mat { + typedef Vec MVec; + + MVec i; + MVec j; + + public: + Mat() = default; + + explicit Mat(const Type& val) { operator=(val); } + + Mat(const MVec& pi, const MVec& pj) { + i.x = pi.x; + i.y = pi.y; + j.x = pj.x; + j.y = pj.y; + } + + Mat(Type ix, Type iy, Type jx, Type jy) { + i.x = ix; + i.y = iy; + j.x = jx; + j.y = jy; + } + + Mat(const Mat& in) { operator=(in); } + + MVec& operator[](alni idx) { + DEBUG_ASSERT(idx < 2 && idx >= 0) + return (&i)[idx]; + } + + const MVec& operator[](alni idx) const { + DEBUG_ASSERT(idx < 2 && idx >= 0) + return (&i)[idx]; + } + + Mat& operator=(const Mat& in) { + memCopy(this, &in, sizeof(Mat2)); + return *this; + } + + Mat& operator=(const Type& val) { + clear(val); + return *this; + } + + void clear(const Type& val) { + i.x = val; + i.y = val; + j.x = val; + j.y = val; + } + + void setDiagonal(const Type& val) { + i.x = val; + j.y = val; + } + + Mat& fillRandom() { + DEBUG_ASSERT(0) + i.x = (Type) 0; + i.y = (Type) 0; + j.x = (Type) 0; + j.y = (Type) 0; + return *this; + } + + Mat operator-() { return Mat(-i.x, -i.y, -j.x, -j.y); } + + Mat& operator+=(const Mat& in) { + i.x += in.i.x; + i.y += in.i.y; + j.x += in.j.x; + j.y += in.j.y; + return *this; + } + + Mat& operator-=(const Mat& in) { + i.x -= in.i.x; + i.y -= in.i.y; + j.x -= in.j.x; + j.y -= in.j.y; + return *this; + } + + Mat& operator+=(Type val) { + i.x += val; + i.y += val; + j.x += val; + j.y += val; + return *this; + } + + Mat& operator-=(Type val) { + i.x -= val; + i.y -= val; + j.x -= val; + j.y -= val; + return *this; + } + + Mat& operator/=(Type val) { + i.x /= val; + i.y /= val; + j.x /= val; + j.y /= val; + return *this; + } + + Mat& operator*=(Type val) { + i.x *= val; + i.y *= val; + j.x *= val; + j.y *= val; + return *this; + } + + Mat operator+(const Mat& in) { + Mat out; + out.i.x = i.x + in.i.x; + out.i.y = i.y + in.i.y; + out.j.x = j.x + in.j.x; + out.j.y = j.y + in.j.y; + return out; + } + + Mat operator-(const Mat& in) { + Mat out; + out.i.x = i.x - in.i.x; + out.i.y = i.y - in.i.y; + out.j.x = j.x - in.j.x; + out.j.y = j.y - in.j.y; + return out; + } + + Mat operator+(const Type& val) { + Mat out; + out.i.x = i.x + val; + out.i.y = i.y + val; + out.j.x = j.x + val; + out.j.y = j.y + val; + return out; + } + + Mat operator-(const Type& val) { + Mat out; + out.i.x = i.x - val; + out.i.y = i.y - val; + out.j.x = j.x - val; + out.j.y = j.y - val; + return out; + } + + Mat operator*(const Type& val) { + Mat out; + out.i.x = i.x * val; + out.i.y = i.y * val; + out.j.x = j.x * val; + out.j.y = j.y * val; + return out; + } + + Mat operator/(const Type& val) { + Mat out; + out.i.x = i.x / val; + out.i.y = i.y / val; + out.j.x = j.x / val; + out.j.y = j.y / val; + return out; + } + + // Matrix Properties + MVec transform(const MVec& in) const { return MVec(i.x * in.x + i.y * in.y, j.x * in.y + j.y * in.x); } + + Mat transform(const Mat& in) const { + Mat out; + out.i.x = i.x * in.i.x + j.x * in.i.y; + out.i.y = i.y * in.i.x + j.y * in.i.y; + out.j.x = i.x * in.j.x + j.x * in.j.y; + out.j.y = i.y * in.j.x + j.y * in.j.y; + return out; + } + + Mat operator*(const Mat& in) { return transform(in); } + + Mat& transpose() { + swap(j.x, i.y); + return *this; + } + + Type det() { return i.x * j.y - i.y * j.x; } + + Mat cofactors() { return Mat(j.y, -i.y, -j.x, i.x); } + + Mat inv() { + Type detV = det(); + DEBUG_ASSERT(detV != 0) + return (cofactors() /= detV); + } + }; + + template + using mat3 = Mat; + using mat3f = mat3; + + template + class Mat { + typedef Vec3 vec; + + public: + vec I; + vec J; + vec K; + + public: + Mat() = default; + + explicit Mat(Type val) { + I.assign(val, 0.f, 0.f); + J.assign(0.f, val, 0.f); + K.assign(0.f, 0.f, val); + } + + Mat(const vec& i, const vec& j, const vec& k) { + I = i; + J = j; + K = k; + } + + Mat(const Mat& in) { + this->I = in.I; + this->J = in.J; + this->K = in.K; + } + + void assign(const vec& i, const vec& j, const vec& k) { + I = i; + J = j; + K = k; + } + + Mat& fillRandom() { + I.randf(); + J.randf(); + K.randf(); + return *this; + } + + vec& operator[](alni i) { + DEBUG_ASSERT(i < 3 && i >= 0) + return (&I)[i]; + } + + const vec& operator[](alni i) const { + DEBUG_ASSERT(i < 3 && i >= 0) + return (&I)[i]; + } + + // create on stack + Mat operator+(const Mat& in) { return Mat(I + in.I, J + in.J, K + in.K); } + + Mat operator-(const Mat& in) { return Mat(I - in.I, J - in.J, K - in.K); } + + Mat operator+(Type val) { return Mat(I + val, J + val, K + val); } + + Mat operator-(Type val) { return Mat(I - val, J - val, K - val); } + + Mat operator*(Type val) { return Mat(I * val, J * val, K * val); } + + Mat operator/(Type val) { return Mat(I / val, J / val, K / val); } + + // write + Mat& operator=(const Mat& in) { + I = in.I; + J = in.J; + K = in.K; + return *this; + } + + Mat& operator+=(const Mat& in) { + I += in.I; + J += in.J; + K += in.K; + return *this; + } + + Mat& operator-=(const Mat& in) { + I -= in.I; + J -= in.J; + K -= in.K; + return *this; + } + + Mat& operator+=(Type val) { + I += val; + J += val; + K += val; + return *this; + } + + Mat& operator-=(Type val) { + I -= val; + J -= val; + K -= val; + return *this; + } + + Mat& operator*=(Type val) { + I *= val; + J *= val; + K *= val; + return *this; + } + + Mat& operator/=(Type val) { + I /= val; + J /= val; + K /= val; + return *this; + } + + // Matrix transformation + vec transform(const vec& in) const { return vec(I.x * in.x + I.y * in.y + I.z * in.z, J.x * in.x + J.y * in.y + J.z * in.z, K.x * in.x + K.y * in.y + K.z * in.z); } + + Mat transform(const Mat& in) { + return Mat( + { (in.I.x * I.x + in.I.y * J.x + in.I.z * K.x), (in.I.x * I.y + in.I.y * J.y + in.I.z * K.y), (in.I.x * I.z + in.I.y * J.z + in.I.z * K.z) }, + { (in.J.x * I.x + in.J.y * J.x + in.J.z * K.x), (in.J.x * I.y + in.J.y * J.y + in.J.z * K.y), (in.J.x * I.z + in.J.y * J.z + in.J.z * K.z) }, + { (in.K.x * I.x + in.K.y * J.x + in.K.z * K.x), (in.K.x * I.y + in.K.y * J.y + in.K.z * K.y), (in.K.x * I.z + in.K.y * J.z + in.K.z * K.z) } + ); + } + + vec operator*(const vec& in) { return transform(in); } + + Mat operator*(const Mat& in) { return transform(in); } + + Mat minor(halni, halni) { + Mat out; + return out; + } + + Mat& transpose() { + swap(I.y, J.x); + swap(I.z, K.x); + swap(J.z, K.y); + return *this; + } + + Type det() { return (+I.x * (J.y * K.z - J.z * K.y) - I.y * (J.x * K.z - J.z * K.x) + I.z * (J.x * K.y - J.y * K.x)); } + + Mat cofactors() { return Mat(vec(+(J.y * K.z - J.z * K.y), -(I.y * K.z - I.z * K.y), +(I.y * J.z - I.z * J.y)), vec(-(J.x * K.z - J.z * K.x), +(I.x * K.z - I.z * K.x), -(I.x * J.z - I.z * J.x)), vec(+(J.x * K.y - J.y * K.x), -(I.x * K.y - I.y * K.x), +(I.x * J.y - I.y * J.x))); } + + Mat inv() { return cofactors() /= det(); } + + Mat rotatorX(alnf angle) { + alnf cosA = (alnf) cos(angle); + alnf sinA = (alnf) sin(angle); + return { { 1, 0, 0 }, { 0, cosA, -sinA }, { 0, sinA, cosA } }; + } + + Mat rotatorY(alnf angle) { + alnf cosA = (alnf) cos(angle); + alnf sinA = (alnf) sin(angle); + return { { cosA, 0, sinA }, { 0, 1, 0 }, { -sinA, 0, cosA } }; + } + + Mat rotatorZ(alnf angle) { + alnf cosA = (alnf) cos(angle); + alnf sinA = (alnf) sin(angle); + return { { cosA, -sinA, 0 }, { sinA, cosA, 0 }, { 0, 0, 1 } }; + } + + static Mat rotatorDir(vec dir, alnf angle) { + dir.normalize(); + + Mat out; + alnf cosA = (alnf) cos(angle); + alnf sinA = (alnf) sin(angle); + alnf tmp = 1 - cosA; + + out.I.x = (Type) (cosA + dir.x * dir.x * tmp); + out.I.y = (Type) (dir.x * dir.y * tmp - dir.z * sinA); + out.I.z = (Type) (dir.x * dir.z * tmp + dir.y * sinA); + + out.J.x = (Type) (dir.y * dir.x * tmp + dir.z * sinA); + out.J.y = (Type) (cosA + dir.y * dir.y * tmp); + out.J.z = (Type) (dir.y * dir.z * tmp - dir.x * sinA); + + out.K.x = (Type) (dir.z * dir.x * tmp - dir.y * sinA); + out.K.y = (Type) (dir.z * dir.y * tmp + dir.x * sinA); + out.K.z = (Type) (cosA + dir.z * dir.z * tmp); + + return out; + } + }; + + template + using Mat4 = Mat; + + using Mat4F = Mat4; + using Mat4I = Mat4; + + template + class Mat { + typedef Vec MVec; + MVec dummy; + + public: + MVec& operator[](alni) { return dummy; } + + const MVec& operator[](alni) const { return dummy; } + + Type det() { return Type(); } + }; +} diff --git a/Math/public/MathCommon.hpp b/Math/public/MathCommon.hpp index 861723c..e7b74ce 100644 --- a/Math/public/MathCommon.hpp +++ b/Math/public/MathCommon.hpp @@ -13,16 +13,7 @@ #define SQRT2 1.4142135623730950488016887242 #define EXP 2.7182818284590452353602874714 -namespace tp { - extern ModuleManifest gModuleMath; +#include - alnf sin(alnf radians); - alnf tan(alnf radians); - alnf atan2(alnf X, alnf Y); - alnf atan(alnf val); - alnf cos(alnf radians); - alnf acos(alnf val); - alnf sqrt(alnf val); - alnf rad(alnf val); - alnf deg(alnf val); -} \ No newline at end of file +#define RAD(val) (val * (PI / 180.f)) +#define DEG(val) (val * (180.f / PI)) \ No newline at end of file diff --git a/Math/public/Ray.hpp b/Math/public/Ray.hpp index ae90e61..2d6927a 100644 --- a/Math/public/Ray.hpp +++ b/Math/public/Ray.hpp @@ -1,20 +1,20 @@ -#pragma once - -#include "Vec.hpp" - -namespace tp { - - class Ray { - public: - Ray(const Vec3F& Dir, const Vec3F& Pos); - Ray() = default; - - public: - Vec3F dir; - Vec3F pos; - - public: - ~Ray() = default; - }; - +#pragma once + +#include "Vec.hpp" + +namespace tp { + + class Ray { + public: + Ray(const Vec3F& Dir, const Vec3F& Pos); + Ray() = default; + + public: + Vec3F dir; + Vec3F pos; + + public: + ~Ray() = default; + }; + } \ No newline at end of file diff --git a/Math/public/Rect.hpp b/Math/public/Rect.hpp index 33fa70b..8d90b91 100644 --- a/Math/public/Rect.hpp +++ b/Math/public/Rect.hpp @@ -1,274 +1,242 @@ - -#pragma once - -#include "Vec.hpp" - -#include "Intersections.hpp" - -namespace tp { - - template class Rect; - using RectF = Rect; - using RectI = Rect; - - template - class Rect { - public: - Rect() {} - - explicit Rect(Type val) { - this->pos = val; - this->size = val; - } - - template - explicit Rect(const Rect& rec) { - this->pos = rec.pos; - this->size = rec.size; - } - - Rect(const Vec2& pos, const Vec2& size) { - this->pos = pos; - this->size = size; - } - - Rect(Type aPosX, Type posy, Type aSizeX, Type aSizeY) { - pos.assign(aPosX, posy); - size.assign(aSizeX, aSizeY); - } - - // assign - template - Rect& assign(InType p1x, InType p1y, InType p2x, InType p2y) { - pos.assign(p1x, p1y); - size.assign(p2x, p2y); - return *this; - } - - // assign - template - Rect& assign(const Vec2& pos, const Vec2& size) { - this->pos.assign(pos.x, pos.y); - this->size.assign(size.x, size.y); - return *this; - } - - // conversion - template - Rect& operator=(const Rect& rect) { - pos = rect.pos; - size = rect.size; - return *this; - } - - bool operator==(Rect& rect) const { - return (pos == rect.pos && size == rect.size); - } - - bool isEnclosedIn(const Rect& rect, bool aParent = false) const { - if (aParent) { - return (pos.x + size.x <= rect.size.x && pos.y + size.y <= rect.size.y && - pos.x >= 0 && pos.y >= 0); - } - *(Vec2*)(&pos) -= rect.pos; - bool ret = this->isEnclosedIn(rect, true); - *(Vec2*)(&pos) += rect.pos; - return ret; - } - - void calcIntersection(Rect& in, Rect& out) const { - if (isOverlap(in)) { - out = *this; - for (char i = 0; i < 2; i++) { - clamp(out.pos[i], in.pos[i], in.pos[i] + in.size[i]); - Type p2 = pos[i] + size[i]; - clamp(p2, in.pos[i], in.pos[i] + in.size[i]); - out.size[i] = p2 - out.pos[i]; - } - } - else { - out.size.assign(0, 0); - out.pos.assign(0, 0); - } - } - - // argument isInside - bool isInside(const Vec2& p) const { - return (p.each_compre(pos) && (pos + size).each_compre(p)); - } - - bool isInside(Type x, Type y) const { - return (pos.x < x&& pos.y < y&& pos.x + size.x > x&& pos.y + size.y > y); - } - - inline Vec2 sizeVec() const { - return Vec2(size.x, size.y); - } - - inline Vec2 sizeVecW() const { - return Vec2(size.x + pos.x, size.y + pos.y); - } - - void invertY(Type scr_y) { - pos.y = scr_y - pos.y - size.y; - } - - void move(Type dx, Type dy) { - pos.x += dx; - pos.y += dy; - } - - Rect& scaleFromCenter(tp::halnf fac, bool add = false) { - if (add) { - pos += fac; - size -= fac * 2; - } - else { - auto new_size = size * fac; - pos = pos - (new_size - size) / 2; - size = new_size; - } - return *this; - } - - Vec2 p1() { - return pos; - } - - Vec2 p3() { - return pos + size; - } - - Vec2 p2() { - return { pos.x, pos.y + size.y }; - } - - Vec2 p4() { - return { pos.x + size.x, pos.y }; - } - - inline bool isAbove(const Rect& rect) const { - return (pos.y + size.y < rect.pos.y); - } - - inline bool isBellow(const Rect& rect) const { - return (rect.pos.y + rect.size.y < pos.y); - } - - inline bool isRight(const Rect& rect) const { - return (pos.x + size.x < rect.pos.x); - } - - inline bool isLeft(const Rect& rect) const { - return (rect.pos.x + rect.size.x < pos.x); - } - - inline bool isIntersectsY(const Rect& in) const { - if (INRANGE(in.pos.x, pos.x, pos.x + size.x)) return true; - if (INRANGE(pos.x, in.pos.x, in.pos.x + in.size.x)) return true; - return false; - } - - inline bool isIntersectX(const Rect& rect) const { - if (INRANGE(rect.pos.y, pos.y, pos.y + size.y)) return true; - if (INRANGE(pos.y, rect.pos.y, rect.pos.y + rect.size.y)) return true; - return false; - } - - bool isOverlap(const Rect& rect) const { - return (isIntersectX(rect) && isIntersectsY(rect)); - } - - void clamp(const Rect& bounds) { - Vec2 p3(pos + size); - Vec2 max = bounds.pos + bounds.size; - - pos.clamp(bounds.pos, max); - p3.clamp(bounds.pos, max); - - size = p3 - pos; - } - - // if only one point isInside - bool clampOutside(Vec2& v1, Vec2& v2) { - bool const in1 = isInside(v1); - bool const in2 = isInside(v2); - if (!in1 && !in2) return false; - - if (in1) { - if (!intersectLines2D(p2(), p3(), v1, v2, &v1)) { - if (!intersectLines2D(p1(), p4(), v1, v2, &v1)) { - if (!intersectLines2D(p1(), p2(), v1, v2, &v1)) { - intersectLines2D(p3(), p4(), v1, v2, &v1); - } - } - } - return true; - } - - if (!intersectLines2D(p2(), p3(), v1, v2, &v2)) { - if (!intersectLines2D(p1(), p4(), v1, v2, &v2)) { - if (!intersectLines2D(p1(), p2(), v1, v2, &v2)) { - intersectLines2D(p3(), p4(), v1, v2, &v2); - } - } - } - return true; - } - - uhalni clampInside(Vec2& v1, Vec2& v2) { - bool const in1 = isInside(v1); - bool const in2 = isInside(v2); - - if (in1 && in2) return 2; - - Vec2 v1copy = v1; - Vec2 v2copy = v2; - - if (in1 || in2) { - if (!intersectLines2D(p2(), p3(), v1copy, v2copy, &v2)) { - if (!intersectLines2D(p1(), p4(), v1copy, v2copy, &v2)) { - if (!intersectLines2D(p1(), p2(), v1copy, v2copy, &v2)) { - intersectLines2D(p3(), p4(), v1copy, v2copy, &v2); - } - } - } - return 1; - } - - DEBUG_ASSERT(0) - return 0; - } - - template - Rect operator*(ConversionType val) { - Rect out; - out.pos = pos * val; - out.size = size * val; - return out; - } - - Vec2 center() { - return pos + size / 2.f; - } - - public: - union { - Vec2 v1; - Vec2 pos; - struct { - Type x; - Type y; - }; - }; - - union { - Vec2 v2; - Vec2 size; - struct { - Type z; - Type w; - }; - }; - }; + +#pragma once + +#include "Vec.hpp" + +#include "Intersections.hpp" + +#define INRANGE(v, l, u) (v >= l && v <= u) + +namespace tp { + + template + class Rect; + using RectF = Rect; + using RectI = Rect; + + template + class Rect { + public: + Rect() {} + + explicit Rect(Type val) { + this->pos = val; + this->size = val; + } + + template + explicit Rect(const Rect& rec) { + this->pos = rec.pos; + this->size = rec.size; + } + + Rect(const Vec2& pos, const Vec2& size) { + this->pos = pos; + this->size = size; + } + + Rect(Type aPosX, Type posy, Type aSizeX, Type aSizeY) { + pos.assign(aPosX, posy); + size.assign(aSizeX, aSizeY); + } + + // assign + template + Rect& assign(InType p1x, InType p1y, InType p2x, InType p2y) { + pos.assign(p1x, p1y); + size.assign(p2x, p2y); + return *this; + } + + // assign + template + Rect& assign(const Vec2& pos, const Vec2& size) { + this->pos.assign(pos.x, pos.y); + this->size.assign(size.x, size.y); + return *this; + } + + // conversion + template + Rect& operator=(const Rect& rect) { + pos = rect.pos; + size = rect.size; + return *this; + } + + bool operator==(Rect& rect) const { return (pos == rect.pos && size == rect.size); } + + bool isEnclosedIn(const Rect& rect, bool aParent = false) const { + if (aParent) { + return (pos.x + size.x <= rect.size.x && pos.y + size.y <= rect.size.y && pos.x >= 0 && pos.y >= 0); + } + *(Vec2*) (&pos) -= rect.pos; + bool ret = this->isEnclosedIn(rect, true); + *(Vec2*) (&pos) += rect.pos; + return ret; + } + + void calcIntersection(const Rect& in, Rect& out) const { + if (isOverlap(in)) { + out = *this; + for (char i = 0; i < 2; i++) { + out.pos[i] = tp::clamp(out.pos[i], in.pos[i], in.pos[i] + in.size[i]); + Type p2 = pos[i] + size[i]; + p2 = tp::clamp(p2, in.pos[i], in.pos[i] + in.size[i]); + out.size[i] = p2 - out.pos[i]; + } + } else { + out.size.assign(0, 0); + out.pos.assign(0, 0); + } + } + + // argument isInside + bool isInside(const Vec2& p) const { return isInside(p.x, p.y); } + + bool isInside(Type x, Type y) const { return (pos.x < x && pos.y < y && pos.x + size.x > x && pos.y + size.y > y); } + + inline Vec2 sizeVec() const { return Vec2(size.x, size.y); } + + inline Vec2 sizeVecW() const { return Vec2(size.x + pos.x, size.y + pos.y); } + + void invertY(Type scr_y) { pos.y = scr_y - pos.y - size.y; } + + void move(Type dx, Type dy) { + pos.x += dx; + pos.y += dy; + } + + Rect& scaleFromCenter(tp::halnf fac, bool add = false) { + if (add) { + pos += fac; + size -= fac * 2; + } else { + auto new_size = size * fac; + pos = pos - (new_size - size) / 2; + size = new_size; + } + return *this; + } + + Vec2 p1() { return pos; } + + Vec2 p3() { return pos + size; } + + Vec2 p2() { return { pos.x, pos.y + size.y }; } + + Vec2 p4() { return { pos.x + size.x, pos.y }; } + + inline bool isAbove(const Rect& rect) const { return (pos.y + size.y < rect.pos.y); } + + inline bool isBellow(const Rect& rect) const { return (rect.pos.y + rect.size.y < pos.y); } + + inline bool isRight(const Rect& rect) const { return (pos.x + size.x < rect.pos.x); } + + inline bool isLeft(const Rect& rect) const { return (rect.pos.x + rect.size.x < pos.x); } + + inline bool isIntersectsY(const Rect& in) const { + if (INRANGE(in.pos.x, pos.x, pos.x + size.x)) return true; + if (INRANGE(pos.x, in.pos.x, in.pos.x + in.size.x)) return true; + return false; + } + + inline bool isIntersectX(const Rect& rect) const { + if (INRANGE(rect.pos.y, pos.y, pos.y + size.y)) return true; + if (INRANGE(pos.y, rect.pos.y, rect.pos.y + rect.size.y)) return true; + return false; + } + + bool isOverlap(const Rect& rect) const { return (isIntersectX(rect) && isIntersectsY(rect)); } + + void clamp(const Rect& bounds) { + Vec2 p3(pos + size); + Vec2 max = bounds.pos + bounds.size; + + pos.clamp(bounds.pos, max); + p3.clamp(bounds.pos, max); + + size = p3 - pos; + } + + // if only one point isInside + bool clampOutside(Vec2& v1, Vec2& v2) { + bool const in1 = isInside(v1); + bool const in2 = isInside(v2); + if (!in1 && !in2) return false; + + if (in1) { + if (!intersectLines2D(p2(), p3(), v1, v2, &v1)) { + if (!intersectLines2D(p1(), p4(), v1, v2, &v1)) { + if (!intersectLines2D(p1(), p2(), v1, v2, &v1)) { + intersectLines2D(p3(), p4(), v1, v2, &v1); + } + } + } + return true; + } + + if (!intersectLines2D(p2(), p3(), v1, v2, &v2)) { + if (!intersectLines2D(p1(), p4(), v1, v2, &v2)) { + if (!intersectLines2D(p1(), p2(), v1, v2, &v2)) { + intersectLines2D(p3(), p4(), v1, v2, &v2); + } + } + } + return true; + } + + uhalni clampInside(Vec2& v1, Vec2& v2) { + bool const in1 = isInside(v1); + bool const in2 = isInside(v2); + + if (in1 && in2) return 2; + + Vec2 v1copy = v1; + Vec2 v2copy = v2; + + if (in1 || in2) { + if (!intersectLines2D(p2(), p3(), v1copy, v2copy, &v2)) { + if (!intersectLines2D(p1(), p4(), v1copy, v2copy, &v2)) { + if (!intersectLines2D(p1(), p2(), v1copy, v2copy, &v2)) { + intersectLines2D(p3(), p4(), v1copy, v2copy, &v2); + } + } + } + return 1; + } + + DEBUG_ASSERT(0) + return 0; + } + + template + Rect operator*(ConversionType val) { + Rect out; + out.pos = pos * val; + out.size = size * val; + return out; + } + + Vec2 center() { return pos + size / 2.f; } + + public: + union { + Vec2 v1; + Vec2 pos; + struct { + Type x; + Type y; + }; + }; + + union { + Vec2 v2; + Vec2 size; + struct { + Type z; + Type w; + }; + }; + }; } \ No newline at end of file diff --git a/Math/public/Topology.hpp b/Math/public/Topology.hpp index 1296637..92cb1a0 100644 --- a/Math/public/Topology.hpp +++ b/Math/public/Topology.hpp @@ -1,48 +1,49 @@ -#pragma once - -#include "Camera.hpp" -#include "Buffer.hpp" - -namespace tp { - - class TrigCache { - static Vec3F gHitPos; - - public: - ualni mP1, mP2, mP3; - Vec3F mEdgeP1P2, mEdgeP1P3; - Vec3F mNormal; - Vec3F mOrigin; - - public: - TrigCache(); - TrigCache(const TrigCache& in); - TrigCache(ualni v1, ualni v2, ualni v3); - - public: - static const Vec3F& getHitPos() ; - [[nodiscard]] const Vec3F& getNormal() const; - - public: - void updateCache(const Buffer& points); - [[nodiscard]] bool castRay(const Ray& ray) const; - }; - - class Topology { - mat3f mBasis; - Vec3F mOrigin; - - Buffer mPoints; - Buffer mPointsTransformed; - Buffer mTrigCaches; - - public: - Topology() = default; - ~Topology() = default; - - public: - void addTrig(const Vec3F& v1, const Vec3F& v2, const Vec3F& v3); - void transformPoint(Vec3F& vert); - void updateTransformed(); - }; -} \ No newline at end of file +#pragma once + +#include "Buffer.hpp" +#include "Camera.hpp" + +namespace tp { + + class TrigCache { + static Vec3F gHitPos; + + public: + ualni mP1, mP2, mP3; + Vec3F mEdgeP1P2, mEdgeP1P3; + Vec3F mNormal; + Vec3F mOrigin; + + public: + TrigCache(); + TrigCache(const TrigCache& in); + TrigCache(ualni v1, ualni v2, ualni v3); + + public: + static const Vec3F& getHitPos(); + [[nodiscard]] const Vec3F& getNormal() const; + + public: + void updateCache(const Buffer& points); + [[nodiscard]] bool castRay(const Ray& ray) const; + }; + + struct Topology { + Vec3F Origin = { 0, 0, 0 }; + mat3f Basis = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } }; + + Buffer Points; + Buffer Normals; + Buffer> Indexes; + }; + + struct TopologyCache { + const Topology* Source = nullptr; + + Buffer TransformedPoints; + Buffer TransformedNormals; + Buffer TrigCaches; + + void updateCache(); + }; +} diff --git a/Math/public/Trig.hpp b/Math/public/Trig.hpp index 956e234..5ab78d5 100644 --- a/Math/public/Trig.hpp +++ b/Math/public/Trig.hpp @@ -1,25 +1,25 @@ -#pragma once - -#include "Vec.hpp" - -namespace tp { - - class Trig { - public: - Trig(); - Trig(const Vec3F& v0, const Vec3F& v1, const Vec3F& v2); - - public: - Vec3F p1; - Vec3F p2; - Vec3F p3; - - public: - void assign(const Vec3F& v0, const Vec3F& v1, const Vec3F& v2); - void normal(Vec3F& dir) const; - bool rayHit(class Ray& ray, Vec3F& HitPos) const; - - public: - ~Trig(); - }; +#pragma once + +#include "Vec.hpp" + +namespace tp { + + class Trig { + public: + Trig(); + Trig(const Vec3F& v0, const Vec3F& v1, const Vec3F& v2); + + public: + Vec3F p1; + Vec3F p2; + Vec3F p3; + + public: + void assign(const Vec3F& v0, const Vec3F& v1, const Vec3F& v2); + void normal(Vec3F& dir) const; + bool rayHit(class Ray& ray, Vec3F& HitPos) const; + + public: + ~Trig(); + }; } \ No newline at end of file diff --git a/Math/public/Vec.hpp b/Math/public/Vec.hpp index 5c165e1..27d502d 100644 --- a/Math/public/Vec.hpp +++ b/Math/public/Vec.hpp @@ -1,649 +1,577 @@ -#pragma once - -#include "MathCommon.hpp" - -namespace tp { - - template - class Vec { - typedef SelCopyArg TypeArg; - - private: - Type mBuff[tSize]; - - inline const Type& get(ualni i) const { return mBuff[i]; } - inline Type& get(ualni i) { return mBuff[i]; } - inline Type& set(ualni i, TypeArg arg) { return mBuff[i] = arg; } - - public: - - Vec() { - MODULE_SANITY_CHECK(gModuleMath) - } - - Vec(TypeArg val) { - assign(val); - } - - Vec(TypeArg val1, TypeArg val2, TypeArg val3, TypeArg val4) { - static_assert(tSize == 4); - mBuff[0] = val1; - mBuff[1] = val2; - mBuff[2] = val3; - mBuff[3] = val4; - } - - Vec(TypeArg val1, TypeArg val2, TypeArg val3, TypeArg val4, TypeArg val5) { - static_assert(tSize == 5); - mBuff[0] = val1; - mBuff[1] = val2; - mBuff[2] = val3; - mBuff[3] = val4; - mBuff[4] = val5; - } - - Vec(TypeArg val1, TypeArg val2, TypeArg val3, TypeArg val4, TypeArg val5, TypeArg val6) { - static_assert(tSize == 6); - mBuff[0] = val1; - mBuff[1] = val2; - mBuff[2] = val3; - mBuff[3] = val4; - mBuff[4] = val5; - mBuff[5] = val6; - } - - Vec(const Vec& in) { - memCopy(mBuff, in.mBuff, sizeof(Type) * tSize); - } - - Type& operator[](ualni i) { - DEBUG_ASSERT(i < tSize && i >= 0) - return mBuff[i]; - } - - const Type& operator[](ualni i) const { - DEBUG_ASSERT(i < tSize && i >= 0) - return mBuff[i]; - } - - Vec operator-() { - Vec out; - for (halni i = 0; i < tSize; i++) { - out.get(i) = -get(i); - } - return out; - } - - // write - Vec& operator+=(const Vec& val) { - for (ualni i = 0; i < tSize; i++) { - get(i) += val[i]; - } - return *this; - } - - Vec& operator-=(const Vec& val) { - for (ualni i = 0; i < tSize; i++) { - get(i) -= val[i]; - } - return *this; - } - - Vec& operator+=(Type val) { - for (ualni i = 0; i < tSize; i++) { - get(i) += val; - } - return *this; - } - - Vec& operator-=(Type val) { - for (ualni i = 0; i < tSize; i++) { - get(i) -= val; - } - return *this; - } - - Vec& operator*=(Type val) { - for (ualni i = 0; i < tSize; i++) { - get(i) *= val; - } - return *this; - } - - Vec& operator/=(Type val) { - for (ualni i = 0; i < tSize; i++) { - get(i) /= val; - } - return *this; - } - - void assign(Type val) { - for (ualni i = 0; i < tSize; i++) { - get(i) = val; - } - } - - // create on stack - Vec operator+(const Vec& in) const { - Vec out; - for (ualni i = 0; i < tSize; i++) { - out[i] = in[i] + get(i); - } - return out; - } - - Vec operator-(const Vec& in) const { - Vec out; - for (ualni i = 0; i < tSize; i++) { - out[i] = in[i] - get(i); - } - return out; - } - - Vec operator+(Type val) const { - Vec out; - for (ualni i = 0; i < tSize; i++) { - out[i] = get(i) + val; - } - return out; - } - - Vec operator-(Type val) const { - Vec out; - for (ualni i = 0; i < tSize; i++) { - out[i] = get(i) - val; - } - return out; - } - - Vec operator*(Type val) const { - Vec out; - for (ualni i = 0; i < tSize; i++) { - out[i] = get(i) * val; - } - return out; - } - - Vec operator/(Type val) const { - Vec out; - for (ualni i = 0; i < tSize; i++) { - out[i] = get(i) / val; - } - return out; - } - - // Vector Properties - Type dot(const Vec& in) const { - Type out = 0; - for (ualni i = 0; i < tSize; i++) { - out += get(i) * in.get(i); - } - return out; - } - - Type operator*(const Vec& in) const { - return dot(in); - } - - alnf length2() const { - alnf sum = 0; - for (ualni i = 0; i < tSize; i++) { - Type val = get(i); - sum += val * val; - } - return sum; - } - - alnf length() const { - return sqrt(length2()); - } - - Vec& normalize() { - operator/=((Type) length()); - return *this; - } - - Vec unitV() { - return Vec(*this).normalize(); - } - - // Comparisons - bool operator>(const Vec& in) const { return this->length2() > in.length2(); } - bool operator<(const Vec& in) const { return this->length2() < in.length2(); } - bool operator>=(const Vec& in) const { return this->length2() >= in.length2(); } - bool operator<=(const Vec& in) const { return this->length2() <= in.length2(); } - - bool operator==(const Vec& in) const { - for (ualni i = 0; i < tSize; i++) { - if (get(i) != in.get(i)) { - return false; - } - } - return true; - } - - bool operator!=(const Vec& in) const { - return !operator==(in); - } - }; - - template - using Vec2 = Vec; - - using Vec2F = Vec; - using Vec2I = Vec; - - template - class Vec { - - public: - Type x; - Type y; - - Vec() : x(0), y(0) {} - - // Initialization - template - Vec(TypeIn aX, TypeIn aY) { - x = (Type) aX; - y = (Type) aY; - } - - template - Vec(TypeIn Vec[2]) { - x = (Type) Vec[0]; - y = (Type) Vec[1]; - } - - template - Vec(TypeIn val) { - x = y = (Type) val; - } - - template - Vec(Vec& Vec) { - x = (Type) Vec.x; - y = (Type) Vec.y; - } - - template - void assign(TypeIn aX, TypeIn aY) { - x = (Type) aX; - y = (Type) aY; - } - - template - void assign(const Vec& in) { - x = (Type) in.x; - y = (Type) in.y; - } - - template - void assign(TypeIn in[2]) { - x = (Type) in[0]; - y = (Type) in[1]; - } - - template - Vec& operator=(TypeIn val) { - x = y = (Type) val; - return *this; - } - - // Conversion - template - Vec& operator=(const Vec& in) { - x = (Type) in.x; - y = (Type) in.y; - return *this; - } - - // create on stack - Vec2 operator+(const Vec2& in) const { return Vec2(x + in.x, y + in.y); } - Vec2 operator-(const Vec2& in) const { return Vec2(x - in.x, y - in.y); } - Vec2 operator+(Type val) const { return Vec2(x + val, y + val); } - Vec2 operator-(Type val) const { return Vec2(x - val, y - val); } - Vec2 operator*(Type val) const { return Vec2(x * val, y * val); } - Vec2 operator/(Type val) const { return Vec2(x / val, y / val); } - - // write - void operator-=(Type val) { - x -= val; - y -= val; - } - - void operator+=(Type val) { - x += val; - y += val; - } - - void operator-=(const Vec2& Vec) { - x -= Vec.x; - y -= Vec.y; - } - - void operator+=(const Vec2& Vec) { - x += Vec.x; - y += Vec.y; - } - - void operator*=(Type val) { - x *= val; - y *= val; - } - - void operator/=(Type val) { - x /= val; - y /= val; - } - - void operator/=(const Vec2& in) { - x /= in.x; - y /= in.y; - } - - void operator*=(const Vec2& in) { - x *= in.x; - y *= in.y; - } - - bool compareEach(const Vec& in) const { return (x > in.x && y > in.y); } - - bool operator>(const Vec& in) const { return length2() > in.length2(); } - bool operator<(const Vec& in) const { return length2() < in.length2(); } - bool operator>=(const Vec& in) const { return length2() >= in.length2(); } - bool operator<=(const Vec& in) const { return length2() <= in.length2(); } - bool operator==(const Vec& in) const { return (x == in.x && y == in.y); } - bool operator!=(const Vec& in) const { return (x != in.x || y != in.y); } - - Type& operator[](bool axes) { return (&x)[axes]; } - - const Type& operator[](bool axes) const { return (&x)[axes]; } - - // Vector Properties - alnf operator*(const Vec& in) const { - return dot(in); - } - - alnf dot(const Vec& in) const { - return (x * in.x + y * in.y); - } - - Vec unitV() const { - return Vec(*this / (Type) this->length()); - } - - void normalize() { - *this /= (Type) length(); - } - - Vec normal() { - return { -y, x }; - } - - alnf length2() const { - return (x * x + y * y); - } - - alnf length() const { - Type const tmp = (Type) (x * x + y * y); - return sqrt(tmp); - } - - // Vector Transformation - void Rot(float cosA, float sinA) { - Type tmp = x; - x = x * cosA - y * sinA; - y = tmp * sinA + y * cosA; - } - - void clamp(const Vec& min, const Vec& max) { - tp::clamp(x, min.x, max.x); - tp::clamp(y, min.y, max.y); - } - }; - - template - using Vec3 = Vec; - - using Vec3F = Vec3; - using Vec3I = Vec3; - - template - class Vec { - - public: - - Type x; - Type y; - Type z; - - // Initialization - Vec() {} - - Vec(const Vec& in) { - x = in[0]; - y = in[1]; - z = in[2]; - } - - Vec(Type aX, Type aY, Type aZ) { - x = aX; - y = aY; - z = aZ; - } - - Vec(Type Vec[3]) { - x = Vec[0]; - y = Vec[1]; - z = Vec[2]; - } - - Vec(Type x) { - assign(x); - } - - Vec(const Vec& Vec) { - x = Vec.x; - y = Vec.y; - z = Vec.z; - } - - void assign(Type aX, Type aY, Type aZ) { - x = aX; - y = aY; - z = aZ; - } - - void assign(const Vec& in) { - x = in.x; - y = in.y; - z = in.z; - } - - void assign(Type val) { - x = val; - y = val; - z = val; - } - - Vec& operator=(const Vec& in) { - x = in.x; - y = in.y; - z = in.z; - return *this; - } - - Vec& operator=(const Type* in) { - x = in[0]; - y = in[1]; - z = in[2]; - return *this; - } - - Type& operator[](alni i) { - DEBUG_ASSERT(i < 3 && i >= 0) - return (&x)[i]; - } - - const Type& operator[](alni i) const { - DEBUG_ASSERT(i < 3 && i >= 0) - return (&x)[i]; - } - - // create on stack - Vec operator+(const Vec& in) const { - return Vec(x + in.x, y + in.y, z + in.z); - } - - Vec operator-(const Vec& in) const { - return Vec(x - in.x, y - in.y, z - in.z); - } - - Vec operator+(Type val) const { - return Vec(x + val, y + val, z + val); - } - - Vec operator-(Type val) const { - return Vec(x - val, y - val, z - val); - } - - Vec operator*(Type val) const { - return Vec(x * val, y * val, z * val); - } - - Vec operator/(Type val) const { - return Vec(x / val, y / val, z / val); - } - - - // compare - bool operator>(const Vec& Vec) const { - return length2() > Vec.length2(); - } - - bool operator<(const Vec& Vec) const { - return length2() < Vec.length2(); - } - - bool operator>=(const Vec& Vec) const { - return length2() >= Vec.length2(); - } - - bool operator<=(const Vec& Vec) const { - return length2() <= Vec.length2(); - } - - bool operator==(const Vec& Vec) const { - return (x == Vec.x && y == Vec.y && z == Vec.z); - } - - // write - Vec operator-() { - return Vec(-x, -y, -z); - } - - void operator -= (Type val) { - x -= val; - y -= val; - z -= val; - } - - void operator += (Type val) { - x += val; - y += val; - z += val; - } - - void operator -= (const Vec& in) { - x -= in.x; - y -= in.y; - z -= in.z; - } - - void operator += (const Vec& in) { - x += in.x; - y += in.y; - z += in.z; - } - - void operator *= (Type val) { - x *= val; - y *= val; - z *= val; - } - - void operator /= (Type val) { - x /= val; - y /= val; - z /= val; - } - - // Vector Properties - Type dot(const Vec& in) const { - return (x * in.x + y * in.y + z * in.z); - } - - alnf length() const { - return sqrt((halnf) (x * x + y * y + z * z)); - } - - Type length2() const { - return (x * x + y * y + z * z); - } - - Vec unitV() const { - return *this / (Type) this->length(); - } - - Vec& normalize() { - *this /= (Type) this->length(); - return *this; - } - - Vec cross(const Vec& in) const { - return Vec( - y * in.z - z * in.y, - z * in.x - x * in.z, - x * in.y - y * in.x - ); - } - - Vec operator*(const Vec& in) const { - return cross(in); - } - - // Vector Transformation - void rotZ(alnf cosA, alnf sinA) { - Type tmp = x; - x = (Type) (x * cosA - y * sinA); - y = (Type) (tmp * sinA + y * cosA); - } - - void rotY(float cosA, float sinA) { - Type tmp = x; - x = (Type) (x * cosA - z * sinA); - z = (Type) (tmp * sinA + z * cosA); - } - - void rotX(float cosA, float sinA) { - Type tmp = y; - y = (Type) (y * cosA - z * sinA); - z = (Type) (tmp * sinA + z * cosA); - } - - halnf angelX() const { - return (halnf) atan2(y, z); - } - - halnf angelY() const { - return (halnf) atan2(x, z); - } - }; - - template - using Vec4 = Vec; - - using Vec4F = Vec4; - using Vec4I = Vec4; +#pragma once + +#include "MathCommon.hpp" + +namespace tp { + + template + class Vec { + typedef SelectValueOrReference TypeArg; + + private: + Type mBuff[tSize]; + + inline const Type& get(ualni i) const { return mBuff[i]; } + inline Type& get(ualni i) { return mBuff[i]; } + inline Type& set(ualni i, TypeArg arg) { return mBuff[i] = arg; } + + public: + Vec() = default; + + explicit Vec(TypeArg val) { assign(val); } + + Vec(TypeArg val1, TypeArg val2, TypeArg val3, TypeArg val4) { + static_assert(tSize == 4); + mBuff[0] = val1; + mBuff[1] = val2; + mBuff[2] = val3; + mBuff[3] = val4; + } + + Vec(TypeArg val1, TypeArg val2, TypeArg val3, TypeArg val4, TypeArg val5) { + static_assert(tSize == 5); + mBuff[0] = val1; + mBuff[1] = val2; + mBuff[2] = val3; + mBuff[3] = val4; + mBuff[4] = val5; + } + + Vec(TypeArg val1, TypeArg val2, TypeArg val3, TypeArg val4, TypeArg val5, TypeArg val6) { + static_assert(tSize == 6); + mBuff[0] = val1; + mBuff[1] = val2; + mBuff[2] = val3; + mBuff[3] = val4; + mBuff[4] = val5; + mBuff[5] = val6; + } + + Vec(const Vec& in) { memCopy(mBuff, in.mBuff, sizeof(Type) * tSize); } + + Type& operator[](ualni i) { + DEBUG_ASSERT(i < tSize && i >= 0) + return mBuff[i]; + } + + const Type& operator[](ualni i) const { + DEBUG_ASSERT(i < tSize && i >= 0) + return mBuff[i]; + } + + Vec operator-() { + Vec out; + for (halni i = 0; i < tSize; i++) { + out.get(i) = -get(i); + } + return out; + } + + // write + Vec& operator+=(const Vec& val) { + for (ualni i = 0; i < tSize; i++) { + get(i) += val[i]; + } + return *this; + } + + Vec& operator-=(const Vec& val) { + for (ualni i = 0; i < tSize; i++) { + get(i) -= val[i]; + } + return *this; + } + + Vec& operator+=(Type val) { + for (ualni i = 0; i < tSize; i++) { + get(i) += val; + } + return *this; + } + + Vec& operator-=(Type val) { + for (ualni i = 0; i < tSize; i++) { + get(i) -= val; + } + return *this; + } + + Vec& operator*=(Type val) { + for (ualni i = 0; i < tSize; i++) { + get(i) *= val; + } + return *this; + } + + Vec& operator/=(Type val) { + for (ualni i = 0; i < tSize; i++) { + get(i) /= val; + } + return *this; + } + + void assign(Type val) { + for (ualni i = 0; i < tSize; i++) { + get(i) = val; + } + } + + // create on stack + Vec operator+(const Vec& in) const { + Vec out; + for (ualni i = 0; i < tSize; i++) { + out[i] = in[i] + get(i); + } + return out; + } + + Vec operator-(const Vec& in) const { + Vec out; + for (ualni i = 0; i < tSize; i++) { + out[i] = in[i] - get(i); + } + return out; + } + + Vec operator+(Type val) const { + Vec out; + for (ualni i = 0; i < tSize; i++) { + out[i] = get(i) + val; + } + return out; + } + + Vec operator-(Type val) const { + Vec out; + for (ualni i = 0; i < tSize; i++) { + out[i] = get(i) - val; + } + return out; + } + + Vec operator*(Type val) const { + Vec out; + for (ualni i = 0; i < tSize; i++) { + out[i] = get(i) * val; + } + return out; + } + + Vec operator/(Type val) const { + Vec out; + for (ualni i = 0; i < tSize; i++) { + out[i] = get(i) / val; + } + return out; + } + + // Vector Properties + Type dot(const Vec& in) const { + Type out = 0; + for (ualni i = 0; i < tSize; i++) { + out += get(i) * in.get(i); + } + return out; + } + + Type operator*(const Vec& in) const { return dot(in); } + + [[nodiscard]] alnf length2() const { + alnf sum = 0; + for (ualni i = 0; i < tSize; i++) { + Type val = get(i); + sum += val * val; + } + return sum; + } + + [[nodiscard]] alnf length() const { return sqrt(length2()); } + + Vec& normalize() { + operator/=((Type) length()); + return *this; + } + + Vec unitV() { return Vec(*this).normalize(); } + + // Comparisons + bool operator>(const Vec& in) const { return this->length2() > in.length2(); } + bool operator<(const Vec& in) const { return this->length2() < in.length2(); } + bool operator>=(const Vec& in) const { return this->length2() >= in.length2(); } + bool operator<=(const Vec& in) const { return this->length2() <= in.length2(); } + + bool operator==(const Vec& in) const { + for (ualni i = 0; i < tSize; i++) { + if (get(i) != in.get(i)) { + return false; + } + } + return true; + } + + bool operator!=(const Vec& in) const { return !operator==(in); } + }; + + template + using Vec2 = Vec; + + using Vec2F = Vec; + using Vec2I = Vec; + + template + class Vec { + + public: + Type x; + Type y; + + Vec() : + x(0), + y(0) {} + + // Initialization + template + Vec(TypeIn aX, TypeIn aY) { + x = (Type) aX; + y = (Type) aY; + } + + template + explicit Vec(TypeIn Vec[2]) { + x = (Type) Vec[0]; + y = (Type) Vec[1]; + } + + template + explicit Vec(TypeIn val) { + x = y = (Type) val; + } + + template + explicit Vec(Vec& Vec) { + x = (Type) Vec.x; + y = (Type) Vec.y; + } + + template + void assign(TypeIn aX, TypeIn aY) { + x = (Type) aX; + y = (Type) aY; + } + + template + void assign(const Vec& in) { + x = (Type) in.x; + y = (Type) in.y; + } + + template + void assign(TypeIn in[2]) { + x = (Type) in[0]; + y = (Type) in[1]; + } + + template + Vec& operator=(TypeIn val) { + x = y = (Type) val; + return *this; + } + + // Conversion + template + Vec& operator=(const Vec& in) { + x = (Type) in.x; + y = (Type) in.y; + return *this; + } + + // create on stack + Vec2 operator+(const Vec2& in) const { return Vec2(x + in.x, y + in.y); } + Vec2 operator-(const Vec2& in) const { return Vec2(x - in.x, y - in.y); } + Vec2 operator+(Type val) const { return Vec2(x + val, y + val); } + Vec2 operator-(Type val) const { return Vec2(x - val, y - val); } + Vec2 operator*(Type val) const { return Vec2(x * val, y * val); } + Vec2 operator/(Type val) const { return Vec2(x / val, y / val); } + Vec2 operator/(Vec2 val) const { return Vec2(x / val.x, y / val.y); } + + // write + void operator-=(Type val) { + x -= val; + y -= val; + } + + void operator+=(Type val) { + x += val; + y += val; + } + + void operator-=(const Vec2& Vec) { + x -= Vec.x; + y -= Vec.y; + } + + void operator+=(const Vec2& Vec) { + x += Vec.x; + y += Vec.y; + } + + void operator*=(Type val) { + x *= val; + y *= val; + } + + void operator/=(Type val) { + x /= val; + y /= val; + } + + void operator/=(const Vec2& in) { + x /= in.x; + y /= in.y; + } + + void operator*=(const Vec2& in) { + x *= in.x; + y *= in.y; + } + + bool compareEach(const Vec& in) const { return (x > in.x && y > in.y); } + + bool operator>(const Vec& in) const { return length2() > in.length2(); } + bool operator<(const Vec& in) const { return length2() < in.length2(); } + bool operator>=(const Vec& in) const { return length2() >= in.length2(); } + bool operator<=(const Vec& in) const { return length2() <= in.length2(); } + bool operator==(const Vec& in) const { return (x == in.x && y == in.y); } + bool operator!=(const Vec& in) const { return (x != in.x || y != in.y); } + + Type& operator[](bool axes) { return (&x)[axes]; } + + const Type& operator[](bool axes) const { return (&x)[axes]; } + + // Vector Properties + alnf operator*(const Vec& in) const { return dot(in); } + + alnf dot(const Vec& in) const { return (x * in.x + y * in.y); } + + Vec unitV() const { return Vec(*this / (Type) this->length()); } + + void normalize() { *this /= (Type) length(); } + + Vec normal() { return { -y, x }; } + + [[nodiscard]] alnf length2() const { return (x * x + y * y); } + + [[nodiscard]] alnf length() const { + Type const tmp = (Type) (x * x + y * y); + return sqrt(tmp); + } + + // Vector Transformation + void Rot(float cosA, float sinA) { + Type tmp = x; + x = x * cosA - y * sinA; + y = tmp * sinA + y * cosA; + } + + void clamp(const Vec& min, const Vec& max) { + tp::clamp(x, min.x, max.x); + tp::clamp(y, min.y, max.y); + } + }; + + template + using Vec3 = Vec; + + using Vec3F = Vec3; + using Vec3I = Vec3; + + template + class Vec { + + public: + Type x; + Type y; + Type z; + + // Initialization + Vec() = default; + + explicit Vec(const Vec& in) { + x = in[0]; + y = in[1]; + z = in[2]; + } + + Vec(Type aX, Type aY, Type aZ) { + x = aX; + y = aY; + z = aZ; + } + + explicit Vec(Type Vec[3]) { + x = Vec[0]; + y = Vec[1]; + z = Vec[2]; + } + + explicit Vec(Type x) { assign(x); } + + Vec(const Vec& Vec) { + x = Vec.x; + y = Vec.y; + z = Vec.z; + } + + void assign(Type aX, Type aY, Type aZ) { + x = aX; + y = aY; + z = aZ; + } + + void assign(const Vec& in) { + x = in.x; + y = in.y; + z = in.z; + } + + void assign(Type val) { + x = val; + y = val; + z = val; + } + + Vec& operator=(const Vec& in) { + x = in.x; + y = in.y; + z = in.z; + return *this; + } + + Vec& operator=(const Type* in) { + x = in[0]; + y = in[1]; + z = in[2]; + return *this; + } + + Type& operator[](alni i) { + DEBUG_ASSERT(i < 3 && i >= 0) + return (&x)[i]; + } + + const Type& operator[](alni i) const { + DEBUG_ASSERT(i < 3 && i >= 0) + return (&x)[i]; + } + + // create on stack + Vec operator+(const Vec& in) const { return Vec(x + in.x, y + in.y, z + in.z); } + + Vec operator-(const Vec& in) const { return Vec(x - in.x, y - in.y, z - in.z); } + + Vec operator+(Type val) const { return Vec(x + val, y + val, z + val); } + + Vec operator-(Type val) const { return Vec(x - val, y - val, z - val); } + + Vec operator*(Type val) const { return Vec(x * val, y * val, z * val); } + + Vec operator/(Type val) const { return Vec(x / val, y / val, z / val); } + + // compare + bool operator>(const Vec& Vec) const { return length2() > Vec.length2(); } + + bool operator<(const Vec& Vec) const { return length2() < Vec.length2(); } + + bool operator>=(const Vec& Vec) const { return length2() >= Vec.length2(); } + + bool operator<=(const Vec& Vec) const { return length2() <= Vec.length2(); } + + bool operator==(const Vec& Vec) const { return (x == Vec.x && y == Vec.y && z == Vec.z); } + + // write + Vec operator-() { return Vec(-x, -y, -z); } + + void operator-=(Type val) { + x -= val; + y -= val; + z -= val; + } + + void operator+=(Type val) { + x += val; + y += val; + z += val; + } + + void operator-=(const Vec& in) { + x -= in.x; + y -= in.y; + z -= in.z; + } + + void operator+=(const Vec& in) { + x += in.x; + y += in.y; + z += in.z; + } + + void operator*=(Type val) { + x *= val; + y *= val; + z *= val; + } + + void operator/=(Type val) { + x /= val; + y /= val; + z /= val; + } + + // Vector Properties + Type dot(const Vec& in) const { return (x * in.x + y * in.y + z * in.z); } + + [[nodiscard]] alnf length() const { return sqrt((halnf) (x * x + y * y + z * z)); } + + Type length2() const { return (x * x + y * y + z * z); } + + Vec unitV() const { return *this / (Type) this->length(); } + + Vec& normalize() { + *this /= (Type) this->length(); + return *this; + } + + Vec cross(const Vec& in) const { return Vec(y * in.z - z * in.y, z * in.x - x * in.z, x * in.y - y * in.x); } + + Vec operator*(const Vec& in) const { return cross(in); } + + // Vector Transformation + void rotZ(alnf cosA, alnf sinA) { + Type tmp = x; + x = (Type) (x * cosA - y * sinA); + y = (Type) (tmp * sinA + y * cosA); + } + + void rotY(float cosA, float sinA) { + Type tmp = x; + x = (Type) (x * cosA - z * sinA); + z = (Type) (tmp * sinA + z * cosA); + } + + void rotX(float cosA, float sinA) { + Type tmp = y; + y = (Type) (y * cosA - z * sinA); + z = (Type) (tmp * sinA + z * cosA); + } + + [[nodiscard]] halnf angelX() const { return (halnf) atan2(y, z); } + + [[nodiscard]] halnf angelY() const { return (halnf) atan2(x, z); } + }; + + template + using Vec4 = Vec; + + using Vec4F = Vec4; + using Vec4I = Vec4; } \ No newline at end of file diff --git a/Math/tests/TestCommon.cpp b/Math/tests/TestCommon.cpp deleted file mode 100644 index b76e9b5..0000000 --- a/Math/tests/TestCommon.cpp +++ /dev/null @@ -1,14 +0,0 @@ - -#include "Testing.hpp" - -#include - -using namespace tp; - -TEST_DEF_STATIC(Simple) { - -} - -TEST_DEF(Math) { - testSimple(); -} \ No newline at end of file diff --git a/Math/tests/Tests.cpp b/Math/tests/Tests.cpp index 360c400..a551449 100644 --- a/Math/tests/Tests.cpp +++ b/Math/tests/Tests.cpp @@ -1,26 +1,46 @@ - -#include "Testing.hpp" -#include "Utils.hpp" - -#include - -static bool init(const tp::ModuleManifest* self) { - tp::gTesting.setRootName(self->getName()); - return true; -} - -void testMath(); - -int main() { - - tp::ModuleManifest* deps[] = { &tp::gModuleUtils, nullptr }; - tp::ModuleManifest testModule("ContainersTest", init, nullptr, deps); - - if (!testModule.initialize()) { - return 1; - } - - testMath(); - - testModule.deinitialize(); -} + +#include "ComplexNumbers.hpp" + +#include "UnitTest++/UnitTest++.h" + +using namespace tp; + +SUITE(Math) { + TEST(ComplexNumber) { + CHECK((ComplexCart{ 3, 4 }.mod() == 5)); + CHECK((abs(ComplexCart{ 1, 1 }.arg() - 0.7853981633974483) < 0.001)); + CHECK((ComplexCart{ 3, 4 }.norm2() == 25)); + + { + ComplexCart cn{ 3, 4 }; + ComplexCart expected{ 0.12, -0.16 }; + auto val = cn.reciprocal(); + CHECK((val == expected)); + } + + { + ComplexCart cn{ 3, 4 }; + ComplexCart expected{ 3, -4 }; + CHECK((cn.conjugate() == expected)); + } + + { + ComplexCart cn1{ 3, 4 }; + ComplexCart cn2{ 1, 2 }; + ComplexCart expected{ -5, 10 }; + CHECK((cn1 * cn2 == expected)); + } + + { + ComplexRad c1{ 5, 7 }; + ComplexRad c2{ 10, 3 }; + ComplexCart tmp1 = (c1 * c2).cart(); + ComplexCart tmp2 = (c1.cart() * c2.cart()); + CHECK((tmp1 - tmp2).mod() < 0.001); + } + } +} + +int main() { + return UnitTest::RunAllTests(); +} diff --git a/Modules/CMakeLists.txt b/Modules/CMakeLists.txt index c3c6221..7b27be0 100644 --- a/Modules/CMakeLists.txt +++ b/Modules/CMakeLists.txt @@ -1,8 +1,3 @@ - -cmake_minimum_required(VERSION 3.2) - -set(CMAKE_CXX_STANDARD 23) - project(Modules) ### ---------------------- Static Library --------------------- ### @@ -12,9 +7,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC ./public/) ### -------------------------- Tests -------------------------- ### enable_testing() -add_executable(${PROJECT_NAME}Tests ${CMAKE_CURRENT_SOURCE_DIR}/tests/Tests.cpp) -target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) - - -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file +file(GLOB SOURCES_TEST "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${SOURCES_TEST}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} UnitTest++) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) \ No newline at end of file diff --git a/Modules/README.md b/Modules/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/Modules/private/Assert.cpp b/Modules/private/Assert.cpp index 6539d66..1d2fa9b 100644 --- a/Modules/private/Assert.cpp +++ b/Modules/private/Assert.cpp @@ -1,26 +1,22 @@ - -#include "Assert.hpp" - -#include -#include - -using namespace tp; - -void tp::_assert_(const char* exp, const char* file, int line) { - if (!exp) { - exp = "no info"; - } - printf("\nERROR: Assertion Failure - %s -- %s:%i\n", exp, file, line); - -#ifdef ENV_BUILD_DEBUG - DEBUG_BREAK(true); -#else - exit(1); -#endif - - -} - -void tp::terminate(tp::alni code) { - exit((int)code); -} \ No newline at end of file + +#include "Assert.hpp" + +#include +#include + +using namespace tp; + +void tp::_assert_(const char* exp, const char* file, int line) { + if (!exp) { + exp = "no info"; + } + printf("\nERROR: Assertion Failure - %s -- %s:%i\n", exp, file, line); + +#ifdef ENV_BUILD_DEBUG + DEBUG_BREAK(true); +#else + exit(1); +#endif +} + +void tp::terminate(tp::alni code) { exit((int) code); } \ No newline at end of file diff --git a/Modules/private/Common.cpp b/Modules/private/Common.cpp index b92b59a..bf0e60a 100644 --- a/Modules/private/Common.cpp +++ b/Modules/private/Common.cpp @@ -29,6 +29,8 @@ namespace tp { return v + 1; } + ualni hash(const void* bytes) { return hash((const char*) bytes); } + ualni hash(const char* bytes) { unsigned long hash = 5381; int c; @@ -39,8 +41,9 @@ namespace tp { } ualni hash(alni bytes) { return abs(bytes); } - ualni hash(alnf bytes) { return (alni)(abs(bytes)); } + ualni hash(alnf bytes) { return (alni) (abs(bytes)); } ualni hash(halni bytes) { return hash(alni(bytes)); } ualni hash(uhalni bytes) { return hash(alni(bytes)); } ualni hash(ualni bytes) { return hash(alni(bytes)); } + ualni hash(const std::string& in) { return hash(in.c_str()); } } \ No newline at end of file diff --git a/Modules/private/Environment.cpp b/Modules/private/Environment.cpp index fd78f1e..d3b4ab3 100644 --- a/Modules/private/Environment.cpp +++ b/Modules/private/Environment.cpp @@ -9,13 +9,12 @@ const char* ToolchainString[] = { "UNDEF", "GNU", "LLVM", "MSVC" }; const char* OSString[] = { "UNDEF", "LINUX", "WINDOWS", "ANDROID", "IOS" }; const char* ArchWidthString[] = { "UNDEF", "X64", "X32" }; - const tp::Environment tp::gEnvironment; void tp::Environment::log() const { - std::cout << "ARCH : " << ArchString[(int)mArch] << "\n"; - std::cout << "WIDTH : " << ArchWidthString[(int)mWidth] << "\n"; - std::cout << "CURRENT OS : " << OSString[(int)mOS] << "\n"; - std::cout << "TOOLCHAIN : " << ToolchainString[(int)mToolchain] << "\n"; - std::cout << "BUILD TYPE : " << BuildTypeString[(int)mBuildType] << "\n"; + std::cout << "ARCH : " << ArchString[(int) mArch] << "\n"; + std::cout << "WIDTH : " << ArchWidthString[(int) mWidth] << "\n"; + std::cout << "CURRENT OS : " << OSString[(int) mOS] << "\n"; + std::cout << "TOOLCHAIN : " << ToolchainString[(int) mToolchain] << "\n"; + std::cout << "BUILD TYPE : " << BuildTypeString[(int) mBuildType] << "\n"; } \ No newline at end of file diff --git a/Modules/private/Module.cpp b/Modules/private/Module.cpp index 0a67342..178f330 100644 --- a/Modules/private/Module.cpp +++ b/Modules/private/Module.cpp @@ -1,81 +1,73 @@ - -#include "Module.hpp" - -#include - -using namespace tp; - -static bool init(const ModuleManifest* self) { - gEnvironment.log(); - return true; -} - -static ModuleManifest* deps[] = { nullptr }; -ModuleManifest tp::gModuleBase = ModuleManifest("Common", init, nullptr, deps); - -ModuleManifest::ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies) { - mInit = aInit; - mDeinit = aDeinit; - mDependencies = aDependencies; - mModuleName = aModuleName; -} - -bool ModuleManifest::isInitialized() const { - return mInitialized; -} - -bool ModuleManifest::initialize() { - - mInitCount++; - - if (isInitialized()) { - return true; - } - - mInitialized = true; - - for (auto module = mDependencies; module && *module; module++) { - mInitialized &= (*module)->initialize(); - } - - std::cout << "====== Initializing \"" << mModuleName << "\"\n"; - - if (mInit) mInitialized &= mInit(this); - - if (!mInitialized) { - std::cout << "Failed to Initialize.\n"; - } - - return mInitialized; -} - -void ModuleManifest::deinitialize() { - mInitCount--; - - if (mInitCount > 0) { - return; - } - - if (!isInitialized()) { - return; - } - - if (mDeinit) mDeinit(this); - mInitialized = false; - - auto len = 0; - for (auto module = mDependencies; module && *module; module++) { - len++; - } - - for (auto i = 0; i < len; i++) { - auto module = mDependencies + (len - i - 1); - if ((*module)->isInitialized()) { - (*module)->deinitialize(); - } - } -} - -const char *ModuleManifest::getName() const { - return mModuleName; -} + +#include "Module.hpp" + +#include + +using namespace tp; + +ModuleManifest::ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies) { + mInit = aInit; + mDeinit = aDeinit; + mDependencies = aDependencies; + mModuleName = aModuleName; +} + +bool ModuleManifest::isInitialized() const { return mInitialized; } + +bool ModuleManifest::initialize(const ModuleManifest* parent) { + + if (!parent) std::cout << "===== Initialization Start =====\n"; + + mInitCount++; + + if (isInitialized()) { + return true; + } + + mInitialized = true; + + for (auto module = mDependencies; module && *module; module++) { + mInitialized &= (*module)->initialize(this); + } + + std::cout << " * Initializing \"" << mModuleName << "\" from \"" << (parent ? parent->mModuleName : mModuleName) << "\"\n"; + + if (mInit) mInitialized &= mInit(this); + + if (!mInitialized) { + std::cout << "Failed to Initialize.\n"; + } + + if (!parent) std::cout << "===== Initialization End =====\n\n"; + + return mInitialized; +} + +void ModuleManifest::deinitialize() { + mInitCount--; + + if (mInitCount > 0) { + return; + } + + if (!isInitialized()) { + return; + } + + if (mDeinit) mDeinit(this); + mInitialized = false; + + auto len = 0; + for (auto module = mDependencies; module && *module; module++) { + len++; + } + + for (auto i = 0; i < len; i++) { + auto module = mDependencies + (len - i - 1); + if ((*module)->isInitialized()) { + (*module)->deinitialize(); + } + } +} + +const char* ModuleManifest::getName() const { return mModuleName; } diff --git a/Utils/private/Timing.cpp b/Modules/private/Timing.cpp similarity index 66% rename from Utils/private/Timing.cpp rename to Modules/private/Timing.cpp index 518a4f7..45bc56d 100644 --- a/Utils/private/Timing.cpp +++ b/Modules/private/Timing.cpp @@ -5,8 +5,7 @@ #include "Timing.hpp" #include "Utils.hpp" -#define GETTIMEMSC() (time_ms)\ - (std::chrono::duration_cast(std::chrono::time_point_cast(std::chrono::high_resolution_clock::now()).time_since_epoch()).count()) +#define GETTIMEMSC() (time_ms)(std::chrono::duration_cast(std::chrono::time_point_cast(std::chrono::high_resolution_clock::now()).time_since_epoch()).count()) #define THREAD_SLEEP(time_ms) std::this_thread::sleep_for(std::chrono::milliseconds(time_ms)) @@ -18,10 +17,7 @@ namespace tp { return gCurrentTime; } - void sleep(time_ms mDuration) { - THREAD_SLEEP(mDuration); - } - + void sleep(time_ms mDuration) { THREAD_SLEEP(mDuration); } Timer::Timer() { mDuration = 0; @@ -33,21 +29,13 @@ namespace tp { this->mDuration = mDuration; } - bool Timer::isTimeout() { - return mDuration < GETTIMEMSC() - mStart; - } + bool Timer::isTimeout() { return mDuration < GETTIMEMSC() - mStart; } - void Timer::reset() { - mStart = GETTIMEMSC(); - } + void Timer::reset() { mStart = GETTIMEMSC(); } - time_ms Timer::timePassed() { - return GETTIMEMSC() - mStart; - } + time_ms Timer::timePassed() { return GETTIMEMSC() - mStart; } - time_ms Timer::remainder() { - return mDuration - (GETTIMEMSC() - mStart); - } + time_ms Timer::remainder() { return mDuration - (GETTIMEMSC() - mStart); } time_ms Timer::start() { return mStart; } time_ms Timer::duration() { return mDuration; } @@ -59,6 +47,7 @@ namespace tp { } } + // TODO remove float Timer::easeIn(time_ms pDuration) { if (!pDuration) { pDuration = mDuration; @@ -67,6 +56,7 @@ namespace tp { return clamp((1.1f * x) / (x + 0.1f), 0.f, 1.f); } + // TODO remove float Timer::easeOut(time_ms pDuration) { if (!pDuration) { pDuration = mDuration; diff --git a/Utils/private/Utils.cpp b/Modules/private/Utils.cpp similarity index 77% rename from Utils/private/Utils.cpp rename to Modules/private/Utils.cpp index 48e351b..bbc0cce 100644 --- a/Utils/private/Utils.cpp +++ b/Modules/private/Utils.cpp @@ -1,34 +1,9 @@ #include "Utils.hpp" -#include "ContainersCommon.hpp" - -#include "Testing.hpp" - -#include - -void initializeCallStackCapture(); -void deinitializeCallStackCapture(); - -static bool initialize(const tp::ModuleManifest*) { - initializeCallStackCapture(); - return true; -} - -static void deinitialize(const tp::ModuleManifest*) { - deinitializeCallStackCapture(); - tp::gTesting.reportState(); - if (tp::gTesting.hasFailed()) { exit(1); } -} - namespace tp { - static ModuleManifest* sModuleUtilsDeps[] = { &gModuleContainers, nullptr }; - ModuleManifest gModuleUtils = ModuleManifest("Utils", initialize, deinitialize, sModuleUtilsDeps); - void memSetVal(void* p, uhalni byteSize, uint1 val) { - MODULE_SANITY_CHECK(gModuleBase) - alni alignedVal = val; alignedVal = (alignedVal << 8) | alignedVal; alignedVal = (alignedVal << 16) | alignedVal; @@ -46,8 +21,6 @@ namespace tp { } void memCopy(void* left, const void* right, uhalni len) { - MODULE_SANITY_CHECK(gModuleBase) - ualni alignedLen = len / sizeof(alni); for (ualni idx = 0; idx < alignedLen; idx++) { ((alni*) left)[idx] = ((alni*) right)[idx]; @@ -60,7 +33,6 @@ namespace tp { } int1 memCompare(const void* left, const void* right, uhalni len) { - MODULE_SANITY_CHECK(gModuleBase) if (!len) return 0; ualni alignedLength = len / sizeof(alni); @@ -87,9 +59,9 @@ namespace tp { return 0; } + bool memEqual(const void* left, const void* right, uhalni len) { return memCompare(left, right, len) == 0; } int1 memCompareVal(const void* left, uhalni len, uint1 val) { - MODULE_SANITY_CHECK(gModuleBase) if (!len) return 0; alni valAligned = val; diff --git a/Modules/public/Archiver.hpp b/Modules/public/Archiver.hpp new file mode 100644 index 0000000..b25ac50 --- /dev/null +++ b/Modules/public/Archiver.hpp @@ -0,0 +1,143 @@ +#pragma once + +#include "Common.hpp" + +#include + +namespace tp { + + // Used to transfer data to or from some sort of archive + // Abstracts interface so that actual archive must only overload readBytes and writeBytes + // The main idea is that it transfers data as bytes only if this type of data does not have special API functions + template + class ArchiverTemplate { + public: + struct HasFunc { + typedef ArchiverTemplate& ArchRef; + template + struct Write : FalseType {}; + template + struct Write()().archiveWrite(DeclareValue()()))>> : TrueType {}; + + template + struct Read : FalseType {}; + template + struct Read()().archiveRead(DeclareValue()()))>> : TrueType {}; + + template + struct Archive : FalseType {}; + template + struct Archive()().archive(DeclareValue()()))>> : TrueType {}; + + template + struct AssertCombinations { + static constexpr auto assert() { + if (HasFunc::template Read::value != HasFunc::template Write::value) return false; + if (HasFunc::template Read::value) { + if (HasFunc::template Read::value == HasFunc::template Archive::value) return false; + } + return true; + } + }; + }; + + public: + virtual void writeBytes(const int1* val, ualni size) = 0; + virtual void readBytes(int1* val, ualni size) = 0; + + public: + ArchiverTemplate() = default; + + // check if type has explicit write method. if not write as bytes + template + void operator<<(const Type& val) { + static_assert(!std::is_same::value); + + static_assert(!tRead); + static_assert(HasFunc::template AssertCombinations::assert()); + if constexpr (HasFunc::template Write::value) { + val.archiveWrite(*this); + } else { + writeBytes((const int1*) &val, sizeof(Type)); + } + } + + // check if type has explicit read method. if not read as bytes + template + void operator>>(Type& val) { + static_assert(!std::is_same::value); + + static_assert(tRead); + static_assert(HasFunc::template AssertCombinations::assert()); + if constexpr (HasFunc::template Read::value) { + val.archiveRead(*this); + } else { + readBytes((int1*) &val, sizeof(Type)); + } + } + + // check if type has explicit archive method. if not read/write as bytes + template + void operator%(Type& val) { + static_assert(!std::is_same::value); + + static_assert(HasFunc::template AssertCombinations::assert()); + if constexpr (HasFunc::template Archive::value) { + val.archive(*this); + } else { + if constexpr (tRead) { + operator>>(val); + } else { + operator<<(val); + } + } + } + + template + void operator%(const Type& val) { + static_assert(!std::is_same::value); + + static_assert(HasFunc::template AssertCombinations::assert()); + if constexpr (HasFunc::template Archive::value) { + ((Type&) val).archive(*this); + } else { + if constexpr (tRead) { + operator>>(val); + } else { + operator<<(val); + } + } + } + }; + + template + class ArchiverExample : public ArchiverTemplate { + public: + ArchiverExample() = default; + + protected: + void incrementAddresses(ualni size) { + if (mFirstNotWritten == mAddress) mFirstNotWritten += size; + mAddress += size; + } + + void writeBytes(const int1* val, ualni size) override { + for (auto i = 0; i < size; i++) + mBuff[mAddress + i] = val[i]; + incrementAddresses(size); + } + + void readBytes(int1* val, ualni size) override { + for (auto i = 0; i < size; i++) + val[i] = mBuff[mAddress + i]; + incrementAddresses(size); + } + + public: + int1 mBuff[tMaxMemory]{}; + + private: + ualni mAddress = 0; + ualni mFirstNotWritten = 0; + }; +} \ No newline at end of file diff --git a/Modules/public/Assert.hpp b/Modules/public/Assert.hpp index c85ac87..f1f8a5f 100644 --- a/Modules/public/Assert.hpp +++ b/Modules/public/Assert.hpp @@ -1,34 +1,42 @@ - -#pragma once - -#include "Environment.hpp" - -namespace tp { - void _assert_(const char* exp, const char* file, int line); - void terminate(tp::alni code = 0); -}; - -#define FAIL(exp) tp::_assert_(#exp, __FILE__, __LINE__); -#define ASSERT(exp) if (!(exp)) { FAIL(exp) } - -#undef assert -#ifdef ENV_BUILD_DEBUG -#define DEBUG_ASSERT(exp) ASSERT(exp) -#else -#define DEBUG_ASSERT(exp) {} -#endif - - - -#if defined(ENV_OS_WINDOWS) - #define DEBUG_BREAK(expr) if (expr) { __debugbreak(); } -#elif defined(ENV_OS_ANDROID) - #define DEBUG_BREAK(expr) if (expr) { __builtin_debugtrap(); } -#elif defined(ENV_OS_LINUX) - #define DEBUG_BREAK(expr) if (expr) { __builtin_trap(); } -#else - #define DEBUG_BREAK(expr) () -#endif - - -#define SWITCH_NO_DEF default : { FAIL("No Default Case Possible"); } \ No newline at end of file + +#pragma once + +#include "Environment.hpp" + +namespace tp { + void _assert_(const char* exp, const char* file, int line); + void terminate(tp::alni code = 0); +}; + +#define FAIL(exp) tp::_assert_(#exp, __FILE__, __LINE__); +#define ASSERT(exp) \ + if (!(exp)) { \ + FAIL(exp) \ + } + +#undef assert +#ifdef ENV_BUILD_DEBUG +#define DEBUG_ASSERT(exp) ASSERT(exp) +#else +#define DEBUG_ASSERT(exp) \ + {} +#endif + +#if defined(ENV_OS_WINDOWS) +#define DEBUG_BREAK(expr) \ + if (expr) { \ + __debugbreak(); \ + } +#elif defined(ENV_OS_ANDROID) +#define DEBUG_BREAK(expr) \ + if (expr) { \ + __builtin_debugtrap(); \ + } +#elif defined(ENV_OS_LINUX) +#define DEBUG_BREAK(expr) \ + if (expr) { \ + __builtin_trap(); \ + } +#else +#define DEBUG_BREAK(expr) () +#endif \ No newline at end of file diff --git a/Modules/public/Common.hpp b/Modules/public/Common.hpp index 047f964..423a6c2 100644 --- a/Modules/public/Common.hpp +++ b/Modules/public/Common.hpp @@ -4,56 +4,118 @@ #include "Environment.hpp" #include "TypeInfo.hpp" #include +#include +#include +#include namespace tp { - template - using init_list = std::initializer_list; + template + using InitialierList = std::initializer_list; // Selects whether to pass by constant reference or by value template - using SelCopyArg = typename TypeSelect<(sizeof(tType) > sizeof(tp::alni)), const tType&, tType>::Result; + using SelectValueOrReference = typename TypeSelect<(sizeof(tType) > sizeof(void*)), const tType&, tType>::Result; + template + using SelectValueOrReferenceOf = + typename TypeSelect<(sizeof(tType) > sizeof(void*)), const tTypeResult&, tTypeResult>::Result; + + template + using VoidType = void; + + template + struct Reference { + tType& operator()() {} + }; + + template + struct DeclareValue { + tType operator()() {} + }; + + struct TrueType { + static constexpr auto value = true; + }; + + struct FalseType { + static constexpr auto value = false; + }; +} + +namespace tp { ualni next2pow(ualni v); uhalni next2pow(uhalni v); ufalni next2pow(ufalni v); + ualni hash(const void* bytes); ualni hash(const char* bytes); ualni hash(alni bytes); ualni hash(halni bytes); ualni hash(uhalni bytes); ualni hash(ualni bytes); ualni hash(alnf bytes); + ualni hash(const std::string& in); template - [[nodiscard]] T clamp(T v, T l, T u) { if (v < l) { v = l; } else if (v > u) { v = u; } return v; } + T clamp(T v, T l, T u) { + if (v < l) { + v = l; + } else if (v > u) { + v = u; + } + return v; + } template - [[nodiscard]] T max(T a, T b) { return (a > b) ? a : b; } + [[nodiscard]] T max(T a, T b) { + return (a > b) ? a : b; + } template - [[nodiscard]] T min(T a, T b) { return (a < b) ? a : b; } + [[nodiscard]] T min(T a, T b) { + return (a < b) ? a : b; + } template - [[nodiscard]] T abs(T v) { if (v < 0) { return -v; } return v; } + [[nodiscard]] T abs(T v) { + if (v < 0) { + return -v; + } + return v; + } template - inline void swap(T& t1, T& t2) { const T tmp = t1; t1 = t2; t2 = tmp; } + inline void swap(T& t1, T& t2) { + const T tmp = t1; + t1 = t2; + t2 = tmp; + } // only for x > 0 and y > 0 template - [[nodiscard]] T ceil_positive(T x, T y) { return T( 1 + ((x - 1) / (tp::alnf)y) ); } + [[nodiscard]] T ceil_positive(T x, T y) { + return T(1 + ((x - 1) / (tp::alnf) y)); + } // power template [[nodiscard]] T pow(T x, uhalni n) { - T out = x; for (uhalni i = 0; i < n - 1; i++) { out = out * x; } + if (n == 0) return 1; + T out = x; + for (uhalni i = 0; i < n - 1; i++) { + out = out * x; + } return out; } - template + template halni nDig10(Type val) { - val = abs(val); halni out = 0; - while (val != 0) { val = halni(val / 10); out++; } + val = abs(val); + halni out = 0; + while (val != 0) { + val = halni(val / 10); + out++; + } return out; } } \ No newline at end of file diff --git a/Modules/public/Environment.hpp b/Modules/public/Environment.hpp index 80ad849..43bc75a 100644 --- a/Modules/public/Environment.hpp +++ b/Modules/public/Environment.hpp @@ -1,198 +1,197 @@ - -#pragma once - -#include -#include - -namespace tp { - - class Environment { - public: - - enum class Arch { UNDEF, INTEL, ARM } mArch = Arch::UNDEF; - - // Build Type - #if defined(__DEBUG__) || defined(_DEBUG) || defined(DEBUG) || !defined(NDEBUG) - #define ENV_BUILD_DEBUG - enum class BuildType { UNDEF, DEBUG, RELEASE } mBuildType = BuildType::DEBUG; - #else - #define ENV_BUILD_RELEASE - enum class BuildType { UNDEF, DEBUG, RELEASE } mBuildType = BuildType::RELEASE; - #endif - - // MCVS - #ifdef _MSC_VER - #define ENV_COMPILER_MSVC - enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::MSVC; - - // VERSION - // TODO - - // TARGET OS - #if defined(_WIN32) || defined(_WIN64) - #define ENV_OS_WINDOWS - enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::WINDOWS; - #else - enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::UNDEF; - #error "unexplored compilation to os target" - #endif - - // TARGET ALIGNED SIZE - #ifdef _WIN64 - enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64; - #define ENV_BITS_64 - #else - enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32; - #define ENV_BITS_32 - #endif - - #endif - - // GCC - #if defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER) - #define ENV_COMPILER_GCC - enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::GNU; - - // VERSION - #if (__GNUC___ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)) - // TODO - #endif - - // TARGET OS - #if defined(__linux__) && !defined(__ANDROID__) - #define ENV_OS_LINUX - enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::LINUX; - #else - #error "unexplored compilation to os target" - #endif - - // TARGET ALIGNED SIZE - #if defined(__aarch64__) || defined(__x86_64__) || defined(__ARM_64BIT_STATE) - #define ENV_BITS_64 - enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64; - #elif defined(__x86_64__) || defined(i386) - #define ENV_BITS_32 - enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32; - #endif - - #endif - - // CLANG - #if defined(__clang__) && !defined(ENV_COMPILER_GCC) - #define ENV_COMPILER_CLANG - enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::LLVM; - - // VERSION - #if (__clang_major__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)) - // TODO - #endif - - // TARGET OS - #if defined(__linux__) && !defined(__ANDROID__) - #define ENV_OS_LINUX - enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::LINUX; - #elif defined(__ANDROID__) - enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::ANDOID; - #define ENV_OS_ANDROID - #else - #error "unexplored compilation to target os" - #endif - - // TARGET ALIGNED SIZE - #if defined(__aarch64__) || defined(__x86_64__) || defined(__ARM_64BIT_STATE) - #define ENV_BITS_64 - enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64; - #elif defined(__x86_64__) || defined(i386) - #define ENV_BITS_32 - enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32; - #endif - - #endif - - #if defined(__EMSCRIPTEN__) || defined(__MINGW32__) || defined(__MINGW32__) || defined(__MINGW64__) - #error "compiler is not supported" - #else - #if !(defined(ENV_COMPILER_MSVC) || defined(ENV_COMPILER_CLANG) || defined(ENV_COMPILER_GCC)) - // Linux and Linux - derived __linux__ - // Darwin(Mac OS X and iOS) __APPLE__ - // Akaros __ros__ - // NaCL __native_client__ - // AsmJS __asmjs__ - // Fuschia __Fuchsia__ - #error "unknown compiler" - #endif - #endif - - void log() const; - }; - - #ifndef ENV_BITS_64 - #error "ERROR - not 64 bit archytectures are out of support" - #endif - - const extern Environment gEnvironment; - - typedef char int1; - typedef unsigned char uint1; - typedef short int2; - typedef unsigned short uint2; - typedef unsigned int uint4; - typedef uint2 ufalni; - typedef uint4 uhalni; - typedef int int4; - typedef int4 halni; - typedef unsigned long long uint8; - typedef uint8 ualni; - typedef long long int8; - typedef int8 alni; - typedef double flt8; - typedef flt8 alnf; - typedef float flt4; - typedef flt4 halnf; - - #define ENV_INT1_MAX tp::int1( 0x7f) - #define ENV_INT1_MIN (-tp::int1(0x80)) - #define ENV_UINT1_MAX tp::uint1(0xff) - #define ENV_UINT1_MIN tp::uint1(0x00) - #define ENV_INT2_MAX tp::int2( 0x7fff) - #define ENV_INT2_MIN (-tp::int2(0x8000)) - #define ENV_UINT2_MAX tp::uint2(0xffff) - #define ENV_UINT2_MIN tp::uint2(0x0000) - #define ENV_UHALNI_MAX tp::uhalni(0xffffffff) - #define ENV_UHALNI_MIN tp::uhalni(0x00000000) - #define ENV_HALNI_MAX tp::halni( 0x7fffffff) - #define ENV_HALNI_MIN (-tp::halni(0x80000000)) - #define ENV_UALNI_MAX tp::ualni(0xffffffffffffffff) - #define ENV_UALNI_MIN tp::ualni(0x0000000000000000) - #define ENV_ALNI_MAX tp::alni( 0x7fffffffffffffff) - #define ENV_ALNI_MIN (-tp::alni(0x8000000000000000)) - #define ENV_ALNI_SIZE_B (8) - #define ENV_ALNF_DECIMAL_DIG DBL_DECIMAL_DIG - #define ENV_ALNF_DIG DBL_DIG - #define ENV_ALNF_EPSILON DBL_EPSILON - #define ENV_ALNF_HAS_SUBNORM DBL_HAS_SUBNORM - #define ENV_ALNF_MANT_DIG DBL_MANT_DIG - #define ENV_ALNF_MAX DBL_MAX - #define ENV_ALNF_MAX_10_EXP DBL_MAX_10_EXP - #define ENV_ALNF_MAX_EXP DBL_MAX_EXP - #define ENV_ALNF_MIN DBL_MIN - #define ENV_ALNF_MIN_10_EXP DBL_MIN_10_EXP - #define ENV_ALNF_MIN_EXP DBL_MIN_EXP - #define ENV_ALNF_RADIX _DBL_RADIX - #define ENV_ALNF_TRUE_MIN DBL_TRUE_MIN - #define ENV_HALNF_DECIMAL_DIG FLT_DECIMAL_DIG - #define ENV_HALNF_DIG FLT_DIG - #define ENV_HALNF_EPSILON FLT_EPSILON - #define ENV_HALNF_HAS_SUBNORM FLT_HAS_SUBNORM - #define ENV_HALNF_GUARD FLT_GUARD - #define ENV_HALNF_MANT_DIG FLT_MANT_DIG - #define ENV_HALNF_MAX FLT_MAX - #define ENV_HALNF_MAX_10_EXP FLT_MAX_10_EXP - #define ENV_HALNF_MAX_EXP FLT_MAX_EXP - #define ENV_HALNF_MIN FLT_MIN - #define ENV_HALNF_MIN_10_EXP FLT_MIN_10_EXP - #define ENV_HALNF_MIN_EXP FLT_MIN_EXP - #define ENV_HALNF_NORMALIZE FLT_NORMALIZE - #define ENV_HALNF_RADIX FLT_RADIX - #define ENV_HALNF_TRUE_MIN FLT_TRUE_MIN + +#pragma once + +#include +#include + +namespace tp { + + class Environment { + public: + enum class Arch { UNDEF, INTEL, ARM } mArch = Arch::UNDEF; + +// Build Type +#if defined(__DEBUG__) || defined(_DEBUG) || defined(DEBUG) || !defined(NDEBUG) +#define ENV_BUILD_DEBUG + enum class BuildType { UNDEF, DEBUG, RELEASE } mBuildType = BuildType::DEBUG; +#else +#define ENV_BUILD_RELEASE + enum class BuildType { UNDEF, DEBUG, RELEASE } mBuildType = BuildType::RELEASE; +#endif + +// MCVS +#ifdef _MSC_VER +#define ENV_COMPILER_MSVC + enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::MSVC; + +// VERSION +// TODO + +// TARGET OS +#if defined(_WIN32) || defined(_WIN64) +#define ENV_OS_WINDOWS + enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::WINDOWS; +#else + enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::UNDEF; +#error "unexplored compilation to os target" +#endif + +// TARGET ALIGNED SIZE +#ifdef _WIN64 + enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64; +#define ENV_BITS_64 +#else + enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32; +#define ENV_BITS_32 +#endif + +#endif + +// GCC +#if defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER) +#define ENV_COMPILER_GCC + enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::GNU; + +// VERSION +#if (__GNUC___ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)) + // TODO +#endif + +// TARGET OS +#if defined(__linux__) && !defined(__ANDROID__) +#define ENV_OS_LINUX + enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::LINUX; +#else +#error "unexplored compilation to os target" +#endif + +// TARGET ALIGNED SIZE +#if defined(__aarch64__) || defined(__x86_64__) || defined(__ARM_64BIT_STATE) +#define ENV_BITS_64 + enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64; +#elif defined(__x86_64__) || defined(i386) +#define ENV_BITS_32 + enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32; +#endif + +#endif + +// CLANG +#if defined(__clang__) && !defined(ENV_COMPILER_GCC) +#define ENV_COMPILER_CLANG + enum class Toolchain { UNDEF, GNU, LLVM, MSVC } mToolchain = Toolchain::LLVM; + +// VERSION +#if (__clang_major__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)) + // TODO +#endif + +// TARGET OS +#if defined(__linux__) && !defined(__ANDROID__) +#define ENV_OS_LINUX + enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::LINUX; +#elif defined(__ANDROID__) + enum class OS { UNDEF, LINUX, WINDOWS, ANDROID, IOS } mOS = OS::ANDOID; +#define ENV_OS_ANDROID +#else +#error "unexplored compilation to target os" +#endif + +// TARGET ALIGNED SIZE +#if defined(__aarch64__) || defined(__x86_64__) || defined(__ARM_64BIT_STATE) +#define ENV_BITS_64 + enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X64; +#elif defined(__x86_64__) || defined(i386) +#define ENV_BITS_32 + enum class ArchWidth { UNDEF, X64, X32 } mWidth = ArchWidth::X32; +#endif + +#endif + +#if defined(__EMSCRIPTEN__) || defined(__MINGW32__) || defined(__MINGW32__) || defined(__MINGW64__) +#error "compiler is not supported" +#else +#if !(defined(ENV_COMPILER_MSVC) || defined(ENV_COMPILER_CLANG) || defined(ENV_COMPILER_GCC)) + // Linux and Linux - derived __linux__ +// Darwin(Mac OS X and iOS) __APPLE__ +// Akaros __ros__ +// NaCL __native_client__ +// AsmJS __asmjs__ +// Fuschia __Fuchsia__ +#error "unknown compiler" +#endif +#endif + + void log() const; + }; + +#ifndef ENV_BITS_64 +#error "ERROR - not 64 bit archytectures are out of support" +#endif + + const extern Environment gEnvironment; + + typedef char int1; + typedef unsigned char uint1; + typedef short int2; + typedef unsigned short uint2; + typedef unsigned int uint4; + typedef uint2 ufalni; + typedef uint4 uhalni; + typedef int int4; + typedef int4 halni; + typedef unsigned long long uint8; + typedef uint8 ualni; + typedef long long int8; + typedef int8 alni; + typedef double flt8; + typedef flt8 alnf; + typedef float flt4; + typedef flt4 halnf; + +#define ENV_INT1_MAX tp::int1(0x7f) +#define ENV_INT1_MIN (-tp::int1(0x80)) +#define ENV_UINT1_MAX tp::uint1(0xff) +#define ENV_UINT1_MIN tp::uint1(0x00) +#define ENV_INT2_MAX tp::int2(0x7fff) +#define ENV_INT2_MIN (-tp::int2(0x8000)) +#define ENV_UINT2_MAX tp::uint2(0xffff) +#define ENV_UINT2_MIN tp::uint2(0x0000) +#define ENV_UHALNI_MAX tp::uhalni(0xffffffff) +#define ENV_UHALNI_MIN tp::uhalni(0x00000000) +#define ENV_HALNI_MAX tp::halni(0x7fffffff) +#define ENV_HALNI_MIN (-tp::halni(0x80000000)) +#define ENV_UALNI_MAX tp::ualni(0xffffffffffffffff) +#define ENV_UALNI_MIN tp::ualni(0x0000000000000000) +#define ENV_ALNI_MAX tp::alni(0x7fffffffffffffff) +#define ENV_ALNI_MIN (-tp::alni(0x8000000000000000)) +#define ENV_ALNI_SIZE_B (8) +#define ENV_ALNF_DECIMAL_DIG DBL_DECIMAL_DIG +#define ENV_ALNF_DIG DBL_DIG +#define ENV_ALNF_EPSILON DBL_EPSILON +#define ENV_ALNF_HAS_SUBNORM DBL_HAS_SUBNORM +#define ENV_ALNF_MANT_DIG DBL_MANT_DIG +#define ENV_ALNF_MAX DBL_MAX +#define ENV_ALNF_MAX_10_EXP DBL_MAX_10_EXP +#define ENV_ALNF_MAX_EXP DBL_MAX_EXP +#define ENV_ALNF_MIN DBL_MIN +#define ENV_ALNF_MIN_10_EXP DBL_MIN_10_EXP +#define ENV_ALNF_MIN_EXP DBL_MIN_EXP +#define ENV_ALNF_RADIX _DBL_RADIX +#define ENV_ALNF_TRUE_MIN DBL_TRUE_MIN +#define ENV_HALNF_DECIMAL_DIG FLT_DECIMAL_DIG +#define ENV_HALNF_DIG FLT_DIG +#define ENV_HALNF_EPSILON FLT_EPSILON +#define ENV_HALNF_HAS_SUBNORM FLT_HAS_SUBNORM +#define ENV_HALNF_GUARD FLT_GUARD +#define ENV_HALNF_MANT_DIG FLT_MANT_DIG +#define ENV_HALNF_MAX FLT_MAX +#define ENV_HALNF_MAX_10_EXP FLT_MAX_10_EXP +#define ENV_HALNF_MAX_EXP FLT_MAX_EXP +#define ENV_HALNF_MIN FLT_MIN +#define ENV_HALNF_MIN_10_EXP FLT_MIN_10_EXP +#define ENV_HALNF_MIN_EXP FLT_MIN_EXP +#define ENV_HALNF_NORMALIZE FLT_NORMALIZE +#define ENV_HALNF_RADIX FLT_RADIX +#define ENV_HALNF_TRUE_MIN FLT_TRUE_MIN }; \ No newline at end of file diff --git a/Modules/public/Module.hpp b/Modules/public/Module.hpp index d198af2..c036678 100644 --- a/Modules/public/Module.hpp +++ b/Modules/public/Module.hpp @@ -1,31 +1,34 @@ - -#pragma once - -#include "Common.hpp" -#include "Assert.hpp" - -#define MODULE_SANITY_CHECK(name) DEBUG_ASSERT(name.isInitialized() && "Modules Is Not Initialized" && #name) - -namespace tp { - - class ModuleManifest { - public: - typedef bool (*ModuleInit)(const ModuleManifest*); - typedef void (*ModuleDeinit)(const ModuleManifest*); - - ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies); - [[nodiscard]] bool isInitialized() const; - bool initialize(); - void deinitialize(); - [[nodiscard]] const char* getName() const; - private: - const char* mModuleName = nullptr; - ModuleManifest** mDependencies; // NULL terminated - bool mInitialized = false; - ModuleInit mInit = nullptr; - ModuleDeinit mDeinit = nullptr; - uhalni mInitCount = 0; - }; - - extern ModuleManifest gModuleBase; -}; + +#pragma once + +#include "Assert.hpp" +#include "Utils.hpp" +#include "Common.hpp" + +#define MODULE_SANITY_CHECK(name) DEBUG_ASSERT(name.isInitialized() && "Modules Is Not Initialized" && #name) + +namespace tp { + + class ModuleManifest { + public: + typedef bool (*ModuleInit)(const ModuleManifest*); + typedef void (*ModuleDeinit)(const ModuleManifest*); + + ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies); + [[nodiscard]] bool isInitialized() const; + bool initialize(const ModuleManifest* parent = nullptr); + void deinitialize(); + [[nodiscard]] const char* getName() const; + void setCustomData(void* data) { mCustomData = data; } + void* getCustomData(void* data) const { return mCustomData; } + + private: + const char* mModuleName = nullptr; + ModuleManifest** mDependencies; // NULL terminated + bool mInitialized = false; + ModuleInit mInit = nullptr; + ModuleDeinit mDeinit = nullptr; + uhalni mInitCount = 0; + void* mCustomData = nullptr; + }; +}; diff --git a/Modules/public/SizeCounter.hpp b/Modules/public/SizeCounter.hpp new file mode 100644 index 0000000..3622d49 --- /dev/null +++ b/Modules/public/SizeCounter.hpp @@ -0,0 +1,65 @@ +#pragma once + +#include "Archiver.hpp" + +namespace tp { + + class SaveSizeCounter : public ArchiverTemplate { + public: + SaveSizeCounter() = default; + + template + static ualni calc(const tType& val) { + SaveSizeCounter cnt; + cnt << val; + return cnt.mSize; + } + + protected: + void writeBytes(const int1* val, ualni size) override { mSize += size; } + void readBytes(int1* val, ualni size) override {} + + [[nodiscard]] ualni getSize() const { return mSize; } + + private: + ualni mSize = 0; + }; + + // TODO + template + class SizeCounter { + typedef SizeCounter& ArchRef; + template + struct HasSizeCounter : FalseType {}; + template + struct HasSizeCounter()().count(DeclareValue()()))>> : TrueType {}; + + public: + SizeCounter() = default; + + template + void count(const Type& val) { + if constexpr (HasSizeCounter::value) { + val.count(*this); + } else { + if constexpr (tRecursive) { + count(sizeof(val)); + } else { + mSize += sizeof(Type); + } + } + } + + void countSizeUnused(ualni size) { mSizeUnused += size; } + + void countSize(ualni size) { mSize += size; } + + [[nodiscard]] ualni getSizeUnused() const { return mSizeUnused; } + + [[nodiscard]] ualni getSize() const { return mSize; } + + private: + ualni mSize = 0; + ualni mSizeUnused = 0; + }; +} \ No newline at end of file diff --git a/Utils/public/Sorting.hpp b/Modules/public/Sorting.hpp similarity index 94% rename from Utils/public/Sorting.hpp rename to Modules/public/Sorting.hpp index 70e602f..53c0c03 100644 --- a/Utils/public/Sorting.hpp +++ b/Modules/public/Sorting.hpp @@ -1,97 +1,95 @@ - -#pragma once - -#include "Utils.hpp" - -namespace tp { - - template - inline bool compare(const Type& val1, const Type& val2) { - return val1 > val2; - } - - struct SortMerge { - - template - static void sort(Type* buff, int length, bool (*grater)(const Type& obj1, const Type& obj2) = &compare) { - mergeSort(buff, 0, length - 1, grater); - } - - private: - - template - static void merge(Type* buff, int left, int middle, int right, bool (*grater)(const Type& obj1, const Type& obj2)) { - int n1 = middle - left + 1; - int n2 = right - middle; - - Type* Left = new Type[n1]; - Type* Right = new Type[n2]; - - for (int i = 0; i < n1; i++) { - Left[i] = buff[left + i]; - } - - for (int j = 0; j < n2; j++) { - Right[j] = buff[middle + 1 + j]; - } - - int i = 0; - int j = 0; - int k = left; - - while (i < n1 && j < n2) { - if (!(grater(Left[i], Right[j]))) { - buff[k] = Left[i]; - i++; - } else { - buff[k] = Right[j]; - j++; - } - k++; - } - - while (i < n1) { - buff[k] = Left[i]; - i++; - k++; - } - - while (j < n2) { - buff[k] = Right[j]; - j++; - k++; - } - - delete[] Left; - delete[] Right; - } - - template - static void mergeSort(Type* buff, int left, int right, bool (*grater)(const Type& obj1, const Type& obj2)) { - - if (left >= right) { - return; - } - - int middle = left + (right - left) / 2; - - mergeSort(buff, left, middle, grater); - mergeSort(buff, middle + 1, right, grater); - merge(buff, left, middle, right, grater); - } - - }; - - struct SortInsert { - template - static void sort(Type* buff, int length, bool (*grater)(const Type& obj1, const Type& obj2) = &compare) { - for (int i = 0; i < length; i++) { - for (int j = i + 1; j < length; j++) { - if (grater(*buff[i], *buff[j])) { - swap(buff[i], buff[j]); - } - } - } - } - }; + +#pragma once + +#include "Utils.hpp" + +namespace tp { + + template + inline bool compare(const Type& val1, const Type& val2) { + return val1 > val2; + } + + struct SortMerge { + + template + static void sort(Type* buff, int length, bool (*grater)(const Type& obj1, const Type& obj2) = &compare) { + mergeSort(buff, 0, length - 1, grater); + } + + private: + template + static void merge(Type* buff, int left, int middle, int right, bool (*grater)(const Type& obj1, const Type& obj2)) { + int n1 = middle - left + 1; + int n2 = right - middle; + + Type* Left = new Type[n1]; + Type* Right = new Type[n2]; + + for (int i = 0; i < n1; i++) { + Left[i] = buff[left + i]; + } + + for (int j = 0; j < n2; j++) { + Right[j] = buff[middle + 1 + j]; + } + + int i = 0; + int j = 0; + int k = left; + + while (i < n1 && j < n2) { + if (!(grater(Left[i], Right[j]))) { + buff[k] = Left[i]; + i++; + } else { + buff[k] = Right[j]; + j++; + } + k++; + } + + while (i < n1) { + buff[k] = Left[i]; + i++; + k++; + } + + while (j < n2) { + buff[k] = Right[j]; + j++; + k++; + } + + delete[] Left; + delete[] Right; + } + + template + static void mergeSort(Type* buff, int left, int right, bool (*grater)(const Type& obj1, const Type& obj2)) { + + if (left >= right) { + return; + } + + int middle = left + (right - left) / 2; + + mergeSort(buff, left, middle, grater); + mergeSort(buff, middle + 1, right, grater); + merge(buff, left, middle, right, grater); + } + }; + + struct SortInsert { + template + static void sort(Type* buff, int length, bool (*grater)(const Type& obj1, const Type& obj2) = &compare) { + for (int i = 0; i < length; i++) { + for (int j = i + 1; j < length; j++) { + if (grater(*buff[i], *buff[j])) { + swap(buff[i], buff[j]); + } + } + } + } + }; } \ No newline at end of file diff --git a/Utils/public/Timing.hpp b/Modules/public/Timing.hpp similarity index 96% rename from Utils/public/Timing.hpp rename to Modules/public/Timing.hpp index f37f1f1..3909bfd 100644 --- a/Utils/public/Timing.hpp +++ b/Modules/public/Timing.hpp @@ -15,7 +15,6 @@ namespace tp { time_ms mDuration; public: - Timer(); explicit Timer(time_ms time); @@ -41,7 +40,8 @@ namespace tp { Timer time; halni fps = 0; - FpsCounter() : time(1000) {} + FpsCounter() : + time(1000) {} void update(bool log = true) { frames++; diff --git a/Modules/public/TypeInfo.hpp b/Modules/public/TypeInfo.hpp index dbbb893..29404c8 100644 --- a/Modules/public/TypeInfo.hpp +++ b/Modules/public/TypeInfo.hpp @@ -28,7 +28,6 @@ // SOFTWARE. //////////////////////////////////////////////////////////////////////////////// - namespace tp { template struct TypeSelect { @@ -41,14 +40,14 @@ namespace tp { } namespace tp { -//////////////////////////////////////////////////////////////////////////////// -// class template IsSameType -// Return true iff two given types are the same -// Invocation: SameType::value -// where: -// T and U are types -// Result evaluates to true iff U == T (types equal) -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template IsSameType + // Return true iff two given types are the same + // Invocation: SameType::value + // where: + // T and U are types + // Result evaluates to true iff U == T (types equal) + //////////////////////////////////////////////////////////////////////////////// template struct IsSameType { @@ -60,36 +59,38 @@ namespace tp { enum { value = true }; }; -//////////////////////////////////////////////////////////////////////////////// -// Helper types Small and Big - guarantee that sizeof(Small) < sizeof(Big) -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // Helper types Small and Big - guarantee that sizeof(Small) < sizeof(Big) + //////////////////////////////////////////////////////////////////////////////// namespace Private { template struct ConversionHelper { typedef char Small; - struct Big { char dummy[2]; }; - static Big Test(...); + struct Big { + char dummy[2]; + }; + static Big Test(...); static Small Test(U); static T MakeT(); }; } -//////////////////////////////////////////////////////////////////////////////// -// class template Conversion -// Figures out the conversion relationships between two types -// Invocations (T and U are types): -// a) Conversion::exists -// returns (at compile time) true if there is an implicit conversion from T -// to U (example: Derived to Base) -// b) Conversion::exists2Way -// returns (at compile time) true if there are both conversions from T -// to U and from U to T (example: int to char and back) -// c) Conversion::sameType -// returns (at compile time) true if T and U represent the same type -// -// Caveat: might not work if T and U are in a private inheritance hierarchy. -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template Conversion + // Figures out the conversion relationships between two types + // Invocations (T and U are types): + // a) Conversion::exists + // returns (at compile time) true if there is an implicit conversion from T + // to U (example: Derived to Base) + // b) Conversion::exists2Way + // returns (at compile time) true if there are both conversions from T + // to U and from U to T (example: int to char and back) + // c) Conversion::sameType + // returns (at compile time) true if T and U represent the same type + // + // Caveat: might not work if T and U are in a private inheritance hierarchy. + //////////////////////////////////////////////////////////////////////////////// template struct Conversion { @@ -124,22 +125,20 @@ namespace tp { enum { exists = 1, exists2Way = 1, sameType = 1 }; }; -//////////////////////////////////////////////////////////////////////////////// -// class template SuperSubclass -// Invocation: SuperSubclass::value where B and D are types. -// Returns true if B is a public base of D, or if B and D are aliases of the -// same type. -// -// Caveat: might not work if T and U are in a private inheritance hierarchy. -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template SuperSubclass + // Invocation: SuperSubclass::value where B and D are types. + // Returns true if B is a public base of D, or if B and D are aliases of the + // same type. + // + // Caveat: might not work if T and U are in a private inheritance hierarchy. + //////////////////////////////////////////////////////////////////////////////// template struct SuperSubclass { - enum { - value = (::tp::Conversion::exists && !::tp::Conversion::sameType) - }; + enum { value = (::tp::Conversion::exists && !::tp::Conversion::sameType) }; -// Dummy enum to make sure that both classes are fully defined. + // Dummy enum to make sure that both classes are fully defined. enum { dontUseWithIncompleteTypes = (sizeof(T) == sizeof(U)) }; }; @@ -150,21 +149,17 @@ namespace tp { template struct SuperSubclass { - enum { - value = (::tp::Conversion::exists && !::tp::Conversion::sameType) - }; + enum { value = (::tp::Conversion::exists && !::tp::Conversion::sameType) }; -// Dummy enum to make sure that both classes are fully defined. + // Dummy enum to make sure that both classes are fully defined. enum { dontUseWithIncompleteTypes = (0 == sizeof(U)) }; }; template struct SuperSubclass { - enum { - value = (::tp::Conversion::exists && !::tp::Conversion::sameType) - }; + enum { value = (::tp::Conversion::exists && !::tp::Conversion::sameType) }; -// Dummy enum to make sure that both classes are fully defined. + // Dummy enum to make sure that both classes are fully defined. enum { dontUseWithIncompleteTypes = (sizeof(T) == 0) }; }; @@ -176,49 +171,36 @@ namespace tp { // Caveat: might not work if T and U are in a private inheritance hierarchy. //////////////////////////////////////////////////////////////////////////////// - template + template struct SuperSubclassStrict { - enum { - value = (::tp::Conversion::exists && - !::tp::Conversion::sameType && - !::tp::Conversion::sameType) - }; + enum { value = (::tp::Conversion::exists && !::tp::Conversion::sameType && !::tp::Conversion::sameType) }; -// Dummy enum to make sure that both classes are fully defined. + // Dummy enum to make sure that both classes are fully defined. enum { dontUseWithIncompleteTypes = (sizeof(T) == sizeof(U)) }; }; - template<> + template <> struct SuperSubclassStrict { enum { value = false }; }; - template + template struct SuperSubclassStrict { - enum { - value = (::tp::Conversion::exists && - !::tp::Conversion::sameType && - !::tp::Conversion::sameType) - }; + enum { value = (::tp::Conversion::exists && !::tp::Conversion::sameType && !::tp::Conversion::sameType) }; -// Dummy enum to make sure that both classes are fully defined. + // Dummy enum to make sure that both classes are fully defined. enum { dontUseWithIncompleteTypes = (0 == sizeof(U)) }; }; - template + template struct SuperSubclassStrict { - enum { - value = (::tp::Conversion::exists && - !::tp::Conversion::sameType && - !::tp::Conversion::sameType) - }; + enum { value = (::tp::Conversion::exists && !::tp::Conversion::sameType && !::tp::Conversion::sameType) }; -// Dummy enum to make sure that both classes are fully defined. + // Dummy enum to make sure that both classes are fully defined. enum { dontUseWithIncompleteTypes = (sizeof(T) == 0) }; }; - -} // namespace tp +} // namespace tp //////////////////////////////////////////////////////////////////////////////// // macro SUPERSUBCLASS @@ -230,7 +212,7 @@ namespace tp { // Deprecated: Use SuperSubclass class template instead. //////////////////////////////////////////////////////////////////////////////// -#define SUPERSUBCLASS(T, U) ::tp::SuperSubclass::value +#define SUPERSUBCLASS(T, U) ::tp::SuperSubclass::value //////////////////////////////////////////////////////////////////////////////// // macro SUPERSUBCLASS_STRICT @@ -241,22 +223,20 @@ namespace tp { // Deprecated: Use SuperSubclassStrict class template instead. //////////////////////////////////////////////////////////////////////////////// -#define SUPERSUBCLASS_STRICT(T, U) ::tp::SuperSubclassStrict::value - - +#define SUPERSUBCLASS_STRICT(T, U) ::tp::SuperSubclassStrict::value namespace tp { struct NullType {}; -//////////////////////////////////////////////////////////////////////////////// -// class template Typelist -// The building block of typelists of any length -// Use it through the LOKI_TYPELIST_NN macros -// Defines nested types: -// Head (first element, a non-typelist type by convention) -// Tail (second element, can be another typelist) -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template Typelist + // The building block of typelists of any length + // Use it through the LOKI_TYPELIST_NN macros + // Defines nested types: + // Head (first element, a non-typelist type by convention) + // Tail (second element, can be another typelist) + //////////////////////////////////////////////////////////////////////////////// template struct Typelist { @@ -264,79 +244,83 @@ namespace tp { typedef U Tail; }; -// Typelist utility algorithms + // Typelist utility algorithms namespace TL { -//////////////////////////////////////////////////////////////////////////////// -// class template MakeTypelist -// Takes a number of arguments equal to its numeric suffix -// The arguments are type names. -// MakeTypelist::Result -// returns a typelist that is of T1, T2, ... -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template MakeTypelist + // Takes a number of arguments equal to its numeric suffix + // The arguments are type names. + // MakeTypelist::Result + // returns a typelist that is of T1, T2, ... + //////////////////////////////////////////////////////////////////////////////// - template - < - typename T1 = NullType, typename T2 = NullType, typename T3 = NullType, - typename T4 = NullType, typename T5 = NullType, typename T6 = NullType, - typename T7 = NullType, typename T8 = NullType, typename T9 = NullType, - typename T10 = NullType, typename T11 = NullType, typename T12 = NullType, - typename T13 = NullType, typename T14 = NullType, typename T15 = NullType, - typename T16 = NullType, typename T17 = NullType, typename T18 = NullType - > + template < + typename T1 = NullType, + typename T2 = NullType, + typename T3 = NullType, + typename T4 = NullType, + typename T5 = NullType, + typename T6 = NullType, + typename T7 = NullType, + typename T8 = NullType, + typename T9 = NullType, + typename T10 = NullType, + typename T11 = NullType, + typename T12 = NullType, + typename T13 = NullType, + typename T14 = NullType, + typename T15 = NullType, + typename T16 = NullType, + typename T17 = NullType, + typename T18 = NullType> struct MakeTypelist { private: - typedef typename MakeTypelist - < - T2, T3, T4, - T5, T6, T7, - T8, T9, T10, - T11, T12, T13, - T14, T15, T16, - T17, T18 - > - ::Result TailResult; + typedef typename MakeTypelist::Result TailResult; public: typedef Typelist Result; }; - template<> + template <> struct MakeTypelist<> { typedef NullType Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template Length -// Computes the length of a typelist -// Invocation (TList is a typelist): -// Length::value -// returns a compile-time constant containing the length of TList, not counting -// the end terminator (which by convention is NullType) -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template Length + // Computes the length of a typelist + // Invocation (TList is a typelist): + // Length::value + // returns a compile-time constant containing the length of TList, not counting + // the end terminator (which by convention is NullType) + //////////////////////////////////////////////////////////////////////////////// - template struct Length; - template <> struct Length { + template + struct Length; + template <> + struct Length { enum { value = 0 }; }; template - struct Length< Typelist > { + struct Length> { enum { value = 1 + Length::value }; }; -//////////////////////////////////////////////////////////////////////////////// -// class template TypeAt -// Finds the type at a given index in a typelist -// Invocation (TList is a typelist and index is a compile-time integral -// constant): -// TypeAt::Result -// returns the type in position 'index' in TList -// If you pass an out-of-bounds index, the result is a compile-time error -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template TypeAt + // Finds the type at a given index in a typelist + // Invocation (TList is a typelist and index is a compile-time integral + // constant): + // TypeAt::Result + // returns the type in position 'index' in TList + // If you pass an out-of-bounds index, the result is a compile-time error + //////////////////////////////////////////////////////////////////////////////// - template struct TypeAt; + template + struct TypeAt; template struct TypeAt, 0> { @@ -348,20 +332,19 @@ namespace tp { typedef typename TypeAt::Result Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template TypeAtNonStrict -// Finds the type at a given index in a typelist -// Invocations (TList is a typelist and index is a compile-time integral -// constant): -// a) TypeAt::Result -// returns the type in position 'index' in TList, or NullType if index is -// out-of-bounds -// b) TypeAt::Result -// returns the type in position 'index' in TList, or D if index is out-of-bounds -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template TypeAtNonStrict + // Finds the type at a given index in a typelist + // Invocations (TList is a typelist and index is a compile-time integral + // constant): + // a) TypeAt::Result + // returns the type in position 'index' in TList, or NullType if index is + // out-of-bounds + // b) TypeAt::Result + // returns the type in position 'index' in TList, or D if index is out-of-bounds + //////////////////////////////////////////////////////////////////////////////// - template + template struct TypeAtNonStrict { typedef DefaultType Result; }; @@ -373,19 +356,19 @@ namespace tp { template struct TypeAtNonStrict, i, DefaultType> { - typedef typename - TypeAtNonStrict::Result Result; + typedef typename TypeAtNonStrict::Result Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template IndexOf -// Finds the index of a type in a typelist -// Invocation (TList is a typelist and T is a type): -// IndexOf::value -// returns the position of T in TList, or NullType if T is not found in TList -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template IndexOf + // Finds the index of a type in a typelist + // Invocation (TList is a typelist and T is a type): + // IndexOf::value + // returns the position of T in TList, or NullType if T is not found in TList + //////////////////////////////////////////////////////////////////////////////// - template struct IndexOf; + template + struct IndexOf; template struct IndexOf { @@ -401,30 +384,34 @@ namespace tp { struct IndexOf, T> { private: enum { temp = IndexOf::value }; + public: enum { value = (temp == -1 ? -1 : 1 + temp) }; }; -//////////////////////////////////////////////////////////////////////////////// -// class template Append -// Appends a type or a typelist to another -// Invocation (TList is a typelist and T is either a type or a typelist): -// Append::Result -// returns a typelist that is TList followed by T and NullType-terminated -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template Append + // Appends a type or a typelist to another + // Invocation (TList is a typelist and T is either a type or a typelist): + // Append::Result + // returns a typelist that is TList followed by T and NullType-terminated + //////////////////////////////////////////////////////////////////////////////// - template struct Append; + template + struct Append; - template <> struct Append { + template <> + struct Append { typedef NullType Result; }; - template struct Append { + template + struct Append { typedef Typelist Result; }; template - struct Append > { + struct Append> { typedef Typelist Result; }; @@ -433,22 +420,23 @@ namespace tp { typedef Typelist::Result> Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template Erase -// Erases the first occurence, if any, of a type in a typelist -// Invocation (TList is a typelist and T is a type): -// Erase::Result -// returns a typelist that is TList without the first occurence of T -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template Erase + // Erases the first occurence, if any, of a type in a typelist + // Invocation (TList is a typelist and T is a type): + // Erase::Result + // returns a typelist that is TList without the first occurence of T + //////////////////////////////////////////////////////////////////////////////// - template struct Erase; + template + struct Erase; - template // Specialization 1 + template // Specialization 1 struct Erase { typedef NullType Result; }; - template // Specialization 2 + template // Specialization 2 struct Erase, T> { typedef Tail Result; }; @@ -458,15 +446,16 @@ namespace tp { typedef Typelist::Result> Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template EraseAll -// Erases all first occurences, if any, of a type in a typelist -// Invocation (TList is a typelist and T is a type): -// EraseAll::Result -// returns a typelist that is TList without any occurence of T -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template EraseAll + // Erases all first occurences, if any, of a type in a typelist + // Invocation (TList is a typelist and T is a type): + // EraseAll::Result + // returns a typelist that is TList without any occurence of T + //////////////////////////////////////////////////////////////////////////////// - template struct EraseAll; + template + struct EraseAll; template struct EraseAll { typedef NullType Result; @@ -482,37 +471,41 @@ namespace tp { typedef Typelist::Result> Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template NoDuplicates -// Removes all duplicate types in a typelist -// Invocation (TList is a typelist): -// NoDuplicates::Result -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template NoDuplicates + // Removes all duplicate types in a typelist + // Invocation (TList is a typelist): + // NoDuplicates::Result + //////////////////////////////////////////////////////////////////////////////// - template struct NoDuplicates; + template + struct NoDuplicates; - template <> struct NoDuplicates { + template <> + struct NoDuplicates { typedef NullType Result; }; template - struct NoDuplicates< Typelist > { + struct NoDuplicates> { private: typedef typename NoDuplicates::Result L1; typedef typename Erase::Result L2; + public: typedef Typelist Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template Replace -// Replaces the first occurence of a type in a typelist, with another type -// Invocation (TList is a typelist, T, U are types): -// Replace::Result -// returns a typelist in which the first occurence of T is replaced with U -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template Replace + // Replaces the first occurence of a type in a typelist, with another type + // Invocation (TList is a typelist, T, U are types): + // Replace::Result + // returns a typelist in which the first occurence of T is replaced with U + //////////////////////////////////////////////////////////////////////////////// - template struct Replace; + template + struct Replace; template struct Replace { @@ -529,15 +522,16 @@ namespace tp { typedef Typelist::Result> Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template ReplaceAll -// Replaces all occurences of a type in a typelist, with another type -// Invocation (TList is a typelist, T, U are types): -// Replace::Result -// returns a typelist in which all occurences of T is replaced with U -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template ReplaceAll + // Replaces all occurences of a type in a typelist, with another type + // Invocation (TList is a typelist, T, U are types): + // Replace::Result + // returns a typelist in which all occurences of T is replaced with U + //////////////////////////////////////////////////////////////////////////////// - template struct ReplaceAll; + template + struct ReplaceAll; template struct ReplaceAll { @@ -554,15 +548,16 @@ namespace tp { typedef Typelist::Result> Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template Reverse -// Reverses a typelist -// Invocation (TList is a typelist): -// Reverse::Result -// returns a typelist that is TList reversed -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template Reverse + // Reverses a typelist + // Invocation (TList is a typelist): + // Reverse::Result + // returns a typelist that is TList reversed + //////////////////////////////////////////////////////////////////////////////// - template struct Reverse; + template + struct Reverse; template <> struct Reverse { @@ -570,19 +565,20 @@ namespace tp { }; template - struct Reverse< Typelist > { - typedef typename Append::Result, Head>::Result Result; + struct Reverse> { + typedef typename Append::Result, Head>::Result Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template MostDerived -// Finds the type in a typelist that is the most derived from a given type -// Invocation (TList is a typelist, T is a type): -// MostDerived::Result -// returns the type in TList that's the most derived from T -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template MostDerived + // Finds the type in a typelist that is the most derived from a given type + // Invocation (TList is a typelist, T is a type): + // MostDerived::Result + // returns the type in TList that's the most derived from T + //////////////////////////////////////////////////////////////////////////////// - template struct MostDerived; + template + struct MostDerived; template struct MostDerived { @@ -593,19 +589,21 @@ namespace tp { struct MostDerived, T> { private: typedef typename MostDerived::Result Candidate; + public: typedef typename TypeSelect::value, Head, Candidate>::Result Result; }; -//////////////////////////////////////////////////////////////////////////////// -// class template DerivedToFront -// Arranges the types in a typelist so that the most derived types appear first -// Invocation (TList is a typelist): -// DerivedToFront::Result -// returns the reordered TList -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template DerivedToFront + // Arranges the types in a typelist so that the most derived types appear first + // Invocation (TList is a typelist): + // DerivedToFront::Result + // returns the reordered TList + //////////////////////////////////////////////////////////////////////////////// - template struct DerivedToFront; + template + struct DerivedToFront; template <> struct DerivedToFront { @@ -613,111 +611,127 @@ namespace tp { }; template - struct DerivedToFront< Typelist > { + struct DerivedToFront> { private: typedef typename MostDerived::Result TheMostDerived; typedef typename Replace::Result Temp; typedef typename DerivedToFront::Result L; + public: typedef Typelist Result; }; - } // namespace TL - + } // namespace TL template < - class T01 = NullType, class T02 = NullType, class T03 = NullType, class T04 = NullType, class T05 = NullType, - class T06 = NullType, class T07 = NullType, class T08 = NullType, class T09 = NullType, class T10 = NullType, - class T11 = NullType, class T12 = NullType, class T13 = NullType, class T14 = NullType, class T15 = NullType, - class T16 = NullType, class T17 = NullType, class T18 = NullType, class T19 = NullType, class T20 = NullType - > + class T01 = NullType, + class T02 = NullType, + class T03 = NullType, + class T04 = NullType, + class T05 = NullType, + class T06 = NullType, + class T07 = NullType, + class T08 = NullType, + class T09 = NullType, + class T10 = NullType, + class T11 = NullType, + class T12 = NullType, + class T13 = NullType, + class T14 = NullType, + class T15 = NullType, + class T16 = NullType, + class T17 = NullType, + class T18 = NullType, + class T19 = NullType, + class T20 = NullType> class Seq { typedef typename Seq::list TailResult; + public: typedef Typelist list; }; - template<> + template <> struct Seq<> { typedef NullType list; }; -} // namespace tp +} // namespace tp #if 0 -#define TYPELIST1(T1) ::compiler::Typelist -#define TYPELIST2(T1, T2) ::compiler::Typelist -#define TYPELIST3(T1, T2, T3) ::compiler::Typelist -#define TYPELIST4(T1, T2, T3, T4) ::compiler::Typelist -#define TYPELIST5(T1, T2, T3, T4, T5) ::compiler::Typelist -#define TYPELIST6(T1, T2, T3, T4, T5, T6) ::compiler::Typelist -#define TYPELIST7(T1, T2, T3, T4, T5, T6, T7) ::compiler::Typelist -#define TYPELIST8(T1, T2, T3, T4, T5, T6, T7, T8) ::compiler::Typelist -#define TYPELIST9(T1, T2, T3, T4, T5, T6, T7, T8, T9) ::compiler::Typelist -#define TYPELIST10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) ::compiler::Typelist +#define TYPELIST1(T1) ::compiler::Typelist +#define TYPELIST2(T1, T2) ::compiler::Typelist +#define TYPELIST3(T1, T2, T3) ::compiler::Typelist +#define TYPELIST4(T1, T2, T3, T4) ::compiler::Typelist +#define TYPELIST5(T1, T2, T3, T4, T5) ::compiler::Typelist +#define TYPELIST6(T1, T2, T3, T4, T5, T6) ::compiler::Typelist +#define TYPELIST7(T1, T2, T3, T4, T5, T6, T7) ::compiler::Typelist +#define TYPELIST8(T1, T2, T3, T4, T5, T6, T7, T8) ::compiler::Typelist +#define TYPELIST9(T1, T2, T3, T4, T5, T6, T7, T8, T9) ::compiler::Typelist +#define TYPELIST10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) ::compiler::Typelist #endif #include #ifdef _MSC_VER -#pragma warning( push ) -#pragma warning( disable : 4180 ) //qualifier applied to function type has no meaning; ignored +#pragma warning(push) +#pragma warning(disable : 4180) // qualifier applied to function type has no meaning; ignored #endif namespace tp { -//////////////////////////////////////////////////////////////////////////////// -// class template IsCustomUnsignedInt -// Offers a means to integrate nonstandard built-in unsigned integral types -// (such as unsigned __int64 or unsigned long long int) with the TypeTraits -// class template defined below. -// Invocation: IsCustomUnsignedInt where T is any type -// Defines 'value', an enum that is 1 iff T is a custom built-in unsigned -// integral type -// Specialize this class template for nonstandard unsigned integral types -// and define value = 1 in those specializations -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template IsCustomUnsignedInt + // Offers a means to integrate nonstandard built-in unsigned integral types + // (such as unsigned __int64 or unsigned long long int) with the TypeTraits + // class template defined below. + // Invocation: IsCustomUnsignedInt where T is any type + // Defines 'value', an enum that is 1 iff T is a custom built-in unsigned + // integral type + // Specialize this class template for nonstandard unsigned integral types + // and define value = 1 in those specializations + //////////////////////////////////////////////////////////////////////////////// template struct IsCustomUnsignedInt { enum { value = 0 }; }; -//////////////////////////////////////////////////////////////////////////////// -// class template IsCustomSignedInt -// Offers a means to integrate nonstandard built-in unsigned integral types -// (such as unsigned __int64 or unsigned long long int) with the TypeTraits -// class template defined below. -// Invocation: IsCustomSignedInt where T is any type -// Defines 'value', an enum that is 1 iff T is a custom built-in signed -// integral type -// Specialize this class template for nonstandard unsigned integral types -// and define value = 1 in those specializations -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template IsCustomSignedInt + // Offers a means to integrate nonstandard built-in unsigned integral types + // (such as unsigned __int64 or unsigned long long int) with the TypeTraits + // class template defined below. + // Invocation: IsCustomSignedInt where T is any type + // Defines 'value', an enum that is 1 iff T is a custom built-in signed + // integral type + // Specialize this class template for nonstandard unsigned integral types + // and define value = 1 in those specializations + //////////////////////////////////////////////////////////////////////////////// template struct IsCustomSignedInt { enum { value = 0 }; }; -//////////////////////////////////////////////////////////////////////////////// -// class template IsCustomFloat -// Offers a means to integrate nonstandard floating point types with the -// TypeTraits class template defined below. -// Invocation: IsCustomFloat where T is any type -// Defines 'value', an enum that is 1 iff T is a custom built-in -// floating point type -// Specialize this class template for nonstandard unsigned integral types -// and define value = 1 in those specializations -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template IsCustomFloat + // Offers a means to integrate nonstandard floating point types with the + // TypeTraits class template defined below. + // Invocation: IsCustomFloat where T is any type + // Defines 'value', an enum that is 1 iff T is a custom built-in + // floating point type + // Specialize this class template for nonstandard unsigned integral types + // and define value = 1 in those specializations + //////////////////////////////////////////////////////////////////////////////// template struct IsCustomFloat { enum { value = 0 }; }; -//////////////////////////////////////////////////////////////////////////////// -// Helper types for class template TypeTraits defined below -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // Helper types for class template TypeTraits defined below + //////////////////////////////////////////////////////////////////////////////// namespace Private { @@ -726,124 +740,161 @@ namespace tp { typedef Seq::list StdOtherInts; typedef Seq::list StdFloats; - template struct AddPointer { typedef U* Result; }; - template struct AddPointer { typedef U* Result; }; + template + struct AddPointer { + typedef U* Result; + }; + template + struct AddPointer { + typedef U* Result; + }; - template struct AddReference { typedef U& Result; }; - template struct AddReference { typedef U& Result; }; - template <> struct AddReference { typedef NullType Result; }; + template + struct AddReference { + typedef U& Result; + }; + template + struct AddReference { + typedef U& Result; + }; + template <> + struct AddReference { + typedef NullType Result; + }; - template struct AddParameterType { typedef const U& Result; }; - template struct AddParameterType { typedef U& Result; }; - template <> struct AddParameterType { typedef NullType Result; }; + template + struct AddParameterType { + typedef const U& Result; + }; + template + struct AddParameterType { + typedef U& Result; + }; + template <> + struct AddParameterType { + typedef NullType Result; + }; - }// namespace Private + } // namespace Private -//////////////////////////////////////////////////////////////////////////////// -// class template TypeTraits -// -// Figures out at compile time various properties of any given type -// Invocations (T is a type, TypeTraits::Property): -// -// - isPointer : returns true if T is a pointer type -// - PointeeType : returns the type to which T points if T is a pointer -// type, NullType otherwise -// - isReference : returns true if T is a reference type -// - ReferredType : returns the type to which T refers if T is a reference -// type, NullType otherwise -// - isMemberPointer : returns true if T is a pointer to member type -// - isStdUnsignedInt: returns true if T is a standard unsigned integral type -// - isStdSignedInt : returns true if T is a standard signed integral type -// - isStdIntegral : returns true if T is a standard integral type -// - isStdFloat : returns true if T is a standard floating-point type -// - isStdArith : returns true if T is a standard arithmetic type -// - isStdFundamental: returns true if T is a standard fundamental type -// - isUnsignedInt : returns true if T is a unsigned integral type -// - isSignedInt : returns true if T is a signed integral type -// - isIntegral : returns true if T is a integral type -// - isFloat : returns true if T is a floating-point type -// - isArith : returns true if T is a arithmetic type -// - isFundamental : returns true if T is a fundamental type -// - ParameterType : returns the optimal type to be used as a parameter for -// functions that take Ts -// - isConst : returns true if T is a const-qualified type -// - NonConstType : Type with removed 'const' qualifier from T, if any -// - isVolatile : returns true if T is a volatile-qualified type -// - NonVolatileType : Type with removed 'volatile' qualifier from T, if any -// - UnqualifiedType : Type with removed 'const' and 'volatile' qualifiers from -// T, if any -// - ParameterType : returns the optimal type to be used as a parameter -// for functions that take 'const T's -// -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // class template TypeTraits + // + // Figures out at compile time various properties of any given type + // Invocations (T is a type, TypeTraits::Property): + // + // - isPointer : returns true if T is a pointer type + // - PointeeType : returns the type to which T points if T is a pointer + // type, NullType otherwise + // - isReference : returns true if T is a reference type + // - ReferredType : returns the type to which T refers if T is a reference + // type, NullType otherwise + // - isMemberPointer : returns true if T is a pointer to member type + // - isStdUnsignedInt: returns true if T is a standard unsigned integral type + // - isStdSignedInt : returns true if T is a standard signed integral type + // - isStdIntegral : returns true if T is a standard integral type + // - isStdFloat : returns true if T is a standard floating-point type + // - isStdArith : returns true if T is a standard arithmetic type + // - isStdFundamental: returns true if T is a standard fundamental type + // - isUnsignedInt : returns true if T is a unsigned integral type + // - isSignedInt : returns true if T is a signed integral type + // - isIntegral : returns true if T is a integral type + // - isFloat : returns true if T is a floating-point type + // - isArith : returns true if T is a arithmetic type + // - isFundamental : returns true if T is a fundamental type + // - ParameterType : returns the optimal type to be used as a parameter for + // functions that take Ts + // - isConst : returns true if T is a const-qualified type + // - NonConstType : Type with removed 'const' qualifier from T, if any + // - isVolatile : returns true if T is a volatile-qualified type + // - NonVolatileType : Type with removed 'volatile' qualifier from T, if any + // - UnqualifiedType : Type with removed 'const' and 'volatile' qualifiers from + // T, if any + // - ParameterType : returns the optimal type to be used as a parameter + // for functions that take 'const T's + // + //////////////////////////////////////////////////////////////////////////////// template class TypeTraits { private: - - template struct ReferenceTraits { + template + struct ReferenceTraits { enum { result = false }; typedef U ReferredType; }; - template struct ReferenceTraits { + template + struct ReferenceTraits { enum { result = true }; typedef U ReferredType; }; - template struct PointerTraits { + template + struct PointerTraits { enum { result = false }; typedef NullType PointeeType; }; - template struct PointerTraits { + template + struct PointerTraits { enum { result = true }; typedef U PointeeType; }; - template struct PointerTraits { + template + struct PointerTraits { enum { result = true }; typedef U PointeeType; }; - template struct PToMTraits { + template + struct PToMTraits { enum { result = false }; }; - template struct PToMTraits { + template + struct PToMTraits { enum { result = true }; }; - template struct PToMTraits { + template + struct PToMTraits { enum { result = true }; }; - template struct UnConst { + template + struct UnConst { typedef U Result; enum { isConst = 0 }; }; - template struct UnConst { + template + struct UnConst { typedef U Result; enum { isConst = 1 }; }; - template struct UnConst { + template + struct UnConst { typedef U& Result; enum { isConst = 1 }; }; - template struct UnVolatile { + template + struct UnVolatile { typedef U Result; enum { isVolatile = 0 }; }; - template struct UnVolatile { + template + struct UnVolatile { typedef U Result; enum { isVolatile = 1 }; }; - template struct UnVolatile { + template + struct UnVolatile { typedef U& Result; enum { isVolatile = 1 }; }; @@ -858,30 +909,13 @@ namespace tp { enum { isConst = UnConst::isConst }; enum { isVolatile = UnVolatile::isVolatile }; enum { isReference = ReferenceTraits::result }; - enum { isMemberPointer = PToMTraits::ReferredType >::result }; - enum { isPointer = PointerTraits::ReferredType >::result }; + enum { isMemberPointer = PToMTraits::ReferredType>::result }; + enum { isPointer = PointerTraits::ReferredType>::result }; - enum { - isStdUnsignedInt = TL::IndexOf::value >= 0 || - TL::IndexOf::ReferredType>::value >= 0 - }; - enum { - isStdSignedInt = TL::IndexOf::value >= 0 || - TL::IndexOf::ReferredType>::value >= 0 - }; - enum { - isStdIntegral = isStdUnsignedInt || isStdSignedInt || - TL::IndexOf::value >= 0 || - TL::IndexOf::ReferredType>::value >= 0 - }; - enum { - isStdFloat = TL::IndexOf::value >= 0 || - TL::IndexOf::ReferredType>::value >= 0 - }; + enum { isStdUnsignedInt = TL::IndexOf::value >= 0 || TL::IndexOf::ReferredType>::value >= 0 }; + enum { isStdSignedInt = TL::IndexOf::value >= 0 || TL::IndexOf::ReferredType>::value >= 0 }; + enum { isStdIntegral = isStdUnsignedInt || isStdSignedInt || TL::IndexOf::value >= 0 || TL::IndexOf::ReferredType>::value >= 0 }; + enum { isStdFloat = TL::IndexOf::value >= 0 || TL::IndexOf::ReferredType>::value >= 0 }; enum { isStdArith = isStdIntegral || isStdFloat }; enum { isStdFundamental = isStdArith || isStdFloat || Conversion::sameType }; @@ -898,5 +932,5 @@ namespace tp { } #ifdef _MSC_VER -#pragma warning( pop ) +#pragma warning(pop) #endif // _MSC_VER \ No newline at end of file diff --git a/Utils/public/Utils.hpp b/Modules/public/Utils.hpp similarity index 60% rename from Utils/public/Utils.hpp rename to Modules/public/Utils.hpp index 9dd317a..eaa1c37 100644 --- a/Utils/public/Utils.hpp +++ b/Modules/public/Utils.hpp @@ -1,81 +1,96 @@ -#pragma once - -#include "Module.hpp" - -#define PTR_OFFSET(first, offset) (*((&first) + offset)) -#define MEMBER_OFFSET(s, m) (alni(&(((s*)0)->m))) - -namespace tp { - - extern ModuleManifest gModuleUtils; - - void memSetVal(void* p, uhalni byteSize, uint1 val); - void memCopy(void* left, const void* right, uhalni len); - int1 memCompare(const void* left, const void* right, uhalni len); - int1 memCompareVal(const void* left, uhalni len, uint1 val); -} - -namespace tp { - [[nodiscard]] alnf randomFloat(); -} - -namespace tp { - - template - class Pair { - public: - Pair() {} - Pair(T1 t1, T2 t2) : head(t1), tail(t2) {} - union { T1 t1; T1 head; T1 x; }; - union { T2 t2; T2 tail; T2 y; }; - }; - - template - class Bits { - Type mFlags = 0; - public: - Bits() = default; - explicit Bits(Type val) { mFlags = val; } - explicit Bits(bool val) { for (int bit = 0; bit < sizeof(Type); bit++) { set(bit, val); } } - bool get(int1 idx) { return mFlags & (1l << idx); } - void set(int1 idx, bool val) { - if (val) { - mFlags |= (1l << idx); - } else { - mFlags &= ~(1l << idx); - } - } - }; - - - template - class Range { - public: - class Iterator { - public: - tType mIndex; - explicit Iterator(tType pStartIndex) : mIndex(pStartIndex) {} - tType index() const { return mIndex; } - inline void operator++() { mIndex++; } - inline operator tType() const { return mIndex; } - inline bool operator==(Iterator pIndex) { return mIndex == pIndex.mIndex; } - inline bool operator!=(Iterator pIndex) { return mIndex != pIndex.mIndex; } - inline const Iterator& operator*() { return *this; } - }; - - tType mBegin = 0; - tType mEnd = 0; - - Range() = default; - explicit Range(tType pEndIndex) : mBegin(0), mEnd(pEndIndex) {} - Range(tType pStartIndex, tType pEndIndex) : mBegin(pStartIndex), mEnd(pEndIndex) {} - - bool valid() { return mBegin < mEnd; } - - tType idxBegin() const { return mBegin; } - tType idxEnd() const { return mEnd; } - tType idxDiff() const { return mEnd - mBegin; } - Iterator begin() { return Iterator(mBegin); } - Iterator end() { return Iterator(mEnd); } - }; -} \ No newline at end of file +#pragma once + +#include "Module.hpp" + +#define PTR_OFFSET(first, offset) (*((&first) + offset)) +#define MEMBER_OFFSET(s, m) (alni(&(((s*) 0)->m))) + +namespace tp { + void memSetVal(void* p, uhalni byteSize, uint1 val); + void memCopy(void* left, const void* right, uhalni len); + int1 memCompare(const void* left, const void* right, uhalni len); + bool memEqual(const void* left, const void* right, uhalni len); + int1 memCompareVal(const void* left, uhalni len, uint1 val); +} + +namespace tp { + [[nodiscard]] alnf randomFloat(); +} + +namespace tp { + + template + class Bits { + Type mFlags = 0; + + public: + Bits() = default; + + explicit Bits(Type val) { mFlags = val; } + + explicit Bits(bool val) { + for (int bit = 0; bit < sizeof(Type); bit++) { + set(bit, val); + } + } + + bool get(int1 idx) { return mFlags & (1l << idx); } + + void set(int1 idx, bool val) { + if (val) { + mFlags |= (1l << idx); + } else { + mFlags &= ~(1l << idx); + } + } + }; + + template + class Range { + public: + class Iterator { + public: + tType mIndex; + + explicit Iterator(tType pStartIndex) : + mIndex(pStartIndex) {} + + tType index() const { return mIndex; } + + inline void operator++() { mIndex++; } + + inline operator tType() const { return mIndex; } + + inline bool operator==(Iterator pIndex) { return mIndex == pIndex.mIndex; } + + inline bool operator!=(Iterator pIndex) { return mIndex != pIndex.mIndex; } + + inline const Iterator& operator*() { return *this; } + }; + + tType mBegin{}; + tType mEnd{}; + + Range() = default; + + explicit Range(tType pEndIndex) : + mBegin(0), + mEnd(pEndIndex) {} + + Range(tType pStartIndex, tType pEndIndex) : + mBegin(pStartIndex), + mEnd(pEndIndex) {} + + bool valid() const { return mBegin < mEnd; } + + tType idxBegin() const { return mBegin; } + + tType idxEnd() const { return mEnd; } + + tType idxDiff() const { return mEnd - mBegin; } + + Iterator begin() const { return Iterator(mBegin); } + + Iterator end() const { return Iterator(mEnd); } + }; +} diff --git a/Modules/tests/Test.cpp b/Modules/tests/Test.cpp new file mode 100644 index 0000000..0dee468 --- /dev/null +++ b/Modules/tests/Test.cpp @@ -0,0 +1,244 @@ + +#include "Module.hpp" + +#include "UnitTest++/UnitTest++.h" + +#include "Archiver.hpp" +#include +#include + +using namespace tp; + +struct Undef { + char character1 = 'a'; + bool boolean = true; + ualni integer = 321; + char character2 = 'a'; + + void change() { + character1++; + character2--; + integer++; + boolean = !boolean; + } + + [[nodiscard]] bool operator!=(const Undef& in) const { + if (character1 != in.character1) { + return true; + } + if (character2 != in.character2) { + return true; + } + if (integer != in.integer) { + return true; + } + if (boolean != in.boolean) { + return true; + } + return false; + } +}; + +struct SimpleArchive { + char character = 'a'; + ualni integer = 123; + bool boolean = true; + Undef undef; + + template + void archive(tArchiver& ar) { + ar % character; + ar % integer; + ar % boolean; + ar % undef; + } + + void change() { + character++; + integer++; + boolean = !boolean; + undef.change(); + } + + [[nodiscard]] bool operator!=(const SimpleArchive& in) const { + if (character != in.character) { + return true; + } + if (integer != in.integer) { + return true; + } + if (boolean != in.boolean) { + return true; + } + if (undef != in.undef) { + return true; + } + return false; + } +}; + +struct Simple { + char character = 'a'; + ualni integer = 123; + bool boolean = true; + Undef undef; + + template + void archiveRead(tArchiver& ar) { + ar >> character; + ar >> integer; + ar >> boolean; + ar >> undef; + } + + template + void archiveWrite(tArchiver& ar) const { + ar << character; + ar << integer; + ar << boolean; + ar << undef; + } + + void change() { + character++; + integer++; + boolean = !boolean; + undef.change(); + } + + [[nodiscard]] bool operator!=(const Simple& in) const { + if (character != in.character) { + return true; + } + if (integer != in.integer) { + return true; + } + if (boolean != in.boolean) { + return true; + } + if (undef != in.undef) { + return true; + } + return false; + } +}; + +template +struct Set { + tType buff[10]; + ualni len = 5; + + template + void archiveRead(tArchiver& ar) { + ar >> len; + for (auto i = 0; i < len; i++) { + ar >> buff[i]; + } + } + + template + void archiveWrite(tArchiver& ar) const { + ar << len; + for (auto i = 0; i < len; i++) { + ar << buff[i]; + } + } + + void change() { + len = 2; + for (auto i = 0; i < len; i++) { + buff[i].change(); + } + } + + [[nodiscard]] bool operator!=(const Set& in) const { + for (auto i = 0; i < len; i++) { + if (buff[i] != in.buff[i]) { + return true; + } + } + + if (len != in.len) { + return true; + } + return false; + } +}; + +template +struct ComplexCart { + Undef undef; + Set set; + + template + void archive(tArchiver& ar) { + ar % set; + ar % undef; + } + + void change() { + undef.change(); + set.change(); + } + + [[nodiscard]] bool operator!=(const ComplexCart& in) const { return undef != in.undef || set != in.set; } +}; + +template +void test() { + constexpr auto size = 1024; + + const tType val; + tType res; + + res.change(); + + ArchiverExample write; + ArchiverExample read; + + write % val; + + for (auto i = 0; i < size; i++) { + read.mBuff[i] = write.mBuff[i]; + } + + read % res; + + CHECK(!(val != res)); +} + +template +struct HasArchive : FalseType {}; + +template +struct HasArchive()().archive(DeclareValue()()))>> : TrueType {}; + + +SUITE(BaseModule) { + TEST(Basic) { + tp::ModuleManifest* ModuleDependencies[] = { nullptr }; + tp::ModuleManifest TestModule("Test", nullptr, nullptr, ModuleDependencies); + + REQUIRE CHECK(TestModule.initialize()); + + REQUIRE CHECK(tp::gEnvironment.mWidth == tp::Environment::ArchWidth::X64); + + CHECK(tp::max(2, 1) == 2); + CHECK(tp::max(-1, 0) == 0); + CHECK(tp::max(0, -1) == 0); + CHECK(tp::min(0, -1) == -1); + + printf("has archive method - %i\n", HasArchive>::value); + printf("has archive method - %i\n", ArchiverExample<10, false>::HasFunc::Archive::value); + printf("has archive method - %i\n", ArchiverExample<10, false>::HasFunc::Archive::value); + + test(); + test(); + test>(); + test>(); + + TestModule.deinitialize(); + } +} + +int main() { return UnitTest::RunAllTests(); } \ No newline at end of file diff --git a/Modules/tests/Tests.cpp b/Modules/tests/Tests.cpp deleted file mode 100644 index 5910731..0000000 --- a/Modules/tests/Tests.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "Module.hpp" - -#include "Common.hpp" - -int main() { - tp::ModuleManifest* ModuleDependencies[] = { &tp::gModuleBase, nullptr }; - tp::ModuleManifest TestModule("Test", nullptr, nullptr, ModuleDependencies); - - if (!TestModule.initialize()) { - return 1; - } - - ASSERT(tp::gEnvironment.mWidth == tp::Environment::ArchWidth::X64); - - ASSERT(tp::max(2, 1) == 2); - ASSERT(tp::max(-1, 0) == 0); - ASSERT(tp::max(0, -1) == 0); - ASSERT(tp::min(0, -1) == -1); - - TestModule.deinitialize(); -} \ No newline at end of file diff --git a/Objects/CMakeLists.txt b/Objects/CMakeLists.txt new file mode 100644 index 0000000..0d4dde0 --- /dev/null +++ b/Objects/CMakeLists.txt @@ -0,0 +1,28 @@ +project(Objects) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp" "./applications/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ${BINDINGS_INCLUDE}) +target_link_libraries(${PROJECT_NAME} PUBLIC Math Connection LALR) +target_compile_definitions(${PROJECT_NAME} PUBLIC USERDATA_DESTROY_FAILED_TREE_ROOTS) + +### -------------------------- Applications -------------------------- ### +#add_executable(osc ./applications/Compiler.cpp) +#add_executable(osi ./applications/Interpreter.cpp) +add_executable(osg ./applications/GUI.cpp ./applications/GUIEntry.cpp) + +#target_link_libraries(osc ${PROJECT_NAME}) +#target_link_libraries(osi ${PROJECT_NAME}) +target_link_libraries(osg ${PROJECT_NAME} Graphics Imgui) + +file(COPY "rsc/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") + +### -------------------------- Tests -------------------------- ### +file(GLOB TEST_SOURCES "./tests/*.cpp" "./tests/*/*.cpp") +add_executable(Test${PROJECT_NAME} ${TEST_SOURCES}) +target_link_libraries(Test${PROJECT_NAME} ${PROJECT_NAME} UnitTest++) +add_test(NAME Test${PROJECT_NAME} COMMAND Test${PROJECT_NAME}) \ No newline at end of file diff --git a/Objects/applications/GUI.cpp b/Objects/applications/GUI.cpp new file mode 100644 index 0000000..e7eb4b4 --- /dev/null +++ b/Objects/applications/GUI.cpp @@ -0,0 +1,1093 @@ + +#include "GUI.h" + +#include "Rect.hpp" + +#include "interpreter/Interpreter.hpp" + +#include "imgui.h" +#include "imgui_internal.h" + +using namespace tp; +using namespace obj; + +namespace ImGui { + + bool SubMenuBegin(const char* desc, int level); + void SubMenuEnd(int level); + + void ToolTip(const char* desc); + + struct PopupData { + bool opened = false; + bool ishovered = false; + tp::Vec2F p1; + tp::Vec2F p2; + operator bool() { return opened; } + }; + + PopupData HoverPopupBegin(const char* id, tp::Vec2F size, tp::Vec2F pos = tp::Vec2F(-1), int flags = 0); + void HoverPopupEnd(PopupData& in); + + void ApplyStyle(tp::halnf dpmm, float font_size_mm = 5, float ui_scale = 1); +}; + +ImGui::PopupData +ImGui::HoverPopupBegin(const char* str_id, tp::Vec2F size, tp::Vec2F pos_p, ImGuiPopupFlags popup_flags) { + ImGui::PopupData out; + out.ishovered = ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup); + + if (out.ishovered) { + ImVec2 pos; + + if (pos_p == tp::Vec2F(-1)) { + pos = GImGui->CurrentWindow->DC.CursorPos; + } else { + pos.x = pos_p.x; + pos.y = pos_p.y; + } + + ImGui::SetNextWindowPos(pos); + out.p1 = { pos.x, pos.y }; + + ImGui::OpenPopup(str_id); + + out.p2 = out.p1; + out.p2.x += ImGui::GetWindowWidth(); + } + + if (BeginPopup(str_id, ImGuiWindowFlags_NoMove)) { + out.opened = true; + + auto pos = GetWindowPos(); + out.p1 = { pos.x, pos.y }; + out.p2 = out.p1; + out.p2.x += ImGui::GetWindowWidth(); + } + return out; +} + +void ImGui::HoverPopupEnd(ImGui::PopupData& in) { + + if (!in.opened) { + return; + } + + in.ishovered |= IsWindowHovered( + ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | + ImGuiHoveredFlags_ChildWindows + ); + + tp::Vec2F mousepos = { ImGui::GetMousePos().x, ImGui::GetMousePos().y }; + tp::halnf tollerance = 10; + tp::RectF tollerace_rect(tp::Vec2F(in.p1.x, in.p1.y - tollerance), tp::Vec2F(in.p2.x - in.p1.x, tollerance * 2.f)); + bool is_tollerance = tollerace_rect.isInside(mousepos); + + if (!(in.ishovered || is_tollerance)) { + CloseCurrentPopup(); + } + + EndPopup(); +} + +obj::ObjectsGUI::~ObjectsGUI() { + if (mClipboard) { + obj::objects_api::destroy(mClipboard); + } + for (auto iter : mViewStack) { + obj::objects_api::destroy(iter->obj); + } +} + +void obj::ObjectsGUI::setClipboard(obj::Object* obj) { + if (mClipboard) { + obj::objects_api::destroy(mClipboard); + } + + mClipboard = obj; + + if (mClipboard) { + obj::objects_api::increaseReferenceCount(obj); + } +} + +obj::Object* obj::ObjectsGUI::getClipboard() { return mClipboard; } + +obj::Object* imgui_object_create_menu(obj::TypeGroups* type_group = nullptr) { + + obj::Object* newo = nullptr; + + if (!type_group) { + type_group = &obj::gObjectsContext->type_groups; + } + + for (auto childo : *type_group->getChilds()) { + + if (childo->val->isGroup()) { + if (ImGui::BeginMenu((childo->key).c_str())) { + newo = imgui_object_create_menu(childo->val); + ImGui::EndMenu(); + } + continue; + } + + if (ImGui::Button((childo->key).c_str(), { 100, 0 })) { + if (childo->key == "null") { + newo = objects_api::getNull(); + } else { + newo = objects_api::createByName(childo->key.c_str()); + } + } + } + + return newo; +} + +obj::ObjectsGUI::ObjectsGUI() { assert(gObjectsContext && "Objects library is not initialized"); } + +void obj::ObjectsGUI::cd(obj::Object* child, const std::string& name) { + mActive = child; + mViewStack.pushBack({ mActive, name }); + obj::objects_api::increaseReferenceCount(child); +} + +void obj::ObjectsGUI::cdup() { + if (mViewStack.length() > 1) { + obj::objects_api::destroy(mViewStack.last()->data.obj); + + mViewStack.popBack(); + mActive = mViewStack.last()->data.obj; + } +} + +void obj::ObjectsGUI::preview(obj::Object* obj) { + if (objects_api::cast(obj)) { + auto linko = objects_api::cast(obj); + + bool no_link_preview = !linko->getLink(); + tp::alni max_depth = 5; + tp::alni depth_count = 0; + tp::Map link_lookup; + obj::LinkObject* link_iter = linko; + while (link_iter && link_iter->getLink() && !no_link_preview) { + link_iter = objects_api::cast(link_iter->getLink()); + depth_count++; + + if (link_lookup.presents(tp::alni(link_iter))) { + no_link_preview = true; + } else { + link_lookup.put(tp::alni(link_iter), 0); + } + no_link_preview |= max_depth < depth_count; + } + + if (linko->getLink()) { + if (!no_link_preview) { + ImGui::Text("=> "); + ImGui::SameLine(); + preview(linko->getLink()); + } else { + ImGui::Text("Max preview depth exceeded"); + } + } else { + ImGui::Text("Link Is Null"); + } + } else if (objects_api::cast(obj)) { + tp::alni& val = objects_api::cast(obj)->val; + int gui_val = int(val); + ImGui::InputInt(" ", &gui_val); + val = tp::alni(gui_val); + } else if (objects_api::cast(obj)) { + auto stringo = objects_api::cast(obj); + static char val[2048] = { " " }; + if (stringo->val != val) { + assert(stringo->val.size() < 2048); + tp::memCopy(val, stringo->val.c_str(), stringo->val.size() + 1); + } + ImGui::InputText("", val, 2048); + if (stringo->val != val) { + stringo->val = val; + } + } else if (objects_api::cast(obj)) { + boolView((obj::BoolObject*) obj); + } else if (objects_api::cast(obj)) { + tp::alnf& val = objects_api::cast(obj)->val; + auto gui_val = float(val); + ImGui::InputFloat(" ", &gui_val); + val = tp::alnf(gui_val); + + } else if (objects_api::cast(obj)) { + enumView((obj::EnumObject*) obj); + } else if (objects_api::cast(obj)) { + colorView((obj::ColorObject*) obj); + } else { + ImGui::Text(obj->type->name); + ImGui::SameLine(); + ImGui::Text(" (No Preview) "); + } +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::interpreterView(obj::InterpreterObject* self) { + using namespace ImGui; + + auto& interp = self->mInterpreter; + + // not running state + if (interp.finished()) { + Text("State: Not Runnig"); + + if (Selectable("Debug")) { + self->debug(); + } + + auto res = ObjectsGUI::classView(self); + if (res) { + return res; + } + + return {}; + } + + // running state + BeginChild("dockable"); + { + auto id = ImGui::GetCurrentWindow()->ID; + DockSpace(id); + } + EndChild(); + + Begin("ByteCodeView"); + { + + if (Button("Step")) { + interp.stepBytecode(); + if (interp.finished()) { + End(); + return {}; + } + } + + SameLine(); + if (Button("Step In")) { + interp.stepBytecodeIn(); + if (interp.finished()) { + End(); + return {}; + } + } + + SameLine(); + if (Button("Step out")) { + interp.stepBytecodeOut(); + if (interp.finished()) { + End(); + return {}; + } + } + + BeginChild("frame", { 0, 0 }, 0, ImGuiWindowFlags_NoBackground); + + const auto bytecode = interp.mCallStack.getBytecode(); + tp::halni idx = 0; + + for (auto ip = 0; ip < bytecode->mInstructions.size();) { + auto opcode = bytecode->mInstructions[ip]; + auto info = obj::gOpcodeInfos.fetch(opcode); + PushID(info.name); + + TextColored(ImVec4(1.f, 1.f, 1.f, 0.5f), "%i", idx); + SameLine(); + if (bytecode->mInstructionIdx == ip) { + TextColored(ImVec4(1.f, 0.5f, 0.5f, 1.f), info.name); + } else { + Text(info.name); + } + + // INFO + auto hd = HoverPopupBegin(std::to_string((tp::alni) ip).c_str(), { 400, 250 }); + if (hd) { + Text(info.desc); + if (info.operands.len) { + Text("Operands :"); + for (auto i = 0; i < info.operands.len; i++) { + auto op = info.operands.buff[i]; + Text(" %i : %s : %s", i, op.obj_type, op.desc); + } + } + if (info.params.len) { + Text("Params : "); + for (auto i = 0; i < info.params.len; i++) { + auto param = info.params.buff[i]; + Text(" %i : %i bytes : %s ", i, param.bytes, param.desc); + } + } + } + HoverPopupEnd(hd); + + PopID(); + ip += info.opsize(); + idx++; + } + + EndChild(); + } + End(); + + Begin("SourceCodeView"); + { stringView(interp.mCallStack.mStack.last().mMethod->mBytecodeLink->mReadable); } + End(); + + Begin("OperandStack"); + { + if (!interp.mOperandsStack.mIdx) { + Text("No Operands"); + } + for (auto i = 0; i < interp.mOperandsStack.mIdx; i++) { + auto operand = interp.mOperandsStack.mBuff[i]; + tp::alni operand_val = (tp::alni) operand; + + if (operand_val == 0) { + Text("nullptr"); + } else if (tp::uint2(operand_val) == 0) { + Text("2 BYTE VAL : %i", tp::uint2(operand_val)); + } else { + if (Selectable(operand->type->name, false, 0, ImVec2(100, 0))) { + End(); + return { operand, "operand" }; + } + SameLine(); + + PushID((tp::alni) operand); + preview(operand); + PopID(); + } + } + } + End(); + + Begin("ScopeStack"); + { + for (auto i = 0; i < interp.mScopeStack.mIdx; i++) { + if (TreeNode(std::to_string((tp::alni) i).c_str())) { + + auto& scope = interp.mScopeStack.mBuff[i]; + + if (TreeNode("Locals")) { + for (auto local : scope.mLocals) { + if (Selectable(local->key.c_str(), false, 0, ImVec2(100, 0))) { + TreePop(); + TreePop(); + End(); + return { local->val, local->key }; + } + + PushID(local->key.c_str()); + SameLine(); + preview(local->val); + PopID(); + } + TreePop(); + } + + if (TreeNode("Temps")) { + tp::alni idx = 0; + for (auto tmp : scope.mTemps) { + if (Selectable(std::to_string(idx).c_str(), false, 0, ImVec2(100, 0))) { + TreePop(); + TreePop(); + End(); + return { tmp.data(), "temp" }; + } + idx++; + } + TreePop(); + } + TreePop(); + } + } + } + End(); + + Begin("CallStack"); + { + for (auto i = 0; i < interp.mCallStack.mStack.size(); i++) { + auto method = interp.mCallStack.mStack[i].mMethod; + PushID(i); + if (Selectable("method")) { + PopID(); + End(); + return { method, "call stack method" }; + } + PopID(); + } + } + End(); + + Begin("ConstPool"); + { + auto bc = interp.mCallStack.getBytecode(); + tp::alni idx = 0; + for (auto const_obj : bc->mConstants) { + PushID(idx); + if (Button(const_obj.data()->type->name)) { + End(); + PopID(); + return { const_obj.data(), std::to_string(idx) }; + } + SameLine(); + preview(const_obj.data()); + PopID(); + idx++; + } + } + End(); + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::colorView(obj::ColorObject* in) { + ImGui::ColorEdit4(" ", &in->mCol.r); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::enumView(obj::EnumObject* obj) { + + if (!obj->entries) { + ImGui::Text("enum is uninitialized"); + return {}; + } + + if (ImGui::BeginCombo(" ", obj->getActiveName())) { + + for (tp::uhalni idx = 0; idx < obj->nentries; idx++) { + if (ImGui::Selectable(obj->getItemName(idx))) { + obj::objects_api::set(obj, tp::alni(idx)); + } + } + + ImGui::EndCombo(); + } + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::boolView(obj::BoolObject* obj) { + tp::alni& val = obj->val; + bool gui_val = bool(val); + ImGui::Checkbox(gui_val ? "True" : "False", &gui_val); + val = tp::alni(gui_val); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::floatView(obj::FloatObject* obj) { + tp::alnf& val = obj->val; + float gui_val = float(val); + ImGui::InputFloat("Value", &gui_val); + val = tp::alnf(gui_val); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::nullView(obj::NullObject* in) { + ImGui::Text("Null Object."); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::linkoView(obj::LinkObject* obj) { + + if (obj->getLink()) { + + ImGui::Text("%s at %x", obj->getLink()->type->name, obj->getLink()); + + if (ImGui::Selectable("View")) { + return { obj->getLink(), "adress" }; + } + } else { + ImGui::Text("Link Is Null"); + } + + if (ImGui::Selectable("Set from clipboard")) { + obj->setLink(mClipboard); + } + + if (ImGui::Selectable("Copy value")) { + setClipboard(obj->getLink()); + } + if (ImGui::Selectable("Set Null")) { + obj->setLink(nullptr); + } + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::intoView(obj::IntObject* obj) { + ImGui::Text("Int Value: "); + ImGui::SameLine(); + int val = (int) obj->val; + ImGui::InputInt(" ", &val); + obj->val = (tp::alni) val; + return {}; +} + +void obj::ObjectsGUI::dictViewDrawCreate(obj::DictObject* dict) { + if (ImGui::BeginPopupContextItem("child_2", ImGuiPopupFlags_MouseButtonRight)) { + + if (mClipboard) { + if (ImGui::Selectable("Paste")) { + tp::alni idx = 1; + auto name_base = std::string("clipboard ") + std::string(mClipboard->type->name) + " "; + auto name_out = name_base; + + while (dict->presents(name_out)) { + name_out = name_base + std::to_string(idx); + idx++; + } + + dict->put(name_out, mClipboard); + } + } + + if (ImGui::BeginMenu("Create")) { + + obj::Object* newo = imgui_object_create_menu(); + + if (newo) { + tp::alni idx = 1; + auto name_base = std::string("new ") + std::string(newo->type->name) + " "; + auto name_out = name_base; + + while (dict->presents(name_out)) { + name_out = name_base + std::to_string(idx); + idx++; + } + + dict->put(name_out, newo); + } + + ImGui::EndMenu(); + } + + ImGui::EndPopup(); + } +} + +void obj::ObjectsGUI::dictViewEdit(obj::DictObject* dict, const std::string& key, obj::Object* obj, bool& popup) { + if (ImGui::BeginPopupContextItem(key.c_str(), ImGuiPopupFlags_MouseButtonRight)) { + popup = true; + + ImGui::Text("%s at %x", obj->type->name, obj); + + if (key.size() > 100) { + ImGui::Text("name is too large"); + } else { + + if (mLastNameEditObject != obj) { + tp::memCopy(mNameEdit, key.c_str(), key.size() + 1); + mLastNameEditObject = obj; + } + + if (ImGui::InputTextEx(" ", "new name", mNameEdit, 100, { 140, 30 }, ImGuiInputTextFlags_EnterReturnsTrue)) { + auto idx = dict->presents(mNameEdit); + if (bool(idx)) { + // Notify("Object with such name Already Exists"); + } else { + obj::objects_api::increaseReferenceCount(obj); + dict->remove(key); + auto id = std::string(mNameEdit); + dict->put(id, obj); + obj::objects_api::destroy(obj); + } + } + } + + if (ImGui::Selectable("Remove")) { + dict->remove(key); + } + + if (ImGui::Selectable("Copy Link")) { + setClipboard(obj); + } + + ImGui::EndPopup(); + } +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::dictView(obj::DictObject* obj) { + bool popup = false; + auto table_flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable; + + ImGui::BeginChild("frame", { 0, 0 }, 0, ImGuiWindowFlags_NoBackground); + { + if (!obj->getItems().size()) { + ImGui::Text("Dictinary Is Empty. "); + } + + if (ImGui::BeginTable("Members", 2, table_flags)) { + ImGui::TableSetupColumn("name"); + ImGui::TableSetupColumn("info"); + for (auto childo : obj->getItems()) { + + ImGui::TableNextRow(0, 30); + ImGui::TableSetColumnIndex(0); + + if (ImGui::Selectable(childo->key.c_str())) { + ImGui::EndTable(); + ImGui::EndChild(); + return { childo->val, { std::string(childo->val->type->name) + " " + childo->key } }; + } + + dictViewEdit(obj, childo->key, childo->val, popup); + + ImGui::TableSetColumnIndex(1); + ImGui::PushID((int) childo->key.c_str()[0]); + preview(childo->val); + ImGui::PopID(); + } + ImGui::EndTable(); + } + } + ImGui::EndChild(); + + if (!popup) { + dictViewDrawCreate(obj); + } + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::listView(obj::ListObject* obj) { + bool popup = false; + ViewStackNode out; + + if (!obj->getItems().length()) { + ImGui::Text("List Is Empty. "); + } + + ImGui::BeginChild("frame", { 0, 0 }, 0, ImGuiWindowFlags_NoBackground); + + if (ImGui::BeginTable("Items", 2)) { + ImGui::TableSetupColumn("type", ImGuiTableColumnFlags_WidthFixed, 120.0f); + ImGui::TableSetupColumn("info"); + + tp::alni idx = 0; + for (auto childo : obj->getItems()) { + ImGui::TableNextRow(0, 36); + + ImGui::TableSetColumnIndex(0); + if (ImGui::Selectable(std::to_string(idx).c_str())) { + out = ViewStackNode(childo.data(), { std::string(childo->type->name) + "at" + std::to_string(idx) }); + break; + } + + { + if (ImGui::BeginPopupContextItem(std::to_string(idx).c_str(), ImGuiPopupFlags_MouseButtonRight)) { + popup = true; + + ImGui::Text("%s at %x", childo->type->name, childo.data()); + + if (ImGui::Selectable("Remove")) { + obj->delNode(childo.node()); + ImGui::EndPopup(); + break; + } + + if (ImGui::Selectable("Copy Link")) { + setClipboard(childo.data()); + ImGui::EndPopup(); + break; + } + + if (childo.node()->prev && ImGui::Selectable("Move Up")) { + tp::swap(childo.node()->prev->data, childo.data()); + ImGui::EndPopup(); + break; + } + + if (childo.node()->next && ImGui::Selectable("Move Down")) { + tp::swap(childo.node()->next->data, childo.data()); + ImGui::EndPopup(); + break; + } + + ImGui::EndPopup(); + } + } + + ImGui::TableSetColumnIndex(1); + + ImGui::PushID((int) idx); + preview(childo.data()); + ImGui::PopID(); + + idx++; + } + ImGui::EndTable(); + } + + ImGui::EndChild(); + + if (!popup && ImGui::BeginPopupContextItem("child_2", ImGuiPopupFlags_MouseButtonRight)) { + + if (ImGui::Selectable("Paste")) { + obj->pushBack(mClipboard); + } + + if (ImGui::BeginMenu("Create")) { + + obj::Object* newo = imgui_object_create_menu(); + if (newo) { + obj->pushBack(newo); + } + ImGui::EndMenu(); + } + ImGui::EndPopup(); + } + + return out; +} + +void drawStrView(std::string& in) { + static char val[2048] = { " " }; + + if (in != val) { + assert(in.size() < 2048); + tp::memCopy(val, in.c_str(), in.size() + 1); + } + + ImGui::BeginChild("str_edit"); + ImGui::InputTextMultiline(" ", val, 2048, { ImGui::GetWindowWidth(), ImGui::GetWindowHeight() }); + ImGui::EndChild(); + + if (in != val) { + in = val; + } +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::stringView(obj::StringObject* in) { + drawStrView(in->val); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::classView(obj::ClassObject* self) { + + bool popup = false; + auto dict = self->members; + + ImGui::BeginChild("frame", { 0, 0 }, 0, ImGuiWindowFlags_NoBackground); + + if (!dict->getItems().size()) { + ImGui::Text("No Members"); + } + + auto table_flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable; + auto tree_flags = ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_Framed; + ImGuiWindow* window = ImGui::GetCurrentWindow(); + + auto n_methods = 0; + for (auto childo : dict->getItems()) { + if (childo->val->type == &obj::MethodObject::TypeData) { + n_methods++; + } + } + + if (n_methods != dict->getItems().size() && ImGui::TreeNodeBehavior(window->GetID("Members"), tree_flags, "Members", 0)) { + if (ImGui::BeginTable("Members", 2, table_flags)) { + ImGui::TableSetupColumn("name"); + ImGui::TableSetupColumn("info"); + + tp::alni idx = 0; + for (auto childo : dict->getItems()) { + if (childo->val->type == &obj::MethodObject::TypeData) { + continue; + } + + ImGui::TableNextRow(0, 30); + ImGui::TableSetColumnIndex(0); + + if (ImGui::Selectable(childo->key.c_str())) { + ImGui::EndTable(); + ImGui::TreePop(); + ImGui::EndChild(); + return { childo->val, { std::string(childo->val->type->name) + childo->key } }; + } + + dictViewEdit(dict, childo->key, childo->val, popup); + + ImGui::TableSetColumnIndex(1); + ImGui::PushID((int) idx); + preview(childo->val); + ImGui::PopID(); + } + ImGui::EndTable(); + + idx++; + } + ImGui::TreePop(); + } + + if (n_methods && ImGui::TreeNodeBehavior(window->GetID("Methods"), tree_flags, "Methods", 0)) { + for (auto childo : dict->getItems()) { + if (childo->val->type == &obj::MethodObject::TypeData) { + if (ImGui::Selectable(childo->key.c_str())) { + ImGui::TreePop(); + ImGui::EndChild(); + return { childo->val, { std::string(childo->val->type->name) + childo->key } }; + } + dictViewEdit(dict, childo->key, childo->val, popup); + } + } + ImGui::TreePop(); + } + + ImGui::EndChild(); + + if (!popup) { + dictViewDrawCreate(dict); + } + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::methodView(obj::MethodObject* in) { + + if (in->mBytecodeLink->mBytecode.mInstructions.size()) { + if (ImGui::Button("Recompile")) { + in->compile(); + } + + ImGui::SameLine(); + if (ImGui::Button("Execute")) { + obj::Interpreter interp; + interp.execAll(in); + } + + } else { + if (ImGui::Button("Compile")) { + in->compile(); + } + } + + ImGui::SameLine(); + auto ret = stringView(in->mBytecodeLink->mReadable); + + if (ret.obj) { + return ret; + } + + return {}; +} + +void obj::ObjectsGUI::explorer() { + + if (ImGui::Button("<")) { + cdup(); + } + + ImGui::SameLine(); + ImGui::BeginChild( + "child_path", + { 0, 45 }, + false, + ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_HorizontalScrollbar + ); + tp::List rev_path; + for (auto childo = mViewStack.last(); childo; childo = childo->prev) { + rev_path.pushBack(&childo->data); + } + + tp::alni idx = 0; + for (auto childo = rev_path.last(); childo; childo = childo->prev) { + ImGui::PushID((int) idx); + bool go_back = false; + if (childo == rev_path.last()) { + go_back = ImGui::Button(childo->data->id.c_str()); + ImGui::SameLine(); + } else { + go_back = ImGui::Button((childo->data->id).c_str()); + ImGui::SameLine(); + } + ImGui::PopID(); + + if (ImGui::BeginPopupContextItem(nullptr, ImGuiPopupFlags_MouseButtonRight)) { + + obj::Object* curretn_object = childo->data->obj; + ImGui::Text("%s at %x", curretn_object->type->name, curretn_object); + ImGui::Separator(); + + if (ImGui::Selectable("Copy Link")) { + setClipboard(curretn_object); + } + + if (ImGui::Selectable("Instantiate ")) { + setClipboard(obj::objects_api::instantiate(curretn_object)); + // Notify("Object copied to clipboard"); + } + + ImGui::Separator(); + + static char path_str[100] = { "data.o\0" }; + static bool compressed = true; + ImGui::InputTextEx(" ", "save path", path_str, 100, { 100, 30 }, 0); + + bool save_object = ImGui::Button("Save Object"); + ImGui::SameLine(); + ImGui::Checkbox("Compressed", &compressed); + bool load_object = ImGui::Button("Load Object"); + + if (save_object) { + obj::objects_api::save(curretn_object, path_str, compressed); + // Notify("Object saved"); + } + + if (load_object) { + obj::Object* loadedo = obj::objects_api::load(path_str); + if (loadedo) { + setClipboard(loadedo); + // Notify("Object copied to clipboard"); + } else { + // Notify("Can't load Object"); + } + } + + ImGui::EndPopup(); + } + + if (go_back) { + while (&mViewStack.last()->data != childo->data) { + cdup(); + } + mActive = childo->data->obj; + ImGui::EndChild(); + return; + } + idx++; + } + ImGui::Text(" "); + ImGui::EndChild(); + + ImGui::Separator(); + + ViewStackNode new_active; + if (objects_api::cast(mActive)) { + new_active = nullView((obj::NullObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = linkoView((obj::LinkObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = intoView((obj::IntObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = stringView((obj::StringObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = listView((obj::ListObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = dictView((obj::DictObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = interpreterView((obj::InterpreterObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = classView((obj::ClassObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = boolView((obj::BoolObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = floatView((obj::FloatObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = enumView((obj::EnumObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = methodView((obj::MethodObject*) mActive); + } else if (objects_api::cast(mActive)) { + new_active = colorView((obj::ColorObject*) mActive); + } else { + ImGui::Text("Preview is Unavailable"); + } + + if (new_active != 0) { + cd(new_active.obj, new_active.id); + } +} + +void obj::ObjectsGUI::properties(const obj::ObjectType* type, bool top_of_tree_vew) { + + assert(type); + assert(mActive); + if (mActive->type != type) return; + + ImGui::Text(" RefCount : %i", obj::objects_api::getReferenceCount(mActive)); + + ImGui::Text(" Type : %s", type->name); + + if (ImGui::TreeNode("Description ")) { + if (type->description) { + ImGui::Text(type->description); + } else { + ImGui::Text("Description is not given"); + } + ImGui::TreePop(); + } + + if (ImGui::TreeNode("Size")) { + if (0 && ImGui::TreeNode("Top Level Type")) { + + ImGui::Text("RAM : "); + ImGui::Indent(); + ImGui::Text("Only Structure : %i bytes", type->size - (type->base ? type->base->size : 0)); + ImGui::Text("With Non-Object Links : Not Supported"); + ImGui::Unindent(); + + ImGui::Text("Disk :"); + ImGui::Indent(); + ImGui::Text("Only Structure : Currently Not Supported"); + ImGui::Text("With Object Links : Not Supported"); + ImGui::Unindent(); + + ImGui::TreePop(); + } + // if (ImGui::TreeNode("Full Type Hierarchy")) { + + ImGui::Text("RAM : "); + ImGui::Indent(); + ImGui::Text("Only Structure : %i bytes", type->size); + ImGui::Text("With Non-Object Links : %i bytes", obj::objects_api::objsize_ram(mActive)); + ImGui::Text("Full Size Recursive : %i bytes", obj::objects_api::objsize_ram_recursive(mActive)); + ImGui::Unindent(); + + ImGui::Text("Disk :"); + ImGui::Indent(); + ImGui::Text("Only Structure : %i bytes", obj::objects_api::objsize_file(mActive)); + ImGui::Text("With Object Links : %i bytes", obj::objects_api::objsize_file_recursive(mActive)); + ImGui::Unindent(); + + // ImGui::TreePop(); + //} + ImGui::TreePop(); + } + + if (ImGui::TreeNode("Base Type")) { + if (type->base) { + properties(type->base, false); + } else { + ImGui::Text("No base type"); + } + ImGui::TreePop(); + } +} + +void obj::ObjectsGUI::draw() { + if (!mShowDebugInfo) { + return; + } + + if (mViewStack.length()) { + if (ImGui::Begin("Explorer")) { + explorer(); + } + ImGui::End(); + + if (ImGui::Begin("Objet Info")) { + properties(mActive->type); + } + ImGui::End(); + + } else { + ImGui::Text("ViewStack is Empty"); + } + + auto& io = ImGui::GetIO(); + mCaptureInput = (io.WantCaptureMouse || io.WantCaptureKeyboard); +} \ No newline at end of file diff --git a/Objects/applications/GUI.h b/Objects/applications/GUI.h new file mode 100644 index 0000000..13f1602 --- /dev/null +++ b/Objects/applications/GUI.h @@ -0,0 +1,73 @@ + +#pragma once + +#include "primitives/PrimitiveObjects.hpp" +#include "primitives//InterpreterObject.hpp" + +#include "compiler/Functions.hpp" + +#include + +namespace tp::obj { + + class ObjectsGUI { + + enum { MAX_NAME_LENGHT = 102 }; + char mNameEdit [MAX_NAME_LENGHT]; + obj::Object* mLastNameEditObject = NULL; + + struct ViewStackNode { + obj::Object* obj; + std::string id; + ViewStackNode() { obj = NULL; } + ViewStackNode(obj::Object* obj, const std::string& id) : obj(obj), id(id) {} + operator bool() { return obj; } + }; + + List mViewStack; + obj::Object* mRoot = NULL; + obj::Object* mActive = NULL; + obj::Object* mClipboard = NULL; + + void setClipboard(obj::Object*); + obj::Object* getClipboard(); + + void* mImGuiCtx = NULL; + + public: + + bool mShowDebugInfo = true; + bool mCaptureInput = false; + + ObjectsGUI(); + ~ObjectsGUI(); + + void cd(obj::Object* child, const std::string& name); + void cdup(); + + void clearEvents(); + + void draw(); + void explorer(); + void properties(const obj::ObjectType*, bool top_of_tree_vew = true); + void drawFps(); + private: + + void preview(obj::Object* obj); + ViewStackNode enumView(obj::EnumObject* obj); + ViewStackNode boolView(obj::BoolObject* obj); + ViewStackNode floatView(obj::FloatObject* obj); + ViewStackNode nullView(obj::NullObject* obj); + ViewStackNode linkoView(obj::LinkObject* obj); + ViewStackNode intoView(obj::IntObject* obj); + ViewStackNode dictView(obj::DictObject* obj); + ViewStackNode listView(obj::ListObject* obj); + ViewStackNode stringView(obj::StringObject* in); + ViewStackNode classView(obj::ClassObject* in); + ViewStackNode methodView(obj::MethodObject* in); + ViewStackNode colorView(obj::ColorObject* in); + ViewStackNode interpreterView(obj::InterpreterObject* in); + void dictViewEdit(obj::DictObject* dict, const std::string& item_id, obj::Object* obj, bool& popup); + void dictViewDrawCreate(obj::DictObject* dict); + }; +}; diff --git a/Objects/applications/GUIEntry.cpp b/Objects/applications/GUIEntry.cpp new file mode 100644 index 0000000..b5c518e --- /dev/null +++ b/Objects/applications/GUIEntry.cpp @@ -0,0 +1,38 @@ + +#include "GraphicApplication.hpp" + +#include "GUI.h" + +using namespace tp; +using namespace obj; + +class SimpleGUI : public Application { +public: + SimpleGUI() { gui.cd(objects_api::create(), "root"); } + + void processFrame(EventHandler* eventHandler) override {} + + void drawFrame(Canvas* canvas) override { + canvas->rect({ { 0, 0 }, mWindow->getSize() }, RGBA(0.f, 0.f, 0.f, 1.f), 0); + gui.draw(); + } + +private: + ObjectsGUI gui; +}; + +int main() { + + tp::ModuleManifest* deps[] = { &gModuleObjects, nullptr }; + tp::ModuleManifest module("ObjectsTests", nullptr, nullptr, deps); + + if (module.initialize()) { + { + SimpleGUI gui; + gui.run(); + } + module.deinitialize(); + } + + return 0; +} diff --git a/Objects/private/compiler/Constants.cpp b/Objects/private/compiler/Constants.cpp new file mode 100644 index 0000000..2eb5c16 --- /dev/null +++ b/Objects/private/compiler/Constants.cpp @@ -0,0 +1,134 @@ +#include "compiler/Constants.hpp" +#include "primitives/MethodObject.hpp" +#include "primitives/PrimitiveObjects.hpp" + +using namespace tp; +using namespace obj; + +ConstObject::ConstObject() = default; +ConstObject::ConstObject(Object* mObj) : + mObj(mObj) {} + +ConstObjectsPool::~ConstObjectsPool() { + if (mDelete) { + for (auto obj : mStrings) { + objects_api::destroy(obj->val->mObj); + } + for (auto obj : mIntegers) { + objects_api::destroy(obj->val->mObj); + } + for (auto obj : mFloats) { + objects_api::destroy(obj->val->mObj); + } + for (auto obj : mMethods) { + objects_api::destroy(obj->val->mObj); + } + if (mBoolFalse.mObj) { + objects_api::destroy(mBoolFalse.mObj); + } + if (mBoolTrue.mObj) { + objects_api::destroy(mBoolTrue.mObj); + } + } +} + +ConstObject* ConstObjectsPool::registerObject(Object* obj) { + auto out = new ConstObject(obj); + mTotalObjects++; + return out; +} + +ConstObject* ConstObjectsPool::get(alni val) { + auto idx = mIntegers.presents(val); + ConstObject* const_obj; + if (idx) { + const_obj = mIntegers.getSlotVal(idx); + } else { + const_obj = registerObject(IntObject::create(val)); + mIntegers.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(const std::string& val) { + auto idx = mStrings.presents(val); + ConstObject* const_obj; + if (idx) { + const_obj = mStrings.getSlotVal(idx); + } else { + const_obj = registerObject(StringObject::create(val)); + mStrings.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(alnf val) { + auto idx = mFloats.presents(val); + ConstObject* const_obj; + if (idx) { + const_obj = mFloats.getSlotVal(idx); + } else { + const_obj = registerObject(FloatObject::create(val)); + mFloats.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(bool val) { + if (val) { + if (!mBoolTrue.mObj) { + mBoolTrue.mObj = BoolObject::create(val); + mTotalObjects++; + } + return &mBoolTrue; + } else { + if (!mBoolFalse.mObj) { + mBoolFalse.mObj = BoolObject::create(val); + mTotalObjects++; + } + return &mBoolFalse; + } +} + +ConstObject* ConstObjectsPool::addMethod(const std::string& method_id, Object* method) { + ASSERT(objects_api::cast(method) && "Object is not a method object") + ASSERT(!mMethods.presents(method_id) && "Method Redefinition") + auto out = registerObject(method); + mMethods.put(method_id, out); + return out; +} + +void ConstObjectsPool::save(Buffer& out) { + out.reserve(mTotalObjects); + alni data_idx = 0; + for (auto obj : mMethods) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mStrings) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mIntegers) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mFloats) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + if (mBoolFalse.mObj) { + out[data_idx] = mBoolFalse.mObj; + mBoolFalse.mConstIdx = data_idx; + data_idx++; + } + if (mBoolTrue.mObj) { + out[data_idx] = mBoolTrue.mObj; + mBoolTrue.mConstIdx = data_idx; + } + mDelete = false; +} diff --git a/Objects/private/compiler/Expressions.cpp b/Objects/private/compiler/Expressions.cpp new file mode 100644 index 0000000..3a5c5ee --- /dev/null +++ b/Objects/private/compiler/Expressions.cpp @@ -0,0 +1,125 @@ +#include "compiler/Expressions.hpp" + +#include + +using namespace tp; +using namespace obj; + +Expression::Expression(Type type) : + mType(type) {} + +ExpressionChild* Expression::ExprChild(const std::string& id) { return new ExpressionChild(this, id); } + +ExpressionCall* Expression::ExprCall(ExpressionList* args) { return new ExpressionCall(this, args); } + +ExpressionBoolean::ExpressionBoolean(Expression* left, Expression* right, BoolType type) : + Expression(Type::BOOLEAN), + mLeft(left), + mRight(right), + mBoolType(type) {} + +ExpressionBoolean::ExpressionBoolean(Expression* invert) : + Expression(Type::BOOLEAN), + mLeft(invert), + mBoolType(BoolType::NOT) {} + +ExpressionBoolean::~ExpressionBoolean() { + delete mLeft; + delete mRight; +} + +ExpressionCall::ExpressionCall(Expression* mParent, ExpressionList* args) : + Expression(Type::CALL), + mParent(mParent) { + mArgs = args; +} + +ExpressionCall::~ExpressionCall() { + delete mParent; + delete mArgs; +} + +ExpressionList::ExpressionList() : + Expression(Type::LIST) {} + +ExpressionList::~ExpressionList() { + for (auto item : mItems) { + delete item.data(); + } +} + +ExpressionNew::ExpressionNew(std::string type) : + Expression(Type::NEW), + mNewType(std::move(type)) {} + +ExpressionNew::~ExpressionNew() = default; + +ExpressionLocal::ExpressionLocal(std::string id) : + Expression(Type::LOCAL), + mLocalId(std::move(id)) {} + +ExpressionLocal::~ExpressionLocal() = default; + +ExpressionSelf::ExpressionSelf() : + Expression(Type::SELF) {} + +ExpressionChild::ExpressionChild(Expression* mParent, std::string id) : + Expression(Type::CHILD), + mParent(mParent), + mLocalId(std::move(id)) {} + +ExpressionChild::~ExpressionChild() { delete mParent; } + +ExpressionArithmetics::ExpressionArithmetics(Expression* left, Expression* right, OpCode type) : + Expression(Type::ARITHMETICS), + mLeft(left), + mRight(right), + mOpType(type) {} + +ExpressionArithmetics::~ExpressionArithmetics() { + delete mLeft; + delete mRight; +} + +ExpressionFunc::ExpressionFunc(std::string id) : + Expression(Type::FUNC), + mFuncId(std::move(id)) {} + +ExpressionFunc::~ExpressionFunc() = default; + +ExpressionConst::ExpressionConst(std::string val) : + Expression(Type::CONST_EXPR), + mConstType(STR), + str(std::move(val)) {} + +ExpressionConst::ExpressionConst(const char* val) : + Expression(Type::CONST_EXPR), + mConstType(STR), + str(val) {} + +ExpressionConst::ExpressionConst(int4 val) : + Expression(Type::CONST_EXPR), + mConstType(INT), + integer(val) {} + +ExpressionConst::ExpressionConst(flt4 val) : + Expression(Type::CONST_EXPR), + mConstType(FLT), + floating(val) {} + +ExpressionConst::ExpressionConst(alni val) : + Expression(Type::CONST_EXPR), + mConstType(INT), + integer(val) {} + +ExpressionConst::ExpressionConst(alnf val) : + Expression(Type::CONST_EXPR), + mConstType(FLT), + floating(val) {} + +ExpressionConst::ExpressionConst(bool val) : + Expression(Type::CONST_EXPR), + mConstType(BOOL), + boolean(val) {} + +ExpressionConst::~ExpressionConst() = default; diff --git a/Objects/private/compiler/Functions.cpp b/Objects/private/compiler/Functions.cpp new file mode 100644 index 0000000..cbb2b95 --- /dev/null +++ b/Objects/private/compiler/Functions.cpp @@ -0,0 +1,572 @@ + +#include "compiler/Functions.hpp" + +#include "primitives/MethodObject.hpp" +#include "primitives/PrimitiveObjects.hpp" + +#include "parser/Parser.hpp" + +using namespace tp; +using namespace obj; + +void obj::Generate(ByteCode& out, StatementScope* body) { + auto root = FunctionDefinition(); + + root.inst(Instruction(OpCode::SCOPE_IN)); + + for (auto child_stm : body->mStatements) { + root.EvalStatement(child_stm.data()); + } + + root.inst(Instruction(OpCode::SCOPE_OUT)); + + root.generateByteCode(out); +} + +ConstObject* FunctionDefinition::defineLocal(const std::string& id) { + // auto idx = mLocals.presents(id); + // RelAssert(!idx && "Local Redefinition"); + auto const_str_id = mConstants.get(id); + mLocals.put(id, const_str_id); + return const_str_id; +} + +FunctionDefinition:: + FunctionDefinition(const std::string& function_id, const Buffer& args, FunctionDefinition*) { + mFunctionId = function_id; + inst(Instruction(OpCode::SAVE_ARGS, (alni) args.size(), 1)); + for (auto id : args) { + ASSERT(!mLocals.presents(id.data()) && "Argument Redefinition") + auto const_data = mConstants.get(id.data()); + mArgsOrder.pushBack(const_data); + mLocals.put(id.data(), const_data); + inst(Instruction(const_data)); + } +} + +void FunctionDefinition::EvalStatement(Statement* stm) { + switch (stm->mType) { + case Statement::Type::IGNORE: + { + auto stm_ignore = (StatementIgnore*) stm; + EvalExpr(stm_ignore->mExpr); + inst(OpCode::IGNORE); + break; + } + case Statement::Type::WHILE: + { + auto stm_while = (StatementWhile*) stm; + + auto check_mark = inst(Instruction()); + + EvalExpr(stm_while->mCondition); + + auto jump_if_inst = inst(Instruction(nullptr, Instruction::InstType::JUMP_IF_NOT)); + + if (stm_while->mScope) { + EvalStatement(stm_while->mScope); + } + + auto jump_inst = inst(Instruction(nullptr, Instruction::InstType::JUMP)); + auto end_mark = inst(Instruction()); + + jump_if_inst->data.mInstTarget = &end_mark->data; + jump_inst->data.mInstTarget = &check_mark->data; + + break; + } + case Statement::Type::IF: + { + auto stm_if = (StatementIf*) stm; + + EvalExpr(stm_if->mCondition); + + auto jump_if_inst = inst(Instruction(nullptr, Instruction::InstType::JUMP_IF_NOT)); + + if (stm_if->mOnTrue) { + EvalStatement(stm_if->mOnTrue); + } + + auto jump_inst = inst(Instruction(nullptr, Instruction::InstType::JUMP)); + auto else_mark = inst(Instruction()); + + if (stm_if->mOnFalse) { + EvalStatement(stm_if->mOnFalse); + } + + auto end_mark = inst(Instruction()); + + jump_if_inst->data.mInstTarget = &else_mark->data; + jump_inst->data.mInstTarget = &end_mark->data; + + break; + } + case Statement::Type::SCOPE: + { + auto stm_scope = (StatementScope*) stm; + if (stm_scope->mPushToScopeStack) { + inst(Instruction(OpCode::SCOPE_IN)); + } + for (auto child_stm : stm_scope->mStatements) { + EvalStatement(child_stm.data()); + } + if (stm_scope->mPushToScopeStack) { + inst(Instruction(OpCode::SCOPE_OUT)); + } + break; + } + case Statement::Type::DEF_FUNC: + { + auto stm_func_def = (StatementFuncDef*) stm; + + FunctionDefinition func(stm_func_def->mFunctionId, stm_func_def->mArgs, this); + + // define method as local + auto idx = mLocals.presents(func.mFunctionId); + ASSERT(!idx && "Local Redefinition with function name") + mLocals.put(func.mFunctionId, mConstants.get(func.mFunctionId)); + + // create and register const func object + auto function_obj = objects_api::create(); + auto method_const_obj = mConstants.addMethod(func.mFunctionId, function_obj); + + for (auto child_stm : stm_func_def->mStatements->mStatements) { + func.EvalStatement(child_stm.data()); + } + + func.generateByteCode(function_obj->mBytecodeLink->mBytecode); + + inst(Instruction(OpCode::LOAD_CONST, method_const_obj)); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(func.mFunctionId))); + inst(Instruction(OpCode::DEF_LOCAL)); + break; + } + case Statement::Type::CLASS_DEF: + { + + // do the function definition + auto stm_class_def = (StatementClassDef*) stm; + + FunctionDefinition func(stm_class_def->mClassId, {}, this); + + // define method as local + auto idx = mLocals.presents(func.mFunctionId); + ASSERT(!idx && "Local Redefinition with function name") + mLocals.put(func.mFunctionId, mConstants.get(func.mFunctionId)); + + // create and register const func object + auto function_obj = objects_api::create(); + auto method_const_obj = mConstants.addMethod(func.mFunctionId, function_obj); + + // compile function + for (auto child_stm : stm_class_def->mScope->mStatements) { + // check for return statements + ASSERT( + child_stm.data()->mType != Statement::Type::RET && "return statements are not allowed in class definition" + ) + func.EvalStatement(child_stm.data()); + } + // create one last instruction - constructing class from function execution state + func.inst(Instruction(OpCode::CLASS_CONSTRUCT)); + func.generateByteCode(function_obj->mBytecodeLink->mBytecode); + + inst(Instruction(OpCode::LOAD_CONST, method_const_obj)); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(func.mFunctionId))); + inst(Instruction(OpCode::DEF_LOCAL)); + break; + } + case Statement::Type::DEF_LOCAL: + { + auto stm_local_def = (StatementLocalDef*) stm; + + if (!stm_local_def->mIsConstExpr) { + auto const_id = defineLocal(stm_local_def->mLocalId); + EvalExpr(stm_local_def->mNewExpr); + inst(Instruction(OpCode::LOAD_CONST, const_id)); + inst(Instruction(OpCode::DEF_LOCAL)); + + } else { + + std::string type; + switch (stm_local_def->mConstExpr->mConstType) { + case ExpressionConst::BOOL: + { + type = "bool"; + break; + } + case ExpressionConst::INT: + { + type = "int"; + break; + } + case ExpressionConst::FLT: + { + type = "float"; + break; + } + case ExpressionConst::STR: + { + type = "str"; + break; + } + } + + auto new_expr = new ExpressionNew(type); + auto defLocalExpr = new StatementLocalDef(stm_local_def->mLocalId, new_expr); + + EvalStatement(defLocalExpr); + EvalExpr(stm_local_def->mConstExpr); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(stm_local_def->mLocalId))); + inst(Instruction(OpCode::OBJ_COPY)); + + delete defLocalExpr; + } + break; + } + case Statement::Type::COPY: + { + auto stm_cp = (StatementCopy*) stm; + EvalExpr(stm_cp->mRight); + EvalExpr(stm_cp->mLeft); + inst(Instruction(OpCode::OBJ_COPY)); + break; + } + case Statement::Type::PRINT: + { + auto stm_prnt = (StatementPrint*) stm; + EvalExpr(stm_prnt->mTarget); + inst(Instruction(OpCode::PRINT)); + break; + } + case Statement::Type::RET: + { + auto stm_ret = (StatementReturn*) stm; + if (stm_ret->mRet) { + EvalExpr(stm_ret->mRet); + inst(Instruction(OpCode::RETURN_OBJ)); + } else { + inst(Instruction(OpCode::RETURN)); + } + break; + } + + default: ASSERT(0) + } +} + +void FunctionDefinition::EvalExpr(Expression* expr) { + switch (expr->mType) { + case Expression::Type::BOOLEAN: + { + auto boolean = (ExpressionBoolean*) expr; + if (boolean->mBoolType == ExpressionBoolean::BoolType::NOT) { + EvalExpr(boolean->mLeft); + inst(OpCode::NOT); + } else { + EvalExpr(boolean->mRight); + EvalExpr(boolean->mLeft); + inst(OpCode(boolean->mBoolType)); + } + break; + } + case Expression::Type::FUNC: + { + auto func = (ExpressionFunc*) expr; + + // RelAssert(mConstants.mMethods.presents(func->mFuncId) && "No such function"); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(func->mFuncId))); + break; + } + case Expression::Type::ARITHMETICS: + { + auto arithmeticExpression = (ExpressionArithmetics*) expr; + EvalExpr(arithmeticExpression->mRight); + EvalExpr(arithmeticExpression->mLeft); + inst(Instruction(arithmeticExpression->mOpType)); + break; + } + case Expression::Type::NEW: + { + auto create_new = (ExpressionNew*) expr; + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(create_new->mNewType))); + inst(Instruction(OpCode::OBJ_CREATE)); + break; + } + case Expression::Type::LOCAL: + { + auto local = (ExpressionLocal*) expr; + // RelAssert(mLocals.presents(local->mLocalId) && "undefined local"); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(local->mLocalId))); + break; + } + case Expression::Type::CONST_EXPR: + { + auto constObject = (ExpressionConst*) expr; + switch (constObject->mConstType) { + case ExpressionConst::STR: + { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constObject->str))); + break; + } + case ExpressionConst::INT: + { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constObject->integer))); + break; + } + case ExpressionConst::FLT: + { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constObject->floating))); + break; + } + case ExpressionConst::BOOL: + { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constObject->boolean))); + break; + } + } + break; + } + case Expression::Type::CHILD: + { + auto child = (ExpressionChild*) expr; + EvalExpr(child->mParent); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(child->mLocalId))); + inst(Instruction(OpCode::CHILD, child->mMethod, 1)); + break; + } + case Expression::Type::SELF: + { + inst(Instruction(OpCode::SELF)); + break; + } + case Expression::Type::CALL: + { + auto call = (ExpressionCall*) expr; + inst(Instruction(OpCode::PUSH_ARGS, (alni) call->mArgs->mItems.size(), 1)); + for (auto arg : call->mArgs->mItems) { + EvalExpr(arg.data()); + } + EvalExpr(call->mParent); + inst(Instruction(OpCode::CALL)); + break; + } + + default: ASSERT(0) + } +} + +alni instSize(const Instruction& inst) { + switch (inst.mInstType) { + case Instruction::InstType::JUMP: + case Instruction::InstType::JUMP_IF_NOT: + case Instruction::InstType::JUMP_IF: + { + // 2 bytes for offset 1 byte for instruction + return 3; + } + case Instruction::InstType::PURE_CONST: + { + return 2; + } + case Instruction::InstType::EXEC: + { + alni out = 1; + switch (inst.mArgType) { + case Instruction::ArgType::PARAM: + { + out += inst.mParamBytes; + return out; + } + case Instruction::ArgType::CONST_ARG: + { + out += 2; + if (inst.mConstData2) { + out += 2; + } + return out; + } + case Instruction::ArgType::NO_ARG: + { + return out; + } + default: + { + ASSERT(0) + } + } + } + case Instruction::InstType::NONE: + { + return 0; + } + default: + { + ASSERT(0) + } + } + + ASSERT(0) + return 0; +} + +void writeConst(ByteCode& out, alni& idx, uint2 data) { + for (auto byte : Range(sizeof(uint2))) { + out.mInstructions[idx] = OpCode((int1) (data >> byte * 8)); + idx++; + } +} + +void writeParam(ByteCode& out, alni& idx, const int1* data, alni size) { + for (auto byte : Range(size)) { + out.mInstructions[idx] = OpCode(data[byte]); + idx++; + } +} + +alni calcOffset(List::Node* jump_inst, Instruction* to) { + alni offset = 0; + bool reversed = jump_inst->data.mInstIdx > to->mInstIdx; + auto iter_node = reversed ? jump_inst : jump_inst->next; + while (&iter_node->data != to) { + offset += instSize(iter_node->data); + iter_node = reversed ? iter_node->prev : iter_node->next; + } + if (reversed) { + offset += instSize(iter_node->data); + } + return reversed ? -offset : offset; +} + +void FunctionDefinition::generateByteCode(ByteCode& out) { + + out.~ByteCode(); + new (&out) ByteCode(); + + mConstants.save(out.mConstants); + + out.updateRefCount(); + + alni inst_len = 0; + for (auto inst_iter : mInstructions) { + inst_len += instSize(inst_iter.data()); + } + out.mInstructions.reserve(inst_len); + + alni idx = 0; + for (auto inst_iter : mInstructions) { + auto inst = inst_iter.data(); + + switch (inst.mInstType) { + case Instruction::InstType::JUMP_IF: + case Instruction::InstType::JUMP_IF_NOT: + case Instruction::InstType::JUMP: + { + alni offset = calcOffset(inst_iter.node(), inst.mInstTarget); + + if (offset == 0) { + out.mInstructions[idx] = OpCode::NONE; + idx += 3; + break; + } + + if (inst.mInstType == Instruction::InstType::JUMP_IF) { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP_IF; + } else { + out.mInstructions[idx] = OpCode::JUMP_IF_R; + } + } else if (inst.mInstType == Instruction::InstType::JUMP_IF_NOT) { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP_IF_NOT; + } else { + out.mInstructions[idx] = OpCode::JUMP_IF_NOT_R; + } + } else { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP; + } else { + out.mInstructions[idx] = OpCode::JUMP_R; + } + } + + idx++; + + alni offset_mod = abs(offset); + auto offset_param = (uint2) offset_mod; + writeParam(out, idx, (int1*) &offset_param, 2); + break; + } + case Instruction::InstType::PURE_CONST: + { + writeConst(out, idx, (uint2) inst.mConstData->mConstIdx); + break; + } + case Instruction::InstType::EXEC: + { + out.mInstructions[idx] = inst.mOp; + idx++; + switch (inst.mArgType) { + case Instruction::ArgType::PARAM: + { + writeParam(out, idx, (int1*) &inst.mParam, inst.mParamBytes); + break; + } + case Instruction::ArgType::CONST_ARG: + { + writeConst(out, idx, (uint2) inst.mConstData->mConstIdx); + if (inst.mConstData2) { + writeConst(out, idx, (uint2) inst.mConstData2->mConstIdx); + } + break; + } + case Instruction::ArgType::NO_ARG: + { + break; + } + default: + { + ASSERT(0) + } + } + break; + } + default: + { + ASSERT(0) + } + case Instruction::InstType::NONE: + { + } + } + } +} + +List::Node* FunctionDefinition::inst(Instruction inst) { + mInstructions.pushBack(inst); + auto out = &mInstructions.last()->data; + out->mInstIdx = (alni) mInstructions.length() - 1; + return mInstructions.last(); +} + +void obj::initialize() {} + +void obj::finalize() {} + +bool obj::Compile(obj::MethodObject* method) { + + Parser parser; + + auto script = method->mBytecodeLink->mReadable->val; + auto res = parser.parse(script); + + if (res.isError) { + // TODO : print parse error + return false; + } + + Generate(method->mBytecodeLink->mBytecode, res.scope); + + delete res.scope; + + return true; +} diff --git a/Objects/private/compiler/Instructions.cpp b/Objects/private/compiler/Instructions.cpp new file mode 100644 index 0000000..63f0355 --- /dev/null +++ b/Objects/private/compiler/Instructions.cpp @@ -0,0 +1,42 @@ + +#include "compiler/Instructions.hpp" + +using namespace tp; +using namespace obj; + +Instruction::Instruction(OpCode op) : + mOp(op), + mArgType(ArgType::NO_ARG), + mInstType(InstType::EXEC) {} + +Instruction::Instruction() : + mInstType(InstType::NONE) {} + +Instruction::Instruction(ConstObject* constData) : + mConstData(constData), + mInstType(InstType::PURE_CONST) {} + +Instruction::Instruction(OpCode op, ConstObject* constData) : + mOp(op), + mConstData(constData), + mArgType(ArgType::CONST_ARG), + mInstType(InstType::EXEC) {} + +Instruction::Instruction(OpCode op, ConstObject* constData, ConstObject* constData2) : + mOp(op), + mConstData(constData), + mConstData2(constData2), + mArgType(ArgType::CONST_ARG), + mInstType(InstType::EXEC) {} + +Instruction::Instruction(OpCode op, tp::alni param, tp::alni nBytes) : + mOp(op), + mParam(param), + mArgType(ArgType::PARAM), + mParamBytes(nBytes), + mInstType(InstType::EXEC) {} + +Instruction::Instruction(Instruction* inst, InstType jump_type) : + mInstTarget(inst) { + mInstType = jump_type; +} diff --git a/Objects/private/compiler/Statements.cpp b/Objects/private/compiler/Statements.cpp new file mode 100644 index 0000000..8df4fd3 --- /dev/null +++ b/Objects/private/compiler/Statements.cpp @@ -0,0 +1,108 @@ +#include "compiler/Statements.hpp" +#include + +using namespace tp; +using namespace obj; + +StatementFuncDef::StatementFuncDef(const std::string& function_id) : + Statement(Type::DEF_FUNC) { + mFunctionId = function_id; +} + +StatementFuncDef::~StatementFuncDef() { delete mStatements; } + +StatementLocalDef::StatementLocalDef(std::string id, Expression* value) : + mLocalId(std::move(id)), + Statement(Type::DEF_LOCAL) { + + if (value->mType == Expression::Type::CONST_EXPR) { + mIsConstExpr = true; + mConstExpr = (ExpressionConst*) value; + } else { + mIsConstExpr = false; + mNewExpr = value; + } +} + +StatementLocalDef::~StatementLocalDef() { + delete mNewExpr; + delete mConstExpr; +} + +StatementCopy::StatementCopy(Expression* left, Expression* right) : + mLeft(left), + mRight(right), + Statement(Type::COPY) {} + +StatementCopy::~StatementCopy() { + delete mLeft; + delete mRight; +} + +StatementReturn::StatementReturn() : + Statement(Type::RET) {} + +StatementReturn::StatementReturn(Expression* ret) : + mRet(ret), + Statement(Type::RET) {} + +StatementReturn::~StatementReturn() { delete mRet; } + +StatementPrint::StatementPrint(Expression* target) : + mTarget(target), + Statement(Type::PRINT) {} + +StatementPrint::~StatementPrint() { delete mTarget; } + +StatementScope::StatementScope(InitialierList statements, bool aPushToScopeStack) : + Statement(Type::SCOPE) { + mStatements = statements; + mPushToScopeStack = aPushToScopeStack; +} + +StatementScope::~StatementScope() { + for (auto iter : mStatements) { + delete iter.data(); + } +} + +StatementIf::StatementIf(Expression* condition, StatementScope* on_true, StatementScope* on_false) : + Statement(Type::IF) { + mOnFalse = on_false; + mOnTrue = on_true; + mCondition = condition; +} + +StatementIf::~StatementIf() { + delete mCondition; + delete mOnTrue; + delete mOnFalse; +} + +StatementWhile::StatementWhile(Expression* condition, StatementScope* scope) : + Statement(Type::WHILE) { + mScope = scope; + mCondition = condition; +} + +StatementWhile::~StatementWhile() { + delete mCondition; + delete mScope; +} + +StatementIgnore::StatementIgnore(Expression* expr) : + Statement(Type::IGNORE) { + mExpr = expr; +} + +StatementIgnore::~StatementIgnore() { delete mExpr; } + +StatementClassDef::StatementClassDef(const std::string& class_id, StatementScope* scope) : + Statement(Type::CLASS_DEF) { + mClassId = class_id; + mScope = scope; +} + +StatementClassDef::~StatementClassDef() { delete mScope; } + +Statement::Statement(Statement::Type type) { mType = type; } diff --git a/Objects/private/core/Object.cpp b/Objects/private/core/Object.cpp new file mode 100644 index 0000000..c0a4bd2 --- /dev/null +++ b/Objects/private/core/Object.cpp @@ -0,0 +1,239 @@ + +#include "core/Object.hpp" + +#include "primitives/NullObject.hpp" +#include "primitives/ClassObject.hpp" +#include "primitives/MethodObject.hpp" + +#include "interpreter/Interpreter.hpp" + +using namespace tp; +using namespace obj; + +ObjectsContext* obj::gObjectsContext = nullptr; + +ObjectsContext::ObjectsContext() { interp = new Interpreter(); } + +ObjectsContext::~ObjectsContext() { delete interp; } + +void objects_api::initialize() { + ASSERT(!gObjectsContext) + gObjectsContext = new ObjectsContext(); + + gObjectsContext->nullObject = create(); + objects_api::increaseReferenceCount(gObjectsContext->nullObject); +} + +void objects_api::finalize() { + destroy(gObjectsContext->nullObject); + + assertNoLeaks(); + + ASSERT(gObjectsContext) + delete gObjectsContext; + gObjectsContext = nullptr; +} + +void obj::save_string(ArchiverOut& file, const std::string& string) { + file << string.size(); + file.writeBytes(string.c_str(), string.size()); +} + +ualni obj::save_string_size(const std::string& string) { return string.size() + sizeof(string.size()); } + +void obj::load_string(ArchiverIn& file, std::string& out) { + typeof(out.size()) size; + file >> size; + auto buff = new char[size + 1]; + file.readBytes(buff, size); + buff[size] = 0; + out = buff; + delete[] buff; +} + +Object* ObjectMemAllocate(const ObjectType* type); +void ObjectMemDeallocate(Object* object); + +void hierarchy_copy(Object* self, const Object* in, const ObjectType* type); +void hierarchy_construct(Object* self, const ObjectType* type); + +void objects_api::define(ObjectType* type) { + MODULE_SANITY_CHECK(gModuleObjects) + + DEBUG_ASSERT(gObjectsContext && "using uninitialized objects api") + DEBUG_ASSERT(!gObjectsContext->types.presents(type->name) && "Type Redefinition") + gObjectsContext->types.put(type->name, type); + + type->type_methods.init(); +} + +Object* objects_api::create(const ObjectType* type) { + ASSERT(type); + + Object* obj_instance = ObjectMemAllocate(type); + + if (!obj_instance) { + return nullptr; + } + + hierarchy_construct(obj_instance, obj_instance->type); + + setReferenceCount(obj_instance, 0); + + auto classobj = objects_api::cast(obj_instance); + + if (classobj) { + auto idx = classobj->members->presents("__init__"); + DEBUG_ASSERT(idx) + if (idx) { + auto constructor_obj = classobj->members->getSlotVal(idx); + auto constructor_method = objects_api::cast(constructor_obj); + if (constructor_method) { + gObjectsContext->interp->execAll(constructor_method, classobj); + } + } + } + + return obj_instance; +} + +Object* objects_api::copy(Object* self, const Object* in) { + if (self->type != in->type) { + return nullptr; + } + + hierarchy_copy(self, in, self->type); + + return self; +} + +bool objects_api::compare(Object* first, Object* second) { + if (first->type == second->type) { + if (first->type->comparison) { + return first->type->comparison(first, second); + } + + // raw data comparison + // TODO : reconsider + return memCompare(first->type, second->type, first->type->size - sizeof(Object) + sizeof(void*)) == 0; + } + + return false; +} + +Object* objects_api::instantiate(Object* in) { + obj::Object* obj = objects_api::createByName(in->type->name); + tp::obj::objects_api::copy(obj, in); + return obj; +} + +void objects_api::set(Object* self, alni val) { + if (self->type->conversions && self->type->conversions->from_int) { + self->type->conversions->from_int(self, val); + return; + } +} + +void objects_api::set(Object* self, alnf val) { + if (self->type->conversions && self->type->conversions->from_float) { + self->type->conversions->from_float(self, val); + return; + } +} + +void objects_api::set(Object* self, const std::string& val) { + if (self->type->conversions && self->type->conversions->from_string) { + self->type->conversions->from_string(self, val); + return; + } +} + +alni objects_api::toInt(Object* self) { + DEBUG_ASSERT(self->type->conversions && self->type->conversions->to_int) + return self->type->conversions->to_int(self); +} + +alnf objects_api::toFloat(Object* self) { + DEBUG_ASSERT(self->type->conversions && self->type->conversions->to_float) + return self->type->conversions->to_float(self); +} + +bool objects_api::toBool(Object* self) { + if (self->type->conversions && self->type->conversions->to_int) { + return (bool) self->type->conversions->to_int(self); + } + return true; +} + +std::string objects_api::toString(Object* self) { + DEBUG_ASSERT(self->type->conversions && self->type->conversions->to_string) + return self->type->conversions->to_string(self); +} + +void objects_api::destroy(Object* in) { + + if (!in) { + return; + } + + if (in->references > 1) { + in->references--; + return; + } + + auto classobj = objects_api::cast(in); + if (classobj) { + auto idx = classobj->members->presents("__del__"); + DEBUG_ASSERT(idx) + if (idx) { + auto constructor_obj = classobj->members->getSlotVal(idx); + auto constructor_method = objects_api::cast(constructor_obj); + if (constructor_method) { + gObjectsContext->interp->execAll(constructor_method, classobj); + } + } + } + + for (const ObjectType* iter = in->type; iter; iter = iter->base) { + if (iter->destructor) { + iter->destructor(in); + } + } + + ObjectMemDeallocate(in); +} + +void hierarchy_copy(Object* self, const Object* in, const ObjectType* type) { + if (type->base) { + hierarchy_copy(self, in, type->base); + } + + if (type->copy) { + type->copy(self, in); + } +} + +void hierarchy_construct(Object* self, const ObjectType* type) { + if (type->base) { + hierarchy_construct(self, type->base); + } + + if (type->constructor) { + type->constructor(self); + } +} + +void objects_api::addTypeToGroup(ObjectType* type, InitialierList path, alni cur_arg) { + gObjectsContext->type_groups.addType(type, path, cur_arg); +} + +bool objects_api::isType(const char* name) { return gObjectsContext->types.presents(name).isValid(); } + +const ObjectType* objects_api::getType(const char* name) { return gObjectsContext->types.get(name); } + +NullObject* objects_api::getNull() { return gObjectsContext->nullObject; } + +NullObject* objects_api::getNullReferenced() { + increaseReferenceCount(gObjectsContext->nullObject); + return gObjectsContext->nullObject; +} \ No newline at end of file diff --git a/Objects/private/core/ObjectSave.cpp b/Objects/private/core/ObjectSave.cpp new file mode 100644 index 0000000..99959d9 --- /dev/null +++ b/Objects/private/core/ObjectSave.cpp @@ -0,0 +1,396 @@ + + +#include "core/Object.hpp" + +#include "primitives/NullObject.hpp" + +#include + +using namespace tp; +using namespace obj; + +Object* bottom = nullptr; +ualni count = 0; + +Object* ObjectMemAllocate(const ObjectType* type) { + auto object = (Object*) malloc(type->size); + + if (!object) { + printf("Cant allocate memory for an object"); + exit(0); + } + + object->down = nullptr; + object->flags = 0; + + object->references = (alni) 1; + + if (bottom) { + bottom->down = object; + } + + object->up = bottom; + bottom = object; + + count++; + + object->type = type; + + return object; +} + +void ObjectMemDeallocate(Object* object) { + if (object->up) { + object->up->down = object->down; + } + + if (object->down) { + object->down->up = object->up; + } else { + bottom = object->up; + } + + free(object); + count--; +} + +void objects_api::logTypeData(const ObjectType* type) { + printf("type - %s\n", type->name); + if (type->base) { + printf("Based on "); + logTypeData(type->base); + } +} + +ualni objects_api::getObjCount() { return count; } + +void objects_api::assertNoLeaks() { + if (bottom) { + printf("ERROR : not all objects are destroyed\n"); + ualni idx = 0; + for (Object* object = bottom; object; object = object->up) { + printf(" ===== Object - %llu. Ref count - %lli ===== \n", idx, object->references); + logTypeData(object->type); + idx++; + } + } +} + +struct ObjectsFileHeader { + char name[10] = { 0 }; + char version[10] = { 0 }; + + explicit ObjectsFileHeader(bool default_val = true) { + if (default_val) { + memCopy(&name, "objects", 8); + memCopy(&version, "0", 2); + } + } +}; + +struct ObjectFileHead { + Object* load_head_adress = nullptr; + halni refc = 0; +}; + +int1* loaded_file = nullptr; + +void objects_api::clear_object_flags() { + // clear all object flags + for (Object* iter = bottom; iter; iter = iter->up) { + iter->flags = -1; + } +} + +alni objsize_ram_util(Object* self, const ObjectType* type) { + alni out = 0; + + if (type->allocated_size) { + out += type->allocated_size(self); + } else { + out += type->size - sizeof(ObjectType*); + } + + if (type->base) { + out += objsize_ram_util(self, type->base); + } else { + out += sizeof(ObjectType*); + } + + return out; +} + +alni objects_api::objsize_ram(Object* self) { return objsize_ram_util(self, self->type); } + +alni objects_api::objsize_ram_recursive_util(Object* self, const ObjectType* type, bool different_object) { + alni out = 0; + + if (different_object) { + if (self->flags == 1) { + return 0; + } + + self->flags = 1; + } + + if (type->allocated_size_recursive) { + out += type->allocated_size_recursive(self); + } else { + if (type->allocated_size) { + out += type->allocated_size(self); + } else { + out += type->size - sizeof(ObjectType*); + } + } + + if (type->base) { + out += objsize_ram_recursive_util(self, type->base, false); + } else { + out += sizeof(ObjectType*); + } + + return out; +} + +alni objects_api::objsize_ram_recursive(Object* self) { + clear_object_flags(); + return objsize_ram_recursive_util(self, self->type); +} + +alni objsize_file_util(Object* self, const ObjectType* type) { + alni out = 0; + + if (type->save_size) { + out += type->save_size(self); + } + + if (type->base) { + out += objsize_file_util(self, type->base); + } + return out; +} + +alni objects_api::objsize_file(Object* self) { return objsize_file_util(self, self->type); } + +alni objsize_file_recursive_util(Object* self, const ObjectType* type) { + alni out = 0; + + self->flags = 1; + + if (type->save_size) { + out += type->save_size(self); + } + + if (type->childs_retrival) { + Buffer childs = type->childs_retrival(self); + for (auto child : childs) { + if (child.data()->flags != 1) { + out += objsize_file_recursive_util(child.data(), child.data()->type); + } + } + } + + if (type->base) { + out += objsize_file_recursive_util(self, type->base); + } + + return out; +} + +alni objects_api::objsize_file_recursive(Object* self) { + clear_object_flags(); + return objsize_file_recursive_util(self, self->type); +} + +void object_recursive_save(ArchiverOut& ndf, Object* self, const ObjectType* type) { + if (type->base) { + object_recursive_save(ndf, self, type->base); + } + + // automatically offsets for parent type to write + if (type->save) { + type->save(self, ndf); + } +} + +alni objects_api::save(ArchiverOut& ndf, Object* in) { + // if already saved return file_adress + if (in->flags != -1) { + return in->flags; + } + + // save write adress for parent save function call + alni tmp_adress = ndf.getAddress(); + + // save requested object to first available adress + alni save_adress = ndf.getFreeAddress(); + + // save file_adress in memhead + in->flags = save_adress; + + // update write adress + ndf.setAddress(save_adress); + + // save file object header + ObjectFileHead ofh = { 0, (halni) getReferenceCount(in) }; + ndf << ofh; + + save_string(ndf, in->type->name); + + // allocate for object file header + ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + save_string_size(in->type->name)); + + // calc max size needed for saving all hierarchy of types + alni file_alloc_size = objsize_file_util(in, in->type); + + // offes first available adress + ndf.setFreeAddress(ndf.getFreeAddress() + file_alloc_size); + + object_recursive_save(ndf, in, in->type); + + // restore adress for parent save function + ndf.setAddress(tmp_adress); + + // return addres of saved object in file space + return save_adress; +} + +void object_recursive_load(ArchiverIn& ndf, Object* out, const ObjectType* type) { + if (type->base) { + object_recursive_load(ndf, out, type->base); + } + + // automatically offsets for parent type to read + if (type->load) { + type->load(ndf, out); + } +} + +Object* objects_api::load(ArchiverIn& ndf, alni file_adress) { + // check if already saved + if (((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress) { + return ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress; + } + + // save read address + alni parent_file_adress = ndf.getAddress(); + + // set read address + ndf.setAddress(file_adress); + + ObjectFileHead ofh; + ndf >> ofh; + + std::string type_name; + load_string(ndf, type_name); + + const ObjectType* object_type = gObjectsContext->types.get(type_name); + Object* out = ObjectMemAllocate(object_type); + + if (!out) { + return nullptr; + } + + setReferenceCount(out, 0); + + // check for null object + if (out->type == &NullObject::TypeData) { + ObjectMemDeallocate(out); + out = getNull(); + } + + // save heap adress in "loaded_file" + ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress = out; + + // loads recursively + object_recursive_load(ndf, out, object_type); + + // restore read address for parent call to continue + ndf.setAddress(parent_file_adress); + + // return heap memory adress + return out; +} + +bool objects_api::save(Object* in, const std::string& path, bool compressed) { + ArchiverOut ndf(path.c_str()); + + if (!ndf.isOpened()) { + return false; + } + + clear_object_flags(); + + // save version info + ObjectsFileHeader header; + ndf << header; + + ndf.setFreeAddress(ndf.getAddress()); + + save(ndf, in); + + // TODO : add compression + /* + if (compressed) { + auto temp = path + ".bz2"; + compressF2F(path.read(), temp.cstr()); + + File::remove(path.read()); + File::rename(temp.cstr(), path.read()); + } + */ + + return true; +} + +Object* objects_api::load(const std::string& path) { + /* + auto temp_file_name = path + ".unz"; + bool unz_res = decompressF2F(path.cstr(), temp_file_name.cstr()); + + if (!unz_res) { + return nullptr; + } + + File ndf(temp_file_name.cstr(), osfile_openflags::LOAD); + */ + + ArchiverIn ndf(path.c_str()); + + if (!ndf.isOpened()) { + return nullptr; + } + + // check for compatibility + ObjectsFileHeader current_header; + ObjectsFileHeader loaded_header(false); + + ndf >> loaded_header; + + if (!memEqual(¤t_header, &loaded_header, sizeof(ObjectsFileHeader))) { + return nullptr; + } + + ndf.setAddress(0); + + const auto fileSize = ndf.getSize(); + loaded_file = (int1*) malloc(fileSize); + memSetVal(loaded_file, fileSize, 0); + ndf.readBytes(loaded_file, fileSize); + + ndf.setAddress(sizeof(ObjectsFileHeader)); + + Object* out = load(ndf, ndf.getAddress()); + + free(loaded_file); + + /* + ndf.close(); + + if (unz_res == nullptr) { + File::remove(temp_file_name.cstr()); + } + */ + + return out; +} \ No newline at end of file diff --git a/Objects/private/core/ObjectsModule.cpp b/Objects/private/core/ObjectsModule.cpp new file mode 100644 index 0000000..f95360d --- /dev/null +++ b/Objects/private/core/ObjectsModule.cpp @@ -0,0 +1,55 @@ + +#include "compiler/Functions.hpp" +#include "primitives/PrimitiveObjects.hpp" + +using namespace tp; +using namespace obj; + +static void defineTypes() { + objects_api::define(&DictObject::TypeData); + objects_api::define(&IntObject::TypeData); + objects_api::define(&LinkObject::TypeData); + objects_api::define(&ListObject::TypeData); + objects_api::define(&NullObject::TypeData); + objects_api::define(&StringObject::TypeData); + objects_api::define(&BoolObject::TypeData); + objects_api::define(&FloatObject::TypeData); + objects_api::define(&EnumObject::TypeData); + objects_api::define(&ClassObject::TypeData); + objects_api::define(&ColorObject::TypeData); + objects_api::define(&InterpreterObject::TypeData); + objects_api::define(&TypeObject::TypeData); + objects_api::define(&BytecodeObject::TypeData); + objects_api::define(&MethodObject::TypeData); +} + +static void defineGroups() { + objects_api::addTypeToGroup(&DictObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&IntObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&LinkObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&ListObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&NullObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&StringObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&BoolObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&FloatObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&EnumObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&ClassObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&ColorObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&MethodObject::TypeData, { "Primitives" }); + objects_api::addTypeToGroup(&InterpreterObject::TypeData, { "scripting" }); +} + +static bool init(const ModuleManifest*) { + objects_api::initialize(); + + defineTypes(); + defineGroups(); + + return true; +} + +static void deinit(const ModuleManifest*) { objects_api::finalize(); } + +static ModuleManifest* sModuleDependencies[] = { nullptr }; + +ModuleManifest obj::gModuleObjects = ModuleManifest("Objects", init, deinit, sModuleDependencies); diff --git a/Objects/private/core/TypeGroups.cpp b/Objects/private/core/TypeGroups.cpp new file mode 100644 index 0000000..57952dc --- /dev/null +++ b/Objects/private/core/TypeGroups.cpp @@ -0,0 +1,82 @@ + +#include "core/TypeGroups.hpp" + +#include "core/Object.hpp" + +using namespace tp; +using namespace obj; + +obj::TypeGroups::TypeGroups() : + is_group(true) { + new (&childs) Dict(); +} + +obj::TypeGroups::TypeGroups(bool is_group) : + is_group(is_group) { + if (is_group) { + new (&childs) Dict(); + } else { + type = nullptr; + } +} + +bool obj::TypeGroups::isGroup() { return is_group; } + +obj::TypeGroups::Dict* obj::TypeGroups::getChilds() { + DEBUG_ASSERT(is_group); + return &childs; +} + +void obj::TypeGroups::setType(ObjectType* type) { + DEBUG_ASSERT(!is_group); + this->type = type; +} + +void obj::TypeGroups::addType(ObjectType* type, InitialierList path, alni cur_dir_idx) { + DEBUG_ASSERT(is_group); + + alni dir_len = (alni) path.size(); + + if (dir_len == cur_dir_idx) { + TypeGroups* type_ref = new TypeGroups(false); + type_ref->setType(type); + childs.put(type->name, type_ref); + return; + } + + TypeGroups* group = nullptr; + alni index = 0; + + for (auto dir : path) { + if (index != cur_dir_idx) { + index++; + continue; + } + + auto child_idx = childs.presents(dir); + if (child_idx) { + group = childs.getSlotVal(child_idx); + } else { + group = new TypeGroups(true); + childs.put(dir, group); + } + + group->addType(type, path, cur_dir_idx + 1); + + break; + } +} + +const obj::ObjectType* obj::TypeGroups::getType() { + DEBUG_ASSERT(!is_group); + return type; +} + +obj::TypeGroups::~TypeGroups() { + if (is_group) { + for (auto& child : childs) { + delete child->val; + } + childs.~Map(); + } +} diff --git a/Objects/private/core/TypeMethods.cpp b/Objects/private/core/TypeMethods.cpp new file mode 100644 index 0000000..f99d949 --- /dev/null +++ b/Objects/private/core/TypeMethods.cpp @@ -0,0 +1,133 @@ + +#include "core/TypeMethods.hpp" + +#include "primitives/FloatObject.hpp" +#include "primitives/NullObject.hpp" +#include "primitives/TypeObject.hpp" + +#include "interpreter/Interpreter.hpp" + +using namespace tp; +using namespace obj; + +TypeMethod obj::gDefaultTypeMethods[] = { + { + .nameid = "type", + .descr = "retrieves typeobject", + .exec = [](const TypeMethod* tm) { tm->ret.obj = TypeObject::create(tm->self->type); }, + .ret = { "typeobject", nullptr }, + }, + { + .nameid = "to_str", + .descr = "converts to string", + .exec = + [](const TypeMethod* tm) { + if (tm->self->type->conversions && tm->self->type->conversions->to_string) { + tm->ret.obj = StringObject::create(objects_api::toString(tm->self)); + } + }, + .ret = { "string object", nullptr }, + }, + { + .nameid = "to_float", + .descr = "converts to float", + .exec = + [](const TypeMethod* tm) { + if (tm->self->type->conversions && tm->self->type->conversions->to_float) { + tm->ret.obj = FloatObject::create(objects_api::toFloat(tm->self)); + } + }, + .ret = { "string object", nullptr }, + }, +}; + +int2 TypeMethods::presents(const std::string& id) const { + for (int2 idx = 0; idx < mNMethods; idx++) { + if (id == methods[idx]->nameid) { + return idx; + } + } + + int2 idx = 0; + for (auto& tm : gDefaultTypeMethods) { + if (id == tm.nameid) { + return { int2(idx + MAX_TYPE_METHODS) }; + } + idx++; + } + + return -1; +} + +TypeMethods::LookupKey TypeMethods::presents(const ObjectType* type, const std::string& id) { + + int2 depth = 0; + int2 idx = 0; + + for (auto iter_type = type; iter_type; iter_type = iter_type->base) { + idx = iter_type->type_methods.presents(id); + if (idx != -1) { + break; + } + depth++; + } + + return { idx, depth }; +} + +const TypeMethod* TypeMethods::getMethod(int2 key) const { + if (key < MAX_TYPE_METHODS) { + return methods[key]; + } + return &gDefaultTypeMethods[key - MAX_TYPE_METHODS]; +} + +const TypeMethod* TypeMethods::getMethod(const ObjectType* type, LookupKey key) { + auto type_iter = type; + for (auto idx = 0; idx < key.type_depth; idx++) { + type_iter = type_iter->base; + } + return type_iter->type_methods.getMethod(key.key); +} + +void TypeMethods::init() { + while (methods[mNMethods]) { + mNMethods++; + } + + for (int1 i = 0; i < mNMethods; i++) { + methods[i]->init(); + } + + // initialize and use finate state automata to lookup methods +} + +halni TypeMethods::nMethods() const { return mNMethods; } + +void TypeMethod::operator()(Interpreter* interp) const { + for (auto i = 1; i <= mNargs; i++) { + args[mNargs - i].obj = interp->mOperandsStack.getOperand(); + // objects_api::refinc(args[i].obj); + ASSERT(args[mNargs - i].obj && "expected an argument"); + } + + ASSERT(!interp->mOperandsStack.getOperand() && "args remained"); + interp->mOperandsStack.getOperand(); + + self = interp->mLastParent; + + exec(this); + + if (ret.obj) { + interp->mOperandsStack.push(ret.obj); + interp->mScopeStack.addTempReturn(ret.obj); + } else { + interp->mOperandsStack.push(objects_api::getNullReferenced()); + } +} + +void TypeMethod::init() { + while (args[mNargs].descr) { + mNargs++; + } +} diff --git a/Objects/private/interpreter/CallStack.cpp b/Objects/private/interpreter/CallStack.cpp new file mode 100644 index 0000000..65e9fea --- /dev/null +++ b/Objects/private/interpreter/CallStack.cpp @@ -0,0 +1,35 @@ + +#include "interpreter/CallStack.hpp" + +#include "interpreter/ByteCode.hpp" +#include "primitives/MethodObject.hpp" + +using namespace tp; +using namespace obj; + +void CallStack::enter(const CallStack::CallFrame& frame) { + if (mStack.size()) { + auto& last_frame = mStack.last(); + last_frame.mIp = last_frame.mMethod->mBytecodeLink->mBytecode.mInstructionIdx; + } + + frame.mMethod->mBytecodeLink->mBytecode.mArgumentsLoaded = 0; + frame.mMethod->mBytecodeLink->mBytecode.mInstructionIdx = 0; + objects_api::increaseReferenceCount(frame.mMethod); + mStack.append(frame); +} + +void CallStack::leave() { + auto frame = mStack.last(); + objects_api::destroy(frame.mMethod); + mStack.pop(); + + if (mStack.size()) { + auto& last_frame = mStack.last(); + last_frame.mMethod->mBytecodeLink->mBytecode.mInstructionIdx = last_frame.mIp; + } +} + +ByteCode* CallStack::getBytecode() { return &mStack.last().mMethod->mBytecodeLink->mBytecode; } + +halni CallStack::len() const { return mStack.size(); } diff --git a/Objects/private/interpreter/Interpreter.cpp b/Objects/private/interpreter/Interpreter.cpp new file mode 100644 index 0000000..03c5f7c --- /dev/null +++ b/Objects/private/interpreter/Interpreter.cpp @@ -0,0 +1,611 @@ + +#include "interpreter/Interpreter.hpp" + +#include "primitives/PrimitiveObjects.hpp" + +#include "Timing.hpp" + +using namespace tp; +using namespace obj; + +inline uint1 read_byte(ByteCode* bytecode) { + auto out = (uint1) bytecode->mInstructions[bytecode->mInstructionIdx]; + bytecode->mInstructionIdx++; + return out; +} + +// exeption for opcodes +// reads 2 bytes from instructions in order to load constant onto operands stack +uint2 loadConstDataIdx(ByteCode* bytecode) { + uint2 out = 0; + out |= ((uint2) read_byte(bytecode)); + out |= ((uint2) read_byte(bytecode) << 8); + return out; +} + +// exeption for opcodes +// reads 2 bytes from instructions in order to load constant onto operands stack +void skip_param(ByteCode* bytecode) { bytecode->mInstructionIdx += 2; } + +uint2 param(ByteCode* bytecode) { return loadConstDataIdx(bytecode); } + +void Interpreter::exec( + obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, InitialierList globals2 +) { + if (!method->mBytecodeLink->mBytecode.mInstructions.size()) { + return; + } + + mCallStack.enter({ nullptr, method, 0 }); + mCallStack.mStack.last().mSelf = self; + + stepBytecodeIn(); + + if (globals) { + for (auto glb : globals->getItems()) { + mScopeStack.addLocal(glb->val, glb->key); + } + } + + for (auto global_def : globals2) { + mScopeStack.addLocal(global_def.obj, global_def.id); + } +} + +bool Interpreter::finished() const { return !mCallStack.len(); } + +void Interpreter::stepBytecode() { + halni call_depth = mCallStack.len(); + do { + stepBytecodeIn(); + if (finished()) { + return; + } + } while (call_depth != mCallStack.len()); +} + +void Interpreter::stepBytecodeOut() { + if (finished()) { + return; + } + + halni call_depth = mCallStack.len(); + if (!call_depth) { + return; + } + + do { + stepBytecodeIn(); + if (finished()) { + return; + } + } while (call_depth - 1 != mCallStack.len()); +} + +void Interpreter::stepBytecodeIn() { + using namespace obj; + using namespace tp; + + DEBUG_BREAK(finished()); + + auto bytecode = mCallStack.getBytecode(); + + if (bytecode->mInstructionIdx >= (ualni) bytecode->mInstructions.size()) { + // just return + if (mScopeStack.mIdx) { + mScopeStack.leaveScope(); + } + + mCallStack.leave(); + + if (mCallStack.len()) { + mOperandsStack.push(objects_api::getNullReferenced()); + } + return; + } + + auto opcode = bytecode->mInstructions[bytecode->mInstructionIdx]; + bytecode->mInstructionIdx++; + + switch (opcode) { + + case OpCode::NONE: + { + break; + } + + case OpCode::HALT: + { + while (true) { + sleep(3); + } + break; + } + + case OpCode::TERMINATE: + { + // terminate(0); + } + + case OpCode::IGNORE: + { + mOperandsStack.getOperand(); + break; + } + + case OpCode::LOAD_CONST: + { + auto idx = loadConstDataIdx(bytecode); + auto const_obj = bytecode->mConstants[idx]; + mOperandsStack.push(const_obj); + break; + } + + case OpCode::LOAD_LOCAL: + { + auto idx = loadConstDataIdx(bytecode); + auto const_obj = bytecode->mConstants[idx]; + auto local_id = objects_api::cast(const_obj); + ASSERT(local_id && "Invalid Object Type"); + auto local = mScopeStack.getLocal(local_id->val); + mOperandsStack.push(local); + break; + } + + case OpCode::SCOPE_IN: + { + mScopeStack.enterScope(true); + break; + } + + case OpCode::JUMP: + { + bytecode->mInstructionIdx += param(bytecode); + break; + } + + case OpCode::JUMP_IF: + { + auto cond = mOperandsStack.getOperand(); + if (objects_api::toBool(cond)) { + bytecode->mInstructionIdx += param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_IF_NOT: + { + auto cond = mOperandsStack.getOperand(); + if (!objects_api::toBool(cond)) { + bytecode->mInstructionIdx += param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_R: + { + bytecode->mInstructionIdx -= param(bytecode); + break; + } + + case OpCode::JUMP_IF_R: + { + auto cond = mOperandsStack.getOperand(); + if (objects_api::toBool(cond)) { + bytecode->mInstructionIdx -= param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_IF_NOT_R: + { + auto cond = mOperandsStack.getOperand(); + if (!objects_api::toBool(cond)) { + bytecode->mInstructionIdx -= param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::SCOPE_OUT: + { + mScopeStack.leaveScope(); + break; + } + + case OpCode::PRINT: + { + auto obj = mOperandsStack.getOperand(); + if (obj->type->conversions && obj->type->conversions->to_string) { + auto str = objects_api::toString(obj); + printf("%s\n", str.c_str()); + } else { + printf("Object with type '%s' has no string representation.\n", obj->type->name); + } + break; + } + + case OpCode::OBJ_CREATE_LOCAL: + { + auto type = mOperandsStack.getOperand(); + auto id = mOperandsStack.getOperand(); + mScopeStack.addLocal(objects_api::createByName(type->val.c_str()), id->val); + break; + } + + case OpCode::DEF_LOCAL: + { + auto id = mOperandsStack.getOperand(); + auto obj = mOperandsStack.getOperand(); + mScopeStack.addLocal(obj, id->val); + objects_api::increaseReferenceCount(obj); + // mScopeStack.popTemp(); + break; + } + + case OpCode::OBJ_CREATE: + { + auto type = mOperandsStack.getOperand(); + + // basic types + auto idx = objects_api::isType(type->val.c_str()); + if (idx) { + Object* new_obj = objects_api::createByName(type->val.c_str()); + + mOperandsStack.push(new_obj); + mScopeStack.addTemp(new_obj); + break; + } + + // class creation + auto local_class = mScopeStack.getLocal(type->val); + + auto method = objects_api::cast(local_class); + ASSERT(method); + + // class is a function - execute it as a constructor + + // PUSH_ARGS protocol + uint2 len = 0; + mOperandsStack.push((Object*) (alni) len); + mOperandsStack.push(nullptr); + + // CALL protocol + mScopeStack.enterScope(false); + mCallStack.enter({ nullptr, method, 0 }); + break; + } + + case OpCode::CLASS_CONSTRUCT: + { + auto class_obj = objects_api::create(); + + for (auto local : mScopeStack.getCurrentScope()->mLocals) { + class_obj->addMember(local->val, local->key); + } + + mOperandsStack.push(class_obj); + mScopeStack.addTempReturn(class_obj); + + mScopeStack.leaveScope(); + mCallStack.leave(); + return; + } + + case OpCode::RETURN: + { + // mScopeStack.addTempReturn(NDO_NULL_REF); + mScopeStack.leaveScope(); + mCallStack.leave(); + if (mCallStack.len()) { + mOperandsStack.push(objects_api::getNullReferenced()); + } + break; + } + + case OpCode::PUSH_ARGS: + { + + // Layout of OperandsStack: + // .... + // +1) length : to chech number of args + // +2) nullptr : stop saving args + // +3) object1 + // +4) object2 + // ... + + uint2 len = read_byte(bytecode); + mOperandsStack.push((Object*) (alni) len); + mOperandsStack.push(nullptr); + break; + } + + case OpCode::SAVE_ARGS: + { + uint2 args_len = read_byte(bytecode); + auto argument = mOperandsStack.getOperand(); + + while (argument) { + objects_api::increaseReferenceCount(argument); + + auto argument_id = bytecode->mConstants[loadConstDataIdx(bytecode)]; + auto id = objects_api::cast(argument_id); + DEBUG_ASSERT(id); + mScopeStack.addLocal(argument, id->val); + bytecode->mArgumentsLoaded++; + argument = mOperandsStack.getOperand(); + } + + uint2 saved_len = uint2(ualni(mOperandsStack.getOperand())); + ASSERT(args_len == saved_len && "invalid number of arguments passefd"); + + break; + } + + case OpCode::RETURN_OBJ: + { + if (mCallStack.len() > 1) { + auto ret = mOperandsStack.getOperand(); + mOperandsStack.push(ret); + mScopeStack.addTempReturn(ret); + } + + mScopeStack.leaveScope(); + mCallStack.leave(); + break; + } + + case OpCode::CALL: + { + auto obj = mOperandsStack.getOperand(); + + if (!mIsTypeMethod) { + auto method = objects_api::cast(obj); + + mScopeStack.enterScope(false); + mCallStack.enter({ nullptr, method, 0 }); + + // push self + mCallStack.mStack.last().mSelf = mLastParent; + break; + } + + (*mTypeMethod)(this); + mIsTypeMethod = false; + mTypeMethod = nullptr; + break; + } + + case OpCode::OBJ_ADD: + { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->arithmetics && left->type->arithmetics->add && "cannot add object of this type"); + + auto res = objects_api::instantiate(left); + res->type->arithmetics->add(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_SUB: + { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->arithmetics && left->type->arithmetics->add && "cannot add object of this type"); + + auto res = objects_api::instantiate(left); + res->type->arithmetics->sub(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_MUL: + { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->arithmetics && left->type->arithmetics->add && "cannot add object of this type"); + + auto res = objects_api::instantiate(left); + res->type->arithmetics->mul(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_DIV: + { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->arithmetics && left->type->arithmetics->add && "cannot add object of this type"); + + auto res = objects_api::instantiate(left); + res->type->arithmetics->div(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + + case OpCode::OBJ_COPY: + { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + objects_api::copy(left, right); + break; + } + + case OpCode::CHILD: + { + auto child_id = mOperandsStack.getOperand(); + auto parent = mOperandsStack.getOperand(); + bool is_method = read_byte(bytecode); + + Object* child = nullptr; + TypeMethods::LookupKey tm_key; + + if (is_method) { + tm_key = TypeMethods::presents(parent->type, child_id->val); + } + + if (tm_key) { + mTypeMethod = TypeMethods::getMethod(parent->type, tm_key); + mIsTypeMethod = true; + + } else { + auto class_obj = objects_api::cast(parent); + + ASSERT(class_obj && "not a class object"); + auto idx = class_obj->members->presents(child_id->val); + ASSERT(idx && "No child with such id"); + child = class_obj->members->getSlotVal(idx); + } + + // mScopeStack.addTemp(obj); + mOperandsStack.push(child); + mLastParent = parent; + break; + } + + case OpCode::SELF: + { + // mScopeStack.addTemp(obj); + ASSERT(mCallStack.mStack.last().mSelf); + mOperandsStack.push(mCallStack.mStack.last().mSelf); + break; + } + + case OpCode::OBJ_LOAD: + { + auto path = mOperandsStack.getOperand(); + auto obj = objects_api::load(path->val); + mScopeStack.addTemp(obj); + mOperandsStack.push(obj); + break; + } + case OpCode::OBJ_SAVE: + { + auto path = mOperandsStack.getOperand(); + auto target = mOperandsStack.getOperand(); + objects_api::save(target, path->val); + break; + } + + case OpCode::AND: + { + auto left = objects_api::toBool(mOperandsStack.getOperand()); + auto right = objects_api::toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(left && right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::OR: + { + auto left = objects_api::toBool(mOperandsStack.getOperand()); + auto right = objects_api::toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(left || right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::NOT: + { + auto inv = objects_api::toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(!inv); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::NOT_EQUAL: + { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + auto out = BoolObject::create(!objects_api::compare(left, right)); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL: + { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + auto out = BoolObject::create(objects_api::compare(left, right)); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + + case OpCode::MORE: + { + auto left = objects_api::toFloat(mOperandsStack.getOperand()); + auto right = objects_api::toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left > right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::LESS: + { + auto left = objects_api::toFloat(mOperandsStack.getOperand()); + auto right = objects_api::toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left < right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL_OR_MORE: + { + auto left = objects_api::toFloat(mOperandsStack.getOperand()); + auto right = objects_api::toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left >= right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL_OR_LESS: + { + auto left = objects_api::toFloat(mOperandsStack.getOperand()); + auto right = objects_api::toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left <= right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + + default: + { + ASSERT("Invalid OpCode"); + } + } +} + +void Interpreter::execAll( + obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, InitialierList globals2 +) { + if (!method->mBytecodeLink->mBytecode.mInstructions.size()) { + return; + } + + exec(method, self, globals, globals2); + while (!finished()) { + stepBytecodeIn(); + } +} diff --git a/Objects/private/interpreter/OperandsStack.cpp b/Objects/private/interpreter/OperandsStack.cpp new file mode 100644 index 0000000..4f7206d --- /dev/null +++ b/Objects/private/interpreter/OperandsStack.cpp @@ -0,0 +1,29 @@ + +#include "interpreter/OperandsStack.hpp" + +using namespace tp; +using namespace obj; + +OperandStack::OperandStack() { + mBuff = new Operand[MAX_STACK_SIZE]; + mIdx = 0; +} + +void OperandStack::push(Operand operand) { + ASSERT(MAX_STACK_SIZE - 1 > mIdx && "stack overflow"); + mBuff[mIdx] = operand; + mIdx++; +} + +void OperandStack::pop() { + ASSERT(mIdx != 0 && "stack overflow"); + mIdx--; +} + +Operand OperandStack::getOperand() { + auto ret = mBuff[mIdx - 1]; + mIdx--; + return ret; +} + +OperandStack::~OperandStack() { delete[] mBuff; } diff --git a/Objects/private/interpreter/OperationCodes.cpp b/Objects/private/interpreter/OperationCodes.cpp new file mode 100644 index 0000000..9aa8104 --- /dev/null +++ b/Objects/private/interpreter/OperationCodes.cpp @@ -0,0 +1,370 @@ + +#include "Utils.hpp" + +#include "interpreter/OperatoinCodes.hpp" + +using namespace tp; +using namespace obj; + +OpcodeInfos tp::obj::gOpcodeInfos; + +#define CONST_IDX_BYTES 2 + +#define OP(opcode, name, desc, ops, params) add(opcode, { #name, #desc, ops, params }); + +OpcodeInfos::OperandsInfo::OperandsInfo() {} +OpcodeInfos::OperandsInfo::OperandsInfo(InitialierList list) { + DEBUG_ASSERT(MAX_OPERANDS >= list.size()); + for (auto item : list) { + buff[len] = item; + len++; + } +} + +OpcodeInfos::ParamsInfo::ParamsInfo() {} +OpcodeInfos::ParamsInfo::ParamsInfo(InitialierList list) { + DEBUG_ASSERT(MAX_PARAMS >= list.size()); + for (auto item : list) { + buff[len] = item; + len++; + } +} + +uint1 OpcodeInfos::OpInfo::opsize() { + uint1 out = 1; + for (auto i = 0; i < params.len; i++) { + out += params.buff[i].bytes; + } + return out; +} + +OpcodeInfos::OpcodeInfos() { + + add(OpCode::NONE, { "NONE", "Does Nothing" }); + add(OpCode::HALT, { "HALT", "Halts for 3 sec" }); + add(OpCode::TERMINATE, { "TERMINATE", "Terminates the process" }); + add(OpCode::DEF_LOCAL, { .name = "DEF LOCAL", .desc = "Adds object to the locals", .operands = { { "str", "local id" }, { "any", "object to be local" } } }); + add(OpCode::LOAD_CONST, { + .name = "LOAD CONST", + .desc = "Loads const object from the const pool", + .params = { + { "const obj idx", CONST_IDX_BYTES }, + } + } + ); + add(OpCode::LOAD_LOCAL, { + .name = "LOAD LOCAL", + .desc = "Loads local object from the locals", + .params = { + { "idx of const StringObject - represents name id", CONST_IDX_BYTES }, + } + } + ); + add( + OpCode::IGNORE, + { + .name = "IGNORE", + .desc = "Ignores returned object by destroying it", + } + ); + add( + OpCode::SCOPE_IN, + { + .name = "SCOPE IN", + .desc = "Enters new scope", + } + ); + add( + OpCode::SCOPE_OUT, + { + .name = "SCOPE OUT", + .desc = "Leaves current scope", + } + ); + add(OpCode::CALL, { + .name = "CALL", + .desc = "Leaves current scope", + .operands = { + { "method", "method object" }, + } + } + ); + add(OpCode::RETURN_OBJ, { + .name = "RETURN OBJ", + .desc = "Returns Operand", + .operands = { + { "any", "object to be returned" }, + } + } + ); + add( + OpCode::RETURN, + { + .name = "RETURN", + .desc = "Returns Null Object", + } + ); + add(OpCode::CHILD, { + .name = "CHILD", + .desc = "Retrieves child from class", + .operands = { + { "str", "child id" }, + { "class", "parent class" }, + }, + .params = { + { "is method ?", 1 } + } + } + ); + add(OpCode::PUSH_ARGS, { .name = "PUSH ARGS", .desc = "Pushes Separator on the OperandsStack", .params = { { "length to chech number of args", 1 } } }); + add(OpCode::SAVE_ARGS, { .name = "SAVE ARGS", .desc = "Pushes operands to locals", .params = { { "number of arguments in function defenition", 1 } } }); + add(OpCode::OBJ_CREATE_LOCAL, { + .name = "CREATE LOCAL OBJ", + .desc = "creates object of given type and adds it to the locals", + .operands = { + { "str", "types" }, + { "str", "name id" }, + } + } + ); + add(OpCode::OBJ_CREATE, { + .name = "CREATE OBJ", + .desc = "creates object of given type", + .operands = { + { "str", "types" }, + } + } + ); + add(OpCode::OBJ_COPY, { + .name = "COPY", + .desc = "Copies objects", + .operands = { + { "any", "self" }, + { "any", "target" }, + } + } + ); + add(OpCode::OBJ_SAVE, { + .name = "SAVE", + .desc = "Saves object to a file", + .operands = { + { "str", "path" }, + { "any", "self" }, + } + } + ); + add(OpCode::OBJ_LOAD, { + .name = "LOAD", + .desc = "loads object from a file", + .operands = { + { "str", "path" }, + { "any", "self" }, + } + } + ); + add(OpCode::OBJ_ADD, { + .name = "ADD", + .desc = "Adds objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_SUB, { + .name = "SUB", + .desc = "Subtruts objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_MUL, { + .name = "MUL", + .desc = "Multiplies objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_DIV, { + .name = "DIV", + .desc = "Divides objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::AND, { + .name = "AND", + .desc = "Logical AND of objects of the same type that supports boolean ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OR, { + .name = "OR", + .desc = "Logical OR of objects of the same type that supports boolean ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL, { + .name = "EQUAL", + .desc = "Compares objects", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::NOT_EQUAL, { + .name = "NOT EQUAL", + .desc = "Compares objects and inverts the resault", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::MORE, { + .name = "MORE", + .desc = " > ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::LESS, { + .name = "LESS", + .desc = " < ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL_OR_MORE, { + .name = "GRATER OR EQUAL", + .desc = " >= ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL_OR_LESS, { + .name = "LESS OR EQUAL", + .desc = " <= ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::NOT, { + .name = "NOT", + .desc = "Inverts the object bolean representation", + .operands = { + { "any", "self" }, + } + } + ); + add(OpCode::JUMP, { + .name = "JUMP", + .desc = "Offsets the instruction pointer", + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_R, { + .name = "JUMP R", + .desc = "Offsets the instruction pointer in reversed direction", + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF, { + .name = "JUMP IF", + .desc = "Offsets the instruction pointer if condition is met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_R, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer in reversed direction if condition is met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_NOT, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer if condition is NOT met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_NOT_R, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer in reversed direction if condition is NOT met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::PRINT, { + .name = "PRINT", + .desc = "Prints the object string representation", + .operands = { + { "any", "self" }, + } + } + ); + add( + OpCode::CLASS_CONSTRUCT, + { + .name = "CLASS CONSTRUCT", + .desc = "Creates class from the function execution state", + } + ); + add( + OpCode::SELF, + { + .name = "SELF", + .desc = "retrieves parent class of the current method", + } + ); +} + +OpcodeInfos::OpInfo OpcodeInfos::fetch(OpCode code) { + DEBUG_ASSERT((alni) code >= 0 && (alni) code < (alni) OpCode::END_OPCODES); + return buff[(alni) code]; +} + +void OpcodeInfos::add(OpCode code, const OpInfo& info) { buff[(alni) code] = info; } \ No newline at end of file diff --git a/Objects/private/interpreter/ScopeStack.cpp b/Objects/private/interpreter/ScopeStack.cpp new file mode 100644 index 0000000..7ce9189 --- /dev/null +++ b/Objects/private/interpreter/ScopeStack.cpp @@ -0,0 +1,84 @@ + +#include "interpreter/ScopeStack.hpp" + +using namespace tp; +using namespace obj; + +Scope::~Scope() { + for (auto local : mLocals) { + objects_api::destroy(local->val); + } + for (auto tmp : mTemps) { + objects_api::destroy(tmp.data()); + } +} + +obj::Object* ScopeStack::getLocalUtil(Scope& scope, const std::string& id) { + + auto idx = scope.mLocals.presents(id); + + if (idx) { + return scope.mLocals.getSlotVal(idx); + } else { + mIterIdx--; + Scope& parent_scope = mBuff[mIterIdx]; + ASSERT(parent_scope.mChildReachable && "Undefined Local Reference"); + return getLocalUtil(parent_scope, id); + } +} + +ScopeStack::ScopeStack() { + mBuff = (Scope*) malloc(sizeof(Scope) * MAX_STACK_SIZE); + mIdx = 0; + mIterIdx = 0; +} + +void ScopeStack::enterScope(bool aChildReachable) { + ASSERT(MAX_STACK_SIZE - 1 > mIdx && "stack overflow"); + new (&mBuff[mIdx]) Scope(); + mBuff[mIdx].mChildReachable = aChildReachable; + mIdx++; +} + +void ScopeStack::leaveScope() { + ASSERT(mIdx != 0 && "stack overflow"); + mBuff[mIdx - 1].~Scope(); + mIdx--; +} + +void ScopeStack::addTemp(obj::Object* tmp) { + objects_api::increaseReferenceCount(tmp); + mBuff[mIdx - 1].mTemps.pushBack(tmp); +} + +void ScopeStack::popTemp() { + objects_api::destroy(mBuff[mIdx - 1].mTemps.last()->data); + mBuff[mIdx - 1].mTemps.popBack(); +} + +void ScopeStack::addTempReturn(obj::Object* ret) { + if (mIdx >= 2) { + objects_api::increaseReferenceCount(ret); + mBuff[mIdx - 2].mTemps.pushBack(ret); + } +} + +void ScopeStack::addLocal(obj::Object* local, const std::string& id) { + DEBUG_ASSERT(mIdx != 0 && "No scope given"); + Scope::ObjDict& locals = mBuff[mIdx - 1].mLocals; + auto idx = locals.presents(id); + if (idx) { + objects_api::destroy(locals.getSlotVal(idx)); + } + objects_api::increaseReferenceCount(local); + locals.put(id, local); +} + +obj::Object* ScopeStack::getLocal(const std::string& str) { + mIterIdx = mIdx - 1; + return getLocalUtil(mBuff[mIdx - 1], str); +} + +Scope* ScopeStack::getCurrentScope() { return &mBuff[mIdx - 1]; } + +ScopeStack::~ScopeStack() { free(mBuff); } diff --git a/Objects/private/parser/Bindings.cpp b/Objects/private/parser/Bindings.cpp new file mode 100644 index 0000000..cfb9433 --- /dev/null +++ b/Objects/private/parser/Bindings.cpp @@ -0,0 +1,242 @@ + +#include "Private.hpp" + +using namespace tp; +using namespace obj; + +typedef lalr::ParserNode Node; + +static UserData scope(const UserData* start, const Node*, size_t) { return start[1]; } + +static UserData scope_empty(const UserData*, const Node*, size_t) { return new StatementScope({}, true); } + +static UserData stm_list_append(const UserData* start, const Node*, size_t) { + auto scope = (StatementScope*) start[0].statement; + scope->mStatements.append(start[1].statement); + return scope; +} + +static UserData stm_list_create(const UserData* start, const Node*, size_t) { + return new StatementScope({ start[0].statement }, true); +} + +static UserData stm_log(const UserData* start, const Node*, size_t) { return new StatementPrint(start[1].expression); } + +static UserData stm_assign(const UserData* start, const Node*, size_t) { + return new StatementCopy(start[0].expression, start[2].expression); +} + +static UserData stm_var_def_new_type(const UserData*, const Node* nodes, size_t) { + return new StatementLocalDef((char*) nodes[1].lexeme().c_str(), new ExpressionNew((char*) nodes[3].lexeme().c_str())); +} + +static UserData stm_var_def_assign(const UserData* start, const Node* nodes, size_t) { + return new StatementLocalDef((char*) nodes[1].lexeme().c_str(), start[3].expression); +} + +static UserData stm_return(const UserData* start, const Node*, size_t length) { + if (length == 2) { + return new StatementReturn(start[1].expression); + } + return new StatementReturn(); +} + +static UserData stm_ignore(const UserData* start, const Node*, size_t) { + return new StatementIgnore(start[0].expression); +} + +static UserData stm_def_class(const UserData* start, const Node* nodes, size_t) { + auto newClass = new StatementClassDef((char*) nodes[1].lexeme().c_str(), (StatementScope*) start[2].statement); + return newClass; +} + +static UserData stm_def_method(const UserData* start, const Node* nodes, size_t) { + auto method = new StatementFuncDef((char*) nodes[1].lexeme().c_str()); + method->mStatements = (StatementScope*) start[5].statement; + auto args = start[3].arguments; + method->mArgs = *args; + delete args; + return method; +} + +static UserData stm_if(const UserData* start, const Node*, size_t length) { + if (length == 5) return new StatementIf(start[2].expression, (StatementScope*) start[4].statement, nullptr); + return new StatementIf( + start[2].expression, (StatementScope*) start[4].statement, (StatementScope*) start[6].statement + ); +} + +static UserData stm_while_loop(const UserData* start, const Node*, size_t) { + return new StatementWhile(start[2].expression, (StatementScope*) start[4].statement); +} + +static UserData stm_break(const UserData*, const Node*, size_t) { + ASSERT(0); + // todo : implement break + return {}; +} + +static UserData id_list_append(const UserData* start, const Node* nodes, size_t) { + auto list = start[0].arguments; + list->append((char*) nodes[1].lexeme().c_str()); + return list; +} + +static UserData id_list_create(const UserData*, const Node* nodes, size_t) { + return new tp::Buffer({ (char*) nodes[0].lexeme().c_str() }); +} + +static UserData expr_function(const UserData* start, const Node*, size_t) { + auto expr = start[0].expression; + auto args = (ExpressionList*) start[2].expression; + return expr->ExprCall(args); +} + +static UserData expr_method(const UserData* start, const Node* nodes, size_t) { + auto expr = start[0].expression; + auto args = (ExpressionList*) (start[4].expression); + auto childId = nodes[1].lexeme(); + auto method = new ExpressionChild(expr, (char*) childId.c_str()); + return method->ExprCall(args); +} + +static UserData expr_list_append(const UserData* start, const Node*, size_t) { + auto list = (ExpressionList*) start[0].expression; + auto expr = start[2].expression; + list->mItems.append(expr); + return list; +} + +static UserData expr_list_create(const UserData* start, const Node*, size_t) { + auto exprList = new ExpressionList(); + exprList->mItems.append(start[0].expression); + return exprList; +} + +static UserData expr_child(const UserData* start, const Node* nodes, size_t) { + return new ExpressionChild(start[0].expression, (char*) nodes[2].lexeme().c_str()); +} + +static UserData expr_bool_eq(const UserData* start, const Node*, size_t) { + return new ExpressionBoolean(start[0].expression, start[2].expression, ExpressionBoolean::BoolType::EQUAL); +} + +static UserData expr_bool_negate(const UserData* start, const Node*, size_t) { + return new ExpressionBoolean(start[1].expression); +} + +static UserData expr_bool_neq(const UserData* start, const Node*, size_t) { + return new ExpressionBoolean(start[0].expression, start[2].expression, ExpressionBoolean::BoolType::NOT_EQUAL); +} + +static UserData expr_bool_grater(const UserData* start, const Node*, size_t) { + return new ExpressionBoolean(start[0].expression, start[2].expression, ExpressionBoolean::BoolType::MORE); +} + +static UserData expr_bool_lesser(const UserData* start, const Node*, size_t) { + return new ExpressionBoolean(start[0].expression, start[2].expression, ExpressionBoolean::BoolType::LESS); +} + +static UserData expr_bool_grater_eq(const UserData* start, const Node*, size_t) { + return new ExpressionBoolean(start[0].expression, start[2].expression, ExpressionBoolean::BoolType::EQUAL_OR_MORE); +} + +static UserData expr_bool_lesser_eq(const UserData* start, const Node*, size_t) { + return new ExpressionBoolean(start[0].expression, start[2].expression, ExpressionBoolean::BoolType::EQUAL_OR_LESS); +} + +static UserData expr_add(const UserData* start, const Node*, size_t) { + return new ExpressionArithmetics(start[0].expression, start[2].expression, obj::OpCode::OBJ_ADD); +} + +static UserData expr_subtract(const UserData* start, const Node*, size_t) { + return new ExpressionArithmetics(start[0].expression, start[2].expression, obj::OpCode::OBJ_SUB); +} + +static UserData expr_multiply(const UserData* start, const Node*, size_t) { + return new ExpressionArithmetics(start[0].expression, start[2].expression, obj::OpCode::OBJ_MUL); +} + +static UserData expr_divide(const UserData* start, const Node*, size_t) { + return new ExpressionArithmetics(start[0].expression, start[2].expression, obj::OpCode::OBJ_DIV); +} + +static UserData expr_compound(const UserData* start, const Node*, size_t) { return start[1]; } + +static UserData expr_bool(const UserData*, const Node* nodes, size_t) { + return new ExpressionConst(nodes[0].lexeme() == "true"); +} + +static UserData expr_int(const UserData*, const Node* nodes, size_t) { + return new ExpressionConst(stoi(nodes[0].lexeme())); +} + +static UserData expr_float(const UserData*, const Node* nodes, size_t) { + return new ExpressionConst(stof(nodes[0].lexeme())); +} + +static UserData expr_string(const UserData*, const Node* nodes, size_t) { + return new ExpressionConst((char*) nodes[0].lexeme().c_str()); +} + +static UserData expr_id(const UserData*, const Node* nodes, size_t) { + return new ExpressionLocal((char*) nodes[0].lexeme().c_str()); +} + +static UserData tmp(const UserData* start, const Node*, size_t) { + // pass through + return *start; +} + +#define BIND(name) parser.set_action_handler(#name, &(name)) + +void obj::bind(LalrParser& parser) { + BIND(scope); + + BIND(stm_list_append); + BIND(stm_list_create); + + BIND(expr_list_append); + BIND(expr_list_create); + + BIND(stm_var_def_new_type); + BIND(stm_var_def_assign); + BIND(stm_log); + BIND(stm_assign); + BIND(stm_ignore); + + BIND(stm_while_loop); + BIND(stm_return); + BIND(stm_break); + BIND(scope_empty); + BIND(stm_def_method); + BIND(stm_def_class); + BIND(stm_if); + BIND(id_list_append); + BIND(id_list_create); + + BIND(expr_function); + BIND(expr_method); + BIND(expr_child); + BIND(expr_bool_eq); + BIND(expr_bool_negate); + BIND(expr_bool_neq); + BIND(expr_bool_grater); + BIND(expr_bool_lesser); + BIND(expr_bool_grater_eq); + BIND(expr_bool_lesser_eq); + BIND(expr_add); + BIND(expr_subtract); + BIND(expr_multiply); + BIND(expr_divide); + BIND(expr_compound); + BIND(expr_bool); + BIND(expr_int); + BIND(expr_float); + BIND(expr_string); + BIND(expr_id); + + BIND(tmp); + + parser.set_lexer_action_handler("string", &lalr::string_literal); +} diff --git a/Objects/private/parser/Parser.cpp b/Objects/private/parser/Parser.cpp new file mode 100644 index 0000000..e9d9a67 --- /dev/null +++ b/Objects/private/parser/Parser.cpp @@ -0,0 +1,48 @@ + +#include "parser/Parser.hpp" + +#include "Private.hpp" + +using namespace tp; +using namespace obj; + +lalr::ErrorPolicy::~ErrorPolicy() = default; +void lalr::ErrorPolicy::lalr_error(int line, int column, int error, const char* format, va_list args) {} +void lalr::ErrorPolicy::lalr_vprintf(const char* format, va_list args){}; + +class CustomErrorPolicy : public lalr::ErrorPolicy { +public: + virtual ~CustomErrorPolicy() override {} + + virtual void lalr_error(int line, int column, int error, const char* format, va_list args) override { + printf("Parser Error: %i %i \n", line, column); + vfprintf(stdout, format, args); + printf("\n"); + } + + virtual void lalr_vprintf(const char* format, va_list args) override { printf(format, args); } +}; + +Parser::Result Parser::parse(const std::string& stream) { + + CustomErrorPolicy errorPolicy; + + LalrParser parser(oscript_parser_state_machine, &errorPolicy); + + bind(parser); + + std::string streamStd(stream.c_str()); + streamStd += "\n"; // for Windows os to be happy + + ASSERT(parser.valid()); + + parser.parse(streamStd.begin(), streamStd.end()); + + StatementScope* out = nullptr; + + if (parser.accepted() && parser.full()) { + out = (StatementScope*) parser.user_data().statement; + } + + return { out, !(parser.accepted() && parser.full()) }; +} \ No newline at end of file diff --git a/Objects/private/parser/Private.hpp b/Objects/private/parser/Private.hpp new file mode 100644 index 0000000..50801a8 --- /dev/null +++ b/Objects/private/parser/Private.hpp @@ -0,0 +1,52 @@ + +#pragma once + +#include +#include + +#include "compiler/Statements.hpp" +#include "compiler/Expressions.hpp" + +#include "Tree.hpp" + +extern const lalr::ParserStateMachine* oscript_parser_state_machine; + +namespace tp::obj { + struct UserNode { + obj::Expression* expression = nullptr; + obj::Statement* statement = nullptr; + tp::Buffer* arguments = nullptr; + + UserNode(obj::Statement* stm) : + statement(stm) {} + + UserNode(obj::Expression* expr) : + expression(expr) {} + + UserNode(tp::Buffer* argList) : + arguments(argList) {} + + UserNode() = default; + + obj::Statement* releaseStm() { + auto out = statement; + statement = nullptr; + return out; + } + + void destroy() { + delete statement; + delete arguments; + delete expression; + } + }; + + typedef UserNode UserData; + typedef char SymbolType; + + typedef std::basic_string::iterator IteratorType; + + typedef lalr::Parser LalrParser; + + void bind(LalrParser& parser); +} \ No newline at end of file diff --git a/Objects/private/parser/oscript.cpp b/Objects/private/parser/oscript.cpp new file mode 100644 index 0000000..58017c5 --- /dev/null +++ b/Objects/private/parser/oscript.cpp @@ -0,0 +1,1793 @@ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace +{ + +using namespace lalr; + +extern const LexerAction lexer_actions []; +extern const LexerTransition lexer_transitions []; +extern const LexerState lexer_states []; +extern const LexerAction whitespace_lexer_actions []; +extern const LexerTransition whitespace_lexer_transitions []; +extern const LexerState whitespace_lexer_states []; +extern const ParserAction actions []; +extern const ParserSymbol symbols []; +extern const ParserTransition transitions []; +extern const ParserState states []; + +const ParserAction actions [] = +{ + {0, "tmp"}, + {1, "scope"}, + {2, "scope_empty"}, + {3, "stm_list_append"}, + {4, "stm_list_create"}, + {5, "stm_def_method"}, + {6, "stm_def_class"}, + {7, "stm_if"}, + {8, "stm_break"}, + {9, "stm_return"}, + {10, "stm_while_loop"}, + {11, "stm_var_def_new_type"}, + {12, "stm_var_def_assign"}, + {13, "stm_log"}, + {14, "stm_assign"}, + {15, "stm_ignore"}, + {16, "expr_list_append"}, + {17, "expr_list_create"}, + {18, "id_list_append"}, + {19, "id_list_create"}, + {20, "expr_function"}, + {21, "expr_method"}, + {22, "expr_child"}, + {23, "expr_bool_eq"}, + {24, "expr_bool_negate"}, + {25, "expr_bool_neq"}, + {26, "expr_bool_grater"}, + {27, "expr_bool_lesser"}, + {28, "expr_bool_grater_eq"}, + {29, "expr_bool_lesser_eq"}, + {30, "expr_add"}, + {31, "expr_subtract"}, + {32, "expr_multiply"}, + {33, "expr_divide"}, + {34, "expr_compound"}, + {35, "expr_bool"}, + {36, "expr_int"}, + {37, "expr_float"}, + {38, "expr_string"}, + {39, "expr_id"}, + {-1, nullptr} +}; + +const ParserSymbol symbols [] = +{ + {0, (SymbolType) 2, "dot_start", ".start", "dot_start"}, + {1, (SymbolType) 3, "dot_end", ".end", "dot_end"}, + {2, (SymbolType) 1, "error", "error", "error"}, + {3, (SymbolType) 1, "dot_whitespace", ".whitespace", "dot_whitespace"}, + {4, (SymbolType) 1, "left_paren_terminal", "(", "("}, + {5, (SymbolType) 1, "right_paren_terminal", ")", ")"}, + {6, (SymbolType) 1, "plus_terminal", "+", "+"}, + {7, (SymbolType) 1, "minus_terminal", "-", "-"}, + {8, (SymbolType) 1, "star_terminal", "*", "*"}, + {9, (SymbolType) 1, "slash_terminal", "/", "/"}, + {10, (SymbolType) 1, "dot_terminal", ".", "."}, + {11, (SymbolType) 1, "eq_terminal", "=", "="}, + {12, (SymbolType) 1, "eq__eq_terminal", "==", "=="}, + {13, (SymbolType) 1, "gt_terminal", ">", ">"}, + {14, (SymbolType) 1, "lt_terminal", "<", "<"}, + {15, (SymbolType) 1, "gt__eq_terminal", ">=", ">="}, + {16, (SymbolType) 1, "lt__eq_terminal", "<=", "<="}, + {17, (SymbolType) 1, "bang__eq_terminal", "!=", "!="}, + {18, (SymbolType) 1, "bang_terminal", "!", "!"}, + {19, (SymbolType) 1, "semi_colon_terminal", ";", ";"}, + {20, (SymbolType) 2, "script", "script", "script"}, + {21, (SymbolType) 2, "stmts", "stmts", "stmts"}, + {22, (SymbolType) 2, "scope", "scope", "scope"}, + {23, (SymbolType) 1, "left_curly_brace_terminal", "{", "{"}, + {24, (SymbolType) 1, "right_curly_brace_terminal", "}", "}"}, + {25, (SymbolType) 2, "stmt", "stmt", "stmt"}, + {26, (SymbolType) 2, "stm_var_def_new_type", "stm_var_def_new_type", "stm_var_def_new_type"}, + {27, (SymbolType) 2, "stm_var_def_assign", "stm_var_def_assign", "stm_var_def_assign"}, + {28, (SymbolType) 2, "stm_log", "stm_log", "stm_log"}, + {29, (SymbolType) 2, "stm_assign", "stm_assign", "stm_assign"}, + {30, (SymbolType) 2, "stm_while", "stm_while", "stm_while"}, + {31, (SymbolType) 2, "stm_return", "stm_return", "stm_return"}, + {32, (SymbolType) 2, "stm_break", "stm_break", "stm_break"}, + {33, (SymbolType) 2, "stm_if", "stm_if", "stm_if"}, + {34, (SymbolType) 2, "stm_def_class", "stm_def_class", "stm_def_class"}, + {35, (SymbolType) 2, "stm_def_method", "stm_def_method", "stm_def_method"}, + {36, (SymbolType) 2, "stm_ignore", "stm_ignore", "stm_ignore"}, + {37, (SymbolType) 1, "method_terminal", "method", "method"}, + {38, (SymbolType) 2, "id_list", "id_list", "id_list"}, + {39, (SymbolType) 1, "class_terminal", "class", "class"}, + {40, (SymbolType) 1, "if_terminal", "if", "if"}, + {41, (SymbolType) 2, "expr", "expr", "expr"}, + {42, (SymbolType) 1, "else_terminal", "else", "else"}, + {43, (SymbolType) 1, "break_terminal", "break", "break"}, + {44, (SymbolType) 1, "return_terminal", "return", "return"}, + {45, (SymbolType) 1, "while_terminal", "while", "while"}, + {46, (SymbolType) 1, "var_terminal", "var", "var"}, + {47, (SymbolType) 1, "colon_terminal", ":", ":"}, + {48, (SymbolType) 1, "print_terminal", "print", "print"}, + {49, (SymbolType) 2, "expr_list", "expr_list", "expr_list"}, + {50, (SymbolType) 1, "comma_terminal", ",", ","}, + {51, (SymbolType) 1, "id", "([a-z]|[A-Z])+", "id"}, + {52, (SymbolType) 1, "boolean", "true|false", "boolean"}, + {53, (SymbolType) 1, "integer", "(\\+|\\-)?[0-9]+", "integer"}, + {54, (SymbolType) 1, "real", "(\\+|\\-)?[0-9]+(\\.[0-9]+)?((e|E)(\\+|\\-)?[0-9]+)?", "real"}, + {55, (SymbolType) 1, "string", "[\\\"']:string:", "string"}, + {-1, (SymbolType) 0, nullptr, nullptr, nullptr} +}; + +const ParserTransition transitions [] = +{ + {&symbols[4], &states[85], nullptr, 0, 0, 0, 0}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 1}, + {&symbols[20], &states[1], nullptr, 0, 0, 0, 2}, + {&symbols[21], &states[2], nullptr, 0, 0, 0, 3}, + {&symbols[25], &states[13], nullptr, 0, 0, 0, 4}, + {&symbols[26], &states[14], nullptr, 0, 0, 0, 5}, + {&symbols[27], &states[16], nullptr, 0, 0, 0, 6}, + {&symbols[28], &states[18], nullptr, 0, 0, 0, 7}, + {&symbols[29], &states[20], nullptr, 0, 0, 0, 8}, + {&symbols[30], &states[22], nullptr, 0, 0, 0, 9}, + {&symbols[31], &states[23], nullptr, 0, 0, 0, 10}, + {&symbols[32], &states[25], nullptr, 0, 0, 0, 11}, + {&symbols[33], &states[27], nullptr, 0, 0, 0, 12}, + {&symbols[34], &states[28], nullptr, 0, 0, 0, 13}, + {&symbols[35], &states[29], nullptr, 0, 0, 0, 14}, + {&symbols[36], &states[30], nullptr, 0, 0, 0, 15}, + {&symbols[37], &states[32], nullptr, 0, 0, 0, 16}, + {&symbols[39], &states[37], nullptr, 0, 0, 0, 17}, + {&symbols[40], &states[39], nullptr, 0, 0, 0, 18}, + {&symbols[41], &states[59], nullptr, 0, 0, 0, 19}, + {&symbols[43], &states[44], nullptr, 0, 0, 0, 20}, + {&symbols[44], &states[45], nullptr, 0, 0, 0, 21}, + {&symbols[45], &states[47], nullptr, 0, 0, 0, 22}, + {&symbols[46], &states[51], nullptr, 0, 0, 0, 23}, + {&symbols[48], &states[57], nullptr, 0, 0, 0, 24}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 25}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 26}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 27}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 28}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 29}, + {&symbols[1], nullptr, &symbols[20], 0, 0, -1, 30}, + {&symbols[1], nullptr, &symbols[0], 1, 0, -1, 31}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 32}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 33}, + {&symbols[25], &states[12], nullptr, 0, 0, 0, 34}, + {&symbols[26], &states[14], nullptr, 0, 0, 0, 35}, + {&symbols[27], &states[16], nullptr, 0, 0, 0, 36}, + {&symbols[28], &states[18], nullptr, 0, 0, 0, 37}, + {&symbols[29], &states[20], nullptr, 0, 0, 0, 38}, + {&symbols[30], &states[22], nullptr, 0, 0, 0, 39}, + {&symbols[31], &states[23], nullptr, 0, 0, 0, 40}, + {&symbols[32], &states[25], nullptr, 0, 0, 0, 41}, + {&symbols[33], &states[27], nullptr, 0, 0, 0, 42}, + {&symbols[34], &states[28], nullptr, 0, 0, 0, 43}, + {&symbols[35], &states[29], nullptr, 0, 0, 0, 44}, + {&symbols[36], &states[30], nullptr, 0, 0, 0, 45}, + {&symbols[37], &states[32], nullptr, 0, 0, 0, 46}, + {&symbols[39], &states[37], nullptr, 0, 0, 0, 47}, + {&symbols[40], &states[39], nullptr, 0, 0, 0, 48}, + {&symbols[41], &states[59], nullptr, 0, 0, 0, 49}, + {&symbols[43], &states[44], nullptr, 0, 0, 0, 50}, + {&symbols[44], &states[45], nullptr, 0, 0, 0, 51}, + {&symbols[45], &states[47], nullptr, 0, 0, 0, 52}, + {&symbols[46], &states[51], nullptr, 0, 0, 0, 53}, + {&symbols[48], &states[57], nullptr, 0, 0, 0, 54}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 55}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 56}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 57}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 58}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 59}, + {&symbols[1], nullptr, &symbols[20], 1, 0, 0, 60}, + {&symbols[22], &states[36], nullptr, 0, 0, 0, 61}, + {&symbols[23], &states[8], nullptr, 0, 0, 0, 62}, + {&symbols[22], &states[38], nullptr, 0, 0, 0, 63}, + {&symbols[23], &states[8], nullptr, 0, 0, 0, 64}, + {&symbols[22], &states[42], nullptr, 0, 0, 0, 65}, + {&symbols[23], &states[8], nullptr, 0, 0, 0, 66}, + {&symbols[22], &states[43], nullptr, 0, 0, 0, 67}, + {&symbols[23], &states[8], nullptr, 0, 0, 0, 68}, + {&symbols[22], &states[50], nullptr, 0, 0, 0, 69}, + {&symbols[23], &states[8], nullptr, 0, 0, 0, 70}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 71}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 72}, + {&symbols[21], &states[9], nullptr, 0, 0, 0, 73}, + {&symbols[24], &states[11], nullptr, 0, 0, 0, 74}, + {&symbols[25], &states[13], nullptr, 0, 0, 0, 75}, + {&symbols[26], &states[14], nullptr, 0, 0, 0, 76}, + {&symbols[27], &states[16], nullptr, 0, 0, 0, 77}, + {&symbols[28], &states[18], nullptr, 0, 0, 0, 78}, + {&symbols[29], &states[20], nullptr, 0, 0, 0, 79}, + {&symbols[30], &states[22], nullptr, 0, 0, 0, 80}, + {&symbols[31], &states[23], nullptr, 0, 0, 0, 81}, + {&symbols[32], &states[25], nullptr, 0, 0, 0, 82}, + {&symbols[33], &states[27], nullptr, 0, 0, 0, 83}, + {&symbols[34], &states[28], nullptr, 0, 0, 0, 84}, + {&symbols[35], &states[29], nullptr, 0, 0, 0, 85}, + {&symbols[36], &states[30], nullptr, 0, 0, 0, 86}, + {&symbols[37], &states[32], nullptr, 0, 0, 0, 87}, + {&symbols[39], &states[37], nullptr, 0, 0, 0, 88}, + {&symbols[40], &states[39], nullptr, 0, 0, 0, 89}, + {&symbols[41], &states[59], nullptr, 0, 0, 0, 90}, + {&symbols[43], &states[44], nullptr, 0, 0, 0, 91}, + {&symbols[44], &states[45], nullptr, 0, 0, 0, 92}, + {&symbols[45], &states[47], nullptr, 0, 0, 0, 93}, + {&symbols[46], &states[51], nullptr, 0, 0, 0, 94}, + {&symbols[48], &states[57], nullptr, 0, 0, 0, 95}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 96}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 97}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 98}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 99}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 100}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 101}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 102}, + {&symbols[24], &states[10], nullptr, 0, 0, 0, 103}, + {&symbols[25], &states[12], nullptr, 0, 0, 0, 104}, + {&symbols[26], &states[14], nullptr, 0, 0, 0, 105}, + {&symbols[27], &states[16], nullptr, 0, 0, 0, 106}, + {&symbols[28], &states[18], nullptr, 0, 0, 0, 107}, + {&symbols[29], &states[20], nullptr, 0, 0, 0, 108}, + {&symbols[30], &states[22], nullptr, 0, 0, 0, 109}, + {&symbols[31], &states[23], nullptr, 0, 0, 0, 110}, + {&symbols[32], &states[25], nullptr, 0, 0, 0, 111}, + {&symbols[33], &states[27], nullptr, 0, 0, 0, 112}, + {&symbols[34], &states[28], nullptr, 0, 0, 0, 113}, + {&symbols[35], &states[29], nullptr, 0, 0, 0, 114}, + {&symbols[36], &states[30], nullptr, 0, 0, 0, 115}, + {&symbols[37], &states[32], nullptr, 0, 0, 0, 116}, + {&symbols[39], &states[37], nullptr, 0, 0, 0, 117}, + {&symbols[40], &states[39], nullptr, 0, 0, 0, 118}, + {&symbols[41], &states[59], nullptr, 0, 0, 0, 119}, + {&symbols[43], &states[44], nullptr, 0, 0, 0, 120}, + {&symbols[44], &states[45], nullptr, 0, 0, 0, 121}, + {&symbols[45], &states[47], nullptr, 0, 0, 0, 122}, + {&symbols[46], &states[51], nullptr, 0, 0, 0, 123}, + {&symbols[48], &states[57], nullptr, 0, 0, 0, 124}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 125}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 126}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 127}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 128}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 129}, + {&symbols[1], nullptr, &symbols[22], 3, 0, 1, 130}, + {&symbols[4], nullptr, &symbols[22], 3, 0, 1, 131}, + {&symbols[18], nullptr, &symbols[22], 3, 0, 1, 132}, + {&symbols[24], nullptr, &symbols[22], 3, 0, 1, 133}, + {&symbols[37], nullptr, &symbols[22], 3, 0, 1, 134}, + {&symbols[39], nullptr, &symbols[22], 3, 0, 1, 135}, + {&symbols[40], nullptr, &symbols[22], 3, 0, 1, 136}, + {&symbols[42], nullptr, &symbols[22], 3, 0, 1, 137}, + {&symbols[43], nullptr, &symbols[22], 3, 0, 1, 138}, + {&symbols[44], nullptr, &symbols[22], 3, 0, 1, 139}, + {&symbols[45], nullptr, &symbols[22], 3, 0, 1, 140}, + {&symbols[46], nullptr, &symbols[22], 3, 0, 1, 141}, + {&symbols[48], nullptr, &symbols[22], 3, 0, 1, 142}, + {&symbols[51], nullptr, &symbols[22], 3, 0, 1, 143}, + {&symbols[52], nullptr, &symbols[22], 3, 0, 1, 144}, + {&symbols[53], nullptr, &symbols[22], 3, 0, 1, 145}, + {&symbols[54], nullptr, &symbols[22], 3, 0, 1, 146}, + {&symbols[55], nullptr, &symbols[22], 3, 0, 1, 147}, + {&symbols[1], nullptr, &symbols[22], 2, 0, 2, 148}, + {&symbols[4], nullptr, &symbols[22], 2, 0, 2, 149}, + {&symbols[18], nullptr, &symbols[22], 2, 0, 2, 150}, + {&symbols[24], nullptr, &symbols[22], 2, 0, 2, 151}, + {&symbols[37], nullptr, &symbols[22], 2, 0, 2, 152}, + {&symbols[39], nullptr, &symbols[22], 2, 0, 2, 153}, + {&symbols[40], nullptr, &symbols[22], 2, 0, 2, 154}, + {&symbols[42], nullptr, &symbols[22], 2, 0, 2, 155}, + {&symbols[43], nullptr, &symbols[22], 2, 0, 2, 156}, + {&symbols[44], nullptr, &symbols[22], 2, 0, 2, 157}, + {&symbols[45], nullptr, &symbols[22], 2, 0, 2, 158}, + {&symbols[46], nullptr, &symbols[22], 2, 0, 2, 159}, + {&symbols[48], nullptr, &symbols[22], 2, 0, 2, 160}, + {&symbols[51], nullptr, &symbols[22], 2, 0, 2, 161}, + {&symbols[52], nullptr, &symbols[22], 2, 0, 2, 162}, + {&symbols[53], nullptr, &symbols[22], 2, 0, 2, 163}, + {&symbols[54], nullptr, &symbols[22], 2, 0, 2, 164}, + {&symbols[55], nullptr, &symbols[22], 2, 0, 2, 165}, + {&symbols[1], nullptr, &symbols[21], 2, 0, 3, 166}, + {&symbols[4], nullptr, &symbols[21], 2, 0, 3, 167}, + {&symbols[18], nullptr, &symbols[21], 2, 0, 3, 168}, + {&symbols[24], nullptr, &symbols[21], 2, 0, 3, 169}, + {&symbols[37], nullptr, &symbols[21], 2, 0, 3, 170}, + {&symbols[39], nullptr, &symbols[21], 2, 0, 3, 171}, + {&symbols[40], nullptr, &symbols[21], 2, 0, 3, 172}, + {&symbols[43], nullptr, &symbols[21], 2, 0, 3, 173}, + {&symbols[44], nullptr, &symbols[21], 2, 0, 3, 174}, + {&symbols[45], nullptr, &symbols[21], 2, 0, 3, 175}, + {&symbols[46], nullptr, &symbols[21], 2, 0, 3, 176}, + {&symbols[48], nullptr, &symbols[21], 2, 0, 3, 177}, + {&symbols[51], nullptr, &symbols[21], 2, 0, 3, 178}, + {&symbols[52], nullptr, &symbols[21], 2, 0, 3, 179}, + {&symbols[53], nullptr, &symbols[21], 2, 0, 3, 180}, + {&symbols[54], nullptr, &symbols[21], 2, 0, 3, 181}, + {&symbols[55], nullptr, &symbols[21], 2, 0, 3, 182}, + {&symbols[1], nullptr, &symbols[21], 1, 0, 4, 183}, + {&symbols[4], nullptr, &symbols[21], 1, 0, 4, 184}, + {&symbols[18], nullptr, &symbols[21], 1, 0, 4, 185}, + {&symbols[24], nullptr, &symbols[21], 1, 0, 4, 186}, + {&symbols[37], nullptr, &symbols[21], 1, 0, 4, 187}, + {&symbols[39], nullptr, &symbols[21], 1, 0, 4, 188}, + {&symbols[40], nullptr, &symbols[21], 1, 0, 4, 189}, + {&symbols[43], nullptr, &symbols[21], 1, 0, 4, 190}, + {&symbols[44], nullptr, &symbols[21], 1, 0, 4, 191}, + {&symbols[45], nullptr, &symbols[21], 1, 0, 4, 192}, + {&symbols[46], nullptr, &symbols[21], 1, 0, 4, 193}, + {&symbols[48], nullptr, &symbols[21], 1, 0, 4, 194}, + {&symbols[51], nullptr, &symbols[21], 1, 0, 4, 195}, + {&symbols[52], nullptr, &symbols[21], 1, 0, 4, 196}, + {&symbols[53], nullptr, &symbols[21], 1, 0, 4, 197}, + {&symbols[54], nullptr, &symbols[21], 1, 0, 4, 198}, + {&symbols[55], nullptr, &symbols[21], 1, 0, 4, 199}, + {&symbols[19], &states[15], nullptr, 0, 0, 0, 200}, + {&symbols[1], nullptr, &symbols[25], 2, 8, 0, 201}, + {&symbols[4], nullptr, &symbols[25], 2, 8, 0, 202}, + {&symbols[18], nullptr, &symbols[25], 2, 8, 0, 203}, + {&symbols[24], nullptr, &symbols[25], 2, 8, 0, 204}, + {&symbols[37], nullptr, &symbols[25], 2, 8, 0, 205}, + {&symbols[39], nullptr, &symbols[25], 2, 8, 0, 206}, + {&symbols[40], nullptr, &symbols[25], 2, 8, 0, 207}, + {&symbols[43], nullptr, &symbols[25], 2, 8, 0, 208}, + {&symbols[44], nullptr, &symbols[25], 2, 8, 0, 209}, + {&symbols[45], nullptr, &symbols[25], 2, 8, 0, 210}, + {&symbols[46], nullptr, &symbols[25], 2, 8, 0, 211}, + {&symbols[48], nullptr, &symbols[25], 2, 8, 0, 212}, + {&symbols[51], nullptr, &symbols[25], 2, 8, 0, 213}, + {&symbols[52], nullptr, &symbols[25], 2, 8, 0, 214}, + {&symbols[53], nullptr, &symbols[25], 2, 8, 0, 215}, + {&symbols[54], nullptr, &symbols[25], 2, 8, 0, 216}, + {&symbols[55], nullptr, &symbols[25], 2, 8, 0, 217}, + {&symbols[19], &states[17], nullptr, 0, 0, 0, 218}, + {&symbols[1], nullptr, &symbols[25], 2, 8, 0, 219}, + {&symbols[4], nullptr, &symbols[25], 2, 8, 0, 220}, + {&symbols[18], nullptr, &symbols[25], 2, 8, 0, 221}, + {&symbols[24], nullptr, &symbols[25], 2, 8, 0, 222}, + {&symbols[37], nullptr, &symbols[25], 2, 8, 0, 223}, + {&symbols[39], nullptr, &symbols[25], 2, 8, 0, 224}, + {&symbols[40], nullptr, &symbols[25], 2, 8, 0, 225}, + {&symbols[43], nullptr, &symbols[25], 2, 8, 0, 226}, + {&symbols[44], nullptr, &symbols[25], 2, 8, 0, 227}, + {&symbols[45], nullptr, &symbols[25], 2, 8, 0, 228}, + {&symbols[46], nullptr, &symbols[25], 2, 8, 0, 229}, + {&symbols[48], nullptr, &symbols[25], 2, 8, 0, 230}, + {&symbols[51], nullptr, &symbols[25], 2, 8, 0, 231}, + {&symbols[52], nullptr, &symbols[25], 2, 8, 0, 232}, + {&symbols[53], nullptr, &symbols[25], 2, 8, 0, 233}, + {&symbols[54], nullptr, &symbols[25], 2, 8, 0, 234}, + {&symbols[55], nullptr, &symbols[25], 2, 8, 0, 235}, + {&symbols[19], &states[19], nullptr, 0, 0, 0, 236}, + {&symbols[1], nullptr, &symbols[25], 2, 8, 0, 237}, + {&symbols[4], nullptr, &symbols[25], 2, 8, 0, 238}, + {&symbols[18], nullptr, &symbols[25], 2, 8, 0, 239}, + {&symbols[24], nullptr, &symbols[25], 2, 8, 0, 240}, + {&symbols[37], nullptr, &symbols[25], 2, 8, 0, 241}, + {&symbols[39], nullptr, &symbols[25], 2, 8, 0, 242}, + {&symbols[40], nullptr, &symbols[25], 2, 8, 0, 243}, + {&symbols[43], nullptr, &symbols[25], 2, 8, 0, 244}, + {&symbols[44], nullptr, &symbols[25], 2, 8, 0, 245}, + {&symbols[45], nullptr, &symbols[25], 2, 8, 0, 246}, + {&symbols[46], nullptr, &symbols[25], 2, 8, 0, 247}, + {&symbols[48], nullptr, &symbols[25], 2, 8, 0, 248}, + {&symbols[51], nullptr, &symbols[25], 2, 8, 0, 249}, + {&symbols[52], nullptr, &symbols[25], 2, 8, 0, 250}, + {&symbols[53], nullptr, &symbols[25], 2, 8, 0, 251}, + {&symbols[54], nullptr, &symbols[25], 2, 8, 0, 252}, + {&symbols[55], nullptr, &symbols[25], 2, 8, 0, 253}, + {&symbols[19], &states[21], nullptr, 0, 0, 0, 254}, + {&symbols[1], nullptr, &symbols[25], 2, 8, 0, 255}, + {&symbols[4], nullptr, &symbols[25], 2, 8, 0, 256}, + {&symbols[18], nullptr, &symbols[25], 2, 8, 0, 257}, + {&symbols[24], nullptr, &symbols[25], 2, 8, 0, 258}, + {&symbols[37], nullptr, &symbols[25], 2, 8, 0, 259}, + {&symbols[39], nullptr, &symbols[25], 2, 8, 0, 260}, + {&symbols[40], nullptr, &symbols[25], 2, 8, 0, 261}, + {&symbols[43], nullptr, &symbols[25], 2, 8, 0, 262}, + {&symbols[44], nullptr, &symbols[25], 2, 8, 0, 263}, + {&symbols[45], nullptr, &symbols[25], 2, 8, 0, 264}, + {&symbols[46], nullptr, &symbols[25], 2, 8, 0, 265}, + {&symbols[48], nullptr, &symbols[25], 2, 8, 0, 266}, + {&symbols[51], nullptr, &symbols[25], 2, 8, 0, 267}, + {&symbols[52], nullptr, &symbols[25], 2, 8, 0, 268}, + {&symbols[53], nullptr, &symbols[25], 2, 8, 0, 269}, + {&symbols[54], nullptr, &symbols[25], 2, 8, 0, 270}, + {&symbols[55], nullptr, &symbols[25], 2, 8, 0, 271}, + {&symbols[1], nullptr, &symbols[25], 1, 0, 0, 272}, + {&symbols[4], nullptr, &symbols[25], 1, 0, 0, 273}, + {&symbols[18], nullptr, &symbols[25], 1, 0, 0, 274}, + {&symbols[24], nullptr, &symbols[25], 1, 0, 0, 275}, + {&symbols[37], nullptr, &symbols[25], 1, 0, 0, 276}, + {&symbols[39], nullptr, &symbols[25], 1, 0, 0, 277}, + {&symbols[40], nullptr, &symbols[25], 1, 0, 0, 278}, + {&symbols[43], nullptr, &symbols[25], 1, 0, 0, 279}, + {&symbols[44], nullptr, &symbols[25], 1, 0, 0, 280}, + {&symbols[45], nullptr, &symbols[25], 1, 0, 0, 281}, + {&symbols[46], nullptr, &symbols[25], 1, 0, 0, 282}, + {&symbols[48], nullptr, &symbols[25], 1, 0, 0, 283}, + {&symbols[51], nullptr, &symbols[25], 1, 0, 0, 284}, + {&symbols[52], nullptr, &symbols[25], 1, 0, 0, 285}, + {&symbols[53], nullptr, &symbols[25], 1, 0, 0, 286}, + {&symbols[54], nullptr, &symbols[25], 1, 0, 0, 287}, + {&symbols[55], nullptr, &symbols[25], 1, 0, 0, 288}, + {&symbols[19], &states[24], nullptr, 0, 0, 0, 289}, + {&symbols[1], nullptr, &symbols[25], 2, 8, 0, 290}, + {&symbols[4], nullptr, &symbols[25], 2, 8, 0, 291}, + {&symbols[18], nullptr, &symbols[25], 2, 8, 0, 292}, + {&symbols[24], nullptr, &symbols[25], 2, 8, 0, 293}, + {&symbols[37], nullptr, &symbols[25], 2, 8, 0, 294}, + {&symbols[39], nullptr, &symbols[25], 2, 8, 0, 295}, + {&symbols[40], nullptr, &symbols[25], 2, 8, 0, 296}, + {&symbols[43], nullptr, &symbols[25], 2, 8, 0, 297}, + {&symbols[44], nullptr, &symbols[25], 2, 8, 0, 298}, + {&symbols[45], nullptr, &symbols[25], 2, 8, 0, 299}, + {&symbols[46], nullptr, &symbols[25], 2, 8, 0, 300}, + {&symbols[48], nullptr, &symbols[25], 2, 8, 0, 301}, + {&symbols[51], nullptr, &symbols[25], 2, 8, 0, 302}, + {&symbols[52], nullptr, &symbols[25], 2, 8, 0, 303}, + {&symbols[53], nullptr, &symbols[25], 2, 8, 0, 304}, + {&symbols[54], nullptr, &symbols[25], 2, 8, 0, 305}, + {&symbols[55], nullptr, &symbols[25], 2, 8, 0, 306}, + {&symbols[19], &states[26], nullptr, 0, 0, 0, 307}, + {&symbols[1], nullptr, &symbols[25], 2, 8, 0, 308}, + {&symbols[4], nullptr, &symbols[25], 2, 8, 0, 309}, + {&symbols[18], nullptr, &symbols[25], 2, 8, 0, 310}, + {&symbols[24], nullptr, &symbols[25], 2, 8, 0, 311}, + {&symbols[37], nullptr, &symbols[25], 2, 8, 0, 312}, + {&symbols[39], nullptr, &symbols[25], 2, 8, 0, 313}, + {&symbols[40], nullptr, &symbols[25], 2, 8, 0, 314}, + {&symbols[43], nullptr, &symbols[25], 2, 8, 0, 315}, + {&symbols[44], nullptr, &symbols[25], 2, 8, 0, 316}, + {&symbols[45], nullptr, &symbols[25], 2, 8, 0, 317}, + {&symbols[46], nullptr, &symbols[25], 2, 8, 0, 318}, + {&symbols[48], nullptr, &symbols[25], 2, 8, 0, 319}, + {&symbols[51], nullptr, &symbols[25], 2, 8, 0, 320}, + {&symbols[52], nullptr, &symbols[25], 2, 8, 0, 321}, + {&symbols[53], nullptr, &symbols[25], 2, 8, 0, 322}, + {&symbols[54], nullptr, &symbols[25], 2, 8, 0, 323}, + {&symbols[55], nullptr, &symbols[25], 2, 8, 0, 324}, + {&symbols[1], nullptr, &symbols[25], 1, 0, 0, 325}, + {&symbols[4], nullptr, &symbols[25], 1, 0, 0, 326}, + {&symbols[18], nullptr, &symbols[25], 1, 0, 0, 327}, + {&symbols[24], nullptr, &symbols[25], 1, 0, 0, 328}, + {&symbols[37], nullptr, &symbols[25], 1, 0, 0, 329}, + {&symbols[39], nullptr, &symbols[25], 1, 0, 0, 330}, + {&symbols[40], nullptr, &symbols[25], 1, 0, 0, 331}, + {&symbols[43], nullptr, &symbols[25], 1, 0, 0, 332}, + {&symbols[44], nullptr, &symbols[25], 1, 0, 0, 333}, + {&symbols[45], nullptr, &symbols[25], 1, 0, 0, 334}, + {&symbols[46], nullptr, &symbols[25], 1, 0, 0, 335}, + {&symbols[48], nullptr, &symbols[25], 1, 0, 0, 336}, + {&symbols[51], nullptr, &symbols[25], 1, 0, 0, 337}, + {&symbols[52], nullptr, &symbols[25], 1, 0, 0, 338}, + {&symbols[53], nullptr, &symbols[25], 1, 0, 0, 339}, + {&symbols[54], nullptr, &symbols[25], 1, 0, 0, 340}, + {&symbols[55], nullptr, &symbols[25], 1, 0, 0, 341}, + {&symbols[1], nullptr, &symbols[25], 1, 0, 0, 342}, + {&symbols[4], nullptr, &symbols[25], 1, 0, 0, 343}, + {&symbols[18], nullptr, &symbols[25], 1, 0, 0, 344}, + {&symbols[24], nullptr, &symbols[25], 1, 0, 0, 345}, + {&symbols[37], nullptr, &symbols[25], 1, 0, 0, 346}, + {&symbols[39], nullptr, &symbols[25], 1, 0, 0, 347}, + {&symbols[40], nullptr, &symbols[25], 1, 0, 0, 348}, + {&symbols[43], nullptr, &symbols[25], 1, 0, 0, 349}, + {&symbols[44], nullptr, &symbols[25], 1, 0, 0, 350}, + {&symbols[45], nullptr, &symbols[25], 1, 0, 0, 351}, + {&symbols[46], nullptr, &symbols[25], 1, 0, 0, 352}, + {&symbols[48], nullptr, &symbols[25], 1, 0, 0, 353}, + {&symbols[51], nullptr, &symbols[25], 1, 0, 0, 354}, + {&symbols[52], nullptr, &symbols[25], 1, 0, 0, 355}, + {&symbols[53], nullptr, &symbols[25], 1, 0, 0, 356}, + {&symbols[54], nullptr, &symbols[25], 1, 0, 0, 357}, + {&symbols[55], nullptr, &symbols[25], 1, 0, 0, 358}, + {&symbols[1], nullptr, &symbols[25], 1, 0, 0, 359}, + {&symbols[4], nullptr, &symbols[25], 1, 0, 0, 360}, + {&symbols[18], nullptr, &symbols[25], 1, 0, 0, 361}, + {&symbols[24], nullptr, &symbols[25], 1, 0, 0, 362}, + {&symbols[37], nullptr, &symbols[25], 1, 0, 0, 363}, + {&symbols[39], nullptr, &symbols[25], 1, 0, 0, 364}, + {&symbols[40], nullptr, &symbols[25], 1, 0, 0, 365}, + {&symbols[43], nullptr, &symbols[25], 1, 0, 0, 366}, + {&symbols[44], nullptr, &symbols[25], 1, 0, 0, 367}, + {&symbols[45], nullptr, &symbols[25], 1, 0, 0, 368}, + {&symbols[46], nullptr, &symbols[25], 1, 0, 0, 369}, + {&symbols[48], nullptr, &symbols[25], 1, 0, 0, 370}, + {&symbols[51], nullptr, &symbols[25], 1, 0, 0, 371}, + {&symbols[52], nullptr, &symbols[25], 1, 0, 0, 372}, + {&symbols[53], nullptr, &symbols[25], 1, 0, 0, 373}, + {&symbols[54], nullptr, &symbols[25], 1, 0, 0, 374}, + {&symbols[55], nullptr, &symbols[25], 1, 0, 0, 375}, + {&symbols[19], &states[31], nullptr, 0, 0, 0, 376}, + {&symbols[1], nullptr, &symbols[25], 2, 8, 0, 377}, + {&symbols[4], nullptr, &symbols[25], 2, 8, 0, 378}, + {&symbols[18], nullptr, &symbols[25], 2, 8, 0, 379}, + {&symbols[24], nullptr, &symbols[25], 2, 8, 0, 380}, + {&symbols[37], nullptr, &symbols[25], 2, 8, 0, 381}, + {&symbols[39], nullptr, &symbols[25], 2, 8, 0, 382}, + {&symbols[40], nullptr, &symbols[25], 2, 8, 0, 383}, + {&symbols[43], nullptr, &symbols[25], 2, 8, 0, 384}, + {&symbols[44], nullptr, &symbols[25], 2, 8, 0, 385}, + {&symbols[45], nullptr, &symbols[25], 2, 8, 0, 386}, + {&symbols[46], nullptr, &symbols[25], 2, 8, 0, 387}, + {&symbols[48], nullptr, &symbols[25], 2, 8, 0, 388}, + {&symbols[51], nullptr, &symbols[25], 2, 8, 0, 389}, + {&symbols[52], nullptr, &symbols[25], 2, 8, 0, 390}, + {&symbols[53], nullptr, &symbols[25], 2, 8, 0, 391}, + {&symbols[54], nullptr, &symbols[25], 2, 8, 0, 392}, + {&symbols[55], nullptr, &symbols[25], 2, 8, 0, 393}, + {&symbols[51], &states[33], nullptr, 0, 0, 0, 394}, + {&symbols[4], &states[34], nullptr, 0, 0, 0, 395}, + {&symbols[38], &states[35], nullptr, 0, 0, 0, 396}, + {&symbols[51], &states[73], nullptr, 0, 0, 0, 397}, + {&symbols[5], nullptr, &symbols[38], 0, 0, -1, 398}, + {&symbols[50], nullptr, &symbols[38], 0, 0, -1, 399}, + {&symbols[5], &states[3], nullptr, 0, 0, 0, 400}, + {&symbols[50], &states[70], nullptr, 0, 0, 0, 401}, + {&symbols[1], nullptr, &symbols[35], 6, 3, 5, 402}, + {&symbols[4], nullptr, &symbols[35], 6, 3, 5, 403}, + {&symbols[18], nullptr, &symbols[35], 6, 3, 5, 404}, + {&symbols[24], nullptr, &symbols[35], 6, 3, 5, 405}, + {&symbols[37], nullptr, &symbols[35], 6, 3, 5, 406}, + {&symbols[39], nullptr, &symbols[35], 6, 3, 5, 407}, + {&symbols[40], nullptr, &symbols[35], 6, 3, 5, 408}, + {&symbols[43], nullptr, &symbols[35], 6, 3, 5, 409}, + {&symbols[44], nullptr, &symbols[35], 6, 3, 5, 410}, + {&symbols[45], nullptr, &symbols[35], 6, 3, 5, 411}, + {&symbols[46], nullptr, &symbols[35], 6, 3, 5, 412}, + {&symbols[48], nullptr, &symbols[35], 6, 3, 5, 413}, + {&symbols[51], nullptr, &symbols[35], 6, 3, 5, 414}, + {&symbols[52], nullptr, &symbols[35], 6, 3, 5, 415}, + {&symbols[53], nullptr, &symbols[35], 6, 3, 5, 416}, + {&symbols[54], nullptr, &symbols[35], 6, 3, 5, 417}, + {&symbols[55], nullptr, &symbols[35], 6, 3, 5, 418}, + {&symbols[51], &states[4], nullptr, 0, 0, 0, 419}, + {&symbols[1], nullptr, &symbols[34], 3, 0, 6, 420}, + {&symbols[4], nullptr, &symbols[34], 3, 0, 6, 421}, + {&symbols[18], nullptr, &symbols[34], 3, 0, 6, 422}, + {&symbols[24], nullptr, &symbols[34], 3, 0, 6, 423}, + {&symbols[37], nullptr, &symbols[34], 3, 0, 6, 424}, + {&symbols[39], nullptr, &symbols[34], 3, 0, 6, 425}, + {&symbols[40], nullptr, &symbols[34], 3, 0, 6, 426}, + {&symbols[43], nullptr, &symbols[34], 3, 0, 6, 427}, + {&symbols[44], nullptr, &symbols[34], 3, 0, 6, 428}, + {&symbols[45], nullptr, &symbols[34], 3, 0, 6, 429}, + {&symbols[46], nullptr, &symbols[34], 3, 0, 6, 430}, + {&symbols[48], nullptr, &symbols[34], 3, 0, 6, 431}, + {&symbols[51], nullptr, &symbols[34], 3, 0, 6, 432}, + {&symbols[52], nullptr, &symbols[34], 3, 0, 6, 433}, + {&symbols[53], nullptr, &symbols[34], 3, 0, 6, 434}, + {&symbols[54], nullptr, &symbols[34], 3, 0, 6, 435}, + {&symbols[55], nullptr, &symbols[34], 3, 0, 6, 436}, + {&symbols[4], &states[40], nullptr, 0, 0, 0, 437}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 438}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 439}, + {&symbols[41], &states[41], nullptr, 0, 0, 0, 440}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 441}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 442}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 443}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 444}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 445}, + {&symbols[5], &states[5], nullptr, 0, 0, 0, 446}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 447}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 448}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 449}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 450}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 451}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 452}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 453}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 454}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 455}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 456}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 457}, + {&symbols[42], &states[6], nullptr, 0, 0, 0, 458}, + {&symbols[1], nullptr, &symbols[33], 5, 3, 7, 459}, + {&symbols[4], nullptr, &symbols[33], 5, 3, 7, 460}, + {&symbols[18], nullptr, &symbols[33], 5, 3, 7, 461}, + {&symbols[24], nullptr, &symbols[33], 5, 3, 7, 462}, + {&symbols[37], nullptr, &symbols[33], 5, 3, 7, 463}, + {&symbols[39], nullptr, &symbols[33], 5, 3, 7, 464}, + {&symbols[40], nullptr, &symbols[33], 5, 3, 7, 465}, + {&symbols[43], nullptr, &symbols[33], 5, 3, 7, 466}, + {&symbols[44], nullptr, &symbols[33], 5, 3, 7, 467}, + {&symbols[45], nullptr, &symbols[33], 5, 3, 7, 468}, + {&symbols[46], nullptr, &symbols[33], 5, 3, 7, 469}, + {&symbols[48], nullptr, &symbols[33], 5, 3, 7, 470}, + {&symbols[51], nullptr, &symbols[33], 5, 3, 7, 471}, + {&symbols[52], nullptr, &symbols[33], 5, 3, 7, 472}, + {&symbols[53], nullptr, &symbols[33], 5, 3, 7, 473}, + {&symbols[54], nullptr, &symbols[33], 5, 3, 7, 474}, + {&symbols[55], nullptr, &symbols[33], 5, 3, 7, 475}, + {&symbols[1], nullptr, &symbols[33], 7, 0, 7, 476}, + {&symbols[4], nullptr, &symbols[33], 7, 0, 7, 477}, + {&symbols[18], nullptr, &symbols[33], 7, 0, 7, 478}, + {&symbols[24], nullptr, &symbols[33], 7, 0, 7, 479}, + {&symbols[37], nullptr, &symbols[33], 7, 0, 7, 480}, + {&symbols[39], nullptr, &symbols[33], 7, 0, 7, 481}, + {&symbols[40], nullptr, &symbols[33], 7, 0, 7, 482}, + {&symbols[43], nullptr, &symbols[33], 7, 0, 7, 483}, + {&symbols[44], nullptr, &symbols[33], 7, 0, 7, 484}, + {&symbols[45], nullptr, &symbols[33], 7, 0, 7, 485}, + {&symbols[46], nullptr, &symbols[33], 7, 0, 7, 486}, + {&symbols[48], nullptr, &symbols[33], 7, 0, 7, 487}, + {&symbols[51], nullptr, &symbols[33], 7, 0, 7, 488}, + {&symbols[52], nullptr, &symbols[33], 7, 0, 7, 489}, + {&symbols[53], nullptr, &symbols[33], 7, 0, 7, 490}, + {&symbols[54], nullptr, &symbols[33], 7, 0, 7, 491}, + {&symbols[55], nullptr, &symbols[33], 7, 0, 7, 492}, + {&symbols[19], nullptr, &symbols[32], 1, 0, 8, 493}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 494}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 495}, + {&symbols[41], &states[46], nullptr, 0, 0, 0, 496}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 497}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 498}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 499}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 500}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 501}, + {&symbols[19], nullptr, &symbols[31], 1, 0, 9, 502}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 503}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 504}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 505}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 506}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 507}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 508}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 509}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 510}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 511}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 512}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 513}, + {&symbols[19], nullptr, &symbols[31], 2, 0, 9, 514}, + {&symbols[4], &states[48], nullptr, 0, 0, 0, 515}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 516}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 517}, + {&symbols[41], &states[49], nullptr, 0, 0, 0, 518}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 519}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 520}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 521}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 522}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 523}, + {&symbols[5], &states[7], nullptr, 0, 0, 0, 524}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 525}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 526}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 527}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 528}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 529}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 530}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 531}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 532}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 533}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 534}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 535}, + {&symbols[1], nullptr, &symbols[30], 5, 3, 10, 536}, + {&symbols[4], nullptr, &symbols[30], 5, 3, 10, 537}, + {&symbols[18], nullptr, &symbols[30], 5, 3, 10, 538}, + {&symbols[24], nullptr, &symbols[30], 5, 3, 10, 539}, + {&symbols[37], nullptr, &symbols[30], 5, 3, 10, 540}, + {&symbols[39], nullptr, &symbols[30], 5, 3, 10, 541}, + {&symbols[40], nullptr, &symbols[30], 5, 3, 10, 542}, + {&symbols[43], nullptr, &symbols[30], 5, 3, 10, 543}, + {&symbols[44], nullptr, &symbols[30], 5, 3, 10, 544}, + {&symbols[45], nullptr, &symbols[30], 5, 3, 10, 545}, + {&symbols[46], nullptr, &symbols[30], 5, 3, 10, 546}, + {&symbols[48], nullptr, &symbols[30], 5, 3, 10, 547}, + {&symbols[51], nullptr, &symbols[30], 5, 3, 10, 548}, + {&symbols[52], nullptr, &symbols[30], 5, 3, 10, 549}, + {&symbols[53], nullptr, &symbols[30], 5, 3, 10, 550}, + {&symbols[54], nullptr, &symbols[30], 5, 3, 10, 551}, + {&symbols[55], nullptr, &symbols[30], 5, 3, 10, 552}, + {&symbols[51], &states[52], nullptr, 0, 0, 0, 553}, + {&symbols[11], &states[55], nullptr, 0, 0, 0, 554}, + {&symbols[47], &states[53], nullptr, 0, 0, 0, 555}, + {&symbols[51], &states[54], nullptr, 0, 0, 0, 556}, + {&symbols[19], nullptr, &symbols[26], 4, 0, 11, 557}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 558}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 559}, + {&symbols[41], &states[56], nullptr, 0, 0, 0, 560}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 561}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 562}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 563}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 564}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 565}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 566}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 567}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 568}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 569}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 570}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 571}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 572}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 573}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 574}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 575}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 576}, + {&symbols[19], nullptr, &symbols[27], 4, 6, 12, 577}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 578}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 579}, + {&symbols[41], &states[58], nullptr, 0, 0, 0, 580}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 581}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 582}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 583}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 584}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 585}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 586}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 587}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 588}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 589}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 590}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 591}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 592}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 593}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 594}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 595}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 596}, + {&symbols[19], nullptr, &symbols[28], 2, 0, 13, 597}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 598}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 599}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 600}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 601}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 602}, + {&symbols[11], &states[60], nullptr, 0, 0, 0, 603}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 604}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 605}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 606}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 607}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 608}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 609}, + {&symbols[19], nullptr, &symbols[36], 1, 0, 15, 610}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 611}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 612}, + {&symbols[41], &states[61], nullptr, 0, 0, 0, 613}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 614}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 615}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 616}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 617}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 618}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 619}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 620}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 621}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 622}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 623}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 624}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 625}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 626}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 627}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 628}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 629}, + {&symbols[19], nullptr, &symbols[29], 3, 6, 14, 630}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 631}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 632}, + {&symbols[41], &states[69], nullptr, 0, 0, 0, 633}, + {&symbols[49], &states[64], nullptr, 0, 0, 0, 634}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 635}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 636}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 637}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 638}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 639}, + {&symbols[5], nullptr, &symbols[49], 0, 0, -1, 640}, + {&symbols[50], nullptr, &symbols[49], 0, 0, -1, 641}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 642}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 643}, + {&symbols[41], &states[69], nullptr, 0, 0, 0, 644}, + {&symbols[49], &states[65], nullptr, 0, 0, 0, 645}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 646}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 647}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 648}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 649}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 650}, + {&symbols[5], nullptr, &symbols[49], 0, 0, -1, 651}, + {&symbols[50], nullptr, &symbols[49], 0, 0, -1, 652}, + {&symbols[5], &states[87], nullptr, 0, 0, 0, 653}, + {&symbols[50], &states[66], nullptr, 0, 0, 0, 654}, + {&symbols[5], &states[102], nullptr, 0, 0, 0, 655}, + {&symbols[50], &states[66], nullptr, 0, 0, 0, 656}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 657}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 658}, + {&symbols[41], &states[67], nullptr, 0, 0, 0, 659}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 660}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 661}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 662}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 663}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 664}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 665}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 666}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 667}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 668}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 669}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 670}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 671}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 672}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 673}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 674}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 675}, + {&symbols[50], &states[68], nullptr, 0, 0, 0, 676}, + {&symbols[5], nullptr, &symbols[49], 4, 0, 16, 677}, + {&symbols[50], nullptr, &symbols[49], 4, 0, 16, 678}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 679}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 680}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 681}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 682}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 683}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 684}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 685}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 686}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 687}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 688}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 689}, + {&symbols[5], nullptr, &symbols[49], 1, 0, 17, 690}, + {&symbols[50], nullptr, &symbols[49], 1, 0, 17, 691}, + {&symbols[51], &states[71], nullptr, 0, 0, 0, 692}, + {&symbols[50], &states[72], nullptr, 0, 0, 0, 693}, + {&symbols[5], nullptr, &symbols[38], 4, 0, 18, 694}, + {&symbols[50], nullptr, &symbols[38], 4, 0, 18, 695}, + {&symbols[5], nullptr, &symbols[38], 1, 0, 19, 696}, + {&symbols[50], nullptr, &symbols[38], 1, 0, 19, 697}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 698}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 699}, + {&symbols[41], &states[88], nullptr, 0, 0, 0, 700}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 701}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 702}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 703}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 704}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 705}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 706}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 707}, + {&symbols[41], &states[89], nullptr, 0, 0, 0, 708}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 709}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 710}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 711}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 712}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 713}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 714}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 715}, + {&symbols[41], &states[90], nullptr, 0, 0, 0, 716}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 717}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 718}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 719}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 720}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 721}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 722}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 723}, + {&symbols[41], &states[91], nullptr, 0, 0, 0, 724}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 725}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 726}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 727}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 728}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 729}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 730}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 731}, + {&symbols[41], &states[92], nullptr, 0, 0, 0, 732}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 733}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 734}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 735}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 736}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 737}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 738}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 739}, + {&symbols[41], &states[93], nullptr, 0, 0, 0, 740}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 741}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 742}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 743}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 744}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 745}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 746}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 747}, + {&symbols[41], &states[94], nullptr, 0, 0, 0, 748}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 749}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 750}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 751}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 752}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 753}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 754}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 755}, + {&symbols[41], &states[95], nullptr, 0, 0, 0, 756}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 757}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 758}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 759}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 760}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 761}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 762}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 763}, + {&symbols[41], &states[96], nullptr, 0, 0, 0, 764}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 765}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 766}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 767}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 768}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 769}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 770}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 771}, + {&symbols[41], &states[97], nullptr, 0, 0, 0, 772}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 773}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 774}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 775}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 776}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 777}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 778}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 779}, + {&symbols[41], &states[98], nullptr, 0, 0, 0, 780}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 781}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 782}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 783}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 784}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 785}, + {&symbols[4], &states[85], nullptr, 0, 0, 0, 786}, + {&symbols[18], &states[75], nullptr, 0, 0, 0, 787}, + {&symbols[41], &states[99], nullptr, 0, 0, 0, 788}, + {&symbols[51], &states[86], nullptr, 0, 0, 0, 789}, + {&symbols[52], &states[104], nullptr, 0, 0, 0, 790}, + {&symbols[53], &states[105], nullptr, 0, 0, 0, 791}, + {&symbols[54], &states[106], nullptr, 0, 0, 0, 792}, + {&symbols[55], &states[107], nullptr, 0, 0, 0, 793}, + {&symbols[4], &states[62], nullptr, 0, 0, 0, 794}, + {&symbols[5], nullptr, &symbols[41], 1, 0, 39, 795}, + {&symbols[6], nullptr, &symbols[41], 1, 0, 39, 796}, + {&symbols[7], nullptr, &symbols[41], 1, 0, 39, 797}, + {&symbols[8], nullptr, &symbols[41], 1, 0, 39, 798}, + {&symbols[9], nullptr, &symbols[41], 1, 0, 39, 799}, + {&symbols[10], nullptr, &symbols[41], 1, 0, 39, 800}, + {&symbols[11], nullptr, &symbols[41], 1, 0, 39, 801}, + {&symbols[12], nullptr, &symbols[41], 1, 0, 39, 802}, + {&symbols[13], nullptr, &symbols[41], 1, 0, 39, 803}, + {&symbols[14], nullptr, &symbols[41], 1, 0, 39, 804}, + {&symbols[15], nullptr, &symbols[41], 1, 0, 39, 805}, + {&symbols[16], nullptr, &symbols[41], 1, 0, 39, 806}, + {&symbols[17], nullptr, &symbols[41], 1, 0, 39, 807}, + {&symbols[19], nullptr, &symbols[41], 1, 0, 39, 808}, + {&symbols[50], nullptr, &symbols[41], 1, 0, 39, 809}, + {&symbols[5], nullptr, &symbols[41], 4, 3, 20, 810}, + {&symbols[6], nullptr, &symbols[41], 4, 3, 20, 811}, + {&symbols[7], nullptr, &symbols[41], 4, 3, 20, 812}, + {&symbols[8], nullptr, &symbols[41], 4, 3, 20, 813}, + {&symbols[9], nullptr, &symbols[41], 4, 3, 20, 814}, + {&symbols[10], nullptr, &symbols[41], 4, 3, 20, 815}, + {&symbols[11], nullptr, &symbols[41], 4, 3, 20, 816}, + {&symbols[12], nullptr, &symbols[41], 4, 3, 20, 817}, + {&symbols[13], nullptr, &symbols[41], 4, 3, 20, 818}, + {&symbols[14], nullptr, &symbols[41], 4, 3, 20, 819}, + {&symbols[15], nullptr, &symbols[41], 4, 3, 20, 820}, + {&symbols[16], nullptr, &symbols[41], 4, 3, 20, 821}, + {&symbols[17], nullptr, &symbols[41], 4, 3, 20, 822}, + {&symbols[19], nullptr, &symbols[41], 4, 3, 20, 823}, + {&symbols[50], nullptr, &symbols[41], 4, 3, 20, 824}, + {&symbols[6], nullptr, &symbols[41], 3, 7, 23, 825}, + {&symbols[7], nullptr, &symbols[41], 3, 7, 23, 826}, + {&symbols[8], nullptr, &symbols[41], 3, 7, 23, 827}, + {&symbols[9], nullptr, &symbols[41], 3, 7, 23, 828}, + {&symbols[10], nullptr, &symbols[41], 3, 7, 23, 829}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 830}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 831}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 832}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 833}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 834}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 835}, + {&symbols[5], nullptr, &symbols[41], 3, 7, 23, 836}, + {&symbols[11], nullptr, &symbols[41], 3, 7, 23, 837}, + {&symbols[19], nullptr, &symbols[41], 3, 7, 23, 838}, + {&symbols[50], nullptr, &symbols[41], 3, 7, 23, 839}, + {&symbols[6], nullptr, &symbols[41], 2, 7, 24, 840}, + {&symbols[7], nullptr, &symbols[41], 2, 7, 24, 841}, + {&symbols[8], nullptr, &symbols[41], 2, 7, 24, 842}, + {&symbols[9], nullptr, &symbols[41], 2, 7, 24, 843}, + {&symbols[10], nullptr, &symbols[41], 2, 7, 24, 844}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 845}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 846}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 847}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 848}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 849}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 850}, + {&symbols[5], nullptr, &symbols[41], 2, 7, 24, 851}, + {&symbols[11], nullptr, &symbols[41], 2, 7, 24, 852}, + {&symbols[19], nullptr, &symbols[41], 2, 7, 24, 853}, + {&symbols[50], nullptr, &symbols[41], 2, 7, 24, 854}, + {&symbols[6], nullptr, &symbols[41], 3, 7, 25, 855}, + {&symbols[7], nullptr, &symbols[41], 3, 7, 25, 856}, + {&symbols[8], nullptr, &symbols[41], 3, 7, 25, 857}, + {&symbols[9], nullptr, &symbols[41], 3, 7, 25, 858}, + {&symbols[10], nullptr, &symbols[41], 3, 7, 25, 859}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 860}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 861}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 862}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 863}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 864}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 865}, + {&symbols[5], nullptr, &symbols[41], 3, 7, 25, 866}, + {&symbols[11], nullptr, &symbols[41], 3, 7, 25, 867}, + {&symbols[19], nullptr, &symbols[41], 3, 7, 25, 868}, + {&symbols[50], nullptr, &symbols[41], 3, 7, 25, 869}, + {&symbols[6], nullptr, &symbols[41], 3, 7, 26, 870}, + {&symbols[7], nullptr, &symbols[41], 3, 7, 26, 871}, + {&symbols[8], nullptr, &symbols[41], 3, 7, 26, 872}, + {&symbols[9], nullptr, &symbols[41], 3, 7, 26, 873}, + {&symbols[10], nullptr, &symbols[41], 3, 7, 26, 874}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 875}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 876}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 877}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 878}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 879}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 880}, + {&symbols[5], nullptr, &symbols[41], 3, 7, 26, 881}, + {&symbols[11], nullptr, &symbols[41], 3, 7, 26, 882}, + {&symbols[19], nullptr, &symbols[41], 3, 7, 26, 883}, + {&symbols[50], nullptr, &symbols[41], 3, 7, 26, 884}, + {&symbols[6], nullptr, &symbols[41], 3, 7, 27, 885}, + {&symbols[7], nullptr, &symbols[41], 3, 7, 27, 886}, + {&symbols[8], nullptr, &symbols[41], 3, 7, 27, 887}, + {&symbols[9], nullptr, &symbols[41], 3, 7, 27, 888}, + {&symbols[10], nullptr, &symbols[41], 3, 7, 27, 889}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 890}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 891}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 892}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 893}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 894}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 895}, + {&symbols[5], nullptr, &symbols[41], 3, 7, 27, 896}, + {&symbols[11], nullptr, &symbols[41], 3, 7, 27, 897}, + {&symbols[19], nullptr, &symbols[41], 3, 7, 27, 898}, + {&symbols[50], nullptr, &symbols[41], 3, 7, 27, 899}, + {&symbols[6], nullptr, &symbols[41], 3, 7, 28, 900}, + {&symbols[7], nullptr, &symbols[41], 3, 7, 28, 901}, + {&symbols[8], nullptr, &symbols[41], 3, 7, 28, 902}, + {&symbols[9], nullptr, &symbols[41], 3, 7, 28, 903}, + {&symbols[10], nullptr, &symbols[41], 3, 7, 28, 904}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 905}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 906}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 907}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 908}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 909}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 910}, + {&symbols[5], nullptr, &symbols[41], 3, 7, 28, 911}, + {&symbols[11], nullptr, &symbols[41], 3, 7, 28, 912}, + {&symbols[19], nullptr, &symbols[41], 3, 7, 28, 913}, + {&symbols[50], nullptr, &symbols[41], 3, 7, 28, 914}, + {&symbols[6], nullptr, &symbols[41], 3, 7, 29, 915}, + {&symbols[7], nullptr, &symbols[41], 3, 7, 29, 916}, + {&symbols[8], nullptr, &symbols[41], 3, 7, 29, 917}, + {&symbols[9], nullptr, &symbols[41], 3, 7, 29, 918}, + {&symbols[10], nullptr, &symbols[41], 3, 7, 29, 919}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 920}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 921}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 922}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 923}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 924}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 925}, + {&symbols[5], nullptr, &symbols[41], 3, 7, 29, 926}, + {&symbols[11], nullptr, &symbols[41], 3, 7, 29, 927}, + {&symbols[19], nullptr, &symbols[41], 3, 7, 29, 928}, + {&symbols[50], nullptr, &symbols[41], 3, 7, 29, 929}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 930}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 931}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 932}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 933}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 934}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 935}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 936}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 937}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 938}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 939}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 940}, + {&symbols[5], nullptr, &symbols[41], 3, 4, 30, 941}, + {&symbols[11], nullptr, &symbols[41], 3, 4, 30, 942}, + {&symbols[19], nullptr, &symbols[41], 3, 4, 30, 943}, + {&symbols[50], nullptr, &symbols[41], 3, 4, 30, 944}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 945}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 946}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 947}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 948}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 949}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 950}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 951}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 952}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 953}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 954}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 955}, + {&symbols[5], nullptr, &symbols[41], 3, 4, 31, 956}, + {&symbols[11], nullptr, &symbols[41], 3, 4, 31, 957}, + {&symbols[19], nullptr, &symbols[41], 3, 4, 31, 958}, + {&symbols[50], nullptr, &symbols[41], 3, 4, 31, 959}, + {&symbols[6], nullptr, &symbols[41], 3, 5, 32, 960}, + {&symbols[7], nullptr, &symbols[41], 3, 5, 32, 961}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 962}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 963}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 964}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 965}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 966}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 967}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 968}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 969}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 970}, + {&symbols[5], nullptr, &symbols[41], 3, 5, 32, 971}, + {&symbols[11], nullptr, &symbols[41], 3, 5, 32, 972}, + {&symbols[19], nullptr, &symbols[41], 3, 5, 32, 973}, + {&symbols[50], nullptr, &symbols[41], 3, 5, 32, 974}, + {&symbols[6], nullptr, &symbols[41], 3, 5, 33, 975}, + {&symbols[7], nullptr, &symbols[41], 3, 5, 33, 976}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 977}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 978}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 979}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 980}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 981}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 982}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 983}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 984}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 985}, + {&symbols[5], nullptr, &symbols[41], 3, 5, 33, 986}, + {&symbols[11], nullptr, &symbols[41], 3, 5, 33, 987}, + {&symbols[19], nullptr, &symbols[41], 3, 5, 33, 988}, + {&symbols[50], nullptr, &symbols[41], 3, 5, 33, 989}, + {&symbols[5], &states[103], nullptr, 0, 0, 0, 990}, + {&symbols[6], &states[81], nullptr, 0, 0, 0, 991}, + {&symbols[7], &states[82], nullptr, 0, 0, 0, 992}, + {&symbols[8], &states[83], nullptr, 0, 0, 0, 993}, + {&symbols[9], &states[84], nullptr, 0, 0, 0, 994}, + {&symbols[10], &states[100], nullptr, 0, 0, 0, 995}, + {&symbols[12], &states[74], nullptr, 0, 0, 0, 996}, + {&symbols[13], &states[77], nullptr, 0, 0, 0, 997}, + {&symbols[14], &states[78], nullptr, 0, 0, 0, 998}, + {&symbols[15], &states[79], nullptr, 0, 0, 0, 999}, + {&symbols[16], &states[80], nullptr, 0, 0, 0, 1000}, + {&symbols[17], &states[76], nullptr, 0, 0, 0, 1001}, + {&symbols[51], &states[101], nullptr, 0, 0, 0, 1002}, + {&symbols[4], &states[63], nullptr, 0, 0, 0, 1003}, + {&symbols[5], nullptr, &symbols[41], 3, 0, 22, 1004}, + {&symbols[6], nullptr, &symbols[41], 3, 0, 22, 1005}, + {&symbols[7], nullptr, &symbols[41], 3, 0, 22, 1006}, + {&symbols[8], nullptr, &symbols[41], 3, 0, 22, 1007}, + {&symbols[9], nullptr, &symbols[41], 3, 0, 22, 1008}, + {&symbols[10], nullptr, &symbols[41], 3, 0, 22, 1009}, + {&symbols[11], nullptr, &symbols[41], 3, 0, 22, 1010}, + {&symbols[12], nullptr, &symbols[41], 3, 0, 22, 1011}, + {&symbols[13], nullptr, &symbols[41], 3, 0, 22, 1012}, + {&symbols[14], nullptr, &symbols[41], 3, 0, 22, 1013}, + {&symbols[15], nullptr, &symbols[41], 3, 0, 22, 1014}, + {&symbols[16], nullptr, &symbols[41], 3, 0, 22, 1015}, + {&symbols[17], nullptr, &symbols[41], 3, 0, 22, 1016}, + {&symbols[19], nullptr, &symbols[41], 3, 0, 22, 1017}, + {&symbols[50], nullptr, &symbols[41], 3, 0, 22, 1018}, + {&symbols[5], nullptr, &symbols[41], 6, 3, 21, 1019}, + {&symbols[6], nullptr, &symbols[41], 6, 3, 21, 1020}, + {&symbols[7], nullptr, &symbols[41], 6, 3, 21, 1021}, + {&symbols[8], nullptr, &symbols[41], 6, 3, 21, 1022}, + {&symbols[9], nullptr, &symbols[41], 6, 3, 21, 1023}, + {&symbols[10], nullptr, &symbols[41], 6, 3, 21, 1024}, + {&symbols[11], nullptr, &symbols[41], 6, 3, 21, 1025}, + {&symbols[12], nullptr, &symbols[41], 6, 3, 21, 1026}, + {&symbols[13], nullptr, &symbols[41], 6, 3, 21, 1027}, + {&symbols[14], nullptr, &symbols[41], 6, 3, 21, 1028}, + {&symbols[15], nullptr, &symbols[41], 6, 3, 21, 1029}, + {&symbols[16], nullptr, &symbols[41], 6, 3, 21, 1030}, + {&symbols[17], nullptr, &symbols[41], 6, 3, 21, 1031}, + {&symbols[19], nullptr, &symbols[41], 6, 3, 21, 1032}, + {&symbols[50], nullptr, &symbols[41], 6, 3, 21, 1033}, + {&symbols[5], nullptr, &symbols[41], 3, 3, 34, 1034}, + {&symbols[6], nullptr, &symbols[41], 3, 3, 34, 1035}, + {&symbols[7], nullptr, &symbols[41], 3, 3, 34, 1036}, + {&symbols[8], nullptr, &symbols[41], 3, 3, 34, 1037}, + {&symbols[9], nullptr, &symbols[41], 3, 3, 34, 1038}, + {&symbols[10], nullptr, &symbols[41], 3, 3, 34, 1039}, + {&symbols[11], nullptr, &symbols[41], 3, 3, 34, 1040}, + {&symbols[12], nullptr, &symbols[41], 3, 3, 34, 1041}, + {&symbols[13], nullptr, &symbols[41], 3, 3, 34, 1042}, + {&symbols[14], nullptr, &symbols[41], 3, 3, 34, 1043}, + {&symbols[15], nullptr, &symbols[41], 3, 3, 34, 1044}, + {&symbols[16], nullptr, &symbols[41], 3, 3, 34, 1045}, + {&symbols[17], nullptr, &symbols[41], 3, 3, 34, 1046}, + {&symbols[19], nullptr, &symbols[41], 3, 3, 34, 1047}, + {&symbols[50], nullptr, &symbols[41], 3, 3, 34, 1048}, + {&symbols[5], nullptr, &symbols[41], 1, 0, 35, 1049}, + {&symbols[6], nullptr, &symbols[41], 1, 0, 35, 1050}, + {&symbols[7], nullptr, &symbols[41], 1, 0, 35, 1051}, + {&symbols[8], nullptr, &symbols[41], 1, 0, 35, 1052}, + {&symbols[9], nullptr, &symbols[41], 1, 0, 35, 1053}, + {&symbols[10], nullptr, &symbols[41], 1, 0, 35, 1054}, + {&symbols[11], nullptr, &symbols[41], 1, 0, 35, 1055}, + {&symbols[12], nullptr, &symbols[41], 1, 0, 35, 1056}, + {&symbols[13], nullptr, &symbols[41], 1, 0, 35, 1057}, + {&symbols[14], nullptr, &symbols[41], 1, 0, 35, 1058}, + {&symbols[15], nullptr, &symbols[41], 1, 0, 35, 1059}, + {&symbols[16], nullptr, &symbols[41], 1, 0, 35, 1060}, + {&symbols[17], nullptr, &symbols[41], 1, 0, 35, 1061}, + {&symbols[19], nullptr, &symbols[41], 1, 0, 35, 1062}, + {&symbols[50], nullptr, &symbols[41], 1, 0, 35, 1063}, + {&symbols[5], nullptr, &symbols[41], 1, 2, 36, 1064}, + {&symbols[6], nullptr, &symbols[41], 1, 2, 36, 1065}, + {&symbols[7], nullptr, &symbols[41], 1, 2, 36, 1066}, + {&symbols[8], nullptr, &symbols[41], 1, 2, 36, 1067}, + {&symbols[9], nullptr, &symbols[41], 1, 2, 36, 1068}, + {&symbols[10], nullptr, &symbols[41], 1, 2, 36, 1069}, + {&symbols[11], nullptr, &symbols[41], 1, 2, 36, 1070}, + {&symbols[12], nullptr, &symbols[41], 1, 2, 36, 1071}, + {&symbols[13], nullptr, &symbols[41], 1, 2, 36, 1072}, + {&symbols[14], nullptr, &symbols[41], 1, 2, 36, 1073}, + {&symbols[15], nullptr, &symbols[41], 1, 2, 36, 1074}, + {&symbols[16], nullptr, &symbols[41], 1, 2, 36, 1075}, + {&symbols[17], nullptr, &symbols[41], 1, 2, 36, 1076}, + {&symbols[19], nullptr, &symbols[41], 1, 2, 36, 1077}, + {&symbols[50], nullptr, &symbols[41], 1, 2, 36, 1078}, + {&symbols[5], nullptr, &symbols[41], 1, 0, 37, 1079}, + {&symbols[6], nullptr, &symbols[41], 1, 0, 37, 1080}, + {&symbols[7], nullptr, &symbols[41], 1, 0, 37, 1081}, + {&symbols[8], nullptr, &symbols[41], 1, 0, 37, 1082}, + {&symbols[9], nullptr, &symbols[41], 1, 0, 37, 1083}, + {&symbols[10], nullptr, &symbols[41], 1, 0, 37, 1084}, + {&symbols[11], nullptr, &symbols[41], 1, 0, 37, 1085}, + {&symbols[12], nullptr, &symbols[41], 1, 0, 37, 1086}, + {&symbols[13], nullptr, &symbols[41], 1, 0, 37, 1087}, + {&symbols[14], nullptr, &symbols[41], 1, 0, 37, 1088}, + {&symbols[15], nullptr, &symbols[41], 1, 0, 37, 1089}, + {&symbols[16], nullptr, &symbols[41], 1, 0, 37, 1090}, + {&symbols[17], nullptr, &symbols[41], 1, 0, 37, 1091}, + {&symbols[19], nullptr, &symbols[41], 1, 0, 37, 1092}, + {&symbols[50], nullptr, &symbols[41], 1, 0, 37, 1093}, + {&symbols[5], nullptr, &symbols[41], 1, 0, 38, 1094}, + {&symbols[6], nullptr, &symbols[41], 1, 0, 38, 1095}, + {&symbols[7], nullptr, &symbols[41], 1, 0, 38, 1096}, + {&symbols[8], nullptr, &symbols[41], 1, 0, 38, 1097}, + {&symbols[9], nullptr, &symbols[41], 1, 0, 38, 1098}, + {&symbols[10], nullptr, &symbols[41], 1, 0, 38, 1099}, + {&symbols[11], nullptr, &symbols[41], 1, 0, 38, 1100}, + {&symbols[12], nullptr, &symbols[41], 1, 0, 38, 1101}, + {&symbols[13], nullptr, &symbols[41], 1, 0, 38, 1102}, + {&symbols[14], nullptr, &symbols[41], 1, 0, 38, 1103}, + {&symbols[15], nullptr, &symbols[41], 1, 0, 38, 1104}, + {&symbols[16], nullptr, &symbols[41], 1, 0, 38, 1105}, + {&symbols[17], nullptr, &symbols[41], 1, 0, 38, 1106}, + {&symbols[19], nullptr, &symbols[41], 1, 0, 38, 1107}, + {&symbols[50], nullptr, &symbols[41], 1, 0, 38, 1108}, + {nullptr, nullptr, nullptr, 0, 0, 0, -1} +}; + +const ParserState states [] = +{ + {0, 31, &transitions[0], "(null)"}, + {1, 1, &transitions[31], "(null)"}, + {2, 29, &transitions[32], "(null)"}, + {3, 2, &transitions[61], "(null)"}, + {4, 2, &transitions[63], "(null)"}, + {5, 2, &transitions[65], "(null)"}, + {6, 2, &transitions[67], "(null)"}, + {7, 2, &transitions[69], "(null)"}, + {8, 30, &transitions[71], "(null)"}, + {9, 29, &transitions[101], "(null)"}, + {10, 18, &transitions[130], "(null)"}, + {11, 18, &transitions[148], "(null)"}, + {12, 17, &transitions[166], "(null)"}, + {13, 17, &transitions[183], "(null)"}, + {14, 1, &transitions[200], "(null)"}, + {15, 17, &transitions[201], "(null)"}, + {16, 1, &transitions[218], "(null)"}, + {17, 17, &transitions[219], "(null)"}, + {18, 1, &transitions[236], "(null)"}, + {19, 17, &transitions[237], "(null)"}, + {20, 1, &transitions[254], "(null)"}, + {21, 17, &transitions[255], "(null)"}, + {22, 17, &transitions[272], "(null)"}, + {23, 1, &transitions[289], "(null)"}, + {24, 17, &transitions[290], "(null)"}, + {25, 1, &transitions[307], "(null)"}, + {26, 17, &transitions[308], "(null)"}, + {27, 17, &transitions[325], "(null)"}, + {28, 17, &transitions[342], "(null)"}, + {29, 17, &transitions[359], "(null)"}, + {30, 1, &transitions[376], "(null)"}, + {31, 17, &transitions[377], "(null)"}, + {32, 1, &transitions[394], "(null)"}, + {33, 1, &transitions[395], "(null)"}, + {34, 4, &transitions[396], "(null)"}, + {35, 2, &transitions[400], "(null)"}, + {36, 17, &transitions[402], "(null)"}, + {37, 1, &transitions[419], "(null)"}, + {38, 17, &transitions[420], "(null)"}, + {39, 1, &transitions[437], "(null)"}, + {40, 8, &transitions[438], "(null)"}, + {41, 12, &transitions[446], "(null)"}, + {42, 18, &transitions[458], "(null)"}, + {43, 17, &transitions[476], "(null)"}, + {44, 1, &transitions[493], "(null)"}, + {45, 9, &transitions[494], "(null)"}, + {46, 12, &transitions[503], "(null)"}, + {47, 1, &transitions[515], "(null)"}, + {48, 8, &transitions[516], "(null)"}, + {49, 12, &transitions[524], "(null)"}, + {50, 17, &transitions[536], "(null)"}, + {51, 1, &transitions[553], "(null)"}, + {52, 2, &transitions[554], "(null)"}, + {53, 1, &transitions[556], "(null)"}, + {54, 1, &transitions[557], "(null)"}, + {55, 8, &transitions[558], "(null)"}, + {56, 12, &transitions[566], "(null)"}, + {57, 8, &transitions[578], "(null)"}, + {58, 12, &transitions[586], "(null)"}, + {59, 13, &transitions[598], "(null)"}, + {60, 8, &transitions[611], "(null)"}, + {61, 12, &transitions[619], "(null)"}, + {62, 11, &transitions[631], "(null)"}, + {63, 11, &transitions[642], "(null)"}, + {64, 2, &transitions[653], "(null)"}, + {65, 2, &transitions[655], "(null)"}, + {66, 8, &transitions[657], "(null)"}, + {67, 12, &transitions[665], "(null)"}, + {68, 2, &transitions[677], "(null)"}, + {69, 13, &transitions[679], "(null)"}, + {70, 1, &transitions[692], "(null)"}, + {71, 1, &transitions[693], "(null)"}, + {72, 2, &transitions[694], "(null)"}, + {73, 2, &transitions[696], "(null)"}, + {74, 8, &transitions[698], "(null)"}, + {75, 8, &transitions[706], "(null)"}, + {76, 8, &transitions[714], "(null)"}, + {77, 8, &transitions[722], "(null)"}, + {78, 8, &transitions[730], "(null)"}, + {79, 8, &transitions[738], "(null)"}, + {80, 8, &transitions[746], "(null)"}, + {81, 8, &transitions[754], "(null)"}, + {82, 8, &transitions[762], "(null)"}, + {83, 8, &transitions[770], "(null)"}, + {84, 8, &transitions[778], "(null)"}, + {85, 8, &transitions[786], "(null)"}, + {86, 16, &transitions[794], "(null)"}, + {87, 15, &transitions[810], "(null)"}, + {88, 15, &transitions[825], "(null)"}, + {89, 15, &transitions[840], "(null)"}, + {90, 15, &transitions[855], "(null)"}, + {91, 15, &transitions[870], "(null)"}, + {92, 15, &transitions[885], "(null)"}, + {93, 15, &transitions[900], "(null)"}, + {94, 15, &transitions[915], "(null)"}, + {95, 15, &transitions[930], "(null)"}, + {96, 15, &transitions[945], "(null)"}, + {97, 15, &transitions[960], "(null)"}, + {98, 15, &transitions[975], "(null)"}, + {99, 12, &transitions[990], "(null)"}, + {100, 1, &transitions[1002], "(null)"}, + {101, 16, &transitions[1003], "(null)"}, + {102, 15, &transitions[1019], "(null)"}, + {103, 15, &transitions[1034], "(null)"}, + {104, 15, &transitions[1049], "(null)"}, + {105, 15, &transitions[1064], "(null)"}, + {106, 15, &transitions[1079], "(null)"}, + {107, 15, &transitions[1094], "(null)"}, + {-1, 0, nullptr} +}; + +const LexerAction lexer_actions [] = +{ + {0, "string"}, + {-1, nullptr} +}; + +const LexerTransition lexer_transitions [] = +{ + {33, 34, &lexer_states[29], nullptr}, + {34, 35, &lexer_states[92], nullptr}, + {39, 40, &lexer_states[92], nullptr}, + {40, 41, &lexer_states[17], nullptr}, + {41, 42, &lexer_states[18], nullptr}, + {42, 43, &lexer_states[21], nullptr}, + {43, 44, &lexer_states[19], nullptr}, + {44, 45, &lexer_states[75], nullptr}, + {45, 46, &lexer_states[20], nullptr}, + {46, 47, &lexer_states[6], nullptr}, + {47, 48, &lexer_states[22], nullptr}, + {48, 58, &lexer_states[85], nullptr}, + {58, 59, &lexer_states[69], nullptr}, + {59, 60, &lexer_states[31], nullptr}, + {60, 61, &lexer_states[26], nullptr}, + {61, 62, &lexer_states[23], nullptr}, + {62, 63, &lexer_states[25], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 98, &lexer_states[76], nullptr}, + {98, 99, &lexer_states[50], nullptr}, + {99, 100, &lexer_states[40], nullptr}, + {100, 101, &lexer_states[76], nullptr}, + {101, 102, &lexer_states[1], nullptr}, + {102, 103, &lexer_states[80], nullptr}, + {103, 105, &lexer_states[76], nullptr}, + {105, 106, &lexer_states[45], nullptr}, + {106, 109, &lexer_states[76], nullptr}, + {109, 110, &lexer_states[34], nullptr}, + {110, 112, &lexer_states[76], nullptr}, + {112, 113, &lexer_states[70], nullptr}, + {113, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[55], nullptr}, + {115, 116, &lexer_states[76], nullptr}, + {116, 117, &lexer_states[77], nullptr}, + {117, 118, &lexer_states[76], nullptr}, + {118, 119, &lexer_states[66], nullptr}, + {119, 120, &lexer_states[61], nullptr}, + {120, 123, &lexer_states[76], nullptr}, + {123, 124, &lexer_states[32], nullptr}, + {125, 126, &lexer_states[33], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 108, &lexer_states[76], nullptr}, + {108, 109, &lexer_states[47], nullptr}, + {109, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[2], nullptr}, + {115, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[3], nullptr}, + {115, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 111, &lexer_states[76], nullptr}, + {111, 112, &lexer_states[4], nullptr}, + {112, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[5], nullptr}, + {115, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {119, 120, &lexer_states[7], nullptr}, + {104, 105, &lexer_states[8], nullptr}, + {105, 106, &lexer_states[9], nullptr}, + {116, 117, &lexer_states[10], nullptr}, + {101, 102, &lexer_states[11], nullptr}, + {115, 116, &lexer_states[12], nullptr}, + {112, 113, &lexer_states[13], nullptr}, + {97, 98, &lexer_states[14], nullptr}, + {99, 100, &lexer_states[15], nullptr}, + {101, 102, &lexer_states[16], nullptr}, + {48, 58, &lexer_states[85], nullptr}, + {48, 58, &lexer_states[85], nullptr}, + {61, 62, &lexer_states[24], nullptr}, + {61, 62, &lexer_states[27], nullptr}, + {61, 62, &lexer_states[28], nullptr}, + {61, 62, &lexer_states[30], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 101, &lexer_states[76], nullptr}, + {101, 102, &lexer_states[35], nullptr}, + {102, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 116, &lexer_states[76], nullptr}, + {116, 117, &lexer_states[36], nullptr}, + {117, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 104, &lexer_states[76], nullptr}, + {104, 105, &lexer_states[37], nullptr}, + {105, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 111, &lexer_states[76], nullptr}, + {111, 112, &lexer_states[38], nullptr}, + {112, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 100, &lexer_states[76], nullptr}, + {100, 101, &lexer_states[39], nullptr}, + {101, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 108, &lexer_states[76], nullptr}, + {108, 109, &lexer_states[41], nullptr}, + {109, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 98, &lexer_states[42], nullptr}, + {98, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 115, &lexer_states[76], nullptr}, + {115, 116, &lexer_states[43], nullptr}, + {116, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 115, &lexer_states[76], nullptr}, + {115, 116, &lexer_states[44], nullptr}, + {116, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 102, &lexer_states[76], nullptr}, + {102, 103, &lexer_states[46], nullptr}, + {103, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 115, &lexer_states[76], nullptr}, + {115, 116, &lexer_states[48], nullptr}, + {116, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 101, &lexer_states[76], nullptr}, + {101, 102, &lexer_states[49], nullptr}, + {102, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[51], nullptr}, + {115, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 101, &lexer_states[76], nullptr}, + {101, 102, &lexer_states[52], nullptr}, + {102, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 98, &lexer_states[53], nullptr}, + {98, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 107, &lexer_states[76], nullptr}, + {107, 108, &lexer_states[54], nullptr}, + {108, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 101, &lexer_states[76], nullptr}, + {101, 102, &lexer_states[56], nullptr}, + {102, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 116, &lexer_states[76], nullptr}, + {116, 117, &lexer_states[57], nullptr}, + {117, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 117, &lexer_states[76], nullptr}, + {117, 118, &lexer_states[58], nullptr}, + {118, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[59], nullptr}, + {115, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 110, &lexer_states[76], nullptr}, + {110, 111, &lexer_states[60], nullptr}, + {111, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 104, &lexer_states[76], nullptr}, + {104, 105, &lexer_states[62], nullptr}, + {105, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 105, &lexer_states[76], nullptr}, + {105, 106, &lexer_states[63], nullptr}, + {106, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 108, &lexer_states[76], nullptr}, + {108, 109, &lexer_states[64], nullptr}, + {109, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 101, &lexer_states[76], nullptr}, + {101, 102, &lexer_states[65], nullptr}, + {102, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 98, &lexer_states[67], nullptr}, + {98, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[68], nullptr}, + {115, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[71], nullptr}, + {115, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 105, &lexer_states[76], nullptr}, + {105, 106, &lexer_states[72], nullptr}, + {106, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 110, &lexer_states[76], nullptr}, + {110, 111, &lexer_states[73], nullptr}, + {111, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 116, &lexer_states[76], nullptr}, + {116, 117, &lexer_states[74], nullptr}, + {117, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 114, &lexer_states[76], nullptr}, + {114, 115, &lexer_states[78], nullptr}, + {115, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 117, &lexer_states[76], nullptr}, + {117, 118, &lexer_states[79], nullptr}, + {118, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 101, &lexer_states[76], nullptr}, + {101, 102, &lexer_states[84], nullptr}, + {102, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 98, &lexer_states[81], nullptr}, + {98, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 108, &lexer_states[76], nullptr}, + {108, 109, &lexer_states[82], nullptr}, + {109, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 115, &lexer_states[76], nullptr}, + {115, 116, &lexer_states[83], nullptr}, + {116, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 101, &lexer_states[76], nullptr}, + {101, 102, &lexer_states[84], nullptr}, + {102, 123, &lexer_states[76], nullptr}, + {65, 91, &lexer_states[76], nullptr}, + {97, 123, &lexer_states[76], nullptr}, + {46, 47, &lexer_states[86], nullptr}, + {48, 58, &lexer_states[85], nullptr}, + {69, 70, &lexer_states[88], nullptr}, + {101, 102, &lexer_states[88], nullptr}, + {48, 58, &lexer_states[87], nullptr}, + {48, 58, &lexer_states[87], nullptr}, + {69, 70, &lexer_states[88], nullptr}, + {101, 102, &lexer_states[88], nullptr}, + {43, 44, &lexer_states[89], nullptr}, + {45, 46, &lexer_states[89], nullptr}, + {48, 58, &lexer_states[90], nullptr}, + {48, 58, &lexer_states[90], nullptr}, + {48, 58, &lexer_states[90], nullptr}, + {0, 2147483647, &lexer_states[91], &lexer_actions[0]}, + {-1, -1, nullptr, nullptr} +}; + +const LexerState lexer_states [] = +{ + {0, 40, &lexer_transitions[0], nullptr}, + {1, 6, &lexer_transitions[40], &symbols[51]}, + {2, 4, &lexer_transitions[46], &symbols[51]}, + {3, 4, &lexer_transitions[50], &symbols[51]}, + {4, 4, &lexer_transitions[54], &symbols[51]}, + {5, 2, &lexer_transitions[58], &symbols[2]}, + {6, 1, &lexer_transitions[60], &symbols[10]}, + {7, 1, &lexer_transitions[61], nullptr}, + {8, 1, &lexer_transitions[62], nullptr}, + {9, 1, &lexer_transitions[63], nullptr}, + {10, 1, &lexer_transitions[64], nullptr}, + {11, 1, &lexer_transitions[65], nullptr}, + {12, 1, &lexer_transitions[66], nullptr}, + {13, 1, &lexer_transitions[67], nullptr}, + {14, 1, &lexer_transitions[68], nullptr}, + {15, 1, &lexer_transitions[69], nullptr}, + {16, 0, &lexer_transitions[70], &symbols[3]}, + {17, 0, &lexer_transitions[70], &symbols[4]}, + {18, 0, &lexer_transitions[70], &symbols[5]}, + {19, 1, &lexer_transitions[70], &symbols[6]}, + {20, 1, &lexer_transitions[71], &symbols[7]}, + {21, 0, &lexer_transitions[72], &symbols[8]}, + {22, 0, &lexer_transitions[72], &symbols[9]}, + {23, 1, &lexer_transitions[72], &symbols[11]}, + {24, 0, &lexer_transitions[73], &symbols[12]}, + {25, 1, &lexer_transitions[73], &symbols[13]}, + {26, 1, &lexer_transitions[74], &symbols[14]}, + {27, 0, &lexer_transitions[75], &symbols[15]}, + {28, 0, &lexer_transitions[75], &symbols[16]}, + {29, 1, &lexer_transitions[75], &symbols[18]}, + {30, 0, &lexer_transitions[76], &symbols[17]}, + {31, 0, &lexer_transitions[76], &symbols[19]}, + {32, 0, &lexer_transitions[76], &symbols[23]}, + {33, 0, &lexer_transitions[76], &symbols[24]}, + {34, 4, &lexer_transitions[76], &symbols[51]}, + {35, 4, &lexer_transitions[80], &symbols[51]}, + {36, 4, &lexer_transitions[84], &symbols[51]}, + {37, 4, &lexer_transitions[88], &symbols[51]}, + {38, 4, &lexer_transitions[92], &symbols[51]}, + {39, 2, &lexer_transitions[96], &symbols[37]}, + {40, 4, &lexer_transitions[98], &symbols[51]}, + {41, 3, &lexer_transitions[102], &symbols[51]}, + {42, 4, &lexer_transitions[105], &symbols[51]}, + {43, 4, &lexer_transitions[109], &symbols[51]}, + {44, 2, &lexer_transitions[113], &symbols[39]}, + {45, 4, &lexer_transitions[115], &symbols[51]}, + {46, 2, &lexer_transitions[119], &symbols[40]}, + {47, 4, &lexer_transitions[121], &symbols[51]}, + {48, 4, &lexer_transitions[125], &symbols[51]}, + {49, 2, &lexer_transitions[129], &symbols[42]}, + {50, 4, &lexer_transitions[131], &symbols[51]}, + {51, 4, &lexer_transitions[135], &symbols[51]}, + {52, 3, &lexer_transitions[139], &symbols[51]}, + {53, 4, &lexer_transitions[142], &symbols[51]}, + {54, 2, &lexer_transitions[146], &symbols[43]}, + {55, 4, &lexer_transitions[148], &symbols[51]}, + {56, 4, &lexer_transitions[152], &symbols[51]}, + {57, 4, &lexer_transitions[156], &symbols[51]}, + {58, 4, &lexer_transitions[160], &symbols[51]}, + {59, 4, &lexer_transitions[164], &symbols[51]}, + {60, 2, &lexer_transitions[168], &symbols[44]}, + {61, 4, &lexer_transitions[170], &symbols[51]}, + {62, 4, &lexer_transitions[174], &symbols[51]}, + {63, 4, &lexer_transitions[178], &symbols[51]}, + {64, 4, &lexer_transitions[182], &symbols[51]}, + {65, 2, &lexer_transitions[186], &symbols[45]}, + {66, 3, &lexer_transitions[188], &symbols[51]}, + {67, 4, &lexer_transitions[191], &symbols[51]}, + {68, 2, &lexer_transitions[195], &symbols[46]}, + {69, 0, &lexer_transitions[197], &symbols[47]}, + {70, 4, &lexer_transitions[197], &symbols[51]}, + {71, 4, &lexer_transitions[201], &symbols[51]}, + {72, 4, &lexer_transitions[205], &symbols[51]}, + {73, 4, &lexer_transitions[209], &symbols[51]}, + {74, 2, &lexer_transitions[213], &symbols[48]}, + {75, 0, &lexer_transitions[215], &symbols[50]}, + {76, 2, &lexer_transitions[215], &symbols[51]}, + {77, 4, &lexer_transitions[217], &symbols[51]}, + {78, 4, &lexer_transitions[221], &symbols[51]}, + {79, 4, &lexer_transitions[225], &symbols[51]}, + {80, 3, &lexer_transitions[229], &symbols[51]}, + {81, 4, &lexer_transitions[232], &symbols[51]}, + {82, 4, &lexer_transitions[236], &symbols[51]}, + {83, 4, &lexer_transitions[240], &symbols[51]}, + {84, 2, &lexer_transitions[244], &symbols[51]}, + {85, 4, &lexer_transitions[246], &symbols[53]}, + {86, 1, &lexer_transitions[250], nullptr}, + {87, 3, &lexer_transitions[251], &symbols[54]}, + {88, 3, &lexer_transitions[254], nullptr}, + {89, 1, &lexer_transitions[257], nullptr}, + {90, 1, &lexer_transitions[258], &symbols[54]}, + {91, 0, &lexer_transitions[259], &symbols[55]}, + {92, 1, &lexer_transitions[259], nullptr}, + {-1, 0, nullptr, nullptr} +}; + +const LexerStateMachine lexer_state_machine = +{ + 1, // #actions + 260, // #transitions + 93, // #states + lexer_actions, // actions + lexer_transitions, // transitions + lexer_states, // states + &lexer_states[0] // start state +}; + +const LexerAction whitespace_lexer_actions [] = +{ + {-1, nullptr} +}; + +const LexerTransition whitespace_lexer_transitions [] = +{ + {9, 11, &whitespace_lexer_states[0], nullptr}, + {13, 14, &whitespace_lexer_states[0], nullptr}, + {32, 33, &whitespace_lexer_states[0], nullptr}, + {-1, -1, nullptr, nullptr} +}; + +const LexerState whitespace_lexer_states [] = +{ + {0, 3, &whitespace_lexer_transitions[0], &symbols[3]}, + {-1, 0, nullptr, nullptr} +}; + +const LexerStateMachine whitespace_lexer_state_machine = +{ + 0, // #actions + 3, // #transitions + 1, // #states + whitespace_lexer_actions, // actions + whitespace_lexer_transitions, // transitions + whitespace_lexer_states, // states + &whitespace_lexer_states[0] // start state +}; + +const ParserStateMachine parser_state_machine = +{ + "oscript", + 40, // #actions + 56, // #symbols + 1109, // #transitions + 108, // #states + actions, + symbols, + transitions, + states, + &symbols[0], // start symbol + &symbols[1], // end symbol + &symbols[2], // error symbol + &symbols[3], // whitespace symbol + &states[0], // start state + &lexer_state_machine, // lexer state machine + &whitespace_lexer_state_machine // whitespace lexer state machine +}; + +} + +const lalr::ParserStateMachine* oscript_parser_state_machine = &parser_state_machine; diff --git a/Objects/private/parser/oscript.g b/Objects/private/parser/oscript.g new file mode 100644 index 0000000..a9dae43 --- /dev/null +++ b/Objects/private/parser/oscript.g @@ -0,0 +1,90 @@ +oscript { + %whitespace "[ \t\r\n]*"; + %none error; + %none integer; + %left '(' ')'; + %left '+' '-'; + %left '*' '/'; + %left '.' '='; + %left '==' '>' '<' '>=' '<=' '!=' '!'; + %left ';'; + + script : stmts [tmp] | ; + + scope: + '{' stmts '}' [scope] + | '{' '}' [scope_empty]; + + stmts: + stmts stmt [stm_list_append] + | stmt [stm_list_create]; + + stmt: + stm_var_def_new_type ';' [tmp] + | stm_var_def_assign ';' [tmp] + | stm_log ';' [tmp] + | stm_assign ';' [tmp] + | stm_while [tmp] + | stm_return ';' [tmp] + | stm_break ';' [tmp] + | stm_if [tmp] + | stm_def_class [tmp] + | stm_def_method [tmp] + | stm_ignore ';' [tmp] + ; + + stm_def_method: 'method' id '(' id_list ')' scope [stm_def_method]; + stm_def_class: 'class' id scope [stm_def_class]; + + stm_if: + 'if' '(' expr ')' scope [stm_if] + | 'if' '(' expr ')' scope 'else' scope [stm_if]; + + stm_break: 'break' [stm_break]; + stm_return: 'return' expr [stm_return] | 'return' [stm_return]; + stm_while: 'while' '(' expr ')' scope [stm_while_loop]; + stm_var_def_new_type: 'var' id ':' id [stm_var_def_new_type]; + stm_var_def_assign: 'var' id '=' expr [stm_var_def_assign]; + stm_log: 'print' expr [stm_log]; + stm_assign : expr '=' expr [stm_assign]; + stm_ignore : expr [stm_ignore]; + + expr_list: + expr_list ',' expr ',' [expr_list_append] + | expr [expr_list_create] + | ; + + id_list: + id_list ',' id ',' [id_list_append] + | id [id_list_create] + | ; + + expr: + id '(' expr_list ')' [expr_function] + | expr '.' id '(' expr_list ')' [expr_method] + | expr '.' id [expr_child] + | expr '==' expr [expr_bool_eq] + | '!' expr [expr_bool_negate] + | expr '!=' expr [expr_bool_neq] + | expr '>' expr [expr_bool_grater] + | expr '<' expr [expr_bool_lesser] + | expr '>=' expr [expr_bool_grater_eq] + | expr '<=' expr [expr_bool_lesser_eq] + | expr '+' expr [expr_add] + | expr '-' expr [expr_subtract] + | expr '*' expr [expr_multiply] + | expr '/' expr [expr_divide] + | '(' expr ')' [expr_compound] + | boolean [expr_bool] + | integer [expr_int] + | real [expr_float] + | string [expr_string] + | id [expr_id] + ; + + id: "([a-z]|[A-Z])+"; + boolean: "true|false"; + integer: "(\+|\-)?[0-9]+"; + real: "(\+|\-)?[0-9]+(\.[0-9]+)?((e|E)(\+|\-)?[0-9]+)?"; + string: "[\"']:string:"; +} diff --git a/Objects/private/primitives/BoolObject.cpp b/Objects/private/primitives/BoolObject.cpp new file mode 100644 index 0000000..f8ba824 --- /dev/null +++ b/Objects/private/primitives/BoolObject.cpp @@ -0,0 +1,56 @@ + + +#include "primitives/BoolObject.hpp" + +using namespace tp; +using namespace obj; + +void BoolObject::constructor(BoolObject* self) { self->val = false; } + +void BoolObject::copy(BoolObject* self, const BoolObject* in) { self->val = in->val; } + +BoolObject* BoolObject::create(bool in) { + auto out = objects_api::create(); + out->val = alni(in); + return out; +} + +void BoolObject::from_int(BoolObject* self, alni in) { self->val = in; } + +void BoolObject::from_float(BoolObject* self, alnf in) { self->val = alni(bool(in)); } + +void BoolObject::from_string(BoolObject* self, const std::string& in) { self->val = in == "true" || in == "True"; } + +std::string BoolObject::to_string(BoolObject* self) { return std::to_string(bool(self->val)); } + +alni BoolObject::to_int(BoolObject* self) { return self->val; } + +alnf BoolObject::to_float(BoolObject* self) { return alnf(bool(self->val)); } + +static alni save_size(BoolObject* self) { return sizeof(alni); } + +static void save(BoolObject* self, ArchiverOut& file_self) { file_self << self->val; } + +static void load(ArchiverIn& file_self, BoolObject* self) { file_self >> self->val; } + +struct ObjectTypeConversions BoolObjectTypeConversions = { + .from_int = (object_from_int) BoolObject::from_int, + .from_float = (object_from_float) BoolObject::from_float, + .from_string = (object_from_string) BoolObject::from_string, + .to_string = (object_to_string) BoolObject::to_string, + .to_int = (object_to_int) BoolObject::to_int, + .to_float = (object_to_float) BoolObject::to_float, +}; + +struct obj::ObjectType obj::BoolObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) BoolObject::constructor, + .destructor = nullptr, + .copy = (object_copy) BoolObject::copy, + .size = sizeof(BoolObject), + .name = "bool", + .conversions = &BoolObjectTypeConversions, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, +}; diff --git a/Objects/private/primitives/BytecodeObject.cpp b/Objects/private/primitives/BytecodeObject.cpp new file mode 100644 index 0000000..3816d1e --- /dev/null +++ b/Objects/private/primitives/BytecodeObject.cpp @@ -0,0 +1,74 @@ + +#include "primitives/BytecodeObject.hpp" + +using namespace tp; +using namespace obj; + +void BytecodeObject::constructor(BytecodeObject* self) { + new (&self->mBytecode) ByteCode(); + self->mReadable = objects_api::create(); +} + +void BytecodeObject::copy(BytecodeObject* self, BytecodeObject* in) { + // TODO : implement + ASSERT(!"can not copy bytecode object") +} + +void BytecodeObject::destructor(BytecodeObject* self) { + self->mBytecode.~ByteCode(); + objects_api::destroy(self->mReadable); +} + +tp::alni BytecodeObject::save_size(BytecodeObject* self) { + alni out = sizeof(alni); // string object + out += sizeof(alni); // constants size + out += self->mBytecode.mConstants.size() * sizeof(alni); // constant objects + out += SaveSizeCounter::calc(self->mBytecode.mInstructions); + return out; +} + +void BytecodeObject::save(BytecodeObject* self, ArchiverOut& file) { + file << (alni) objects_api::save(file, self->mReadable); + file << (alni) self->mBytecode.mConstants.size(); + + for (auto const_obj : self->mBytecode.mConstants) { + file << (alni) objects_api::save(file, const_obj.data()); + } + + // mInstructions + file << self->mBytecode.mInstructions; +} + +void BytecodeObject::load(ArchiverIn& file, obj::BytecodeObject* self) { + new (&self->mBytecode) ByteCode(); + + alni stringObjectAddress; + file >> stringObjectAddress; + self->mReadable = objects_api::cast(objects_api::load(file, stringObjectAddress)); + + alni consts_count; + file >> consts_count; + + self->mBytecode.mConstants.reserve(consts_count); + + for (auto const_obj : self->mBytecode.mConstants) { + alni consts_addr; + file >> consts_addr; + const_obj.data() = objects_api::load(file, consts_addr); + } + + file >> self->mBytecode.mInstructions; +} + +struct ObjectType BytecodeObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) BytecodeObject::constructor, + .destructor = (object_destructor) BytecodeObject::destructor, + .copy = (object_copy) BytecodeObject::copy, + .size = sizeof(BytecodeObject), + .name = "bytecode", + .conversions = nullptr, + .save_size = (object_save_size) BytecodeObject::save_size, + .save = (object_save) BytecodeObject::save, + .load = (object_load) BytecodeObject::load, +}; diff --git a/Objects/private/primitives/ClassObject.cpp b/Objects/private/primitives/ClassObject.cpp new file mode 100644 index 0000000..ccc1ca1 --- /dev/null +++ b/Objects/private/primitives/ClassObject.cpp @@ -0,0 +1,73 @@ + +#include "primitives/ClassObject.hpp" +#include "primitives/DictObject.hpp" +#include "primitives/NullObject.hpp" + +using namespace tp; +using namespace obj; + +void ClassObject::constructor(ClassObject* self) { + self->members = objects_api::create(); + + self->addMember(objects_api::getNull(), "__init__"); + self->addMember(objects_api::getNull(), "__del__"); +} + +void ClassObject::copy(ClassObject* self, const ClassObject* blueprint) { + objects_api::copy(self->members, blueprint->members); +} + +void ClassObject::destructor(ClassObject* self) { objects_api::destroy(self->members); } + +void ClassObject::addMember(Object* obj, const std::string& id) { members->put(id, obj); } + +void ClassObject::createMember(const std::string& type, const std::string& id) { + auto newo = tp::obj::objects_api::createByName(type.c_str()); + members->put(id, newo); +} + +alni ClassObject::save_size(ClassObject* self) { + return sizeof(alni); // dict object address +} + +void ClassObject::save(ClassObject* self, ArchiverOut& file_self) { + // save dict object + alni ndo_object_adress = objects_api::save(file_self, self->members); + file_self << ndo_object_adress; +} + +void ClassObject::load(ArchiverIn& file_self, ClassObject* self) { + alni ndo_object_address; + file_self >> ndo_object_address; + self->members = objects_api::cast(objects_api::load(file_self, ndo_object_address)); + tp::obj::objects_api::increaseReferenceCount(self->members); +} + +tp::Buffer childs_retrival(ClassObject* self) { + tp::Buffer out; + out.append(self->members); + return out; +} + +alni allocated_size(ClassObject* self) { return sizeof(DictObject*); } + +alni allocated_size_recursive(ClassObject* self) { + alni out = sizeof(DictObject*); + out += objects_api::objsize_ram_recursive_util(self->members, self->members->type); + return out; +} + +struct ObjectType ClassObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) ClassObject::constructor, + .destructor = (object_destructor) ClassObject::destructor, + .copy = (object_copy) ClassObject::copy, + .size = sizeof(ClassObject), + .name = "class", + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, + .childs_retrival = (object_debug_all_childs_retrival) childs_retrival, + .allocated_size = (object_allocated_size) allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive) allocated_size_recursive, +}; diff --git a/Objects/private/primitives/ColorObject.cpp b/Objects/private/primitives/ColorObject.cpp new file mode 100644 index 0000000..aa4bbc3 --- /dev/null +++ b/Objects/private/primitives/ColorObject.cpp @@ -0,0 +1,69 @@ + +#include "primitives/ColorObject.hpp" + +using namespace tp; +using namespace obj; + +void ColorObject::constructor(ColorObject* self) { self->mCol = tp::RGBA(1.f); } + +void ColorObject::copy(ColorObject* self, const ColorObject* in) { self->mCol = in->mCol; } + +ColorObject* ColorObject::create(tp::RGBA in) { + auto out = objects_api::create(); + out->mCol = in; + return out; +} + +void ColorObject::from_int(ColorObject* self, alni in) { + self->mCol = tp::RGBA((tp::halnf) tp::clamp(in, (tp::alni) 0, (tp::alni) 1)); +} + +void ColorObject::from_float(ColorObject* self, alnf in) { self->mCol = tp::RGBA(tp::clamp((tp::halnf) in, 0.f, 1.f)); } + +std::string ColorObject::to_string(ColorObject* self) { + // auto &col = NDO_CAST(ColorObject, self)->mCol; + // return tp::sfmt("%i:%i:%i:%i", (tp::alni) (col.r * 255), (tp::alni)(col.g * 255), (tp::alni)(col.b * 255), + // (tp::alni)(col.a * 255)); + // TODO : implement + return {}; +} + +static alni save_size(ColorObject* self) { return sizeof(tp::RGBA); } + +static void save(ColorObject* self, ArchiverOut& file_self) { file_self << self->mCol; } + +static void load(ArchiverIn& file_self, ColorObject* self) { file_self >> self->mCol; } + +struct ObjectTypeConversions ColorObjectTypeConversions = { + .from_int = (object_from_int) ColorObject::from_int, + .from_float = (object_from_float) ColorObject::from_float, + .from_string = nullptr, + .to_string = (object_to_string) ColorObject::to_string, + .to_int = nullptr, + .to_float = nullptr, +}; + +void sub(ColorObject* self, ColorObject* in) { self->mCol = in->mCol - self->mCol; } + +void add(ColorObject* self, ColorObject* in) { self->mCol = in->mCol + self->mCol; } + +struct ObjectTypeArithmetics ColorObject::TypeAriphm = { + .add = (object_add) add, + .sub = (object_sub) sub, + .mul = (object_mul) nullptr, + .div = (object_div) nullptr, +}; + +struct obj::ObjectType obj::ColorObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) ColorObject::constructor, + .destructor = nullptr, + .copy = (object_copy) ColorObject::copy, + .size = sizeof(ColorObject), + .name = "RGBA", + .conversions = &ColorObjectTypeConversions, + .arithmetics = &ColorObject::TypeAriphm, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, +}; diff --git a/Objects/private/primitives/DictObject.cpp b/Objects/private/primitives/DictObject.cpp new file mode 100644 index 0000000..f71f9f3 --- /dev/null +++ b/Objects/private/primitives/DictObject.cpp @@ -0,0 +1,213 @@ + +#include "primitives/DictObject.hpp" +#include "primitives/StringObject.hpp" + +using namespace tp; +using namespace obj; + +void DictObject::constructor(DictObject* self) { new (&self->items) Map(); } + +void DictObject::copy(DictObject* self, const DictObject* src) { + destructor(self); + constructor(self); + + for (auto item : src->items) { + auto instance = objects_api::instantiate(item->val); + self->items.put(item->key, instance); + } +} + +void DictObject::destructor(DictObject* self) { + for (auto item : self->items) { + objects_api::destroy(item->val); + } + self->items.~Map(); +} + +alni DictObject::save_size(DictObject* self) { + // calculate size needed + alni save_size = 0; + + // number on entries + save_size += sizeof(alni); + + for (auto item : self->items) { + // string length + save_size += save_string_size(item->key); + + // object file adress + save_size += sizeof(alni); + } + + return save_size; +} + +void DictObject::save(DictObject* self, ArchiverOut& file_self) { + + // write size + alni len = self->items.size(); + file_self << len; + + // save hashmap pairs + for (auto item : self->items) { + // item val + alni ndo_object_adress = objects_api::save(file_self, item->val); + file_self << ndo_object_adress; + + // item key + save_string(file_self, item->key); + } +} + +void DictObject::load(ArchiverIn& file_self, DictObject* self) { + new (&self->items) tp::Map(); + + alni len; + file_self >> len; + + for (alni i = 0; i < len; i++) { + + // read val + alni ndo_object_adress; + file_self >> ndo_object_adress; + Object* val = objects_api::load(file_self, ndo_object_adress); + + // read key value + std::string key; + load_string(file_self, key); + + // add to dictinary + self->put(key, val); + } +} + +tp::Buffer DictObject::childs_retrival(DictObject* self) { + tp::Buffer out; + out.reserve(self->items.size()); + ualni i = 0; + for (auto item : self->items) { + out[i] = item->val; + i++; + } + return out; +} + +alni DictObject::allocated_size(DictObject* self) { + ASSERT(false) + // alni out = self->items.sizeAllocatedMem(); + for (auto item : self->items) { + // out += item->key.sizeAllocatedMem(); + } + // return out; + return 0; +} + +alni DictObject::allocated_size_recursive(DictObject* self) { + alni out = allocated_size(self); + for (auto item : self->items) { + out += objects_api::objsize_ram_recursive_util(item->val, item->val->type); + } + return out; +} + +void DictObject::put(const std::string& str, Object* obj) { + DEBUG_ASSERT(obj); + objects_api::increaseReferenceCount(obj); + items.put(str, obj); +} + +void DictObject::remove(const std::string& str) { + auto idx = items.presents(str); + if (idx) { + objects_api::destroy(items.getSlotVal(idx)); + items.remove(str); + } +} + +Object* DictObject::get(const std::string& str) { return items.get(str); } + +tp::Map::Idx DictObject::presents(const std::string& str) { return items.presents(str); } + +Object* DictObject::getSlotVal(tp::Map::Idx idx) { return items.getSlotVal(idx); } + +const tp::Map& DictObject::getItems() const { return items; } + +static auto tm_get = TypeMethod{ + .nameid = "get", + .descr = "gets the object", + .args = { { "str key", nullptr } }, + .exec = + [](const TypeMethod* tm) { + auto const self = (DictObject*) tm->self; + auto str_key = tm->args[0].obj; + + auto key = objects_api::cast(str_key); + ASSERT(key); + + auto idx = self->presents(key->val); + if (idx) { + tm->ret.obj = self->getSlotVal(idx); + } + }, + .ret = { "object", nullptr }, +}; + +static auto tm_put = TypeMethod{ + .nameid = "put", + .descr = "puts the object into the dictinary", + .args = { { "key", nullptr }, { "object", nullptr } }, + .exec = + [](const TypeMethod* tm) { + auto const self = (DictObject*) tm->self; + + auto str_key = tm->args[0].obj; + auto obj = tm->args[1].obj; + + auto key = objects_api::cast(str_key); + ASSERT(key); + + self->put(key->val, obj); + }, +}; + +static auto tm_remove = TypeMethod{ + .nameid = "remove", + .descr = "remove the object from the dictinary", + .args = { + { "key", nullptr }, + }, + .exec = [](const TypeMethod* tm) { + auto const self = (DictObject*)tm->self; + + auto str_key = tm->args[0].obj; + + auto key = objects_api::cast(str_key); + ASSERT(key); + + self->remove(key->val); + }, +}; + +struct obj::ObjectType DictObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) DictObject::constructor, + .destructor = (object_destructor) DictObject::destructor, + .copy = (object_copy) DictObject::copy, + .size = sizeof(DictObject), + .name = "dict", + .save_size = (object_save_size) DictObject::save_size, + .save = (object_save) DictObject::save, + .load = (object_load) DictObject::load, + + .childs_retrival = (object_debug_all_childs_retrival) DictObject::childs_retrival, + .allocated_size = (object_allocated_size) DictObject::allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive) DictObject::allocated_size_recursive, + + .type_methods = { + .methods = { + &tm_put, + &tm_remove, + &tm_get, + }, + }, +}; diff --git a/Objects/private/primitives/EnumObject.cpp b/Objects/private/primitives/EnumObject.cpp new file mode 100644 index 0000000..a7921cd --- /dev/null +++ b/Objects/private/primitives/EnumObject.cpp @@ -0,0 +1,177 @@ + +#include "primitives/EnumObject.hpp" + +#include +#include + +using namespace tp; +using namespace obj; + +void EnumObject::constructor(EnumObject* self) { + self->active = 0; + self->nentries = 0; + self->entries = nullptr; +} + +void obj::EnumObject::destructor(EnumObject* self) { + if (self->entries) free(self->entries); +} + +void EnumObject::copy(EnumObject* self, const EnumObject* in) { + if (self->entries) free(self->entries); + self->active = in->active; + self->nentries = in->nentries; + + self->entries = (alni*) malloc(self->nentries * ENV_ALNI_SIZE_B); + tp::memCopy(self->entries, in->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +void obj::EnumObject::init(tp::InitialierList list) { + + if (entries) free(entries); + + active = 0; + nentries = (uhalni) list.size(); + entries = (alni*) malloc(nentries * ENV_ALNI_SIZE_B); + tp::memSetVal(entries, nentries * ENV_ALNI_SIZE_B, 0); + + alni* entry = entries; + for (auto elem : list) { + + alni len = std::strlen(elem); + if (len > ENV_ALNI_SIZE_B - 1) len = ENV_ALNI_SIZE_B - 1; + + tp::memCopy(entry, elem, len); + + for (alni* chech_entry = entries; chech_entry != entry; chech_entry++) { + DEBUG_ASSERT(tp::memCompare(chech_entry, entry, ENV_ALNI_SIZE_B) != 0); + } + + entry++; + } +} + +const char* obj::EnumObject::getActiveName() { return getItemName(active); } + +const char* obj::EnumObject::getItemName(tp::uhalni idx) { + DEBUG_ASSERT(entries && idx >= 0 && idx < nentries); + return (const char*) (entries + idx); +} + +void EnumObject::from_int(EnumObject* self, alni in) { + if (self->entries && in >= 0 && in < self->nentries) { + self->active = uhalni(in); + } +} + +void EnumObject::from_float(EnumObject* self, alnf in) { + if (self->entries && in >= 0 && in < self->nentries) { + self->active = uhalni(in); + } +} + +void EnumObject::from_string(EnumObject* self, const std::string& in) { + if (self->entries) { + alni* entry = self->entries; + for (uhalni i = 0; i < self->nentries; i++) { + if (in == ((const char*) entry)) { + self->active = i; + } + entry += 1; + } + } +} + +std::string EnumObject::to_string(EnumObject* self) { + if (!self->entries) { + return {}; + } + auto val = (const char*) (&self->entries[self->active]); + return val; +} + +alni EnumObject::to_int(EnumObject* self) { + if (!self->entries) { + return -1; + } + return alni(self->active); +} + +alnf EnumObject::to_float(EnumObject* self) { + if (!self->entries) { + return -1; + } + return alnf(self->active); +} + +static alni save_size(EnumObject* self) { + if (!self->entries) { + return sizeof(uhalni); + } + return sizeof(uhalni) + sizeof(uhalni) + sizeof(alni) * self->nentries; +} + +static void save(EnumObject* self, ArchiverOut& file_self) { + if (!self->entries) { + uhalni empty_code = -1; + file_self << empty_code; + return; + } + file_self << self->active; + file_self << self->nentries; + file_self.writeBytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +static void load(ArchiverIn& file_self, EnumObject* self) { + file_self >> self->active; + if (self->active == -1) { + self->nentries = 0; + self->entries = nullptr; + return; + } + file_self >> self->nentries; + self->entries = (alni*) malloc(self->nentries * ENV_ALNI_SIZE_B); + file_self.readBytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +bool obj::EnumObject::compare(EnumObject* first, EnumObject* second) { + return first->entries != nullptr && second->entries != nullptr && first->active == second->active; +} + +EnumObject* obj::EnumObject::create(tp::InitialierList list) { + auto enum_object = objects_api::create(); + enum_object->init(list); + return enum_object; +} + +alni allocated_size(EnumObject* self) { + alni out = sizeof(uhalni) * 2 + sizeof(tp::alni*); + if (self->entries) { + out += self->nentries * sizeof(alni) * 2; + } + return out; +} + +struct ObjectTypeConversions EnumObjectTypeConversions = { + .from_int = (object_from_int) EnumObject::from_int, + .from_float = (object_from_float) EnumObject::from_float, + .from_string = (object_from_string) EnumObject::from_string, + .to_string = (object_to_string) EnumObject::to_string, + .to_int = (object_to_int) EnumObject::to_int, + .to_float = (object_to_float) EnumObject::to_float, +}; + +struct obj::ObjectType obj::EnumObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) EnumObject::constructor, + .destructor = (object_destructor) EnumObject::destructor, + .copy = (object_copy) EnumObject::copy, + .size = sizeof(EnumObject), + .name = "enum", + .conversions = &EnumObjectTypeConversions, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, + .comparison = (object_compare) EnumObject::compare, + .allocated_size = (object_allocated_size) allocated_size, +}; diff --git a/Objects/private/primitives/FloatObject.cpp b/Objects/private/primitives/FloatObject.cpp new file mode 100644 index 0000000..2ac6f55 --- /dev/null +++ b/Objects/private/primitives/FloatObject.cpp @@ -0,0 +1,70 @@ +#include "primitives/FloatObject.hpp" + +using namespace tp; +using namespace obj; + +void FloatObject::constructor(FloatObject* self) { self->val = 0; } + +void FloatObject::copy(FloatObject* self, const FloatObject* in) { self->val = in->val; } + +FloatObject* FloatObject::create(alnf in) { + auto out = objects_api::create(); + out->val = alnf(in); + return out; +} + +void FloatObject::from_int(FloatObject* self, alni in) { self->val = alnf(in); } + +void FloatObject::from_float(FloatObject* self, alnf in) { self->val = in; } + +void FloatObject::from_string(FloatObject* self, const std::string& in) { self->val = std::stof(in); } + +std::string FloatObject::to_string(FloatObject* self) { return std::to_string(self->val); } + +alni FloatObject::to_int(FloatObject* self) { return alni(self->val); } + +alnf FloatObject::to_float(FloatObject* self) { return self->val; } + +static alni save_size(FloatObject* self) { return sizeof(alnf); } + +static void save(FloatObject* self, ArchiverOut& file_self) { file_self << self->val; } + +static void load(ArchiverIn& file_self, FloatObject* self) { file_self >> self->val; } + +struct ObjectTypeConversions FloatObjectTypeConversions = { + .from_int = (object_from_int) FloatObject::from_int, + .from_float = (object_from_float) FloatObject::from_float, + .from_string = (object_from_string) FloatObject::from_string, + .to_string = (object_to_string) FloatObject::to_string, + .to_int = (object_to_int) FloatObject::to_int, + .to_float = (object_to_float) FloatObject::to_float, +}; + +static void mul(FloatObject* self, FloatObject* in) { self->val *= in->val; } + +static void sub(FloatObject* self, FloatObject* in) { self->val -= in->val; } + +static void add(FloatObject* self, FloatObject* in) { self->val += in->val; } + +static void divide(FloatObject* self, FloatObject* in) { self->val /= in->val; } + +struct ObjectTypeArithmetics FloatObject::TypeAriphm = { + .add = (object_add) add, + .sub = (object_sub) sub, + .mul = (object_mul) mul, + .div = (object_div) divide, +}; + +struct obj::ObjectType obj::FloatObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) FloatObject::constructor, + .destructor = nullptr, + .copy = (object_copy) FloatObject::copy, + .size = sizeof(FloatObject), + .name = "float", + .conversions = &FloatObjectTypeConversions, + .arithmetics = &FloatObject::TypeAriphm, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, +}; diff --git a/Objects/private/primitives/IntObject.cpp b/Objects/private/primitives/IntObject.cpp new file mode 100644 index 0000000..2d94822 --- /dev/null +++ b/Objects/private/primitives/IntObject.cpp @@ -0,0 +1,71 @@ + +#include "primitives/IntObject.hpp" + +using namespace tp; +using namespace obj; + +void IntObject::constructor(IntObject* self) { self->val = 0; } + +void IntObject::copy(IntObject* self, const IntObject* in) { self->val = in->val; } + +IntObject* IntObject::create(alni in) { + auto out = objects_api::create(); + out->val = in; + return out; +} + +void IntObject::from_int(IntObject* self, alni in) { self->val = in; } + +void IntObject::from_float(IntObject* self, alnf in) { self->val = (alni) in; } + +void IntObject::from_string(IntObject* self, const std::string& in) { self->val = std::stol(in); } + +std::string IntObject::to_string(IntObject* self) { return std::to_string(self->val); } + +alni IntObject::to_int(IntObject* self) { return alni(self->val); } + +alnf IntObject::to_float(IntObject* self) { return alnf(self->val); } + +static alni save_size(IntObject* self) { return sizeof(alni); } + +static void save(IntObject* self, ArchiverOut& file_self) { file_self << self->val; } + +static void load(ArchiverIn& file_self, IntObject* self) { file_self >> self->val; } + +struct ObjectTypeConversions IntObjectTypeConversions = { + .from_int = (object_from_int) IntObject::from_int, + .from_float = (object_from_float) IntObject::from_float, + .from_string = (object_from_string) IntObject::from_string, + .to_string = (object_to_string) IntObject::to_string, + .to_int = (object_to_int) IntObject::to_int, + .to_float = (object_to_float) IntObject::to_float, +}; + +void divide(IntObject* self, IntObject* in) { self->val /= in->val; } + +void mul(IntObject* self, IntObject* in) { self->val *= in->val; } + +void sub(IntObject* self, IntObject* in) { self->val -= in->val; } + +void add(IntObject* self, IntObject* in) { self->val += in->val; } + +struct ObjectTypeArithmetics IntObject::TypeAriphm = { + .add = (object_add) add, + .sub = (object_sub) sub, + .mul = (object_mul) mul, + .div = (object_div) divide, +}; + +struct obj::ObjectType obj::IntObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) IntObject::constructor, + .destructor = nullptr, + .copy = (object_copy) IntObject::copy, + .size = sizeof(IntObject), + .name = "int", + .conversions = &IntObjectTypeConversions, + .arithmetics = &IntObject::TypeAriphm, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, +}; diff --git a/Objects/private/primitives/InterpreterObject.cpp b/Objects/private/primitives/InterpreterObject.cpp new file mode 100644 index 0000000..2e5dfb0 --- /dev/null +++ b/Objects/private/primitives/InterpreterObject.cpp @@ -0,0 +1,78 @@ + +#include "primitives/InterpreterObject.hpp" +#include "primitives/LinkObject.hpp" +#include "primitives/MethodObject.hpp" + +using namespace tp; +using namespace obj; + +void InterpreterObject::constructor(InterpreterObject* self) { + new (&self->mInterpreter) Interpreter(); + + self->createMember("dict", "globals"); + self->createMember("link", "target method"); +} + +void InterpreterObject::destructor(InterpreterObject* self) { self->mInterpreter.~Interpreter(); } + +void InterpreterObject::load(ArchiverIn& file_self, InterpreterObject* self) { + new (&self->mInterpreter) Interpreter(); +} + +bool InterpreterObject::running() { return !mInterpreter.finished(); } + +void InterpreterObject::exec(obj::ClassObject* self, tp::InitialierList globals) { + + if (running()) { + return; + } + + auto link_target = getMember("target method"); + if (!link_target) { + return; + } + + auto target = link_target->getLink(); + if (!target) { + return; + } + + auto method = objects_api::cast(target); + if (!method || !method->mBytecodeLink->mBytecode.mInstructions.size()) { + return; + } + + mInterpreter.execAll(method, self, getMember("globals"), globals); +} + +void InterpreterObject::debug() { + if (running()) { + return; + } + + auto link_target = getMember("target method"); + if (!link_target) { + return; + } + + auto target = link_target->getLink(); + if (!target) { + return; + } + + auto method = objects_api::cast(target); + if (!method || !method->mBytecodeLink->mBytecode.mInstructions.size()) { + return; + } + + mInterpreter.exec(method, this, getMember("globals")); +} + +struct obj::ObjectType InterpreterObject::TypeData = { + .base = &ClassObject::TypeData, + .constructor = (object_constructor) InterpreterObject::constructor, + .destructor = (object_destructor) InterpreterObject::destructor, + .size = sizeof(InterpreterObject), + .name = "interpreter", + .load = (object_load) InterpreterObject::load, +}; diff --git a/Objects/private/primitives/LinkObject.cpp b/Objects/private/primitives/LinkObject.cpp new file mode 100644 index 0000000..4dc8d44 --- /dev/null +++ b/Objects/private/primitives/LinkObject.cpp @@ -0,0 +1,120 @@ + +#include "primitives/LinkObject.hpp" + +using namespace tp; +using namespace obj; + +void LinkObject::constructor(LinkObject* self) { self->link = nullptr; } + +void LinkObject::destructor(LinkObject* self) { + if (self->link) objects_api::destroy(self->link); +} + +void LinkObject::copy(LinkObject* self, const LinkObject* in) { self->setLink(in->link); } + +LinkObject* LinkObject::create(Object* in) { + auto out = objects_api::create(); + return out; +} + +alni LinkObject::save_size(LinkObject* self) { return sizeof(alni); } + +void LinkObject::save(LinkObject* self, ArchiverOut& file_self) { + if (self->link != nullptr) { + alni link_object_save_adress = objects_api::save(file_self, self->link); + file_self << link_object_save_adress; + } else { + alni null = -1; + file_self << null; + } +} + +void LinkObject::load(ArchiverIn& file_self, LinkObject* self) { + + alni saved_object_adress; + file_self >> saved_object_adress; + + if (saved_object_adress == -1) { + self->link = nullptr; + } else { + self->link = objects_api::load(file_self, saved_object_adress); + objects_api::increaseReferenceCount(self->link); + } +} + +tp::Buffer LinkObject::childs_retrival(LinkObject* self) { + tp::Buffer out; + if (self->link) out.append(self->link); + return out; +} + +alni LinkObject::allocated_size(LinkObject* self) { return sizeof(Object*); } + +alni LinkObject::allocated_size_recursive(LinkObject* self) { + alni out = sizeof(Object*); + if (self->link) { + out += objects_api::objsize_ram_recursive_util(self->link, self->link->type); + } + return out; +} + +Object* LinkObject::getLink() { return link; } + +void LinkObject::setLink(Object* obj) { + if (link) objects_api::destroy(link); + if (obj) objects_api::increaseReferenceCount(obj); + link = obj; +} + +static auto tm_set = TypeMethod{ + .nameid = "set", + .descr = "sets the link", + .args = { { "target", nullptr } }, + .exec = + [](const TypeMethod* tm) { + auto const self = (LinkObject*) tm->self; + auto const target = tm->args[0].obj; + self->setLink(target); + }, +}; + +static auto tm_get = TypeMethod{ + .nameid = "get", + .descr = "gets the link", + .exec = + [](const TypeMethod* tm) { + auto const self = (LinkObject*) tm->self; + auto link = self->getLink(); + if (link) { + tm->ret.obj = link; + } + }, + .ret = { "the link", nullptr }, +}; + +struct obj::ObjectType LinkObject::TypeData = { + .base = nullptr, + + .constructor = (object_constructor) LinkObject::constructor, + .destructor = (object_destructor) LinkObject::destructor, + .copy = (object_copy) LinkObject::copy, + .size = sizeof(LinkObject), + .name = "link", + + .conversions = nullptr, + + .save_size = (object_save_size) LinkObject::save_size, + .save = (object_save) LinkObject::save, + .load = (object_load) LinkObject::load, + + .childs_retrival = (object_debug_all_childs_retrival) LinkObject::childs_retrival, + .allocated_size = (object_allocated_size) LinkObject::allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive) LinkObject::allocated_size_recursive, + + .type_methods = { + .methods = { + &tm_set, + &tm_get, + }, + }, +}; \ No newline at end of file diff --git a/Objects/private/primitives/ListObject.cpp b/Objects/private/primitives/ListObject.cpp new file mode 100644 index 0000000..69e5068 --- /dev/null +++ b/Objects/private/primitives/ListObject.cpp @@ -0,0 +1,119 @@ + +#include "primitives/IntObject.hpp" +#include "primitives/ListObject.hpp" + +using namespace tp; +using namespace obj; + +void ListObject::constructor(ListObject* self) { new (&self->items) List(); } + +void ListObject::copy(ListObject* in, const ListObject* target) { + destructor(in); + constructor(in); + + for (auto item : target->items) { + in->pushBack(objects_api::instantiate(item.data())); + } +} + +void ListObject::destructor(ListObject* in) { + for (auto item : in->items) { + objects_api::destroy(item.data()); + } + in->items.removeAll(); +} + +alni ListObject::save_size(ListObject* self) { + alni len = self->items.length(); + return (len + 1) * sizeof(alni); +} + +void ListObject::save(ListObject* self, ArchiverOut& file_self) { + alni len = self->items.length(); + file_self << len; + + for (auto item : self->items) { + alni ndo_object_adress = objects_api::save(file_self, item.data()); + file_self << ndo_object_adress; + } +} + +void ListObject::load(ArchiverIn& file_self, ListObject* self) { + new (&self->items) tp::List(); + + alni len; + file_self >> len; + + for (alni i = 0; i < len; i++) { + alni ndo_object_adress; + file_self >> ndo_object_adress; + self->pushBack(objects_api::load(file_self, ndo_object_adress)); + } +} + +tp::Buffer ListObject::childs_retrival(ListObject* self) { + tp::Buffer out; + out.reserve(self->items.length()); + ualni i = 0; + for (auto item : self->items) { + out[i] = item.data(); + i++; + } + return out; +} + +alni ListObject::allocated_size(ListObject* self) { + // return self->items.sizeAllocatedMem(); + return {}; +} + +alni ListObject::allocated_size_recursive(ListObject* self) { + ASSERT(false) + // alni out = self->items.sizeAllocatedMem(); + for (auto item : self->items) { + // out += objects_api::objsize_ram_recursive_util(item.data(), item->type); + } + // return out; + return 0; +} + +void ListObject::pushBack(Object* obj) { + obj::objects_api::increaseReferenceCount(obj); + items.pushBack(obj); +} + +void ListObject::pushFront(Object* obj) { + obj::objects_api::increaseReferenceCount(obj); + items.pushFront(obj); +} + +void ListObject::delNode(tp::List::Node* node) { + obj::objects_api::destroy(node->data); + items.deleteNode(node); +} + +void ListObject::popBack() { + auto obj = items.last(); + if (obj) obj::objects_api::destroy(obj->data); + items.popBack(); +} + +const tp::List& ListObject::getItems() const { return items; } + +struct obj::ObjectType obj::ListObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) ListObject::constructor, + .destructor = (object_destructor) ListObject::destructor, + .copy = (object_copy) ListObject::copy, + .size = sizeof(ListObject), + .name = "list", + .conversions = nullptr, + + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, + + .childs_retrival = (object_debug_all_childs_retrival) childs_retrival, + .allocated_size = (object_allocated_size) allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive) allocated_size_recursive, +}; diff --git a/Objects/private/primitives/MethodObject.cpp b/Objects/private/primitives/MethodObject.cpp new file mode 100644 index 0000000..3da2d6f --- /dev/null +++ b/Objects/private/primitives/MethodObject.cpp @@ -0,0 +1,66 @@ + +#include "primitives/MethodObject.hpp" +#include "compiler/Functions.hpp" + +using namespace tp; +using namespace obj; + +void MethodObject::constructor(MethodObject* self) { + // create empty bytecode + self->mBytecodeLink = objects_api::create(); +} + +void MethodObject::copy(MethodObject* self, MethodObject* in) { + objects_api::destroy(self->mBytecodeLink); + objects_api::increaseReferenceCount(in->mBytecodeLink); + self->mBytecodeLink = in->mBytecodeLink; +} + +void MethodObject::destructor(MethodObject* self) { + // deference + objects_api::destroy(self->mBytecodeLink); +} + +tp::alni MethodObject::save_size(MethodObject* self) { + // just reference to the bytecode + return sizeof(Object*); +} + +void MethodObject::save(MethodObject* self, ArchiverOut& file_self) { + // save bytecode + file_self << objects_api::save(file_self, self->mBytecodeLink); +} + +void MethodObject::load(ArchiverIn& file_self, obj::MethodObject* self) { + alni bytecodeAddress; + file_self >> bytecodeAddress; + auto bytecode = objects_api::load(file_self, bytecodeAddress); + self->mBytecodeLink = objects_api::cast(bytecode); +} + +void MethodObject::compile() { + // call to compiler + Compile(this); +} + +MethodObject* MethodObject::create(const std::string& script) { + auto out = objects_api::create(); + + ASSERT(false) + + out->compile(); + return out; +} + +struct ObjectType MethodObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) MethodObject::constructor, + .destructor = (object_destructor) MethodObject::destructor, + .copy = (object_copy) MethodObject::copy, + .size = sizeof(MethodObject), + .name = "method", + .conversions = nullptr, + .save_size = (object_save_size) MethodObject::save_size, + .save = (object_save) MethodObject::save, + .load = (object_load) MethodObject::load, +}; diff --git a/Objects/private/primitives/NullObject.cpp b/Objects/private/primitives/NullObject.cpp new file mode 100644 index 0000000..75a4294 --- /dev/null +++ b/Objects/private/primitives/NullObject.cpp @@ -0,0 +1,31 @@ + + +#include "primitives/NullObject.hpp" + +using namespace tp; +using namespace obj; + +std::string to_string(NullObject* self) { return "nullptr"; } + +alni to_int(NullObject* self) { return 0; } + +alnf to_float(NullObject* self) { return 0; } + +struct ObjectTypeConversions NullObjectTypeConversions = { + .from_int = nullptr, + .from_float = nullptr, + .from_string = nullptr, + .to_string = (object_to_string) to_string, + .to_int = (object_to_int) to_int, + .to_float = (object_to_float) to_float, +}; + +struct ObjectType NullObject::TypeData = { + .base = nullptr, + .constructor = nullptr, + .destructor = nullptr, + .copy = nullptr, + .size = sizeof(NullObject), + .name = "null", + .conversions = &NullObjectTypeConversions, +}; diff --git a/Objects/private/primitives/Stringobject.cpp b/Objects/private/primitives/Stringobject.cpp new file mode 100644 index 0000000..f080727 --- /dev/null +++ b/Objects/private/primitives/Stringobject.cpp @@ -0,0 +1,76 @@ + + +#include "primitives/StringObject.hpp" + +using namespace tp; +using namespace obj; + +void StringObject::constructor(StringObject* self) { new (&self->val) std::string(); } + +void StringObject::destructor(StringObject* self) { self->val.~basic_string(); } + +void StringObject::copy(StringObject* self, const StringObject* in) { self->val = in->val; } + +StringObject* StringObject::create(const std::string& in) { + auto out = objects_api::create(); + out->val = in; + return out; +} + +void StringObject::from_int(StringObject* self, alni in) { + // self->val = in; +} + +void StringObject::from_float(StringObject* self, alnf in) { + // self->val = in; +} + +void StringObject::from_string(StringObject* self, const std::string& in) { + // self->val = in; +} + +std::string StringObject::to_string(StringObject* self) { return self->val; } + +alni StringObject::to_int(StringObject* self) { return std::stoi(self->val); } + +alnf StringObject::to_float(StringObject* self) { return std::stof(self->val); } + +static alni save_size(StringObject* self) { return save_string_size(self->val); } + +static void save(StringObject* self, ArchiverOut& file_self) { save_string(file_self, self->val); } + +static void load(ArchiverIn& file_self, StringObject* self) { + new (&self->val) std::string(); + load_string(file_self, self->val); +} + +alni allocated_size(StringObject* self) { + // return self->val.sizeAllocatedMem(); + return 0; +} + +static bool compare_strings(StringObject* left, StringObject* right) { return left->val == right->val; } + +struct ObjectTypeConversions StringObjectTypeConversions = { + .from_int = (object_from_int) StringObject::from_int, + .from_float = (object_from_float) StringObject::from_float, + .from_string = (object_from_string) StringObject::from_string, + .to_string = (object_to_string) StringObject::to_string, + .to_int = (object_to_int) StringObject::to_int, + .to_float = (object_to_float) StringObject::to_float, +}; + +struct obj::ObjectType StringObject::TypeData = { + .base = nullptr, + .constructor = (object_constructor) StringObject::constructor, + .destructor = (object_destructor) StringObject::destructor, + .copy = (object_copy) StringObject::copy, + .size = sizeof(StringObject), + .name = "str", + .conversions = &StringObjectTypeConversions, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, + .comparison = (object_compare) compare_strings, + .allocated_size = (object_allocated_size) allocated_size, +}; diff --git a/Objects/private/primitives/TypeObject.cpp b/Objects/private/primitives/TypeObject.cpp new file mode 100644 index 0000000..ffe4098 --- /dev/null +++ b/Objects/private/primitives/TypeObject.cpp @@ -0,0 +1,59 @@ + +#include "primitives/TypeObject.hpp" +#include "primitives/NullObject.hpp" + +using namespace tp; +using namespace obj; + +TypeObject* TypeObject::create(const ObjectType* type) { + auto out = objects_api::create(); + out->mTypeRef = type; + return out; +} + +static alni save_size(TypeObject* self) { return save_string_size(self->mTypeRef->name); } + +static void save(TypeObject* self, ArchiverOut& file_self) { save_string(file_self, self->mTypeRef->name); } + +static void load(ArchiverIn& file_self, TypeObject* self) { + std::string name; + load_string(file_self, name); + + if (objects_api::isType(name.c_str())) { + self->mTypeRef = objects_api::getType(name.c_str()); + } else { + self->mTypeRef = &NullObject::TypeData; + } +} + +static alni allocated_size(TypeObject* self) { return sizeof(alni); } + +static void from_string(TypeObject* self, const std::string& in) { + if (objects_api::isType(in.c_str())) { + self->mTypeRef = objects_api::getType(in.c_str()); + } else { + self->mTypeRef = &NullObject::TypeData; + } +} + +static std::string to_string(TypeObject* self) { return self->mTypeRef->name; } + +bool comparator(TypeObject* left, TypeObject* right) { return left->mTypeRef == right->mTypeRef; } + +static struct ObjectTypeConversions conversions = { + .from_string = (object_from_string) from_string, + .to_string = (object_to_string) to_string, +}; + +struct obj::ObjectType TypeObject::TypeData = { + .base = nullptr, + //.constructor = (object_constructor) TypeObject::constructor, + .size = sizeof(TypeObject), + .name = "typeobject", + .conversions = &conversions, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, + .comparison = (object_compare) comparator, + .allocated_size = (object_allocated_size) allocated_size, +}; diff --git a/Objects/public/compiler/Constants.hpp b/Objects/public/compiler/Constants.hpp new file mode 100644 index 0000000..4f1cda4 --- /dev/null +++ b/Objects/public/compiler/Constants.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include "core/Object.hpp" +#include "interpreter/ByteCode.hpp" + +namespace tp::obj { + + class ConstObject { + public: + Object* mObj = nullptr; + alni mConstIdx = 0; + + ConstObject(); + ConstObject(Object* mObj); + }; + + + class ConstObjectsPool { + public: + Map mMethods; + Map mStrings; + Map mIntegers; + Map mFloats; + ConstObject mBoolTrue; + ConstObject mBoolFalse; + + bool mDelete = true; + alni mTotalObjects = 0; + + ConstObject* get(alni val); + ConstObject* get(const std::string& val); + ConstObject* get(alnf val); + ConstObject* get(bool val); + + ConstObject* addMethod(const std::string& method_id, Object* method); + ConstObject* registerObject(Object* obj); + void save(Buffer& out); + + ConstObjectsPool() = default; + ~ConstObjectsPool(); + }; +} \ No newline at end of file diff --git a/Objects/public/compiler/Expressions.hpp b/Objects/public/compiler/Expressions.hpp new file mode 100644 index 0000000..903ddc6 --- /dev/null +++ b/Objects/public/compiler/Expressions.hpp @@ -0,0 +1,123 @@ +#pragma once + +#include "Buffer.hpp" +#include "interpreter/OperatoinCodes.hpp" +#include + +namespace tp::obj { + + struct Expression { + enum class Type { + NONE, + NEW, + LOCAL, + CONST_EXPR, + CHILD, + CALL, + ARITHMETICS, + FUNC, + BOOLEAN, + SELF, + LIST, + } mType = Type::NONE; + + bool mValueUsed = false; + + explicit Expression(Type type); + virtual ~Expression() = default; + + struct ExpressionChild* ExprChild(const std::string& id); + struct ExpressionCall* ExprCall(class ExpressionList* args); + }; + + struct ExpressionList : public Expression { + Buffer mItems; + ExpressionList(); + ~ExpressionList() override; + }; + + struct ExpressionNew : public Expression { + std::string mNewType; + explicit ExpressionNew(std::string type); + ~ExpressionNew() override; + }; + + struct ExpressionLocal : public Expression { + std::string mLocalId; + explicit ExpressionLocal(std::string id); + ~ExpressionLocal() override; + }; + + struct ExpressionFunc : public Expression { + std::string mFuncId; + explicit ExpressionFunc(std::string id); + ~ExpressionFunc() override; + }; + + struct ExpressionChild : public Expression { + Expression* mParent = nullptr; + std::string mLocalId; + bool mMethod = false; + ExpressionChild(Expression* mParent, std::string id); + ~ExpressionChild() override; + }; + + struct ExpressionCall : public Expression { + Expression* mParent = nullptr; + ExpressionList* mArgs = nullptr; + ExpressionCall(Expression* mParent, ExpressionList* args); + ~ExpressionCall() override; + }; + + struct ExpressionArithmetics : public Expression { + Expression* mLeft = nullptr; + Expression* mRight = nullptr; + OpCode mOpType = OpCode::NONE; + ExpressionArithmetics(Expression* left, Expression* right, OpCode type); + ~ExpressionArithmetics() override; + }; + + struct ExpressionBoolean : public Expression { + Expression* mLeft = nullptr; + Expression* mRight = nullptr; + + enum class BoolType : uint1 { + AND = 24U, + OR, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + EQUAL_OR_MORE, + EQUAL_OR_LESS, + NOT, + } mBoolType; + + ExpressionBoolean(Expression* left, Expression* right, BoolType type); + explicit ExpressionBoolean(Expression* invert); + ~ExpressionBoolean() override; + }; + + struct ExpressionConst : public Expression { + enum ConstType { STR, INT, BOOL, FLT } mConstType; + std::string str; + alni integer = 0; + alnf floating = 0; + bool boolean = false; + + explicit ExpressionConst(std::string val); + explicit ExpressionConst(const char* val); + explicit ExpressionConst(alni val); + explicit ExpressionConst(int4 val); + explicit ExpressionConst(flt4 val); + explicit ExpressionConst(alnf val); + explicit ExpressionConst(bool val); + + ~ExpressionConst() override; + }; + + struct ExpressionSelf : public Expression { + ExpressionSelf(); + ~ExpressionSelf() override = default; + }; +} \ No newline at end of file diff --git a/Objects/public/compiler/Functions.hpp b/Objects/public/compiler/Functions.hpp new file mode 100644 index 0000000..46b54dd --- /dev/null +++ b/Objects/public/compiler/Functions.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include "List.hpp" +#include "Map.hpp" + +#include "Instructions.hpp" +#include "Statements.hpp" +#include "Constants.hpp" + +#include + +namespace tp::obj { + struct MethodObject; + + struct FunctionDefinition { + + FunctionDefinition* mPrnt = nullptr; + + // signature + std::string mFunctionId; + List mArgsOrder; + + ConstObjectsPool mConstants; + Map mLocals; + List mInstructions; + + FunctionDefinition(const std::string& function_id, const Buffer& args, FunctionDefinition* prnt); + FunctionDefinition() {} + + void generateByteCode(ByteCode& out); + + List::Node* inst(Instruction inst); + + void EvalExpr(Expression* expr); + void EvalStatement(Statement* expr); + + ConstObject* defineLocal(const std::string& id); + }; + + void initialize(); + void finalize(); + void Generate(ByteCode& out, StatementScope* body); + bool Compile(MethodObject* obj); +} \ No newline at end of file diff --git a/Objects/public/compiler/Instructions.hpp b/Objects/public/compiler/Instructions.hpp new file mode 100644 index 0000000..c97d1b7 --- /dev/null +++ b/Objects/public/compiler/Instructions.hpp @@ -0,0 +1,48 @@ + +#pragma once + +#include "interpreter/OperatoinCodes.hpp" +#include "core/Object.hpp" +#include "List.hpp" + +namespace tp::obj { + class ConstObject; + + class Instruction { + public: + + OpCode mOp = OpCode::NONE; + + enum class ArgType : ualni { + NO_ARG, + PARAM, + CONST_ARG, + } mArgType = ArgType::NO_ARG; + + enum class InstType : ualni { + NONE, + JUMP, + JUMP_IF, + JUMP_IF_NOT, + EXEC, + PURE_CONST, + } mInstType = InstType::NONE; + + alni mParam = 0; + alni mParamBytes = 1; + + ConstObject* mConstData = nullptr; + ConstObject* mConstData2 = nullptr; + + alni mInstIdx = 0; + Instruction* mInstTarget = nullptr; + + Instruction(); + Instruction(ConstObject* constData); + Instruction(OpCode op); + Instruction(OpCode op, ConstObject* constData); + Instruction(OpCode op, ConstObject* constData, ConstObject* constData2); + Instruction(OpCode op, alni param, alni nBytes); + Instruction(Instruction* inst, InstType jump_type); + }; +} diff --git a/Objects/public/compiler/Statements.hpp b/Objects/public/compiler/Statements.hpp new file mode 100644 index 0000000..312d23e --- /dev/null +++ b/Objects/public/compiler/Statements.hpp @@ -0,0 +1,111 @@ + +#pragma once + +#include "Expressions.hpp" + +namespace tp::obj { + struct Statement { + + enum class Type { + NONE, + SCOPE, + DEF_FUNC, + DEF_LOCAL, + RET, + PRINT, + COPY, + IF, + WHILE, + IGNORE, + CALL, + CLASS_DEF, + } mType = Type::NONE; + + bool mValueUsed = false; + + explicit Statement(Type type); + virtual ~Statement() = default; + }; + + struct StatementScope : public Statement { + Buffer mStatements; + bool mPushToScopeStack = false; + + StatementScope(InitialierList statements, bool aPushToScopeStack); + ~StatementScope() override; + }; + + struct StatementFuncDef : public Statement { + Buffer mArgs; + std::string mFunctionId; + StatementScope* mStatements = nullptr; + + explicit StatementFuncDef(const std::string& function_id); + ~StatementFuncDef() override; + }; + + struct StatementLocalDef : public Statement { + std::string mLocalId; + Expression* mNewExpr = nullptr; + ExpressionConst* mConstExpr = nullptr; + bool mIsConstExpr = false; + + StatementLocalDef(std::string id, Expression* value); + ~StatementLocalDef() override; + }; + + struct StatementCopy : public Statement { + Expression* mLeft = nullptr; + Expression* mRight = nullptr; + + StatementCopy(Expression* left, Expression* right); + ~StatementCopy() override; + }; + + struct StatementReturn : public Statement { + Expression* mRet = nullptr; + + explicit StatementReturn(Expression* ret); + StatementReturn(); + ~StatementReturn() override; + }; + + struct StatementPrint : public Statement { + Expression* mTarget = nullptr; + + explicit StatementPrint(Expression* mTarget); + ~StatementPrint() override; + }; + + struct StatementIgnore : public Statement { + Expression* mExpr = nullptr; + + explicit StatementIgnore(Expression* expr); + ~StatementIgnore() override; + }; + + struct StatementIf : public Statement { + Expression* mCondition = nullptr; + StatementScope* mOnTrue = nullptr; + StatementScope* mOnFalse = nullptr; + + StatementIf(Expression* condition, StatementScope* on_true, StatementScope* on_false); + ~StatementIf() override; + }; + + struct StatementWhile : public Statement { + Expression* mCondition = nullptr; + StatementScope* mScope = nullptr; + + StatementWhile(Expression* condition, StatementScope* scope); + ~StatementWhile() override; + }; + + struct StatementClassDef : public Statement { + std::string mClassId; + StatementScope* mScope = nullptr; + + StatementClassDef(const std::string& class_id, StatementScope* scope); + ~StatementClassDef() override; + }; +} \ No newline at end of file diff --git a/Objects/public/core/Object.hpp b/Objects/public/core/Object.hpp new file mode 100644 index 0000000..dbac8cd --- /dev/null +++ b/Objects/public/core/Object.hpp @@ -0,0 +1,113 @@ + +#pragma once + +#include "ObjectType.hpp" + +namespace tp::obj { + + // TODO : reconsider static variables + extern ModuleManifest gModuleObjects; + extern struct ObjectsContext* gObjectsContext; + + // Base object + struct Object { + // TODO : used for saving, can be removed + Object* up; + Object* down; + alni flags; + + // reference counting for memory management + alni references; + + // type information + const ObjectType* type; + + // additional inherited data + }; + + struct ObjectsContext { + ObjectsContext(); + ~ObjectsContext(); + + Map types; + TypeGroups type_groups; + Interpreter* interp = nullptr; + + struct NullObject* nullObject = nullptr; + + struct BoolObject* boolTrueObject = nullptr; + struct BoolObject* boolFalseObject = nullptr; + }; + + struct objects_api { + static void initialize(); + static void finalize(); + + static void define(ObjectType* type); + static Object* copy(Object* self, const Object* in); + static bool compare(Object* first, Object* second); + static Object* instantiate(Object*); + static void set(Object* self, alni val); + static void set(Object* self, alnf val); + static void set(Object* self, const std::string& val); + + static alni toInt(Object* self); + static alnf toFloat(Object* self); + static bool toBool(Object* self); + static std::string toString(Object* self); + + static void clear_object_flags(); + + static void destroy(Object* in); + + static inline void increaseReferenceCount(Object* in) { in->references++; } + static inline alni getReferenceCount(Object* in) { return in->references; } + + static inline void setReferenceCount(Object* in, halni count) { in->references = count; } + + static alni objsize_file(Object* self); + static alni objsize_file_recursive(Object* self); + + static alni objsize_ram(Object* self); + static alni objsize_ram_recursive_util(Object* self, const ObjectType* type, bool different_object = true); + static alni objsize_ram_recursive(Object* self); + + static bool save(Object*, const std::string& path, bool compressed = true); + static Object* load(const std::string& path); + static alni save(ArchiverOut&, Object*); + static Object* load(ArchiverIn&, alni file_adress); + + template + static Type* cast(const Object* in) { + const ObjectType* typeIter = in->type; + while (typeIter) { + if (typeIter == &Type::TypeData) { + return (Type*) in; + } + typeIter = typeIter->base; + } + return nullptr; + } + + static Object* create(const ObjectType* type); + + template + static tObjectType* create() { + return (tObjectType*) create(&tObjectType::TypeData); + } + + static Object* createByName(const char* name) { return create(gObjectsContext->types.get(name)); } + + static void logTypeData(const ObjectType* type); + static void assertNoLeaks(); + static ualni getObjCount(); + + static void addTypeToGroup(ObjectType* type, InitialierList path, alni cur_arg = 0); + + static bool isType(const char* name); + static const ObjectType* getType(const char* name); + + static NullObject* getNull(); + static NullObject* getNullReferenced(); + }; +} \ No newline at end of file diff --git a/Objects/public/core/ObjectArchiver.hpp b/Objects/public/core/ObjectArchiver.hpp new file mode 100644 index 0000000..97795cb --- /dev/null +++ b/Objects/public/core/ObjectArchiver.hpp @@ -0,0 +1,57 @@ +#pragma once + +#include "ObjectArchiver.hpp" +#include "LocalConnection.hpp" +#include "SizeCounter.hpp" + +namespace tp::obj { + template + class Archiver : public ArchiverTemplate { + LocalConnection mConnection; + ualni mAddress = 0; + ualni mFirstNotWritten = 0; + + public: + Archiver() = default; + explicit Archiver(const char* location) { + mConnection.connect(LocalConnection::Location(location), LocalConnection::Type(tRead)); + }; + + void writeBytes(const int1* val, ualni size) override { + mConnection.setPointer(mAddress); + mConnection.writeBytes(val, size); + incrementAddresses(size); + } + + void readBytes(int1* val, ualni size) override { + mConnection.setPointer(mAddress); + mConnection.readBytes(val, size); + incrementAddresses(size); + } + + ualni getAddress() { return mAddress; } + + void setAddress(ualni addr) { mAddress = addr; } + + ualni getFreeAddress() { return mFirstNotWritten; } + + void setFreeAddress(ualni addr) { mFirstNotWritten = addr; } + + bool isOpened() { return mConnection.getConnectionStatus().isOpened(); } + + ualni getSize() { return mConnection.size(); } + + private: + void incrementAddresses(ualni size) { + // if (mAddress + size > mFirstNotWritten) mFirstNotWritten = mAddress + size; + mAddress += size; + } + }; + + using ArchiverIn = Archiver; + using ArchiverOut = Archiver; + + void save_string(ArchiverOut& file, const std::string& string); + ualni save_string_size(const std::string& string); + void load_string(ArchiverIn& file, std::string& out); +} \ No newline at end of file diff --git a/Objects/public/core/ObjectType.hpp b/Objects/public/core/ObjectType.hpp new file mode 100644 index 0000000..22f5464 --- /dev/null +++ b/Objects/public/core/ObjectType.hpp @@ -0,0 +1,72 @@ +#pragma once + +#include "ObjectArchiver.hpp" +#include "TypeMethods.hpp" +#include "TypeGroups.hpp" + +namespace tp::obj { + struct Object; + + typedef void (*object_from_int)(Object* self, alni in); + typedef void (*object_from_float)(Object* self, alnf in); + typedef void (*object_from_string)(Object* self, const std::string& in); + typedef std::string (*object_to_string)(Object* self); + typedef alni (*object_to_int)(Object* self); + typedef alnf (*object_to_float)(Object* self); + + struct ObjectTypeConversions { + object_from_int from_int; + object_from_float from_float; + object_from_string from_string; + object_to_string to_string; + object_to_int to_int; + object_to_float to_float; + }; + + typedef void (*object_add)(Object* self, Object* operand); + typedef void (*object_sub)(Object* self, Object* operand); + typedef void (*object_mul)(Object* self, Object* operand); + typedef void (*object_div)(Object* self, Object* operand); + + struct ObjectTypeArithmetics { + object_add add; + object_sub sub; + object_mul mul; + object_div div; + }; + + typedef void (*object_constructor)(Object* self); + typedef void (*object_destructor)(Object* self); + typedef void (*object_copy)(Object* self, const Object* target); + + typedef alni (*object_save_size)(Object* self); + typedef void (*object_save)(Object*, ArchiverOut&); + typedef void (*object_load)(ArchiverIn&, Object*); + + typedef bool (*object_compare)(Object*, Object*); + + typedef Buffer (*object_debug_all_childs_retrival)(Object*); + typedef alni (*object_allocated_size)(Object*); // default value = type->size - sizeof(ObjectType*) + typedef alni (*object_allocated_size_recursive)(Object*); // default value = object_allocated_size + + struct ObjectType { + const ObjectType* base = nullptr; + object_constructor constructor = nullptr; + object_destructor destructor = nullptr; + object_copy copy = nullptr; + alni size = 0; + const char* name = nullptr; + const ObjectTypeConversions* conversions = nullptr; + const ObjectTypeArithmetics* arithmetics = nullptr; + object_save_size save_size = nullptr; + object_save save = nullptr; + object_load load = nullptr; + object_compare comparison = nullptr; + void* vtable = nullptr; + const char* description = nullptr; + object_debug_all_childs_retrival childs_retrival = nullptr; + object_allocated_size allocated_size = nullptr; + object_allocated_size_recursive allocated_size_recursive = nullptr; + TypeMethods type_methods; + }; +} \ No newline at end of file diff --git a/Objects/public/core/TypeGroups.hpp b/Objects/public/core/TypeGroups.hpp new file mode 100644 index 0000000..288c2b3 --- /dev/null +++ b/Objects/public/core/TypeGroups.hpp @@ -0,0 +1,38 @@ + +#pragma once + +#include "Map.hpp" +#include + +namespace tp::obj { + + struct ObjectType; + struct objects_api; + + class TypeGroups { + + public: + typedef Map Dict; + + TypeGroups(); + + friend struct objects_api; + + explicit TypeGroups(bool is_group); + + void addType(ObjectType* type, InitialierList path, alni cur_arg); + + void setType(ObjectType* type); + bool isGroup(); + Dict* getChilds(); + const obj::ObjectType* getType(); + ~TypeGroups(); + + private: + bool is_group; + union { + Dict childs; + const obj::ObjectType* type; + }; + }; +} \ No newline at end of file diff --git a/Objects/public/core/TypeMethods.hpp b/Objects/public/core/TypeMethods.hpp new file mode 100644 index 0000000..fff4a18 --- /dev/null +++ b/Objects/public/core/TypeMethods.hpp @@ -0,0 +1,62 @@ + +#pragma once + +#include "Buffer.hpp" +#include + +namespace tp::obj { + + struct Interpreter; + struct Object; + struct ObjectType; + + struct TypeMethod { + enum { MAX_ARGS = 8 }; + struct Arg { + const char* descr = nullptr; + mutable Object* obj = nullptr; + }; + + const char* nameid = nullptr; + const char* descr = nullptr; + + mutable Object* self = nullptr; + Arg args[MAX_ARGS]; + + int1 mNargs = 0; + + void (*exec)(const TypeMethod* tm) = nullptr; + + mutable Arg ret; + + void operator()(Interpreter* interp) const; + + void init(); + }; + + extern TypeMethod gDefaultTypeMethods[3]; + + struct TypeMethods { + enum : int2 { MAX_TYPE_METHODS = 128 }; + + TypeMethod* methods[MAX_TYPE_METHODS]; + halni mNMethods = 0; + + struct LookupKey { + int2 key = -1; + int2 type_depth = -1; + operator bool() { return key != -1; } + }; + + static LookupKey presents(const ObjectType*, const std::string&); + static const TypeMethod* getMethod(const ObjectType*, LookupKey); + + void init(); + + halni nMethods() const; + + private: + int2 presents(const std::string&) const; + const TypeMethod* getMethod(int2) const; + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/ByteCode.hpp b/Objects/public/interpreter/ByteCode.hpp new file mode 100644 index 0000000..8d71faf --- /dev/null +++ b/Objects/public/interpreter/ByteCode.hpp @@ -0,0 +1,34 @@ + +#pragma once + +#include "OperatoinCodes.hpp" + +#include "primitives/IntObject.hpp" +#include "primitives/StringObject.hpp" + +#include "Buffer.hpp" +#include + +namespace tp::obj { + + typedef Object* ConstData; + + struct ByteCode { + Buffer mConstants; + Buffer mInstructions; + ualni mInstructionIdx = 0; + ualni mArgumentsLoaded = 0; + + void updateRefCount() { + for (auto const_obj : mConstants) { + objects_api::setReferenceCount(const_obj.data(), 1); + } + } + + ~ByteCode() { + for (auto const_obj : mConstants) { + objects_api::destroy(const_obj.data()); + } + } + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/CallStack.hpp b/Objects/public/interpreter/CallStack.hpp new file mode 100644 index 0000000..88f7281 --- /dev/null +++ b/Objects/public/interpreter/CallStack.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include "core/Object.hpp" +#include "primitives/ClassObject.hpp" + +#include "Map.hpp" + +namespace tp::obj { + struct MethodObject; + + struct ByteCode; + + struct CallStack { + + struct CallFrame { + enum { CALL_DEPTH = 1024 }; + Object* mSelf = nullptr; + MethodObject* mMethod = nullptr; + ualni mIp = 0; + }; + + void enter(const CallFrame& frame); + void leave(); + ByteCode* getBytecode(); + [[nodiscard]] halni len() const; + + ConstSizeBuffer mStack; + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/Interpreter.hpp b/Objects/public/interpreter/Interpreter.hpp new file mode 100644 index 0000000..ff0c0bb --- /dev/null +++ b/Objects/public/interpreter/Interpreter.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include "OperandsStack.hpp" +#include "ScopeStack.hpp" +#include "CallStack.hpp" + +namespace tp::obj { + struct Interpreter { + OperandStack mOperandsStack; + ScopeStack mScopeStack; + CallStack mCallStack; + + Object* mLastParent = nullptr; + bool mIsTypeMethod = false; + const TypeMethod* mTypeMethod = nullptr; + + typedef struct { + Object* obj; + std::string id; + } GlobalDef; + + void exec( + MethodObject* method, + ClassObject* self = nullptr, + DictObject* globals = nullptr, + InitialierList globals2 = {} + ); + + void stepBytecode(); + void stepBytecodeIn(); + void stepBytecodeOut(); + + bool finished() const; + + void execAll( + MethodObject* method, + ClassObject* self = nullptr, + DictObject* globals = nullptr, + InitialierList globals2 = {} + ); + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/OperandsStack.hpp b/Objects/public/interpreter/OperandsStack.hpp new file mode 100644 index 0000000..0fbb664 --- /dev/null +++ b/Objects/public/interpreter/OperandsStack.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include "ByteCode.hpp" +#include "core/Object.hpp" + +namespace tp::obj { + + // can be other aligned value as well + typedef Object* Operand; + + class OperandStack { + + enum : alni { MAX_STACK_SIZE = 512 }; + + public: + Operand* mBuff; + ualni mIdx; + + OperandStack(); + void push(Operand operand); + void pop(); + + Operand getOperand(); + + template + ObjectType* getOperand() { + auto operand = getOperand(); + auto ret = objects_api::cast(operand); + ASSERT(ret && "Operand Has Invalid Object Type"); + return ret; + } + + ~OperandStack(); + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/OperatoinCodes.hpp b/Objects/public/interpreter/OperatoinCodes.hpp new file mode 100644 index 0000000..054c243 --- /dev/null +++ b/Objects/public/interpreter/OperatoinCodes.hpp @@ -0,0 +1,158 @@ + +#pragma once + +#include "Common.hpp" + +// No Nested Scopes + +// Opcodes: +// Opcode input can be: +// 0) No Input +// 1) operands from OperandsStack (Operand) +// 2) Index of bytecode->ConstData from bytecode->Instruction (ConstData) +// 3) Raw Bytes from bytecode->Instruction (Param) + +namespace tp::obj { + + extern struct OpcodeInfos gOpcodeInfos; + + enum class OpCode : uint1 { + + NONE = 0x00, + HALT, + TERMINATE, + + DEF_LOCAL, + // Operand : String : local_id + // Operand : Any : object to be local + + LOAD_CONST, + LOAD_LOCAL, + // ConstData : idx of const object + + IGNORE, + + SCOPE_IN, + SCOPE_OUT, + + CALL, + RETURN_OBJ, + // Operand : Base : returned object + + RETURN, + + CHILD, + // Operand : String : child_id + // Operand : Base : parent + // Param : 1 bytes : is method? + + PUSH_ARGS, + SAVE_ARGS, + // Param : nubber of args + + OBJ_CREATE_LOCAL, + // Operand : String : type + // Operand : String : id + + OBJ_CREATE, + // Operand : String : type + + OBJ_COPY, + // Operand : Base: target + // Operand : Base: blueprint + + OBJ_SAVE, + OBJ_LOAD, + // Operand : String : path + // Operand : Base : target + + OBJ_ADD, + OBJ_SUB, + OBJ_MUL, + OBJ_DIV, + + AND, + OR, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + EQUAL_OR_MORE, + EQUAL_OR_LESS, + // Operand : Base: left + // Operand : Base: right + + NOT, + // Operand : Base: inv + + JUMP, + JUMP_R, + // Param : 2 bytes : offset + + JUMP_IF, + JUMP_IF_R, + JUMP_IF_NOT, + JUMP_IF_NOT_R, + // Operand : Base: condition + // Param : 2 bytes : offset + + + PRINT, + // Operand : Base: target + + CLASS_CONSTRUCT, + SELF, + + // ... + + END_OPCODES + }; + + struct OpcodeInfos { + + struct OperandsInfo { + struct Operand { + const char* obj_type = nullptr; + const char* desc = nullptr; + }; + + enum { MAX_OPERANDS = 5 }; + Operand buff[MAX_OPERANDS]; + halni len = 0; + + OperandsInfo(); + OperandsInfo(InitialierList list); + }; + + struct ParamsInfo { + struct Param { + const char* desc = nullptr; + halni bytes = 1; + }; + + enum { MAX_PARAMS = 5 }; + Param buff[MAX_PARAMS]; + halni len = 0; + + ParamsInfo(); + ParamsInfo(InitialierList list); + }; + + struct OpInfo { + const char* name = nullptr; + const char* desc = nullptr; + OperandsInfo operands; + ParamsInfo params; + + uint1 opsize(); + }; + + OpcodeInfos(); + OpInfo fetch(OpCode code); + + private: + OpInfo buff[(alni)OpCode::END_OPCODES]; + + void add(OpCode code, const OpInfo& info); + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/ScopeStack.hpp b/Objects/public/interpreter/ScopeStack.hpp new file mode 100644 index 0000000..167ae17 --- /dev/null +++ b/Objects/public/interpreter/ScopeStack.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include "core/Object.hpp" +#include "Map.hpp" +#include "List.hpp" + +namespace tp::obj { + + struct Scope { + typedef Map ObjDict; + typedef List ObjList; + + ObjDict mLocals; + ObjList mTemps; + bool mChildReachable = true; + + ~Scope(); + }; + + class ScopeStack { + + enum : alni { MAX_STACK_SIZE = 1024 * 4 }; + + public: + Scope* mBuff; + ualni mIdx; + ualni mIterIdx; + + ScopeStack(); + void enterScope(bool aChildReachable); + void leaveScope(); + void addLocal(Object* local, const std::string& id); + void addTemp(Object* tmp); + void popTemp(); + void addTempReturn(Object* ret); + Object* getLocal(const std::string& str); + Scope* getCurrentScope(); + ~ScopeStack(); + + private: + Object* getLocalUtil(Scope& scope, const std::string& id); + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/Script.hpp b/Objects/public/interpreter/Script.hpp new file mode 100644 index 0000000..02a8f2d --- /dev/null +++ b/Objects/public/interpreter/Script.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include "interpreter/ByteCode.hpp" + +namespace tp::obj { + struct Script { + StringObject* mReadable; + ByteCode mBytecode; + + void compile(); + }; +} \ No newline at end of file diff --git a/Objects/public/parser/Parser.hpp b/Objects/public/parser/Parser.hpp new file mode 100644 index 0000000..d5b0218 --- /dev/null +++ b/Objects/public/parser/Parser.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "compiler/Statements.hpp" +#include "compiler/Expressions.hpp" + +namespace tp::obj { + + class Parser { + public: + Parser() = default; + + struct Result { + StatementScope* scope = nullptr; + bool isError = false; + std::string description; + halni line = 0; + halni column = 0; + }; + + Result parse(const std::string& stream); + }; +} diff --git a/Objects/public/primitives/BoolObject.hpp b/Objects/public/primitives/BoolObject.hpp new file mode 100644 index 0000000..a805dc8 --- /dev/null +++ b/Objects/public/primitives/BoolObject.hpp @@ -0,0 +1,24 @@ + +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + + struct BoolObject : Object { + alni val; + + static ObjectType TypeData; + static void constructor(BoolObject* self); + static void copy(BoolObject* self, const BoolObject* in); + + static BoolObject* create(bool in); + + static void from_int(BoolObject* self, alni in); + static void from_float(BoolObject* self, alnf in); + static void from_string(BoolObject* self, const std::string& in); + static std::string to_string(BoolObject* self); + static alni to_int(BoolObject* self); + static alnf to_float(BoolObject* self); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/BytecodeObject.hpp b/Objects/public/primitives/BytecodeObject.hpp new file mode 100644 index 0000000..635dbcb --- /dev/null +++ b/Objects/public/primitives/BytecodeObject.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include "primitives/StringObject.hpp" +#include "interpreter/ByteCode.hpp" + +namespace tp::obj { + + struct BytecodeObject : Object { + + static ObjectType TypeData; + + StringObject* mReadable; + ByteCode mBytecode; + + static void constructor(BytecodeObject* self); + static void copy(BytecodeObject* self, BytecodeObject* in); + static void destructor(BytecodeObject* self); + + static alni save_size(BytecodeObject* self); + static void save(BytecodeObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, BytecodeObject* self); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/ClassObject.hpp b/Objects/public/primitives/ClassObject.hpp new file mode 100644 index 0000000..2d6148b --- /dev/null +++ b/Objects/public/primitives/ClassObject.hpp @@ -0,0 +1,46 @@ +#pragma once + +#include "primitives/DictObject.hpp" + +namespace tp::obj { + + struct ClassObject : Object { + + static ObjectType TypeData; + static void copy(ClassObject* self, const ClassObject* in); + static void destructor(ClassObject* self); + static void constructor(ClassObject* self); + static alni save_size(ClassObject* self); + static void save(ClassObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, ClassObject* self); + + DictObject* members; + + void addMember(Object* obj, const std::string& id); + void createMember(const std::string& type, const std::string& id); + + template + Type* createMember(const std::string& id) { + auto out = objects_api::create(Type::TypeData.name); + addMember(out, id); + objects_api::destroy(out); + return (Type*) out; + } + + template + Type* getMember(const std::string& id) { + auto idx = members->presents(id); + if (bool(idx)) { + return objects_api::cast(members->getSlotVal(idx)); + } + return NULL; + } + + template + Type* getMemberAssert(const std::string& id) { + auto out = getMember(id); + ASSERT(out && "invalid member access") + return out; + } + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/ColorObject.hpp b/Objects/public/primitives/ColorObject.hpp new file mode 100644 index 0000000..8391031 --- /dev/null +++ b/Objects/public/primitives/ColorObject.hpp @@ -0,0 +1,24 @@ + +#pragma once + +#include "core/Object.hpp" +#include "Color.hpp" + +namespace tp::obj { + + struct ColorObject : Object { + RGBA mCol; + + static ObjectType TypeData; + static ObjectTypeArithmetics TypeAriphm; + + static void constructor(ColorObject* self); + static void copy(ColorObject* self, const ColorObject* in); + + static void from_int(ColorObject* self, alni in); + static void from_float(ColorObject* self, alnf in); + static std::string to_string(ColorObject* self); + + static ColorObject* create(RGBA in); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/DictObject.hpp b/Objects/public/primitives/DictObject.hpp new file mode 100644 index 0000000..fbdf547 --- /dev/null +++ b/Objects/public/primitives/DictObject.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + + struct DictObject : Object { + static ObjectType TypeData; + static void copy(DictObject* self, const DictObject* in); + static void destructor(DictObject* self); + static void constructor(DictObject* self); + + static alni save_size(DictObject* self); + static void save(DictObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, DictObject* self); + static Buffer childs_retrival(DictObject* self); + static alni allocated_size(DictObject* self); + static alni allocated_size_recursive(DictObject* self); + + void put(const std::string&, Object*); + void remove(const std::string&); + Object* get(const std::string&); + Map::Idx presents(const std::string&); + Object* getSlotVal(Map::Idx); + + [[nodiscard]] const Map& getItems() const; + + private: + Map items; + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/EnumObject.hpp b/Objects/public/primitives/EnumObject.hpp new file mode 100644 index 0000000..0e49f0a --- /dev/null +++ b/Objects/public/primitives/EnumObject.hpp @@ -0,0 +1,34 @@ + +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + + struct EnumObject : Object { + + // one entry is 2 * sizeof(alni) in size + uhalni active; + uhalni nentries; + alni* entries; + + static ObjectType TypeData; + static void constructor(EnumObject* self); + static void destructor(EnumObject* self); + static void copy(EnumObject* self, const EnumObject* in); + + void init(InitialierList list); + const char* getActiveName(); + const char* getItemName(uhalni idx); + + static void from_int(EnumObject* self, alni in); + static void from_float(EnumObject* self, alnf in); + static void from_string(EnumObject* self, const std::string& in); + static std::string to_string(EnumObject* self); + static alni to_int(EnumObject* self); + static alnf to_float(EnumObject* self); + + static bool compare(EnumObject* first, EnumObject* second); + static EnumObject* create(InitialierList list); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/FloatObject.hpp b/Objects/public/primitives/FloatObject.hpp new file mode 100644 index 0000000..a9fc5b3 --- /dev/null +++ b/Objects/public/primitives/FloatObject.hpp @@ -0,0 +1,25 @@ + +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + + struct FloatObject : Object { + alnf val; + + static ObjectType TypeData; + static ObjectTypeArithmetics TypeAriphm; + + static void constructor(FloatObject* self); + static void copy(FloatObject* self, const FloatObject* in); + static FloatObject* create(alnf in); + + static void from_int(FloatObject* self, alni in); + static void from_float(FloatObject* self, alnf in); + static void from_string(FloatObject* self, const std::string& in); + static std::string to_string(FloatObject* self); + static alni to_int(FloatObject* self); + static alnf to_float(FloatObject* self); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/IntObject.hpp b/Objects/public/primitives/IntObject.hpp new file mode 100644 index 0000000..119ea91 --- /dev/null +++ b/Objects/public/primitives/IntObject.hpp @@ -0,0 +1,25 @@ + +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + + struct IntObject : Object { + alni val; + + static ObjectType TypeData; + static ObjectTypeArithmetics TypeAriphm; + + static void constructor(IntObject* self); + static void copy(IntObject* self, const IntObject* in); + static IntObject* create(alni in); + + static void from_int(IntObject* self, alni in); + static void from_float(IntObject* self, alnf in); + static void from_string(IntObject* self, const std::string& in); + static std::string to_string(IntObject* self); + static alni to_int(IntObject* self); + static alnf to_float(IntObject* self); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/InterpreterObject.hpp b/Objects/public/primitives/InterpreterObject.hpp new file mode 100644 index 0000000..ff13963 --- /dev/null +++ b/Objects/public/primitives/InterpreterObject.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "interpreter/Interpreter.hpp" +#include "primitives/ClassObject.hpp" + +namespace tp::obj { + struct InterpreterObject : ClassObject { + static ObjectType TypeData; + Interpreter mInterpreter; + + static void destructor(InterpreterObject* self); + static void constructor(InterpreterObject* self); + static void load(ArchiverIn& file_self, InterpreterObject* self); + + void exec(obj::ClassObject* self = nullptr, InitialierList globals = {}); + void debug(); + bool running(); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/LinkObject.hpp b/Objects/public/primitives/LinkObject.hpp new file mode 100644 index 0000000..2e0665b --- /dev/null +++ b/Objects/public/primitives/LinkObject.hpp @@ -0,0 +1,29 @@ + +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + + struct LinkObject : Object { + static ObjectType TypeData; + + static void constructor(LinkObject* self); + static void destructor(LinkObject* self); + static void copy(LinkObject* self, const LinkObject* in); + static LinkObject* create(Object* in); + + static alni save_size(LinkObject* self); + static void save(LinkObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, LinkObject* self); + static alni allocated_size(LinkObject* self); + static alni allocated_size_recursive(LinkObject* self); + static Buffer childs_retrival(LinkObject* self); + + Object* getLink(); + void setLink(Object* obj); + + private: + Object* link; + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/ListObject.hpp b/Objects/public/primitives/ListObject.hpp new file mode 100644 index 0000000..3c49818 --- /dev/null +++ b/Objects/public/primitives/ListObject.hpp @@ -0,0 +1,37 @@ + +#pragma once + +#include "core/Object.hpp" +#include "List.hpp" + +namespace tp::obj { + + enum ListMethods { + LISTOBJECT_PUSH_BACK, + LISTOBJECT_GET_LENGTH, + }; + + struct ListObject : Object { + static ObjectType TypeData; + static void constructor(ListObject* self); + static void copy(ListObject* self, const ListObject* in); + static void destructor(ListObject* self); + + static alni allocated_size_recursive(ListObject* self); + static alni allocated_size(ListObject* self); + static Buffer childs_retrival(ListObject* self); + static void load(ArchiverIn& file_self, ListObject* self); + static void save(ListObject* self, ArchiverOut& file_self); + static alni save_size(ListObject* self); + + [[nodiscard]] const List& getItems() const; + + void pushBack(Object* obj); + void pushFront(Object* obj); + void popBack(); + void delNode(List::Node*); + + private: + List items; + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/MethodObject.hpp b/Objects/public/primitives/MethodObject.hpp new file mode 100644 index 0000000..3e7de23 --- /dev/null +++ b/Objects/public/primitives/MethodObject.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include "primitives/BytecodeObject.hpp" + +namespace tp::obj { + + struct MethodObject : Object { + + static ObjectType TypeData; + + BytecodeObject* mBytecodeLink; + + static void constructor(MethodObject* self); + static void copy(MethodObject* self, MethodObject* in); + static void destructor(MethodObject* self); + static alni save_size(MethodObject* self); + static void save(MethodObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, obj::MethodObject* self); + + void compile(); + + static MethodObject* create(const std::string& script); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/NullObject.hpp b/Objects/public/primitives/NullObject.hpp new file mode 100644 index 0000000..63d60fe --- /dev/null +++ b/Objects/public/primitives/NullObject.hpp @@ -0,0 +1,12 @@ + +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + + struct NullObject : Object { + static ObjectType TypeData; + }; + +} \ No newline at end of file diff --git a/Objects/public/primitives/PrimitiveObjects.hpp b/Objects/public/primitives/PrimitiveObjects.hpp new file mode 100644 index 0000000..2d9e2d0 --- /dev/null +++ b/Objects/public/primitives/PrimitiveObjects.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "primitives/BoolObject.hpp" +#include "primitives/ClassObject.hpp" +#include "primitives/ColorObject.hpp" +#include "primitives/DictObject.hpp" +#include "primitives/EnumObject.hpp" +#include "primitives/FloatObject.hpp" +#include "primitives/InterpreterObject.hpp" +#include "primitives/IntObject.hpp" +#include "primitives/LinkObject.hpp" +#include "primitives/ListObject.hpp" +#include "primitives/MethodObject.hpp" +#include "primitives/NullObject.hpp" +#include "primitives/StringObject.hpp" +#include "primitives/TypeObject.hpp" \ No newline at end of file diff --git a/Objects/public/primitives/StringObject.hpp b/Objects/public/primitives/StringObject.hpp new file mode 100644 index 0000000..d395597 --- /dev/null +++ b/Objects/public/primitives/StringObject.hpp @@ -0,0 +1,25 @@ + +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + + struct StringObject : Object { + std::string val; + + static ObjectType TypeData; + static void constructor(StringObject* self); + static void destructor(StringObject* self); + static void copy(StringObject* self, const StringObject* in); + + static StringObject* create(const std::string& in); + + static void from_int(StringObject* self, alni in); + static void from_float(StringObject* self, alnf in); + static void from_string(StringObject* self, const std::string& in); + static std::string to_string(StringObject* self); + static alni to_int(StringObject* self); + static alnf to_float(StringObject* self); + }; +} \ No newline at end of file diff --git a/Objects/public/primitives/TypeObject.hpp b/Objects/public/primitives/TypeObject.hpp new file mode 100644 index 0000000..df572a2 --- /dev/null +++ b/Objects/public/primitives/TypeObject.hpp @@ -0,0 +1,12 @@ + +#pragma once + +#include "core/Object.hpp" + +namespace tp::obj { + struct TypeObject : Object { + static ObjectType TypeData; + const ObjectType* mTypeRef; + static TypeObject* create(const ObjectType* type); + }; +} \ No newline at end of file diff --git a/Objects/rsc/Font.ttf b/Objects/rsc/Font.ttf new file mode 100644 index 0000000..8a63054 Binary files /dev/null and b/Objects/rsc/Font.ttf differ diff --git a/Objects/rsc/script.osc b/Objects/rsc/script.osc new file mode 100644 index 0000000..da04039 --- /dev/null +++ b/Objects/rsc/script.osc @@ -0,0 +1,15 @@ + +class A { + var string = "hello"; + def log(name) { + << self.string; + << name; + } +} + +def main() { + var a = new A(); + a.log("user"); +} + +main(); \ No newline at end of file diff --git a/Objects/tests/ObjectTests.hpp b/Objects/tests/ObjectTests.hpp new file mode 100644 index 0000000..d8b96cc --- /dev/null +++ b/Objects/tests/ObjectTests.hpp @@ -0,0 +1,9 @@ + +#include "Module.hpp" + +#include +#include + +extern tp::ModuleManifest objTestModule; + +#define TEST_OFF(name) static void name() \ No newline at end of file diff --git a/Objects/tests/TestCompiler.cpp b/Objects/tests/TestCompiler.cpp new file mode 100644 index 0000000..323642d --- /dev/null +++ b/Objects/tests/TestCompiler.cpp @@ -0,0 +1,58 @@ + +#include "ObjectTests.hpp" + +#include "compiler/Functions.hpp" +#include "interpreter/Interpreter.hpp" +#include "primitives/MethodObject.hpp" + +using namespace tp; +using namespace obj; + +SUITE(Compiler) { + TEST(Basic) { + objTestModule.initialize(); + + { + // no errors + auto method = objects_api::create(); + + method->mBytecodeLink->mReadable->val = "print 1 * 20 + 10;"; + method->compile(); + + objects_api::destroy(method); + + objects_api::assertNoLeaks(); + } + + { + // with errors + auto method = objects_api::create(); + + method->mBytecodeLink->mReadable->val = "print undefinedVariable;"; + method->compile(); + + objects_api::destroy(method); + + objects_api::assertNoLeaks(); + } + + objTestModule.deinitialize(); + } + + /* + TEST(ErrorHandling) { + objTestModule.initialize(); + + obj::Parser parser; + + String stream = "var i = true; print (i + 1) * 10; invalidCharacter "; + auto res = parser.parse(stream); + + CHECK(res.isError); + + delete res.scope; + + objTestModule.deinitialize(); + } + */ +} \ No newline at end of file diff --git a/Objects/tests/TestCore.cpp b/Objects/tests/TestCore.cpp new file mode 100644 index 0000000..4cacd29 --- /dev/null +++ b/Objects/tests/TestCore.cpp @@ -0,0 +1,35 @@ + +#include "ObjectTests.hpp" +#include "core/Object.hpp" +#include "primitives/IntObject.hpp" + +using namespace tp; +using namespace obj; + +SUITE(Core) { + TEST(BasicAPI) { + objTestModule.initialize(); + + { + auto integer = objects_api::create(); + + integer->val = 10; + + printf("%s\n", objects_api::toString(integer).c_str()); + + objects_api::save(integer, "tmp.o"); + auto savedInt = objects_api::load("tmp.o"); + + printf("%s\n", objects_api::toString(savedInt).c_str()); + + CHECK(objects_api::compare(integer, savedInt)); + CHECK(objects_api::cast(savedInt)); + CHECK(integer->val == objects_api::cast(savedInt)->val); + + objects_api::destroy(integer); + objects_api::destroy(savedInt); + } + + objTestModule.deinitialize(); + } +} \ No newline at end of file diff --git a/Objects/tests/TestInterpreter.cpp b/Objects/tests/TestInterpreter.cpp new file mode 100644 index 0000000..2b3ea6f --- /dev/null +++ b/Objects/tests/TestInterpreter.cpp @@ -0,0 +1,160 @@ + +#include "ObjectTests.hpp" + +#include "compiler/Functions.hpp" +#include "interpreter/Interpreter.hpp" +#include "primitives/InterpreterObject.hpp" +#include "primitives/LinkObject.hpp" +#include "primitives/MethodObject.hpp" + +using namespace tp; +using namespace obj; + +auto script1 = R"( +class a { + var string = "hello"; + method log(name) { + << self.string; + << name; + } +} + +method main() { + var a = new A(); + a.log(" user "); +} + +main(); + +var i = 10; + +if (i == 10) { + while (i > 0) { + << i; + i = i - 1; + } +} else { + << " no "; +} + +)"; + +auto script = R"( + print 101; +)"; + +SUITE(Interpreter) { + TEST(Entry) { + objTestModule.initialize(); + + { + auto method = objects_api::create(); + auto interpreter = objects_api::create(); + + interpreter->getMember("target method")->setLink(method); + + method->mBytecodeLink->mReadable->val = script; + method->compile(); + + interpreter->exec(); + + objects_api::destroy(interpreter); + + printf("\n"); + } + + objTestModule.deinitialize(); + } + + TEST(SimpleSave) { + objTestModule.initialize(); + + { + auto method = objects_api::create(); + auto interpreter = objects_api::create(); + + interpreter->getMember("target method")->setLink(method); + + method->mBytecodeLink->mReadable->val = script; + method->compile(); + + interpreter->exec(); + + objects_api::save(interpreter, "interp.o"); + + auto interpreterLoaded = objects_api::cast(objects_api::load("interp.o")); + + interpreterLoaded->exec(); + + objects_api::destroy(interpreterLoaded); + objects_api::destroy(interpreter); + + printf("\n"); + } + + objTestModule.deinitialize(); + } + + TEST_OFF(Simple) { + objTestModule.initialize(); + + { + auto compileStartCount = objects_api::getObjCount(); + + auto method = objects_api::create(); + auto interpreter = objects_api::create(); + + interpreter->getMember("target method")->setLink(method); + + auto exec = [&](const char* script) { + method->mBytecodeLink->mReadable->val = script; + method->compile(); + + auto startCount = objects_api::getObjCount(); + interpreter->exec(); + + if (objects_api::getObjCount() != startCount) { + CHECK(false && "Mem leaks in interpreter"); + } + + printf("\n"); + }; + + exec("10 + 15;"); + exec("print 10 + 15 * 10;"); + exec("print 10 + 15 * (10 + 10) + 5;"); + exec("print 10 + 15;"); + exec("print (10 + 15) * 20;"); + exec("var k : int;"); + exec("var k : int; print k;"); + + objects_api::destroy(interpreter); + + if (objects_api::getObjCount() != compileStartCount) { + CHECK(false && "Mem leaks in compiler and interpreter"); + } + } + + objTestModule.deinitialize(); + } + + TEST_OFF(Complex) { + objTestModule.initialize(); + + { + auto method = objects_api::create(); + auto interpreter = objects_api::create(); + + interpreter->getMember("target method")->setLink(method); + + method->mBytecodeLink->mReadable->val = script1; + method->compile(); + + interpreter->exec(); + + objects_api::destroy(interpreter); + } + + objTestModule.deinitialize(); + } +} diff --git a/Objects/tests/TestParser.cpp b/Objects/tests/TestParser.cpp new file mode 100644 index 0000000..701363a --- /dev/null +++ b/Objects/tests/TestParser.cpp @@ -0,0 +1,63 @@ + +#include "ObjectTests.hpp" +#include "parser/Parser.hpp" + +using namespace tp; +using namespace obj; + +SUITE(Parser) { + TEST(Basic) { + objTestModule.initialize(); + + { + Parser parser; + + std::string stream = ""; + auto res = parser.parse(stream); + + CHECK(!res.isError); + + delete res.scope; + } + + { + Parser parser; + + std::string stream = "var i = true;"; + auto res = parser.parse(stream); + + CHECK(!res.isError); + + delete res.scope; + } + + { + Parser parser; + + std::string stream = "var i = true; print (i + 1) * 10;"; + auto res = parser.parse(stream); + + CHECK(!res.isError); + + delete res.scope; + } + + objTestModule.deinitialize(); + } + + TEST(ErrorHandling) { + objTestModule.initialize(); + + { + Parser parser; + std::string stream = "var i = true; print (i + 1) * 10; invalidCharacter "; + auto res = parser.parse(stream); + + CHECK(res.isError); + + delete res.scope; + } + + objTestModule.deinitialize(); + } +} \ No newline at end of file diff --git a/Objects/tests/TestPrimitives.cpp b/Objects/tests/TestPrimitives.cpp new file mode 100644 index 0000000..afed2b1 --- /dev/null +++ b/Objects/tests/TestPrimitives.cpp @@ -0,0 +1,36 @@ + +#include "ObjectTests.hpp" + +#include "compiler/Functions.hpp" +#include "interpreter/Interpreter.hpp" +#include "primitives/MethodObject.hpp" + +using namespace tp; +using namespace obj; + +SUITE(PrimitiveObjects) { + TEST(Dict) { + objTestModule.initialize(); + + { + auto integer = objects_api::create(); + integer->val = 10; + + auto dict = objects_api::create(); + + dict->put("val", integer); + + objects_api::save(dict, "dict.o"); + + auto dictLoaded = objects_api::cast(objects_api::load("dict.o")); + + REQUIRE CHECK(dictLoaded->presents("val").isValid()); + CHECK(objects_api::cast(dictLoaded->get("val"))->val == 10); + + objects_api::destroy(dict); + objects_api::destroy(dictLoaded); + } + + objTestModule.deinitialize(); + } +} diff --git a/Objects/tests/main.cpp b/Objects/tests/main.cpp new file mode 100644 index 0000000..90a8dcd --- /dev/null +++ b/Objects/tests/main.cpp @@ -0,0 +1,11 @@ + +#include "ObjectTests.hpp" + +#include "primitives/PrimitiveObjects.hpp" + +tp::ModuleManifest* objDeps[] = { &tp::obj::gModuleObjects, nullptr }; +tp::ModuleManifest objTestModule("ObjectsTests", nullptr, nullptr, objDeps); + +#include + +int main(int /*argc*/, char** /*argv*/) { return UnitTest::RunAllTests(); } \ No newline at end of file diff --git a/README.MD b/README.MD index 3e37552..1957e1e 100644 --- a/README.MD +++ b/README.MD @@ -1 +1,29 @@ -Modules +# **Modules** + +This repository started as a place for learning C++. +Many modules were intentionally developed to gain a better understanding of a topic as opposed to using libraries. As time passes some modules gradually vanish due to my new experience and knowledge, and some grow. + +* **Containers** - a collection of implementations of well-known containers: Lists, Hash-Map, Trees, Interval Tree. +* **Math** - Features some aspects of linear algebra (Matrix operations, vectors). For example, used by the RayTracer and Sketch3D module. +* **RayTracer** - simple ray-tracer with object loader and lua configuration. +* **Objects** (Python inspired) - encapsulates different types into Python-like objects. The module has its scripting language "Oscript" with support for methods, classes, pure functions, loops, conditions, etc. It uses compilation to bytecode and LALR parser. All objects can be saved and loaded at any time, whether it's a list or a method with bytecode. Some parts of this module have bad implementations and unstable code. Also, the module suffers from a lack of good testing. +* **Sketch3D** - application with the ability to draw in 3D space. Features stroke processing and view-dependent shaders. Has lots of TODOs. +* **Data analysis** - simple fully connected neural network (FCNN). Contains example application that is recognizing hand written numbers. + +For more information on some modules see TODO and STATUS + +# **Building** +Check git actions if some libraries are missing.
+ +To build and debug on windows clone svn repository (https://svn.riouxsvn.com/moduleswindowsl) alongside this repo and check WINDOWS_LIBRARIES option in cmake + +# **Gallery** + +![RayTracer](.docs/Gallery/RayTracer.png) +Simple Ray-Tracer. + +![Oscript](.docs/Gallery/Oscript.gif) +Oscript. + +Sketch3d +Sketch3D. diff --git a/RasterRender/CMakeLists.txt b/RasterRender/CMakeLists.txt new file mode 100644 index 0000000..fd8c89c --- /dev/null +++ b/RasterRender/CMakeLists.txt @@ -0,0 +1,15 @@ +project(RasterRender) + +### ---------------------- Externals --------------------- ### +set(BINDINGS_INCLUDE ${GLEW_INCLUDE_DIR}) +set(BINDINGS_LIBS ${GLEW_LIB}) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ${BINDINGS_INCLUDE} ./ext/) +target_link_libraries(${PROJECT_NAME} PUBLIC Math Connection) +target_link_libraries(${PROJECT_NAME} PUBLIC ${BINDINGS_LIBS}) \ No newline at end of file diff --git a/RasterRender/private/FrameBuffer.cpp b/RasterRender/private/FrameBuffer.cpp new file mode 100644 index 0000000..a500e5e --- /dev/null +++ b/RasterRender/private/FrameBuffer.cpp @@ -0,0 +1,117 @@ + +#include "FrameBuffer.hpp" +#include "GraphicsApi.hpp" + +#include + +void glerr(GLenum type) { printf("GL ERROR\n"); } +#define AssertGL(x) \ + { \ + x; \ + GLenum __gle = glGetError(); \ + if (__gle != GL_NO_ERROR) glerr(__gle); \ + } + +using namespace tp; + +RenderBuffer::RenderBuffer(const Vec2F& size) : + mSize(size) { + + mDrawBuffers[0] = { GL_COLOR_ATTACHMENT0 }; + + // --------- texture --------- + AssertGL(glGenTextures(1, &mTextureId)); + AssertGL(glBindTexture(GL_TEXTURE_2D, mTextureId)); + // Give an empty image to OpenGL ( the last "0" ) + AssertGL(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei) size.x, (GLsizei) size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0) + ); + // Poor filtering. Needed + AssertGL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + AssertGL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); + + // --------- depth --------- + AssertGL(glGenRenderbuffers(1, &mDepthBufferID)); + AssertGL(glBindRenderbuffer(GL_RENDERBUFFER, mDepthBufferID)); + AssertGL(glRenderbufferStorage(GL_RENDERBUFFER, GLW_CONTEXT_DEPTH_COMPONENT, (GLsizei) size.x, (GLsizei) size.y)); + + // ------------ framebuffer ------------ + AssertGL(glGenFramebuffers(1, &mFrameBufferID)); + AssertGL(glBindFramebuffer(GL_FRAMEBUFFER, mFrameBufferID)); + AssertGL(glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepthBufferID)); + // Set "renderedTexture" as our colour attachement #0 + AssertGL(glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, mTextureId, 0)); + // Set the list of draw buffers. + AssertGL(glDrawBuffers(1, mDrawBuffers)); // "1" is the size of DrawBuffers + ASSERT(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + +RenderBuffer::RenderBuffer(const Vec2F& size, tp::uint1 samples) : + mSize(size) { + + mDrawBuffers[0] = { GL_COLOR_ATTACHMENT0 }; + + // ------- texture --------- + AssertGL(glGenTextures(1, &mTextureId)); + AssertGL(glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mTextureId)); +#ifdef ENV_OS_ANDROID + AssertGL( + glTexStorage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, samples, GL_RGBA, (GLsizei) size.x, (GLsizei) size.y, GL_TRUE) + ); +#else + AssertGL( + glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, samples, GL_RGBA, (GLsizei) size.x, (GLsizei) size.y, GL_TRUE) + ); +#endif + // !? + // AssertGL(glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + // AssertGL(glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); + + // ------- depth ------- + AssertGL(glGenRenderbuffers(1, &mDepthBufferID)); + AssertGL(glBindRenderbuffer(GL_RENDERBUFFER, mDepthBufferID)); + AssertGL(glRenderbufferStorageMultisample( + GL_RENDERBUFFER, samples, GLW_CONTEXT_DEPTH_COMPONENT, (GLsizei) size.x, (GLsizei) size.y + )); + + // ------- fbuff ------- + AssertGL(glGenFramebuffers(1, &mFrameBufferID)); + AssertGL(glBindFramebuffer(GL_FRAMEBUFFER, mFrameBufferID)); + AssertGL(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, mTextureId, 0)); + AssertGL(glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepthBufferID)); + AssertGL(glDrawBuffers(1, mDrawBuffers)); + ASSERT(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + +uint4 RenderBuffer::buffId() const { return mFrameBufferID; } + +void RenderBuffer::beginDraw() { + AssertGL(glBindFramebuffer(GL_FRAMEBUFFER, mFrameBufferID)); + setViewport({ 0.f, 0.f, mSize.x, mSize.y }); +} + +void RenderBuffer::setViewport(const RectF& viewport) { + AssertGL(glViewport((GLsizei) viewport.x, (GLsizei) viewport.y, (GLsizei) viewport.z, (GLsizei) viewport.w)); +} + +void RenderBuffer::clear() { + AssertGL(glClearColor(mClearCol.r, mClearCol.g, mClearCol.b, mClearCol.a)); + AssertGL(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); +} + +void RenderBuffer::endDraw() { + glBindFramebuffer(GL_FRAMEBUFFER, 0); + glClearColor(0, 0, 0, 0); + glUseProgram(0); +} + +RenderBuffer::~RenderBuffer() { + glDeleteFramebuffers(1, &mFrameBufferID); + glDeleteTextures(1, &mTextureId); + glDeleteRenderbuffers(1, &mDepthBufferID); +} + +uint4 RenderBuffer::texId() const { return mTextureId; } + +const Vec2F& RenderBuffer::getSize() const { return mSize; } diff --git a/RasterRender/private/Shader.cpp b/RasterRender/private/Shader.cpp new file mode 100644 index 0000000..0bb8af3 --- /dev/null +++ b/RasterRender/private/Shader.cpp @@ -0,0 +1,162 @@ + + +#include "Buffer.hpp" +#include "LocalConnection.hpp" +#include "Shader.hpp" +#include "GraphicsApi.hpp" + +#include + +using namespace tp; + +RenderShader::RenderShader() { + programm = 0; + VertexShaderID = 0; + FragmentShaderID = 0; + GeometryShaderID = 0; +} + +void RenderShader::vert_bind_source(const char* vert_src) { + VertexShaderID = glCreateShader(GL_VERTEX_SHADER); + compile_shader(vert_src, VertexShaderID); +} + +void RenderShader::frag_bind_source(const char* frag_src) { + FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); + compile_shader(frag_src, FragmentShaderID); +} + +void RenderShader::geom_bind_source(const char* geom_src) { + GeometryShaderID = glCreateShader(GL_GEOMETRY_SHADER); + compile_shader(geom_src, GeometryShaderID); +} + +void RenderShader::compile() { + GLint Result = GL_FALSE; + int InfoLogLength; + + programm = glCreateProgram(); + glAttachShader(programm, VertexShaderID); + if (GeometryShaderID) glAttachShader(programm, GeometryShaderID); + glAttachShader(programm, FragmentShaderID); + glLinkProgram(programm); + + // Check the program + glGetProgramiv(programm, GL_LINK_STATUS, &Result); + glGetProgramiv(programm, GL_INFO_LOG_LENGTH, &InfoLogLength); + + if (InfoLogLength > 0) { + Buffer ProgramErrorMessage(InfoLogLength + 1); + glGetProgramInfoLog(programm, InfoLogLength, NULL, &ProgramErrorMessage[0]); + printf("%s\n", &ProgramErrorMessage[0]); + } + + glDetachShader(programm, VertexShaderID); + glDetachShader(programm, FragmentShaderID); + if (GeometryShaderID) glDetachShader(programm, GeometryShaderID); + + glDeleteShader(VertexShaderID); + glDeleteShader(FragmentShaderID); + if (GeometryShaderID) glDeleteShader(GeometryShaderID); +} + +bool RenderShader::compile_shader(const char* ShaderCode, uint4 ShaderID) { + GLint Result = GL_FALSE; + int InfoLogLength; + + char const* SourcePointer = ShaderCode; + glShaderSource(ShaderID, 1, &SourcePointer, NULL); + glCompileShader(ShaderID); + + // Check Shader + glGetShaderiv(ShaderID, GL_COMPILE_STATUS, &Result); + glGetShaderiv(ShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); + + if (InfoLogLength > 0) { + Buffer VertexShaderErrorMessage(InfoLogLength + 1); + glGetShaderInfoLog(ShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); + printf("%s\n", &VertexShaderErrorMessage[0]); + } + + return Result; +} + + +void RenderShader::load(const char* pvert, const char* pgeom, const char* pfrag, bool paths) { + + // Create the shaders + VertexShaderID = glCreateShader(GL_VERTEX_SHADER); + FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); + if (pgeom) GeometryShaderID = glCreateShader(GL_GEOMETRY_SHADER); + else GeometryShaderID = 0; + + GLint Result = GL_FALSE; + int InfoLogLength = 0; + + if (paths) { + + std::string content; + + auto loadFile = [&](const char* path) { + LocalConnection file; + if (!file.connect(LocalConnection::Location(path), LocalConnection::Type(true))) { + content = ""; + return false; + } + + const auto size = file.size(); + auto tmp = new char[size + 1]; + tmp[size] = 0; + file.readBytes(tmp, size); + content = tmp; + delete[] tmp; + return true; + }; + + printf("Compiling shader : %s\n", pvert); + if (loadFile(pvert)) { + compile_shader(content.c_str(), VertexShaderID); + } + + if (GeometryShaderID) { + printf("Compiling shader : %s\n", pgeom); + if (loadFile(pgeom)) { + compile_shader(content.c_str(), GeometryShaderID); + } + } + + printf("Compiling shader : %s\n", pfrag); + if (loadFile(pfrag)) { + compile_shader(content.c_str(), FragmentShaderID); + } + } + else { + compile_shader(pvert, VertexShaderID); + if (GeometryShaderID) { + compile_shader(pgeom, GeometryShaderID); + } + compile_shader(pfrag, FragmentShaderID); + } + + compile(); +} + +RenderShader::RenderShader(const char* vert, const char* geom, const char* frag, bool paths) { + load(vert, geom, frag, paths); +} + +void RenderShader::bind() { + glUseProgram(programm); +} + +GLuint RenderShader::getu(const char* uid) { + return glGetUniformLocation(programm, uid); +} + +void RenderShader::unbind() { + glUseProgram(0); +} + +RenderShader::~RenderShader() { + glDeleteProgram(programm); +} \ No newline at end of file diff --git a/RasterRender/private/Texture.cpp b/RasterRender/private/Texture.cpp new file mode 100644 index 0000000..55fcbd7 --- /dev/null +++ b/RasterRender/private/Texture.cpp @@ -0,0 +1,205 @@ + +#include "Texture.hpp" + +#include "Map.hpp" + +#include "Shader.hpp" + +#include "GraphicsApi.hpp" + +const char* texture_vertex = +#ifdef ENV_OS_ANDROID +"#version 300 es\n" +"precision mediump float;\n" +#else +"#version 330 core\n" +#endif +"layout(location = 0) in vec3 vPos;\n" +"out vec2 UV;\n" +"void main() {\n" +" gl_Position = vec4(vPos, 1);\n" +" UV = (vPos.xy + vec2(1, 1)) / 2.0;\n" +"}\n"; + +const char* texture_fragment = +#ifdef ENV_OS_ANDROID +"#version 300 es\n" +"precision mediump float;\n" +#else +"#version 330 core\n" +#endif +"in vec2 UV;\n" +"out vec4 color;\n" +"uniform sampler2D renderedTexture;\n" +"uniform float time;\n" +"void main() {\n" +" vec4 texColor = texture(renderedTexture, UV);\n" +" if (texColor.a < 0.2)\n" +" discard;\n" +" color = texColor;\n" +"}\n"; + + +using namespace tp; + +GLuint RenderTexture::getid() { return id; } + +RenderTexture::RenderTexture() { + glGenTextures(1, &id); + glBindTexture(GL_TEXTURE_2D, id); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glBindTexture(GL_TEXTURE_2D, 0); +} + +RenderTexture::~RenderTexture() { glDeleteTextures(1, &id); } + + +void RenderTexture::update(const Buffer2D& buff) { + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)buff.size().x, (GLsizei)buff.size().y, 0, GL_RGBA, GL_FLOAT, buff.getBuff()); +} + +void RenderTexture::draw(const GLuint& out) { + draw_texture(out, id); +} + + +struct texture_drawer_data { + + Map textures; + + GLuint quad_VertexArrayID; + GLuint quad_vertexbuffer; + GLuint texID; + RenderShader shader; + + const GLfloat g_quad_vertex_buffer_data[18] = { + -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f, -1.0f, 1.0f, 0.0f, + -1.0f, 1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.0f, + }; + + texture_drawer_data() : shader(texture_vertex, nullptr, texture_fragment, false) { + // The fullscreen quad's FBO + glGenVertexArrays(1, &quad_VertexArrayID); + glBindVertexArray(quad_VertexArrayID); + + glGenBuffers(1, &quad_vertexbuffer); + glBindBuffer(GL_ARRAY_BUFFER, quad_vertexbuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(g_quad_vertex_buffer_data), + g_quad_vertex_buffer_data, GL_STATIC_DRAW); + + texID = shader.getu("renderedTexture"); + } + + ~texture_drawer_data() { + glDeleteBuffers(1, &quad_vertexbuffer); + glDeleteVertexArrays(1, &quad_VertexArrayID); + + for (auto tex : textures) { + glDeleteTextures(1, &tex->val); + } + } +}; + +texture_drawer_data* texdd = NULL; + +void RenderTexture::init() { + if (!texdd) texdd = new texture_drawer_data(); +} + +void RenderTexture::deinit() { + if (texdd) delete texdd; + texdd = NULL; +} + +void RenderTexture::draw_texture(uint4 out, uint4 in) { + ASSERT(in); + + // Render to the screen + glBindFramebuffer(GL_FRAMEBUFFER, out); + + // Use our shader + texdd->shader.bind(); + + // Bind our texture in Texture Unit 0 + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, in); + // Set our "renderedTexture" sampler to use Texture Unit 0 + glUniform1i(texdd->texID, 0); + + // glUniformMatrix4fv(texdd->rect_mat, 1, GL_FALSE, &tmat[0][0]); + + // 1rst attribute buffer : vertices + glEnableVertexAttribArray(0); + glBindBuffer(GL_ARRAY_BUFFER, texdd->quad_vertexbuffer); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); + + // Draw the triangles. 2*3 indices starting at 0 -> 2 triangles + glDrawArrays(GL_TRIANGLES, 0, 6); + + glDisableVertexAttribArray(0); + + texdd->shader.unbind(); +} + +GLuint load_texture(const std::string& name) { + GLuint tex_2d = 0; + + ASSERT(0 && "incomplete compilation - no SOIL support added"); + + if (0) { + //auto document = lunasvg::Document::loadFromFile("tiger.svg"); + //auto bitmap = document->renderToBitmap(); + } + else { + /* + tex_2d = SOIL_load_OGL_texture( + name.cstr(), SOIL_LOAD_RGBA, SOIL_CREATE_NEW_ID, + SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | + SOIL_FLAG_COMPRESS_TO_DXT); + + if (0 == tex_2d) { + printf("SOIL loading error: '%s'\n", SOIL_last_result()); + } + */ + } + + return tex_2d; +} + +GLuint RenderTexture::get_tex(const char* TexId) { + GLuint out = 0; + auto idx = texdd->textures.presents(TexId); + if (idx) { + out = texdd->textures.get(TexId); + } + else { + out = load_texture(TexId); + texdd->textures.put(TexId, out); + } + return out; +} + +void RenderTexture::drawCurcle(Vec2F pos, double radius, RGBA col) { +#ifndef ENV_OS_ANDROID + static alni precision = 40; + + glColor4f(col.r, col.g, col.b, col.a); + + double twicePi = 2.0 * 3.142; + + glBegin(GL_TRIANGLE_FAN); // BEGIN CIRCLE + glVertex2f(pos.x, pos.y); // center of circle + + for (alni i = 0; i <= precision; i++) { + glVertex2f((GLfloat)(pos.x + (radius * cos(i * twicePi / precision))), + (GLfloat)(pos.y + (radius * sin(i * twicePi / precision)))); + } + glEnd(); // END +#endif +} + + diff --git a/RasterRender/public/FrameBuffer.hpp b/RasterRender/public/FrameBuffer.hpp new file mode 100644 index 0000000..db8d130 --- /dev/null +++ b/RasterRender/public/FrameBuffer.hpp @@ -0,0 +1,34 @@ + +#pragma once + +#include "Rect.hpp" +#include "Color.hpp" + +namespace tp { + class RenderBuffer { + public: + RenderBuffer(const Vec2F& size); + RenderBuffer(const Vec2F& size, tp::uint1 samples); + ~RenderBuffer(); + + void beginDraw(); + void setViewport(const RectF& viewport); + void clear(); + void endDraw(); + + uint4 texId() const; + uint4 buffId() const; + + const Vec2F& getSize() const; + + public: + RGBA mClearCol = 0.f; + + private: + uint4 mFrameBufferID = 0; // regroups 0, 1, or more textures, and 0 or 1 depth buffer. + uint4 mTextureId = 0; // texture we're going to render to ( colour attachement #0 ) + uint4 mDepthBufferID = 0; + uint4 mDrawBuffers[1]; + Vec2F mSize; + }; +}; \ No newline at end of file diff --git a/RasterRender/public/GraphicsApi.hpp b/RasterRender/public/GraphicsApi.hpp new file mode 100644 index 0000000..79e2d39 --- /dev/null +++ b/RasterRender/public/GraphicsApi.hpp @@ -0,0 +1,19 @@ + +#pragma once + +#include "Environment.hpp" + +#ifdef ENV_OS_ANDROID +#include +#include +#else +#include "GL/glew.h" +#endif + +#ifdef ENV_OS_ANDROID +#define GLW_CONTEXT_DEPTH_BITS 16 +#define GLW_CONTEXT_DEPTH_COMPONENT GL_DEPTH_COMPONENT16 +#else +#define GLW_CONTEXT_DEPTH_BITS 32 +#define GLW_CONTEXT_DEPTH_COMPONENT GL_DEPTH_COMPONENT32 +#endif \ No newline at end of file diff --git a/RasterRender/public/Shader.hpp b/RasterRender/public/Shader.hpp new file mode 100644 index 0000000..253cdba --- /dev/null +++ b/RasterRender/public/Shader.hpp @@ -0,0 +1,32 @@ + +#pragma once + +namespace tp { + class RenderShader { + public: + RenderShader(); + RenderShader(const char* vertid, const char* geomid, const char* fragid, bool paths = true); + ~RenderShader(); + + void vert_bind_source(const char* vert_src); + void frag_bind_source(const char* frag_src); + void geom_bind_source(const char* geom_src); + + void compile(); + + void bind(); + uint4 getu(const char* uid); + void unbind(); + + void load(const char* vert, const char* geom, const char* frag, bool paths); + + private: + bool compile_shader(const char* ShaderCode, uint4 ShaderID); + + private: + uint4 programm; + uint4 VertexShaderID; + uint4 FragmentShaderID; + uint4 GeometryShaderID; + }; +}; \ No newline at end of file diff --git a/RasterRender/public/Texture.hpp b/RasterRender/public/Texture.hpp new file mode 100644 index 0000000..71ee943 --- /dev/null +++ b/RasterRender/public/Texture.hpp @@ -0,0 +1,29 @@ + +#pragma once + +#include "Buffer2D.hpp" +#include "Color.hpp" +#include "Vec.hpp" + +namespace tp { + class RenderTexture { + public: + RenderTexture(); + ~RenderTexture(); + + uint4 getid(); + + void update(const Buffer2D& buff); + void draw(const uint4& out = 0); + + public: + static void init(); + static void deinit(); + static void draw_texture(uint4 out, uint4 in); + static uint4 get_tex(const char* TexId); + static void drawCurcle(Vec2F pos, double radius, RGBA col); + + private: + uint4 id; + }; +}; \ No newline at end of file diff --git a/RayTracer/CMakeLists.txt b/RayTracer/CMakeLists.txt new file mode 100644 index 0000000..ae8c52b --- /dev/null +++ b/RayTracer/CMakeLists.txt @@ -0,0 +1,20 @@ +project(RayTracer) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp" "./applications/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ../Externals/) +target_link_libraries(${PROJECT_NAME} PUBLIC Math Connection) + +### -------------------------- Applications -------------------------- ### +add_executable(rayt ./applications/Rayt.cpp applications/SceneLoad.cpp applications/Rayt.hpp) +target_link_libraries(rayt ${PROJECT_NAME} Lua ImageIO) +file(COPY "applications/rsc" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") + +### -------------------------- Tests -------------------------- ### +file(GLOB TEST_SOURCES "./tests/*.cpp" "./tests/*/*.cpp") +add_executable(Test${PROJECT_NAME} ${TEST_SOURCES}) +target_include_directories(Test${PROJECT_NAME} PUBLIC ./applications/) +target_link_libraries(Test${PROJECT_NAME} ${PROJECT_NAME} UnitTest++ ImageIO) +add_test(NAME Test${PROJECT_NAME} COMMAND Test${PROJECT_NAME}) diff --git a/RayTracer/applications/Rayt.cpp b/RayTracer/applications/Rayt.cpp new file mode 100644 index 0000000..310a85a --- /dev/null +++ b/RayTracer/applications/Rayt.cpp @@ -0,0 +1,89 @@ + +// #include "NewPlacement.hpp" + +#include "Rayt.hpp" + +#include "Timing.hpp" + +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include "stb_image_write.h" + +#include +#include +#include + +using namespace tp; + +void writeImage(const RayTracer::RenderBuffer& output, const char* name) { + // Save the data to a PNG file + struct urgb { + uint1 r, g, b, a; + }; + + Buffer2D converted; + converted.reserve(output.size()); + + for (Index i = 0; i < output.size().x; i++) { + for (Index j = 0; j < output.size().y; j++) { + converted.get({ i, j }).r = uint1(output.get({ i, j }).r * 255); + converted.get({ i, j }).g = uint1(output.get({ i, j }).g * 255); + converted.get({ i, j }).b = uint1(output.get({ i, j }).b * 255); + converted.get({ i, j }).a = uint1(output.get({ i, j }).a * 255); + } + } + + if (stbi_write_png(name, converted.size().x, converted.size().y, 4, converted.getBuff(), converted.size().x * 4) != 0) { + // Image saved successfully + printf("Image saved successfully.\n"); + } else { + printf("Error saving the image.\n"); + } +} + +void printStatus(const halnf* percentage) { + auto old = *percentage; + while (*percentage < 0.99f) { + std::this_thread::sleep_for(std::chrono::milliseconds(500)); + if (old != *percentage && (*percentage - old) > 0.01) { + std::cout << "Progress - " << (*percentage) * 100 << std::endl; + old = *percentage; + } + } +} + +void renderCommand(const std::string& scenePath) { + Scene scene; + RayTracer::RenderSettings settings; + + loadScene(scene, scenePath, settings); + + RayTracer::OutputBuffers output; + RayTracer rayt; + + std::thread statusThread(printStatus, &rayt.mProgress.percentage); + + std::cout << "\nStarting Render:\n\n"; + + auto start = get_time(); + + rayt.render(scene, output, settings); + + auto end = get_time(); + + statusThread.join(); + + std::cout << "\nRender finished with average render time per sample - " << (end - start) << " (ms)\n"; + + writeImage(output.normals, "normals.png"); + writeImage(output.color, "color.png"); + writeImage(output.depth, "depth.png"); +} + +int main(int argc, const char** argv) { + if (argc > 1) { + renderCommand(argv[1]); + } else { + renderCommand("scene.lua"); + } + return 0; +} \ No newline at end of file diff --git a/RayTracer/applications/Rayt.hpp b/RayTracer/applications/Rayt.hpp new file mode 100644 index 0000000..ad43ea5 --- /dev/null +++ b/RayTracer/applications/Rayt.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include "RayTracer.hpp" + +#include + +void loadScene(tp::Scene& scene, const std::string& scenePath, tp::RayTracer::RenderSettings& settings); diff --git a/RayTracer/applications/SceneLoad.cpp b/RayTracer/applications/SceneLoad.cpp new file mode 100644 index 0000000..a1f53da --- /dev/null +++ b/RayTracer/applications/SceneLoad.cpp @@ -0,0 +1,260 @@ + +#include "Rayt.hpp" + +extern "C" { +#include "lauxlib.h" +#include "lualib.h" +} + +#include "obj/OBJ_Loader.h" + +#include + +bool loadMeshes(tp::Scene& scene, const std::string& objetsPath) { + using namespace tp; + + objl::Loader Loader; + + if (!Loader.LoadFile(objetsPath.c_str())) { + std::cout << "Failed to Load File. May have failed to find it or it was not an .obj file.\n"; + return false; + } + + for (auto& curMesh : Loader.LoadedMeshes) { + scene.mObjects.append(Object()); + + auto object = &scene.mObjects.last(); + + for (auto& vertex : curMesh.Vertices) { + // printf("{ %f, %f, %f }, \n", vertex.Position.X, vertex.Position.Y, vertex.Position.Z); + object->mTopology.Points.append(Vec3F{ vertex.Position.X, vertex.Position.Y, vertex.Position.Z }); + object->mTopology.Normals.append(Vec3F{ vertex.Normal.X, vertex.Normal.Y, vertex.Normal.Z }); + } + + for (int j = 0; j < curMesh.Indices.size(); j += 3) { + int idx1 = (int) curMesh.Indices[j]; + int idx2 = (int) curMesh.Indices[j + 1]; + int idx3 = (int) curMesh.Indices[j + 2]; + // printf("{ %i, %i, %i },\n", idx1, idx2, idx3); + object->mTopology.Indexes.append(Vec3I{ idx1, idx2, idx3 }); + } + + if (object->mTopology.Normals.size() != object->mTopology.Points.size()) { + printf("Logic error loading normals\n"); + } + + object->mCache.Source = &object->mTopology; + object->mCache.updateCache(); + } + + return scene.mObjects.size(); +} + +// Function to read a Lua table representing RenderSettings +int readRenderSettings(lua_State* L, tp::RayTracer::RenderSettings& settings) { + lua_getglobal(L, "RenderSettings"); + if (!lua_istable(L, -1)) { + printf("RenderSettings is not a table.\n"); + return 0; // Error + } + + // Read depth field + lua_getfield(L, -1, "depth"); + if (lua_isnumber(L, -1)) { + settings.depth = (int) lua_tonumber(L, -1); + } else { + printf("RenderSettings 'depth' field is missing or not a number.\n"); + lua_pop(L, 1); // Pop the 'depth' field + return 0; // Error + } + lua_pop(L, 1); // Pop the 'depth' field + + // Read spray field + lua_getfield(L, -1, "spray"); + if (lua_isnumber(L, -1)) { + settings.spray = (int) lua_tonumber(L, -1); + } else { + printf("RenderSettings 'spray' field is missing or not a number.\n"); + lua_pop(L, 1); // Pop the 'spray' field + return 0; // Error + } + lua_pop(L, 1); // Pop the 'spray' field + + // Read depth field + lua_getfield(L, -1, "multisampling"); + if (lua_isnumber(L, -1)) { + settings.multisampling = (int) lua_tonumber(L, -1); + } else { + printf("RenderSettings 'depth' field is missing or not a number.\n"); + lua_pop(L, 1); // Pop the 'depth' field + return 0; // Error + } + lua_pop(L, 1); // Pop the 'depth' field + + return 1; // Success +} + +// Function to read a Lua table representing a light +int readLight(lua_State* L, tp::PointLight* light) { + lua_getfield(L, -1, "pos"); // Get the "pos" field from the light table + if (!lua_istable(L, -1)) { + printf("Light is missing the 'pos' table.\n"); + return 0; // Error + } + for (int i = 0; i < 3; i++) { + lua_rawgeti(L, -1, i + 1); // Index is 1-based in Lua + if (!lua_isnumber(L, -1)) { + printf("Light 'pos' field is not a number at index %d.\n", i); + lua_pop(L, 2); // Pop both the number and the 'pos' table + return 0; // Error + } + light->pos[i] = lua_tonumber(L, -1); + lua_pop(L, 1); // Pop the number + } + lua_pop(L, 1); // Pop the 'pos' table + + lua_getfield(L, -1, "intensity"); // Get the "intensity" field from the light table + if (!lua_isnumber(L, -1)) { + printf("Light is missing the 'intensity' field or it's not a number.\n"); + lua_pop(L, 1); // Pop the 'intensity' field + return 0; // Error + } + light->intensity = lua_tonumber(L, -1); + lua_pop(L, 1); // Pop the 'intensity' field + + return 1; // Success +} + +void loadScene(tp::Scene& scene, const std::string& scenePath, tp::RayTracer::RenderSettings& settings) { + lua_State* L = luaL_newstate(); + luaL_openlibs(L); + + namespace fs = std::filesystem; + + fs::path fullPath(scenePath); + + // Extract the filename + std::string fileName = fullPath.filename().string(); + + // Remove the filename from the path + fs::path directoryPath = fullPath.remove_filename(); + + if (luaL_dofile(L, scenePath.c_str()) != 0) { + lua_close(L); + printf("Cant open scene script.\n"); + return; + } + + lua_getglobal(L, "Meshes"); + + if (lua_isstring(L, -1)) { + std::string meshesPath = lua_tostring(L, -1); + + directoryPath /= meshesPath; + + if (!loadMeshes(scene, directoryPath.string())) { + printf("No 'meshes' loaded - check ur .obj path and validate content of .obj .\n"); + return; + } + + } else { + printf("No 'meshes' path given.\n"); + return; + } + + // --- camera + + // Access Camera table + lua_getglobal(L, "Camera"); + if (!lua_istable(L, -1)) { + printf("Camera is not a table.\n"); + lua_close(L); + return; + } + + // Verify you are inside the "Camera" table + int cameraTableIndex = lua_gettop(L); // Get the index of the "Camera" table + + // Access the "pos" field and validate it + lua_getfield(L, cameraTableIndex, "pos"); + if (!lua_istable(L, -1) || lua_rawlen(L, -1) != 3) { + printf("Invalid 'pos' field in Camera table.\n"); + lua_close(L); + return; + } + + // Read the values from the table + float pos[3]; + for (int i = 0; i < 3; i++) { + lua_rawgeti(L, -1, i + 1); + if (lua_isnumber(L, -1)) { + pos[i] = lua_tonumber(L, -1); + } else { + printf("Invalid 'pos' field value at index %d.\n", i + 1); + lua_close(L); + return; + } + lua_pop(L, 1); + } + + // Access the "size_x" field and validate it + lua_getfield(L, cameraTableIndex, "size_x"); + if (!lua_isnumber(L, -1)) { + printf("Invalid or missing 'size_x' field in Camera table.\n"); + lua_close(L); + return; + } + int size_x = lua_tointeger(L, -1); + lua_pop(L, 1); // Pop the 'size_x' value from the stack + + // Access the "size_y" field and validate it + lua_getfield(L, cameraTableIndex, "size_y"); + if (!lua_isnumber(L, -1)) { + printf("Invalid or missing 'size_y' field in Camera table.\n"); + lua_close(L); + return; + } + int size_y = lua_tointeger(L, -1); + + settings.size = { (tp::halnf) size_x, (tp::halnf) size_y }; + + scene.mCamera.lookAtPoint({ 0, 0, 0 }, { pos[0], pos[1], pos[2] }, { 0, 0, 1 }); + scene.mCamera.setFOV(3.14 / 4); + scene.mCamera.setFar(100); + scene.mCamera.setRatio((tp::halnf) size_y / (tp::halnf) size_x); + + // ---------- LIGHTS + { + lua_getglobal(L, "Lights"); + if (!lua_istable(L, -1)) { + printf("Lights is not a table.\n"); + lua_close(L); + return; // Error + } + + // Read and process each light in the "Lights" table + int numLights = lua_rawlen(L, -1); // Get the number of lights in the table + for (int i = 1; i <= numLights; i++) { + lua_rawgeti(L, -1, i); // Get the i-th element (light) from the table + if (lua_istable(L, -1)) { + tp::PointLight light; + if (!readLight(L, &light)) { + printf("Cant read lights data\n"); + lua_close(L); + return; // Error + } + scene.mLights.append(light); + } + lua_pop(L, 1); // Pop the i-th light table + } + } + + // ----------- settings -------------- + if (!readRenderSettings(L, settings)) { + printf("Cant Read Render Settings"); + lua_close(L); + return; // Error + } + + lua_close(L); +} diff --git a/RayTracer/applications/rsc/cube/meshes.obj b/RayTracer/applications/rsc/cube/meshes.obj new file mode 100644 index 0000000..843b1d4 --- /dev/null +++ b/RayTracer/applications/rsc/cube/meshes.obj @@ -0,0 +1,40 @@ +# Blender v3.0.1 OBJ File: '' +# www.blender.org +mtllib scene.mtl +o Cube +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +vt 0.625000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.125000 0.500000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/4/2 7/6/2 8/7/2 +f 8/8/3 7/9/3 5/10/3 6/11/3 +f 6/12/4 2/13/4 4/5/4 8/14/4 +f 2/13/5 1/1/5 3/4/5 4/5/5 +f 6/11/6 5/10/6 1/1/6 2/13/6 diff --git a/RayTracer/applications/rsc/cube/script.lua b/RayTracer/applications/rsc/cube/script.lua new file mode 100644 index 0000000..2fd4b9b --- /dev/null +++ b/RayTracer/applications/rsc/cube/script.lua @@ -0,0 +1,25 @@ + +Meshes = "meshes.obj" + +Camera = { + pos = { 3, 3, 3 }, + size_x = 10, + size_y = 10, +} + +Lights = { + { + pos = { -0.5, 3.5, 1 }, + intensity = 1 + }, + { + pos = { 0, 0, 1 }, + intensity = 0.5 + }, +} + +RenderSettings = { + depth = 1, + spray = 10, + multisampling = 1, +} \ No newline at end of file diff --git a/RayTracer/applications/rsc/normals.blend b/RayTracer/applications/rsc/normals.blend new file mode 100644 index 0000000..156e59b Binary files /dev/null and b/RayTracer/applications/rsc/normals.blend differ diff --git a/RayTracer/applications/rsc/normals/normals.obj b/RayTracer/applications/rsc/normals/normals.obj new file mode 100644 index 0000000..e6f5ebb --- /dev/null +++ b/RayTracer/applications/rsc/normals/normals.obj @@ -0,0 +1,2041 @@ +# Blender v3.0.1 OBJ File: 'normals.blend' +# www.blender.org +mtllib normals.mtl +o Sphere +v 0.000000 0.980785 -0.195090 +v 0.000000 0.923880 -0.382683 +v 0.000000 0.831470 -0.555570 +v 0.000000 0.707107 -0.707107 +v 0.000000 0.555570 -0.831470 +v 0.000000 0.382683 -0.923880 +v 0.000000 0.195090 -0.980785 +v 0.000000 -0.555570 -0.831470 +v 0.000000 -0.707107 -0.707107 +v 0.000000 -0.831470 -0.555570 +v 0.038060 0.980785 -0.191342 +v 0.074658 0.923880 -0.375330 +v 0.108386 0.831470 -0.544895 +v 0.137950 0.707107 -0.693520 +v 0.162212 0.555570 -0.815493 +v 0.180240 0.382683 -0.906127 +v 0.191342 0.195090 -0.961940 +v 0.195090 -0.000000 -0.980785 +v 0.191342 -0.195090 -0.961940 +v 0.180240 -0.382683 -0.906127 +v 0.162212 -0.555570 -0.815493 +v 0.137950 -0.707107 -0.693520 +v 0.108386 -0.831470 -0.544895 +v 0.074658 -0.923880 -0.375330 +v 0.038060 -0.980785 -0.191342 +v 0.074658 0.980785 -0.180240 +v 0.146447 0.923880 -0.353553 +v 0.212608 0.831470 -0.513280 +v 0.270598 0.707107 -0.653281 +v 0.318190 0.555570 -0.768178 +v 0.353553 0.382683 -0.853553 +v 0.375330 0.195090 -0.906127 +v 0.382683 -0.000000 -0.923879 +v 0.375330 -0.195090 -0.906127 +v 0.353553 -0.382683 -0.853553 +v 0.318190 -0.555570 -0.768178 +v 0.270598 -0.707107 -0.653281 +v 0.212608 -0.831470 -0.513280 +v 0.146447 -0.923880 -0.353553 +v 0.074658 -0.980785 -0.180240 +v 0.108386 0.980785 -0.162212 +v 0.212608 0.923880 -0.318190 +v 0.308658 0.831470 -0.461940 +v 0.392848 0.707107 -0.587938 +v 0.461940 0.555570 -0.691342 +v 0.513280 0.382683 -0.768178 +v 0.544895 0.195090 -0.815493 +v 0.555570 -0.000000 -0.831469 +v 0.544895 -0.195090 -0.815493 +v 0.513280 -0.382683 -0.768178 +v 0.461940 -0.555570 -0.691342 +v 0.392848 -0.707107 -0.587938 +v 0.308658 -0.831470 -0.461940 +v 0.212608 -0.923880 -0.318190 +v 0.108386 -0.980785 -0.162212 +v 0.137950 0.980785 -0.137950 +v 0.270598 0.923880 -0.270598 +v 0.392848 0.831470 -0.392847 +v 0.500000 0.707107 -0.500000 +v 0.587938 0.555570 -0.587938 +v 0.653281 0.382683 -0.653281 +v 0.693520 0.195090 -0.693520 +v 0.707107 -0.000000 -0.707107 +v 0.693520 -0.195090 -0.693520 +v 0.653282 -0.382683 -0.653281 +v 0.587938 -0.555570 -0.587938 +v 0.500000 -0.707107 -0.500000 +v 0.392848 -0.831470 -0.392847 +v 0.270598 -0.923880 -0.270598 +v 0.137950 -0.980785 -0.137950 +v 0.162212 0.980785 -0.108386 +v 0.318190 0.923880 -0.212607 +v 0.461940 0.831470 -0.308658 +v 0.587938 0.707107 -0.392847 +v 0.691342 0.555570 -0.461940 +v 0.768178 0.382683 -0.513280 +v 0.815493 0.195090 -0.544895 +v 0.831470 -0.000000 -0.555570 +v 0.815493 -0.195090 -0.544895 +v 0.768178 -0.382683 -0.513280 +v 0.691342 -0.555570 -0.461940 +v 0.587938 -0.707107 -0.392847 +v 0.461940 -0.831470 -0.308658 +v 0.318190 -0.923880 -0.212608 +v 0.162212 -0.980785 -0.108386 +v 0.180240 0.980785 -0.074658 +v 0.353554 0.923880 -0.146447 +v 0.513280 0.831470 -0.212607 +v 0.653281 0.707107 -0.270598 +v 0.768178 0.555570 -0.318190 +v 0.853553 0.382683 -0.353553 +v 0.906127 0.195090 -0.375330 +v 0.923879 -0.000000 -0.382683 +v 0.906127 -0.195090 -0.375330 +v 0.853553 -0.382683 -0.353553 +v 0.768178 -0.555570 -0.318190 +v 0.653281 -0.707107 -0.270598 +v 0.513280 -0.831470 -0.212607 +v 0.353554 -0.923880 -0.146447 +v 0.180240 -0.980785 -0.074658 +v 0.191342 0.980785 -0.038060 +v 0.375330 0.923880 -0.074658 +v 0.544895 0.831470 -0.108386 +v 0.693520 0.707107 -0.137950 +v 0.815493 0.555570 -0.162212 +v 0.906127 0.382683 -0.180240 +v 0.961940 0.195090 -0.191342 +v 0.980785 -0.000000 -0.195090 +v 0.961940 -0.195090 -0.191342 +v 0.906128 -0.382683 -0.180240 +v 0.815493 -0.555570 -0.162212 +v 0.693520 -0.707107 -0.137950 +v 0.544895 -0.831470 -0.108386 +v 0.375330 -0.923880 -0.074658 +v 0.191342 -0.980785 -0.038060 +v 0.195090 0.980785 0.000000 +v 0.382684 0.923880 0.000000 +v 0.555570 0.831470 0.000000 +v 0.707107 0.707107 0.000000 +v 0.831469 0.555570 0.000000 +v 0.923879 0.382683 0.000000 +v 0.980785 0.195090 0.000000 +v 1.000000 -0.000000 0.000000 +v 0.980785 -0.195090 0.000000 +v 0.923880 -0.382683 0.000000 +v 0.831469 -0.555570 0.000000 +v 0.707107 -0.707107 0.000000 +v 0.555570 -0.831470 0.000000 +v 0.382684 -0.923880 0.000000 +v 0.195090 -0.980785 0.000000 +v 0.191342 0.980785 0.038060 +v 0.375330 0.923880 0.074658 +v 0.544895 0.831470 0.108386 +v 0.693520 0.707107 0.137950 +v 0.815493 0.555570 0.162212 +v 0.906127 0.382683 0.180240 +v 0.961940 0.195090 0.191342 +v 0.980785 -0.000000 0.195090 +v 0.961940 -0.195090 0.191342 +v 0.906127 -0.382683 0.180240 +v 0.815493 -0.555570 0.162212 +v 0.693520 -0.707107 0.137950 +v 0.544895 -0.831470 0.108386 +v 0.375330 -0.923880 0.074658 +v 0.191342 -0.980785 0.038060 +v 0.180240 0.980785 0.074658 +v 0.353553 0.923880 0.146447 +v 0.513280 0.831470 0.212608 +v 0.653281 0.707107 0.270598 +v 0.768178 0.555570 0.318190 +v 0.853553 0.382683 0.353553 +v 0.906127 0.195090 0.375330 +v 0.923879 -0.000000 0.382683 +v 0.906127 -0.195090 0.375330 +v 0.853553 -0.382683 0.353554 +v 0.768178 -0.555570 0.318190 +v 0.653281 -0.707107 0.270598 +v 0.513280 -0.831470 0.212608 +v 0.353554 -0.923880 0.146447 +v 0.180240 -0.980785 0.074658 +v 0.162212 0.980785 0.108386 +v 0.318190 0.923880 0.212608 +v 0.461940 0.831470 0.308658 +v 0.587938 0.707107 0.392847 +v 0.691341 0.555570 0.461940 +v 0.768178 0.382683 0.513280 +v 0.815493 0.195090 0.544895 +v 0.831469 -0.000000 0.555570 +v 0.815493 -0.195090 0.544895 +v 0.768178 -0.382683 0.513280 +v 0.691342 -0.555570 0.461940 +v 0.587938 -0.707107 0.392847 +v 0.461940 -0.831470 0.308658 +v 0.318190 -0.923880 0.212608 +v 0.162212 -0.980785 0.108386 +v 0.137950 0.980785 0.137950 +v 0.270598 0.923880 0.270598 +v 0.392847 0.831470 0.392847 +v 0.500000 0.707107 0.500000 +v 0.587938 0.555570 0.587938 +v 0.653281 0.382683 0.653281 +v 0.693520 0.195090 0.693520 +v 0.707106 -0.000000 0.707107 +v 0.693520 -0.195090 0.693520 +v 0.653281 -0.382683 0.653282 +v 0.587938 -0.555570 0.587938 +v 0.500000 -0.707107 0.500000 +v 0.392847 -0.831470 0.392847 +v 0.270598 -0.923880 0.270598 +v 0.137950 -0.980785 0.137950 +v 0.108386 0.980785 0.162212 +v 0.212608 0.923880 0.318190 +v 0.308658 0.831470 0.461940 +v 0.392847 0.707107 0.587938 +v 0.461940 0.555570 0.691342 +v 0.513280 0.382683 0.768178 +v 0.544895 0.195090 0.815493 +v 0.555570 -0.000000 0.831469 +v 0.544895 -0.195090 0.815493 +v 0.513280 -0.382683 0.768178 +v 0.461940 -0.555570 0.691342 +v 0.392847 -0.707107 0.587938 +v 0.308658 -0.831470 0.461940 +v 0.212608 -0.923880 0.318190 +v 0.108386 -0.980785 0.162212 +v 0.074658 0.980785 0.180240 +v 0.146447 0.923880 0.353554 +v 0.212607 0.831470 0.513280 +v 0.270598 0.707107 0.653281 +v 0.318190 0.555570 0.768178 +v 0.353553 0.382683 0.853553 +v 0.375330 0.195090 0.906127 +v 0.382683 -0.000000 0.923879 +v 0.375330 -0.195090 0.906127 +v 0.353553 -0.382683 0.853553 +v 0.318190 -0.555570 0.768178 +v 0.270598 -0.707107 0.653281 +v 0.212607 -0.831470 0.513280 +v 0.146447 -0.923880 0.353554 +v 0.074658 -0.980785 0.180240 +v 0.038060 0.980785 0.191342 +v 0.074658 0.923880 0.375330 +v 0.108386 0.831470 0.544895 +v 0.137950 0.707107 0.693520 +v 0.162212 0.555570 0.815493 +v 0.180240 0.382683 0.906127 +v 0.191342 0.195090 0.961939 +v 0.195090 -0.000000 0.980785 +v 0.191342 -0.195090 0.961939 +v 0.180240 -0.382683 0.906127 +v 0.162212 -0.555570 0.815493 +v 0.137950 -0.707107 0.693520 +v 0.108386 -0.831470 0.544895 +v 0.074658 -0.923880 0.375330 +v 0.038060 -0.980785 0.191342 +v 0.000000 0.980785 0.195090 +v -0.000000 0.923880 0.382684 +v -0.000000 0.831470 0.555570 +v 0.000000 0.707107 0.707107 +v -0.000000 0.555570 0.831469 +v 0.000000 0.382683 0.923879 +v -0.000000 0.195090 0.980785 +v -0.000000 -0.000000 0.999999 +v -0.000000 -0.195090 0.980785 +v -0.000000 -0.382683 0.923880 +v -0.000000 -0.555570 0.831469 +v 0.000000 -0.707107 0.707107 +v -0.000000 -0.831470 0.555570 +v 0.000000 -0.923880 0.382684 +v -0.000000 -0.980785 0.195090 +v -0.038060 0.980785 0.191342 +v -0.074658 0.923880 0.375330 +v -0.108386 0.831470 0.544895 +v -0.137950 0.707107 0.693520 +v -0.162212 0.555570 0.815493 +v -0.180240 0.382683 0.906127 +v -0.191342 0.195090 0.961939 +v -0.195090 -0.000000 0.980785 +v -0.191342 -0.195090 0.961939 +v -0.180240 -0.382683 0.906127 +v -0.162212 -0.555570 0.815493 +v -0.137950 -0.707107 0.693520 +v -0.108386 -0.831470 0.544895 +v -0.074658 -0.923880 0.375330 +v -0.038060 -0.980785 0.191342 +v -0.074658 0.980785 0.180240 +v -0.146447 0.923880 0.353553 +v -0.212608 0.831470 0.513280 +v -0.270598 0.707107 0.653281 +v -0.318189 0.555570 0.768177 +v -0.353553 0.382683 0.853553 +v -0.375330 0.195090 0.906127 +v -0.382683 -0.000000 0.923879 +v -0.375330 -0.195090 0.906127 +v -0.353553 -0.382683 0.853553 +v -0.318190 -0.555570 0.768178 +v -0.270598 -0.707107 0.653281 +v -0.212608 -0.831470 0.513280 +v -0.146447 -0.923880 0.353553 +v -0.074658 -0.980785 0.180240 +v -0.108386 0.980785 0.162212 +v -0.212608 0.923880 0.318190 +v -0.308658 0.831470 0.461940 +v -0.392847 0.707107 0.587938 +v -0.461940 0.555570 0.691341 +v -0.513280 0.382683 0.768178 +v -0.544895 0.195090 0.815493 +v -0.555570 -0.000000 0.831469 +v -0.544895 -0.195090 0.815493 +v -0.513280 -0.382683 0.768178 +v -0.461940 -0.555570 0.691342 +v -0.392847 -0.707107 0.587938 +v -0.308658 -0.831470 0.461940 +v -0.212608 -0.923880 0.318190 +v -0.108386 -0.980785 0.162212 +v -0.137950 0.980785 0.137950 +v -0.270598 0.923880 0.270598 +v -0.392847 0.831470 0.392847 +v -0.500000 0.707107 0.500000 +v -0.587937 0.555570 0.587938 +v -0.653281 0.382683 0.653281 +v -0.693520 0.195090 0.693520 +v -0.707106 -0.000000 0.707106 +v -0.693520 -0.195090 0.693520 +v -0.653281 -0.382683 0.653281 +v -0.587938 -0.555570 0.587938 +v -0.500000 -0.707107 0.500000 +v -0.392847 -0.831470 0.392847 +v -0.270598 -0.923880 0.270598 +v -0.137950 -0.980785 0.137950 +v -0.162212 0.980785 0.108386 +v -0.318190 0.923880 0.212608 +v -0.461940 0.831470 0.308658 +v -0.587938 0.707107 0.392847 +v -0.691341 0.555570 0.461940 +v -0.768178 0.382683 0.513280 +v -0.815493 0.195090 0.544895 +v -0.831469 -0.000000 0.555569 +v -0.815493 -0.195090 0.544895 +v -0.768178 -0.382683 0.513280 +v -0.691341 -0.555570 0.461940 +v -0.587938 -0.707107 0.392847 +v -0.461940 -0.831470 0.308658 +v -0.318190 -0.923880 0.212608 +v -0.162212 -0.980785 0.108386 +v -0.000000 1.000000 0.000000 +v -0.180240 0.980785 0.074658 +v -0.353553 0.923880 0.146447 +v -0.513280 0.831470 0.212607 +v -0.653281 0.707107 0.270598 +v -0.768177 0.555570 0.318190 +v -0.853553 0.382683 0.353553 +v -0.906127 0.195090 0.375330 +v -0.923879 -0.000000 0.382683 +v -0.906127 -0.195090 0.375330 +v -0.853553 -0.382683 0.353553 +v -0.768177 -0.555570 0.318190 +v -0.653281 -0.707107 0.270598 +v -0.513280 -0.831470 0.212607 +v -0.353553 -0.923880 0.146447 +v -0.180240 -0.980785 0.074658 +v -0.191342 0.980785 0.038060 +v -0.375330 0.923880 0.074658 +v -0.544895 0.831470 0.108386 +v -0.693520 0.707107 0.137950 +v -0.815493 0.555570 0.162212 +v -0.906127 0.382683 0.180240 +v -0.961939 0.195090 0.191342 +v -0.980784 -0.000000 0.195090 +v -0.961939 -0.195090 0.191342 +v -0.906127 -0.382683 0.180240 +v -0.815493 -0.555570 0.162212 +v -0.693520 -0.707107 0.137950 +v -0.544895 -0.831470 0.108386 +v -0.375330 -0.923880 0.074658 +v -0.191342 -0.980785 0.038060 +v -0.195090 0.980785 0.000000 +v -0.382683 0.923880 0.000000 +v -0.555570 0.831470 -0.000000 +v -0.707107 0.707107 0.000000 +v -0.831469 0.555570 0.000000 +v -0.923879 0.382683 0.000000 +v -0.980785 0.195090 -0.000000 +v -0.999999 -0.000000 -0.000000 +v -0.980785 -0.195090 -0.000000 +v -0.923879 -0.382683 -0.000000 +v -0.831469 -0.555570 0.000000 +v -0.707107 -0.707107 0.000000 +v -0.555570 -0.831470 -0.000000 +v -0.382683 -0.923880 0.000000 +v -0.195090 -0.980785 0.000000 +v -0.191342 0.980785 -0.038060 +v -0.375330 0.923880 -0.074658 +v -0.544895 0.831470 -0.108386 +v -0.693520 0.707107 -0.137950 +v -0.815493 0.555570 -0.162212 +v -0.906127 0.382683 -0.180240 +v -0.961939 0.195090 -0.191342 +v -0.980784 -0.000000 -0.195091 +v -0.961939 -0.195090 -0.191342 +v -0.906127 -0.382683 -0.180240 +v -0.815493 -0.555570 -0.162212 +v -0.693520 -0.707107 -0.137950 +v -0.544895 -0.831470 -0.108386 +v -0.375330 -0.923880 -0.074658 +v -0.191342 -0.980785 -0.038060 +v -0.180240 0.980785 -0.074658 +v -0.353553 0.923880 -0.146447 +v -0.513280 0.831470 -0.212607 +v -0.653281 0.707107 -0.270598 +v -0.768177 0.555570 -0.318189 +v -0.853553 0.382683 -0.353553 +v -0.906127 0.195090 -0.375330 +v -0.923878 -0.000000 -0.382683 +v -0.906127 -0.195090 -0.375330 +v -0.853553 -0.382683 -0.353553 +v -0.768177 -0.555570 -0.318189 +v -0.653281 -0.707107 -0.270598 +v -0.513280 -0.831470 -0.212607 +v -0.353553 -0.923880 -0.146446 +v -0.180240 -0.980785 -0.074658 +v -0.162212 0.980785 -0.108386 +v -0.318189 0.923880 -0.212607 +v -0.461939 0.831470 -0.308658 +v -0.587938 0.707107 -0.392847 +v -0.691341 0.555570 -0.461939 +v -0.768177 0.382683 -0.513280 +v -0.815493 0.195090 -0.544895 +v -0.831469 -0.000000 -0.555570 +v -0.815493 -0.195090 -0.544895 +v -0.768177 -0.382683 -0.513280 +v -0.691341 -0.555570 -0.461939 +v -0.587938 -0.707107 -0.392847 +v -0.461939 -0.831470 -0.308658 +v -0.318189 -0.923880 -0.212607 +v -0.162212 -0.980785 -0.108386 +v -0.137950 0.980785 -0.137950 +v -0.270598 0.923880 -0.270598 +v -0.392847 0.831470 -0.392847 +v -0.500000 0.707107 -0.500000 +v -0.587937 0.555570 -0.587937 +v -0.653281 0.382683 -0.653281 +v -0.693519 0.195090 -0.693520 +v -0.707106 -0.000000 -0.707106 +v -0.693519 -0.195090 -0.693520 +v -0.653281 -0.382683 -0.653281 +v -0.587937 -0.555570 -0.587937 +v -0.500000 -0.707107 -0.500000 +v -0.392847 -0.831470 -0.392847 +v -0.270598 -0.923880 -0.270598 +v -0.137950 -0.980785 -0.137950 +v -0.108386 0.980785 -0.162212 +v -0.212607 0.923880 -0.318189 +v -0.308658 0.831470 -0.461939 +v -0.392847 0.707107 -0.587937 +v -0.461939 0.555570 -0.691341 +v -0.513280 0.382683 -0.768177 +v -0.544895 0.195090 -0.815493 +v -0.555569 -0.000000 -0.831469 +v -0.544895 -0.195090 -0.815493 +v -0.513280 -0.382683 -0.768178 +v -0.461939 -0.555570 -0.691341 +v -0.392847 -0.707107 -0.587937 +v -0.308658 -0.831470 -0.461939 +v -0.212607 -0.923880 -0.318189 +v -0.108386 -0.980785 -0.162212 +v -0.074658 0.980785 -0.180240 +v -0.146446 0.923880 -0.353553 +v -0.212607 0.831470 -0.513279 +v -0.270598 0.707107 -0.653281 +v -0.318189 0.555570 -0.768177 +v -0.353553 0.382683 -0.853553 +v -0.375330 0.195090 -0.906127 +v -0.382683 -0.000000 -0.923879 +v -0.375330 -0.195090 -0.906127 +v -0.353553 -0.382683 -0.853553 +v -0.318189 -0.555570 -0.768177 +v -0.270598 -0.707107 -0.653281 +v -0.212607 -0.831470 -0.513279 +v -0.146446 -0.923880 -0.353553 +v -0.074658 -0.980785 -0.180240 +v -0.038060 0.980785 -0.191342 +v -0.074658 0.923880 -0.375330 +v -0.108386 0.831470 -0.544895 +v -0.137950 0.707107 -0.693520 +v -0.162212 0.555570 -0.815493 +v -0.180240 0.382683 -0.906127 +v -0.191341 0.195090 -0.961939 +v -0.195090 -0.000000 -0.980784 +v -0.191341 -0.195090 -0.961939 +v -0.180240 -0.382683 -0.906127 +v -0.162212 -0.555570 -0.815493 +v -0.137950 -0.707107 -0.693520 +v -0.108386 -0.831470 -0.544895 +v -0.074658 -0.923880 -0.375330 +v -0.038060 -0.980785 -0.191342 +v 0.000001 -0.000000 -0.999999 +v 0.000000 -0.195090 -0.980785 +v 0.000000 -0.382683 -0.923879 +v 0.000000 -0.923880 -0.382683 +v 0.000000 -0.980785 -0.195090 +v 0.000000 -1.000000 0.000000 +vt 0.750000 0.125000 +vt 0.750000 0.187500 +vt 0.718750 0.187500 +vt 0.718750 0.125000 +vt 0.750000 0.562500 +vt 0.750000 0.625000 +vt 0.718750 0.625000 +vt 0.718750 0.562500 +vt 0.750000 0.062500 +vt 0.718750 0.062500 +vt 0.750000 0.500000 +vt 0.718750 0.500000 +vt 0.750000 0.937500 +vt 0.734375 1.000000 +vt 0.718750 0.937500 +vt 0.734375 0.000000 +vt 0.750000 0.437500 +vt 0.718750 0.437500 +vt 0.750000 0.875000 +vt 0.718750 0.875000 +vt 0.750000 0.375000 +vt 0.718750 0.375000 +vt 0.750000 0.812500 +vt 0.718750 0.812500 +vt 0.750000 0.312500 +vt 0.718750 0.312500 +vt 0.750000 0.750000 +vt 0.718750 0.750000 +vt 0.750000 0.250000 +vt 0.718750 0.250000 +vt 0.750000 0.687500 +vt 0.718750 0.687500 +vt 0.687500 0.250000 +vt 0.687500 0.187500 +vt 0.687500 0.687500 +vt 0.687500 0.625000 +vt 0.687500 0.125000 +vt 0.687500 0.562500 +vt 0.687500 0.062500 +vt 0.687500 0.500000 +vt 0.703125 1.000000 +vt 0.687500 0.937500 +vt 0.703125 0.000000 +vt 0.687500 0.437500 +vt 0.687500 0.875000 +vt 0.687500 0.375000 +vt 0.687500 0.812500 +vt 0.687500 0.312500 +vt 0.687500 0.750000 +vt 0.656250 0.937500 +vt 0.656250 0.875000 +vt 0.656250 0.437500 +vt 0.656250 0.375000 +vt 0.656250 0.812500 +vt 0.656250 0.312500 +vt 0.656250 0.750000 +vt 0.656250 0.250000 +vt 0.656250 0.687500 +vt 0.656250 0.187500 +vt 0.656250 0.625000 +vt 0.656250 0.125000 +vt 0.656250 0.562500 +vt 0.656250 0.062500 +vt 0.656250 0.500000 +vt 0.671875 1.000000 +vt 0.671875 0.000000 +vt 0.625000 0.687500 +vt 0.625000 0.625000 +vt 0.625000 0.187500 +vt 0.625000 0.125000 +vt 0.625000 0.562500 +vt 0.625000 0.062500 +vt 0.625000 0.500000 +vt 0.640625 1.000000 +vt 0.625000 0.937500 +vt 0.640625 0.000000 +vt 0.625000 0.437500 +vt 0.625000 0.875000 +vt 0.625000 0.375000 +vt 0.625000 0.812500 +vt 0.625000 0.312500 +vt 0.625000 0.750000 +vt 0.625000 0.250000 +vt 0.593750 0.437500 +vt 0.593750 0.375000 +vt 0.593750 0.875000 +vt 0.593750 0.812500 +vt 0.593750 0.312500 +vt 0.593750 0.750000 +vt 0.593750 0.250000 +vt 0.593750 0.687500 +vt 0.593750 0.187500 +vt 0.593750 0.625000 +vt 0.593750 0.125000 +vt 0.593750 0.562500 +vt 0.593750 0.062500 +vt 0.593750 0.500000 +vt 0.609375 1.000000 +vt 0.593750 0.937500 +vt 0.609375 0.000000 +vt 0.562500 0.187500 +vt 0.562500 0.125000 +vt 0.562500 0.625000 +vt 0.562500 0.562500 +vt 0.562500 0.062500 +vt 0.562500 0.500000 +vt 0.578125 1.000000 +vt 0.562500 0.937500 +vt 0.578125 0.000000 +vt 0.562500 0.437500 +vt 0.562500 0.875000 +vt 0.562500 0.375000 +vt 0.562500 0.812500 +vt 0.562500 0.312500 +vt 0.562500 0.750000 +vt 0.562500 0.250000 +vt 0.562500 0.687500 +vt 0.531250 0.375000 +vt 0.531250 0.312500 +vt 0.531250 0.812500 +vt 0.531250 0.750000 +vt 0.531250 0.250000 +vt 0.531250 0.687500 +vt 0.531250 0.187500 +vt 0.531250 0.625000 +vt 0.531250 0.125000 +vt 0.531250 0.562500 +vt 0.531250 0.062500 +vt 0.531250 0.500000 +vt 0.546875 1.000000 +vt 0.531250 0.937500 +vt 0.546875 0.000000 +vt 0.531250 0.437500 +vt 0.531250 0.875000 +vt 0.500000 0.125000 +vt 0.500000 0.062500 +vt 0.500000 0.562500 +vt 0.500000 0.500000 +vt 0.515625 1.000000 +vt 0.500000 0.937500 +vt 0.515625 0.000000 +vt 0.500000 0.437500 +vt 0.500000 0.875000 +vt 0.500000 0.375000 +vt 0.500000 0.812500 +vt 0.500000 0.312500 +vt 0.500000 0.750000 +vt 0.500000 0.250000 +vt 0.500000 0.687500 +vt 0.500000 0.187500 +vt 0.500000 0.625000 +vt 0.468750 0.812500 +vt 0.468750 0.750000 +vt 0.468750 0.312500 +vt 0.468750 0.250000 +vt 0.468750 0.687500 +vt 0.468750 0.187500 +vt 0.468750 0.625000 +vt 0.468750 0.125000 +vt 0.468750 0.562500 +vt 0.468750 0.062500 +vt 0.468750 0.500000 +vt 0.484375 1.000000 +vt 0.468750 0.937500 +vt 0.484375 0.000000 +vt 0.468750 0.437500 +vt 0.468750 0.875000 +vt 0.468750 0.375000 +vt 0.437500 0.562500 +vt 0.437500 0.500000 +vt 0.453125 1.000000 +vt 0.437500 0.937500 +vt 0.453125 0.000000 +vt 0.437500 0.062500 +vt 0.437500 0.437500 +vt 0.437500 0.875000 +vt 0.437500 0.375000 +vt 0.437500 0.812500 +vt 0.437500 0.312500 +vt 0.437500 0.750000 +vt 0.437500 0.250000 +vt 0.437500 0.687500 +vt 0.437500 0.187500 +vt 0.437500 0.625000 +vt 0.437500 0.125000 +vt 0.406250 0.312500 +vt 0.406250 0.250000 +vt 0.406250 0.750000 +vt 0.406250 0.687500 +vt 0.406250 0.187500 +vt 0.406250 0.625000 +vt 0.406250 0.125000 +vt 0.406250 0.562500 +vt 0.406250 0.062500 +vt 0.406250 0.500000 +vt 0.421875 1.000000 +vt 0.406250 0.937500 +vt 0.421875 0.000000 +vt 0.406250 0.437500 +vt 0.406250 0.875000 +vt 0.406250 0.375000 +vt 0.406250 0.812500 +vt 0.390625 1.000000 +vt 0.375000 0.937500 +vt 0.390625 0.000000 +vt 0.375000 0.062500 +vt 0.375000 0.500000 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt 0.375000 0.375000 +vt 0.375000 0.812500 +vt 0.375000 0.312500 +vt 0.375000 0.750000 +vt 0.375000 0.250000 +vt 0.375000 0.687500 +vt 0.375000 0.187500 +vt 0.375000 0.625000 +vt 0.375000 0.125000 +vt 0.375000 0.562500 +vt 0.343750 0.750000 +vt 0.343750 0.687500 +vt 0.343750 0.250000 +vt 0.343750 0.187500 +vt 0.343750 0.625000 +vt 0.343750 0.125000 +vt 0.343750 0.562500 +vt 0.343750 0.062500 +vt 0.343750 0.500000 +vt 0.359375 1.000000 +vt 0.343750 0.937500 +vt 0.359375 0.000000 +vt 0.343750 0.437500 +vt 0.343750 0.875000 +vt 0.343750 0.375000 +vt 0.343750 0.812500 +vt 0.343750 0.312500 +vt 0.312500 0.500000 +vt 0.312500 0.437500 +vt 0.312500 0.937500 +vt 0.312500 0.875000 +vt 0.312500 0.375000 +vt 0.312500 0.812500 +vt 0.312500 0.312500 +vt 0.312500 0.750000 +vt 0.312500 0.250000 +vt 0.312500 0.687500 +vt 0.312500 0.187500 +vt 0.312500 0.625000 +vt 0.312500 0.125000 +vt 0.312500 0.562500 +vt 0.312500 0.062500 +vt 0.328125 1.000000 +vt 0.328125 0.000000 +vt 0.281250 0.250000 +vt 0.281250 0.187500 +vt 0.281250 0.687500 +vt 0.281250 0.625000 +vt 0.281250 0.125000 +vt 0.281250 0.562500 +vt 0.281250 0.062500 +vt 0.281250 0.500000 +vt 0.296875 1.000000 +vt 0.281250 0.937500 +vt 0.296875 0.000000 +vt 0.281250 0.437500 +vt 0.281250 0.875000 +vt 0.281250 0.375000 +vt 0.281250 0.812500 +vt 0.281250 0.312500 +vt 0.281250 0.750000 +vt 0.250000 0.437500 +vt 0.250000 0.375000 +vt 0.250000 0.875000 +vt 0.250000 0.812500 +vt 0.250000 0.312500 +vt 0.250000 0.750000 +vt 0.250000 0.250000 +vt 0.250000 0.687500 +vt 0.250000 0.187500 +vt 0.250000 0.625000 +vt 0.250000 0.125000 +vt 0.250000 0.562500 +vt 0.250000 0.062500 +vt 0.250000 0.500000 +vt 0.265625 1.000000 +vt 0.250000 0.937500 +vt 0.265625 0.000000 +vt 0.218750 0.187500 +vt 0.218750 0.125000 +vt 0.218750 0.625000 +vt 0.218750 0.562500 +vt 0.218750 0.062500 +vt 0.218750 0.500000 +vt 0.234375 1.000000 +vt 0.218750 0.937500 +vt 0.234375 0.000000 +vt 0.218750 0.437500 +vt 0.218750 0.875000 +vt 0.218750 0.375000 +vt 0.218750 0.812500 +vt 0.218750 0.312500 +vt 0.218750 0.750000 +vt 0.218750 0.250000 +vt 0.218750 0.687500 +vt 0.187500 0.875000 +vt 0.187500 0.812500 +vt 0.187500 0.375000 +vt 0.187500 0.312500 +vt 0.187500 0.750000 +vt 0.187500 0.250000 +vt 0.187500 0.687500 +vt 0.187500 0.187500 +vt 0.187500 0.625000 +vt 0.187500 0.125000 +vt 0.187500 0.562500 +vt 0.187500 0.062500 +vt 0.187500 0.500000 +vt 0.203125 1.000000 +vt 0.187500 0.937500 +vt 0.203125 0.000000 +vt 0.187500 0.437500 +vt 0.156250 0.625000 +vt 0.156250 0.562500 +vt 0.156250 0.125000 +vt 0.156250 0.062500 +vt 0.156250 0.500000 +vt 0.171875 1.000000 +vt 0.156250 0.937500 +vt 0.171875 0.000000 +vt 0.156250 0.437500 +vt 0.156250 0.875000 +vt 0.156250 0.375000 +vt 0.156250 0.812500 +vt 0.156250 0.312500 +vt 0.156250 0.750000 +vt 0.156250 0.250000 +vt 0.156250 0.687500 +vt 0.156250 0.187500 +vt 0.125000 0.375000 +vt 0.125000 0.312500 +vt 0.125000 0.812500 +vt 0.125000 0.750000 +vt 0.125000 0.250000 +vt 0.125000 0.687500 +vt 0.125000 0.187500 +vt 0.125000 0.625000 +vt 0.125000 0.125000 +vt 0.125000 0.562500 +vt 0.125000 0.062500 +vt 0.125000 0.500000 +vt 0.140625 1.000000 +vt 0.125000 0.937500 +vt 0.140625 0.000000 +vt 0.125000 0.437500 +vt 0.125000 0.875000 +vt 0.093750 0.125000 +vt 0.093750 0.062500 +vt 0.093750 0.562500 +vt 0.093750 0.500000 +vt 0.109375 1.000000 +vt 0.093750 0.937500 +vt 0.109375 0.000000 +vt 0.093750 0.437500 +vt 0.093750 0.875000 +vt 0.093750 0.375000 +vt 0.093750 0.812500 +vt 0.093750 0.312500 +vt 0.093750 0.750000 +vt 0.093750 0.250000 +vt 0.093750 0.687500 +vt 0.093750 0.187500 +vt 0.093750 0.625000 +vt 0.062500 0.812500 +vt 0.062500 0.750000 +vt 0.062500 0.312500 +vt 0.062500 0.250000 +vt 0.062500 0.687500 +vt 0.062500 0.187500 +vt 0.062500 0.625000 +vt 0.062500 0.125000 +vt 0.062500 0.562500 +vt 0.062500 0.062500 +vt 0.062500 0.500000 +vt 0.078125 1.000000 +vt 0.062500 0.937500 +vt 0.078125 0.000000 +vt 0.062500 0.437500 +vt 0.062500 0.875000 +vt 0.062500 0.375000 +vt 0.031250 0.562500 +vt 0.031250 0.500000 +vt 0.046875 1.000000 +vt 0.031250 0.937500 +vt 0.046875 0.000000 +vt 0.031250 0.062500 +vt 0.031250 0.437500 +vt 0.031250 0.875000 +vt 0.031250 0.375000 +vt 0.031250 0.812500 +vt 0.031250 0.312500 +vt 0.031250 0.750000 +vt 0.031250 0.250000 +vt 0.031250 0.687500 +vt 0.031250 0.187500 +vt 0.031250 0.625000 +vt 0.031250 0.125000 +vt 0.000000 0.312500 +vt 0.000000 0.250000 +vt 0.000000 0.750000 +vt 0.000000 0.687500 +vt 0.000000 0.187500 +vt 0.000000 0.625000 +vt 0.000000 0.125000 +vt 0.000000 0.562500 +vt 0.000000 0.062500 +vt 0.000000 0.500000 +vt 0.015625 1.000000 +vt 0.000000 0.937500 +vt 0.015625 0.000000 +vt 0.000000 0.437500 +vt 0.000000 0.875000 +vt 0.000000 0.375000 +vt 0.000000 0.812500 +vt 0.984375 0.000000 +vt 1.000000 0.062500 +vt 0.968750 0.062500 +vt 1.000000 0.437500 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 0.968750 0.437500 +vt 1.000000 0.875000 +vt 1.000000 0.937500 +vt 0.968750 0.937500 +vt 0.968750 0.875000 +vt 1.000000 0.375000 +vt 0.968750 0.375000 +vt 1.000000 0.812500 +vt 0.968750 0.812500 +vt 1.000000 0.312500 +vt 0.968750 0.312500 +vt 1.000000 0.750000 +vt 0.968750 0.750000 +vt 1.000000 0.250000 +vt 0.968750 0.250000 +vt 1.000000 0.687500 +vt 0.968750 0.687500 +vt 1.000000 0.187500 +vt 0.968750 0.187500 +vt 1.000000 0.625000 +vt 0.968750 0.625000 +vt 1.000000 0.125000 +vt 0.968750 0.125000 +vt 1.000000 0.562500 +vt 0.968750 0.562500 +vt 0.984375 1.000000 +vt 0.937500 0.250000 +vt 0.937500 0.187500 +vt 0.937500 0.687500 +vt 0.937500 0.625000 +vt 0.937500 0.125000 +vt 0.937500 0.562500 +vt 0.937500 0.062500 +vt 0.937500 0.500000 +vt 0.953125 1.000000 +vt 0.937500 0.937500 +vt 0.953125 0.000000 +vt 0.937500 0.437500 +vt 0.937500 0.875000 +vt 0.937500 0.375000 +vt 0.937500 0.812500 +vt 0.937500 0.312500 +vt 0.937500 0.750000 +vt 0.906250 0.937500 +vt 0.906250 0.875000 +vt 0.906250 0.437500 +vt 0.906250 0.375000 +vt 0.906250 0.812500 +vt 0.906250 0.312500 +vt 0.906250 0.750000 +vt 0.906250 0.250000 +vt 0.906250 0.687500 +vt 0.906250 0.187500 +vt 0.906250 0.625000 +vt 0.906250 0.125000 +vt 0.906250 0.562500 +vt 0.906250 0.062500 +vt 0.906250 0.500000 +vt 0.921875 1.000000 +vt 0.921875 0.000000 +vt 0.875000 0.687500 +vt 0.875000 0.625000 +vt 0.875000 0.187500 +vt 0.875000 0.125000 +vt 0.875000 0.562500 +vt 0.875000 0.062500 +vt 0.875000 0.500000 +vt 0.890625 1.000000 +vt 0.875000 0.937500 +vt 0.890625 0.000000 +vt 0.875000 0.437500 +vt 0.875000 0.875000 +vt 0.875000 0.375000 +vt 0.875000 0.812500 +vt 0.875000 0.312500 +vt 0.875000 0.750000 +vt 0.875000 0.250000 +vt 0.843750 0.437500 +vt 0.843750 0.375000 +vt 0.843750 0.875000 +vt 0.843750 0.812500 +vt 0.843750 0.312500 +vt 0.843750 0.750000 +vt 0.843750 0.250000 +vt 0.843750 0.687500 +vt 0.843750 0.187500 +vt 0.843750 0.625000 +vt 0.843750 0.125000 +vt 0.843750 0.562500 +vt 0.843750 0.062500 +vt 0.843750 0.500000 +vt 0.859375 1.000000 +vt 0.843750 0.937500 +vt 0.859375 0.000000 +vt 0.812500 0.187500 +vt 0.812500 0.125000 +vt 0.812500 0.625000 +vt 0.812500 0.562500 +vt 0.812500 0.062500 +vt 0.812500 0.500000 +vt 0.828125 1.000000 +vt 0.812500 0.937500 +vt 0.828125 0.000000 +vt 0.812500 0.437500 +vt 0.812500 0.875000 +vt 0.812500 0.375000 +vt 0.812500 0.812500 +vt 0.812500 0.312500 +vt 0.812500 0.750000 +vt 0.812500 0.250000 +vt 0.812500 0.687500 +vt 0.781250 0.875000 +vt 0.781250 0.812500 +vt 0.781250 0.375000 +vt 0.781250 0.312500 +vt 0.781250 0.750000 +vt 0.781250 0.250000 +vt 0.781250 0.687500 +vt 0.781250 0.187500 +vt 0.781250 0.625000 +vt 0.781250 0.125000 +vt 0.781250 0.562500 +vt 0.781250 0.062500 +vt 0.781250 0.500000 +vt 0.796875 1.000000 +vt 0.781250 0.937500 +vt 0.796875 0.000000 +vt 0.781250 0.437500 +vt 0.765625 1.000000 +vt 0.765625 0.000000 +vn 0.0000 -0.9217 -0.3879 +vn 0.0000 -0.8286 -0.5598 +vn 0.1092 -0.8286 -0.5490 +vn 0.0757 -0.9217 -0.3804 +vn 0.0000 0.1939 -0.9810 +vn 0.0000 0.3805 -0.9247 +vn 0.1804 0.3805 -0.9070 +vn 0.1914 0.1939 -0.9622 +vn 0.0000 -0.9796 -0.2010 +vn 0.0392 -0.9796 -0.1971 +vn 0.0000 0.0000 -1.0000 +vn 0.1951 0.0000 -0.9808 +vn 0.0000 0.9796 -0.2010 +vn 0.0000 1.0000 0.0000 +vn 0.0392 0.9796 -0.1971 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.1939 -0.9810 +vn 0.1914 -0.1939 -0.9622 +vn 0.0000 0.9217 -0.3879 +vn 0.0757 0.9217 -0.3804 +vn 0.0000 -0.3805 -0.9247 +vn 0.1804 -0.3805 -0.9070 +vn 0.0000 0.8286 -0.5598 +vn 0.1092 0.8286 -0.5490 +vn 0.0000 -0.5528 -0.8333 +vn 0.1626 -0.5528 -0.8173 +vn 0.0000 0.7040 -0.7101 +vn 0.1385 0.7040 -0.6965 +vn 0.0000 -0.7040 -0.7101 +vn 0.1385 -0.7040 -0.6965 +vn 0.0000 0.5528 -0.8333 +vn 0.1626 0.5528 -0.8173 +vn 0.2717 -0.7040 -0.6561 +vn 0.2142 -0.8286 -0.5171 +vn 0.3189 0.5528 -0.7699 +vn 0.3539 0.3805 -0.8544 +vn 0.1484 -0.9217 -0.3583 +vn 0.3754 0.1939 -0.9063 +vn 0.0769 -0.9796 -0.1856 +vn 0.3827 0.0000 -0.9239 +vn 0.0769 0.9796 -0.1856 +vn 0.3754 -0.1939 -0.9063 +vn 0.1484 0.9217 -0.3583 +vn 0.3539 -0.3805 -0.8544 +vn 0.2142 0.8286 -0.5171 +vn 0.3189 -0.5528 -0.7699 +vn 0.2717 0.7040 -0.6561 +vn 0.1116 0.9796 -0.1671 +vn 0.2155 0.9217 -0.3225 +vn 0.5450 -0.1939 -0.8157 +vn 0.5137 -0.3805 -0.7689 +vn 0.3110 0.8286 -0.4654 +vn 0.4630 -0.5528 -0.6929 +vn 0.3945 0.7040 -0.5904 +vn 0.3945 -0.7040 -0.5904 +vn 0.4630 0.5528 -0.6929 +vn 0.3110 -0.8286 -0.4654 +vn 0.5137 0.3805 -0.7689 +vn 0.2155 -0.9217 -0.3225 +vn 0.5450 0.1939 -0.8157 +vn 0.1116 -0.9796 -0.1671 +vn 0.5556 0.0000 -0.8314 +vn 0.5893 0.5528 -0.5893 +vn 0.6539 0.3805 -0.6539 +vn 0.3958 -0.8286 -0.3958 +vn 0.2743 -0.9217 -0.2743 +vn 0.6937 0.1939 -0.6937 +vn 0.1421 -0.9796 -0.1421 +vn 0.7071 0.0000 -0.7071 +vn 0.1421 0.9796 -0.1421 +vn 0.6937 -0.1939 -0.6937 +vn 0.2743 0.9217 -0.2743 +vn 0.6539 -0.3805 -0.6539 +vn 0.3958 0.8286 -0.3958 +vn 0.5893 -0.5528 -0.5893 +vn 0.5021 0.7040 -0.5021 +vn 0.5021 -0.7040 -0.5021 +vn 0.8157 -0.1939 -0.5450 +vn 0.7689 -0.3805 -0.5137 +vn 0.3225 0.9217 -0.2155 +vn 0.4654 0.8286 -0.3110 +vn 0.6929 -0.5528 -0.4630 +vn 0.5904 0.7040 -0.3945 +vn 0.5904 -0.7040 -0.3945 +vn 0.6929 0.5528 -0.4630 +vn 0.4654 -0.8286 -0.3110 +vn 0.7689 0.3805 -0.5137 +vn 0.3225 -0.9217 -0.2155 +vn 0.8157 0.1939 -0.5450 +vn 0.1671 -0.9796 -0.1116 +vn 0.8314 0.0000 -0.5556 +vn 0.1671 0.9796 -0.1116 +vn 0.5171 -0.8286 -0.2142 +vn 0.3583 -0.9217 -0.1484 +vn 0.8544 0.3805 -0.3539 +vn 0.9063 0.1939 -0.3754 +vn 0.1856 -0.9796 -0.0769 +vn 0.9239 0.0000 -0.3827 +vn 0.1856 0.9796 -0.0769 +vn 0.9063 -0.1939 -0.3754 +vn 0.3583 0.9217 -0.1484 +vn 0.8544 -0.3805 -0.3539 +vn 0.5171 0.8286 -0.2142 +vn 0.7699 -0.5528 -0.3189 +vn 0.6561 0.7040 -0.2717 +vn 0.6561 -0.7040 -0.2717 +vn 0.7699 0.5528 -0.3189 +vn 0.9070 -0.3805 -0.1804 +vn 0.8173 -0.5528 -0.1626 +vn 0.5490 0.8286 -0.1092 +vn 0.6965 0.7040 -0.1385 +vn 0.6965 -0.7040 -0.1385 +vn 0.8173 0.5528 -0.1626 +vn 0.5490 -0.8286 -0.1092 +vn 0.9070 0.3805 -0.1804 +vn 0.3804 -0.9217 -0.0757 +vn 0.9622 0.1939 -0.1914 +vn 0.1971 -0.9796 -0.0392 +vn 0.9808 0.0000 -0.1951 +vn 0.1971 0.9796 -0.0392 +vn 0.9622 -0.1939 -0.1914 +vn 0.3804 0.9217 -0.0757 +vn 0.3879 -0.9217 0.0000 +vn 0.2010 -0.9796 0.0000 +vn 0.9810 0.1939 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.2010 0.9796 0.0000 +vn 0.9810 -0.1939 0.0000 +vn 0.3879 0.9217 0.0000 +vn 0.9247 -0.3805 0.0000 +vn 0.5598 0.8286 0.0000 +vn 0.8333 -0.5528 0.0000 +vn 0.7101 0.7040 0.0000 +vn 0.7101 -0.7040 0.0000 +vn 0.8333 0.5528 0.0000 +vn 0.5598 -0.8286 0.0000 +vn 0.9247 0.3805 0.0000 +vn 0.5490 0.8286 0.1092 +vn 0.6965 0.7040 0.1385 +vn 0.8173 -0.5528 0.1626 +vn 0.6965 -0.7040 0.1385 +vn 0.8173 0.5528 0.1626 +vn 0.5490 -0.8286 0.1092 +vn 0.9070 0.3805 0.1804 +vn 0.3804 -0.9217 0.0757 +vn 0.9622 0.1939 0.1914 +vn 0.1971 -0.9796 0.0392 +vn 0.9808 0.0000 0.1951 +vn 0.1971 0.9796 0.0392 +vn 0.9622 -0.1939 0.1914 +vn 0.3804 0.9217 0.0757 +vn 0.9070 -0.3805 0.1804 +vn 0.9063 0.1939 0.3754 +vn 0.9239 0.0000 0.3827 +vn 0.1856 0.9796 0.0769 +vn 0.1856 -0.9796 0.0769 +vn 0.9063 -0.1939 0.3754 +vn 0.3583 0.9217 0.1484 +vn 0.8544 -0.3805 0.3539 +vn 0.5171 0.8286 0.2142 +vn 0.7699 -0.5528 0.3189 +vn 0.6561 0.7040 0.2717 +vn 0.6561 -0.7040 0.2717 +vn 0.7699 0.5528 0.3189 +vn 0.5171 -0.8286 0.2142 +vn 0.8544 0.3805 0.3539 +vn 0.3583 -0.9217 0.1484 +vn 0.6929 -0.5528 0.4630 +vn 0.5904 -0.7040 0.3945 +vn 0.5904 0.7040 0.3945 +vn 0.6929 0.5528 0.4630 +vn 0.4654 -0.8286 0.3110 +vn 0.7689 0.3805 0.5137 +vn 0.3225 -0.9217 0.2155 +vn 0.8157 0.1939 0.5450 +vn 0.1671 -0.9796 0.1116 +vn 0.8314 0.0000 0.5556 +vn 0.1671 0.9796 0.1116 +vn 0.8157 -0.1939 0.5450 +vn 0.3225 0.9217 0.2155 +vn 0.7689 -0.3805 0.5137 +vn 0.4654 0.8286 0.3110 +vn 0.1421 0.9796 0.1421 +vn 0.1421 -0.9796 0.1421 +vn 0.7071 0.0000 0.7071 +vn 0.6937 -0.1939 0.6937 +vn 0.2743 0.9217 0.2743 +vn 0.6539 -0.3805 0.6539 +vn 0.3958 0.8286 0.3958 +vn 0.5893 -0.5528 0.5893 +vn 0.5021 0.7040 0.5021 +vn 0.5021 -0.7040 0.5021 +vn 0.5893 0.5528 0.5893 +vn 0.3958 -0.8286 0.3958 +vn 0.6539 0.3805 0.6539 +vn 0.2743 -0.9217 0.2743 +vn 0.6937 0.1939 0.6937 +vn 0.3945 0.7040 0.5904 +vn 0.4630 0.5528 0.6929 +vn 0.3945 -0.7040 0.5904 +vn 0.3110 -0.8286 0.4654 +vn 0.5137 0.3805 0.7689 +vn 0.2155 -0.9217 0.3225 +vn 0.5450 0.1939 0.8157 +vn 0.1116 -0.9796 0.1671 +vn 0.5556 0.0000 0.8314 +vn 0.1116 0.9796 0.1671 +vn 0.5450 -0.1939 0.8157 +vn 0.2155 0.9217 0.3225 +vn 0.5137 -0.3805 0.7689 +vn 0.3110 0.8286 0.4654 +vn 0.4630 -0.5528 0.6929 +vn 0.3827 0.0000 0.9239 +vn 0.3754 -0.1939 0.9063 +vn 0.0769 0.9796 0.1856 +vn 0.1484 0.9217 0.3583 +vn 0.3539 -0.3805 0.8544 +vn 0.2142 0.8286 0.5171 +vn 0.3189 -0.5528 0.7699 +vn 0.2717 0.7040 0.6561 +vn 0.2717 -0.7040 0.6561 +vn 0.3189 0.5528 0.7699 +vn 0.2142 -0.8286 0.5171 +vn 0.3539 0.3805 0.8544 +vn 0.1484 -0.9217 0.3583 +vn 0.3754 0.1939 0.9063 +vn 0.0769 -0.9796 0.1856 +vn 0.1385 -0.7040 0.6965 +vn 0.1092 -0.8286 0.5490 +vn 0.1626 0.5528 0.8173 +vn 0.1804 0.3805 0.9070 +vn 0.0757 -0.9217 0.3804 +vn 0.1914 0.1939 0.9622 +vn 0.0392 -0.9796 0.1971 +vn 0.1951 0.0000 0.9808 +vn 0.0392 0.9796 0.1971 +vn 0.1914 -0.1939 0.9622 +vn 0.0757 0.9217 0.3804 +vn 0.1804 -0.3805 0.9070 +vn 0.1092 0.8286 0.5490 +vn 0.1626 -0.5528 0.8173 +vn 0.1385 0.7040 0.6965 +vn 0.0000 -0.1939 0.9810 +vn 0.0000 -0.3805 0.9247 +vn 0.0000 0.9217 0.3879 +vn 0.0000 0.8286 0.5598 +vn 0.0000 -0.5528 0.8333 +vn 0.0000 0.7040 0.7101 +vn 0.0000 -0.7040 0.7101 +vn 0.0000 0.5528 0.8333 +vn 0.0000 -0.8286 0.5598 +vn 0.0000 0.3805 0.9247 +vn 0.0000 -0.9217 0.3879 +vn 0.0000 0.1939 0.9810 +vn 0.0000 -0.9796 0.2010 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.9796 0.2010 +vn -0.1092 -0.8286 0.5490 +vn -0.0757 -0.9217 0.3804 +vn -0.1804 0.3805 0.9070 +vn -0.1914 0.1939 0.9622 +vn -0.0392 -0.9796 0.1971 +vn -0.1951 0.0000 0.9808 +vn -0.0392 0.9796 0.1971 +vn -0.1914 -0.1939 0.9622 +vn -0.0757 0.9217 0.3804 +vn -0.1804 -0.3805 0.9070 +vn -0.1092 0.8286 0.5490 +vn -0.1626 -0.5528 0.8173 +vn -0.1385 0.7040 0.6965 +vn -0.1385 -0.7040 0.6965 +vn -0.1626 0.5528 0.8173 +vn -0.1484 0.9217 0.3583 +vn -0.2142 0.8286 0.5171 +vn -0.3539 -0.3805 0.8544 +vn -0.3189 -0.5528 0.7699 +vn -0.2717 0.7040 0.6561 +vn -0.2717 -0.7040 0.6561 +vn -0.3189 0.5528 0.7699 +vn -0.2142 -0.8286 0.5171 +vn -0.3539 0.3805 0.8544 +vn -0.1484 -0.9217 0.3583 +vn -0.3754 0.1939 0.9063 +vn -0.0769 -0.9796 0.1856 +vn -0.3827 0.0000 0.9239 +vn -0.0769 0.9796 0.1856 +vn -0.3754 -0.1939 0.9063 +vn -0.5137 0.3805 0.7689 +vn -0.5450 0.1939 0.8157 +vn -0.2155 -0.9217 0.3225 +vn -0.1116 -0.9796 0.1671 +vn -0.5556 0.0000 0.8314 +vn -0.1116 0.9796 0.1671 +vn -0.5450 -0.1939 0.8157 +vn -0.2155 0.9217 0.3225 +vn -0.5137 -0.3805 0.7689 +vn -0.3110 0.8286 0.4654 +vn -0.4630 -0.5528 0.6929 +vn -0.3945 0.7040 0.5904 +vn -0.3945 -0.7040 0.5904 +vn -0.4630 0.5528 0.6929 +vn -0.3110 -0.8286 0.4654 +vn -0.6539 -0.3805 0.6539 +vn -0.5893 -0.5528 0.5893 +vn -0.3958 0.8286 0.3958 +vn -0.5021 0.7040 0.5021 +vn -0.5021 -0.7040 0.5021 +vn -0.5893 0.5528 0.5893 +vn -0.3958 -0.8286 0.3958 +vn -0.6539 0.3805 0.6539 +vn -0.2743 -0.9217 0.2743 +vn -0.6937 0.1939 0.6937 +vn -0.1421 -0.9796 0.1421 +vn -0.7071 0.0000 0.7071 +vn -0.1421 0.9796 0.1421 +vn -0.6937 -0.1939 0.6937 +vn -0.2743 0.9217 0.2743 +vn -0.3225 -0.9217 0.2155 +vn -0.1671 -0.9796 0.1116 +vn -0.8157 0.1939 0.5450 +vn -0.8314 0.0000 0.5556 +vn -0.1671 0.9796 0.1116 +vn -0.8157 -0.1939 0.5450 +vn -0.3225 0.9217 0.2155 +vn -0.7689 -0.3805 0.5137 +vn -0.4654 0.8286 0.3110 +vn -0.6929 -0.5528 0.4630 +vn -0.5904 0.7040 0.3945 +vn -0.5904 -0.7040 0.3945 +vn -0.6929 0.5528 0.4630 +vn -0.4654 -0.8286 0.3110 +vn -0.7689 0.3805 0.5137 +vn -0.5171 0.8286 0.2142 +vn -0.6561 0.7040 0.2717 +vn -0.7699 -0.5528 0.3189 +vn -0.6561 -0.7040 0.2717 +vn -0.7699 0.5528 0.3189 +vn -0.5171 -0.8286 0.2142 +vn -0.8544 0.3805 0.3539 +vn -0.3583 -0.9217 0.1484 +vn -0.9063 0.1939 0.3754 +vn -0.1856 -0.9796 0.0769 +vn -0.9239 0.0000 0.3827 +vn -0.1856 0.9796 0.0769 +vn -0.9063 -0.1939 0.3754 +vn -0.3583 0.9217 0.1484 +vn -0.8544 -0.3805 0.3539 +vn -0.9622 0.1939 0.1914 +vn -0.9808 0.0000 0.1951 +vn -0.1971 0.9796 0.0392 +vn -0.1971 -0.9796 0.0392 +vn -0.9622 -0.1939 0.1914 +vn -0.3804 0.9217 0.0757 +vn -0.9070 -0.3805 0.1804 +vn -0.5490 0.8286 0.1092 +vn -0.8173 -0.5528 0.1626 +vn -0.6965 0.7040 0.1385 +vn -0.6965 -0.7040 0.1385 +vn -0.8173 0.5528 0.1626 +vn -0.5490 -0.8286 0.1092 +vn -0.9070 0.3805 0.1804 +vn -0.3804 -0.9217 0.0757 +vn -0.8333 -0.5528 0.0000 +vn -0.7101 -0.7040 0.0000 +vn -0.7101 0.7040 0.0000 +vn -0.8333 0.5528 0.0000 +vn -0.5598 -0.8286 0.0000 +vn -0.9247 0.3805 0.0000 +vn -0.3879 -0.9217 0.0000 +vn -0.9810 0.1939 0.0000 +vn -0.2010 -0.9796 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.2010 0.9796 0.0000 +vn -0.9810 -0.1939 0.0000 +vn -0.3879 0.9217 0.0000 +vn -0.9247 -0.3805 0.0000 +vn -0.5598 0.8286 0.0000 +vn -0.1971 -0.9796 -0.0392 +vn -0.9808 0.0000 -0.1951 +vn -0.9622 -0.1939 -0.1914 +vn -0.1971 0.9796 -0.0392 +vn -0.3804 0.9217 -0.0757 +vn -0.9070 -0.3805 -0.1804 +vn -0.5490 0.8286 -0.1092 +vn -0.8173 -0.5528 -0.1626 +vn -0.6965 0.7040 -0.1385 +vn -0.6965 -0.7040 -0.1385 +vn -0.8173 0.5528 -0.1626 +vn -0.5490 -0.8286 -0.1092 +vn -0.9070 0.3805 -0.1804 +vn -0.3804 -0.9217 -0.0757 +vn -0.9622 0.1939 -0.1914 +vn -0.6561 -0.7040 -0.2717 +vn -0.5171 -0.8286 -0.2142 +vn -0.7699 0.5528 -0.3189 +vn -0.8544 0.3805 -0.3539 +vn -0.3583 -0.9217 -0.1484 +vn -0.9063 0.1939 -0.3754 +vn -0.1856 -0.9796 -0.0769 +vn -0.9239 0.0000 -0.3827 +vn -0.1856 0.9796 -0.0769 +vn -0.9063 -0.1939 -0.3754 +vn -0.3583 0.9217 -0.1484 +vn -0.8544 -0.3805 -0.3539 +vn -0.5171 0.8286 -0.2142 +vn -0.7699 -0.5528 -0.3189 +vn -0.6561 0.7040 -0.2717 +vn -0.1671 0.9796 -0.1116 +vn -0.3225 0.9217 -0.2155 +vn -0.8157 -0.1939 -0.5450 +vn -0.7689 -0.3805 -0.5137 +vn -0.4654 0.8286 -0.3110 +vn -0.6929 -0.5528 -0.4630 +vn -0.5904 0.7040 -0.3945 +vn -0.5904 -0.7040 -0.3945 +vn -0.6929 0.5528 -0.4630 +vn -0.4654 -0.8286 -0.3110 +vn -0.7689 0.3805 -0.5137 +vn -0.3225 -0.9217 -0.2155 +vn -0.8157 0.1939 -0.5450 +vn -0.1671 -0.9796 -0.1116 +vn -0.8314 0.0000 -0.5556 +vn -0.5893 0.5528 -0.5893 +vn -0.6539 0.3805 -0.6539 +vn -0.3958 -0.8286 -0.3958 +vn -0.2743 -0.9217 -0.2743 +vn -0.6937 0.1939 -0.6937 +vn -0.1421 -0.9796 -0.1421 +vn -0.7071 0.0000 -0.7071 +vn -0.1421 0.9796 -0.1421 +vn -0.6937 -0.1939 -0.6937 +vn -0.2743 0.9217 -0.2743 +vn -0.6539 -0.3805 -0.6539 +vn -0.3958 0.8286 -0.3958 +vn -0.5893 -0.5528 -0.5893 +vn -0.5021 0.7040 -0.5021 +vn -0.5021 -0.7040 -0.5021 +vn -0.5450 -0.1939 -0.8157 +vn -0.5137 -0.3805 -0.7689 +vn -0.2155 0.9217 -0.3225 +vn -0.3110 0.8286 -0.4654 +vn -0.4630 -0.5528 -0.6929 +vn -0.3945 0.7040 -0.5904 +vn -0.3945 -0.7040 -0.5904 +vn -0.4630 0.5528 -0.6929 +vn -0.3110 -0.8286 -0.4654 +vn -0.5137 0.3805 -0.7689 +vn -0.2155 -0.9217 -0.3225 +vn -0.5450 0.1939 -0.8157 +vn -0.1116 -0.9796 -0.1671 +vn -0.5556 0.0000 -0.8314 +vn -0.1116 0.9796 -0.1671 +vn -0.2142 -0.8286 -0.5171 +vn -0.1484 -0.9217 -0.3583 +vn -0.3539 0.3805 -0.8544 +vn -0.3754 0.1939 -0.9063 +vn -0.0769 -0.9796 -0.1856 +vn -0.3827 0.0000 -0.9239 +vn -0.0769 0.9796 -0.1856 +vn -0.3754 -0.1939 -0.9063 +vn -0.1484 0.9217 -0.3583 +vn -0.3539 -0.3805 -0.8544 +vn -0.2142 0.8286 -0.5171 +vn -0.3189 -0.5528 -0.7699 +vn -0.2717 0.7040 -0.6561 +vn -0.2717 -0.7040 -0.6561 +vn -0.3189 0.5528 -0.7699 +vn -0.0757 0.9217 -0.3804 +vn -0.1092 0.8286 -0.5490 +vn -0.1804 -0.3805 -0.9070 +vn -0.1626 -0.5528 -0.8173 +vn -0.1385 0.7040 -0.6965 +vn -0.1385 -0.7040 -0.6965 +vn -0.1626 0.5528 -0.8173 +vn -0.1092 -0.8286 -0.5490 +vn -0.1804 0.3805 -0.9070 +vn -0.0757 -0.9217 -0.3804 +vn -0.1914 0.1939 -0.9622 +vn -0.0392 -0.9796 -0.1971 +vn -0.1951 0.0000 -0.9808 +vn -0.0392 0.9796 -0.1971 +vn -0.1914 -0.1939 -0.9622 +usemtl None +s 1 +f 480/1/1 10/2/2 23/3/3 24/4/4 +f 7/5/5 6/6/6 16/7/7 17/8/8 +f 481/9/9 480/1/1 24/4/4 25/10/10 +f 477/11/11 7/5/5 17/8/8 18/12/12 +f 1/13/13 326/14/14 11/15/15 +f 482/16/16 481/9/9 25/10/10 +f 478/17/17 477/11/11 18/12/12 19/18/18 +f 2/19/19 1/13/13 11/15/15 12/20/20 +f 479/21/21 478/17/17 19/18/18 20/22/22 +f 3/23/23 2/19/19 12/20/20 13/24/24 +f 8/25/25 479/21/21 20/22/22 21/26/26 +f 4/27/27 3/23/23 13/24/24 14/28/28 +f 9/29/29 8/25/25 21/26/26 22/30/30 +f 5/31/31 4/27/27 14/28/28 15/32/32 +f 10/2/2 9/29/29 22/30/30 23/3/3 +f 6/6/6 5/31/31 15/32/32 16/7/7 +f 23/3/3 22/30/30 37/33/33 38/34/34 +f 16/7/7 15/32/32 30/35/35 31/36/36 +f 24/4/4 23/3/3 38/34/34 39/37/37 +f 17/8/8 16/7/7 31/36/36 32/38/38 +f 25/10/10 24/4/4 39/37/37 40/39/39 +f 18/12/12 17/8/8 32/38/38 33/40/40 +f 11/15/15 326/41/14 26/42/41 +f 482/43/16 25/10/10 40/39/39 +f 19/18/18 18/12/12 33/40/40 34/44/42 +f 12/20/20 11/15/15 26/42/41 27/45/43 +f 20/22/22 19/18/18 34/44/42 35/46/44 +f 13/24/24 12/20/20 27/45/43 28/47/45 +f 21/26/26 20/22/22 35/46/44 36/48/46 +f 14/28/28 13/24/24 28/47/45 29/49/47 +f 22/30/30 21/26/26 36/48/46 37/33/33 +f 15/32/32 14/28/28 29/49/47 30/35/35 +f 27/45/43 26/42/41 41/50/48 42/51/49 +f 35/46/44 34/44/42 49/52/50 50/53/51 +f 28/47/45 27/45/43 42/51/49 43/54/52 +f 36/48/46 35/46/44 50/53/51 51/55/53 +f 29/49/47 28/47/45 43/54/52 44/56/54 +f 37/33/33 36/48/46 51/55/53 52/57/55 +f 30/35/35 29/49/47 44/56/54 45/58/56 +f 38/34/34 37/33/33 52/57/55 53/59/57 +f 31/36/36 30/35/35 45/58/56 46/60/58 +f 39/37/37 38/34/34 53/59/57 54/61/59 +f 32/38/38 31/36/36 46/60/58 47/62/60 +f 40/39/39 39/37/37 54/61/59 55/63/61 +f 33/40/40 32/38/38 47/62/60 48/64/62 +f 26/42/41 326/65/14 41/50/48 +f 482/66/16 40/39/39 55/63/61 +f 34/44/42 33/40/40 48/64/62 49/52/50 +f 46/60/58 45/58/56 60/67/63 61/68/64 +f 54/61/59 53/59/57 68/69/65 69/70/66 +f 47/62/60 46/60/58 61/68/64 62/71/67 +f 55/63/61 54/61/59 69/70/66 70/72/68 +f 48/64/62 47/62/60 62/71/67 63/73/69 +f 41/50/48 326/74/14 56/75/70 +f 482/76/16 55/63/61 70/72/68 +f 49/52/50 48/64/62 63/73/69 64/77/71 +f 42/51/49 41/50/48 56/75/70 57/78/72 +f 50/53/51 49/52/50 64/77/71 65/79/73 +f 43/54/52 42/51/49 57/78/72 58/80/74 +f 51/55/53 50/53/51 65/79/73 66/81/75 +f 44/56/54 43/54/52 58/80/74 59/82/76 +f 52/57/55 51/55/53 66/81/75 67/83/77 +f 45/58/56 44/56/54 59/82/76 60/67/63 +f 53/59/57 52/57/55 67/83/77 68/69/65 +f 65/79/73 64/77/71 79/84/78 80/85/79 +f 58/80/74 57/78/72 72/86/80 73/87/81 +f 66/81/75 65/79/73 80/85/79 81/88/82 +f 59/82/76 58/80/74 73/87/81 74/89/83 +f 67/83/77 66/81/75 81/88/82 82/90/84 +f 60/67/63 59/82/76 74/89/83 75/91/85 +f 68/69/65 67/83/77 82/90/84 83/92/86 +f 61/68/64 60/67/63 75/91/85 76/93/87 +f 69/70/66 68/69/65 83/92/86 84/94/88 +f 62/71/67 61/68/64 76/93/87 77/95/89 +f 70/72/68 69/70/66 84/94/88 85/96/90 +f 63/73/69 62/71/67 77/95/89 78/97/91 +f 56/75/70 326/98/14 71/99/92 +f 482/100/16 70/72/68 85/96/90 +f 64/77/71 63/73/69 78/97/91 79/84/78 +f 57/78/72 56/75/70 71/99/92 72/86/80 +f 84/94/88 83/92/86 98/101/93 99/102/94 +f 77/95/89 76/93/87 91/103/95 92/104/96 +f 85/96/90 84/94/88 99/102/94 100/105/97 +f 78/97/91 77/95/89 92/104/96 93/106/98 +f 71/99/92 326/107/14 86/108/99 +f 482/109/16 85/96/90 100/105/97 +f 79/84/78 78/97/91 93/106/98 94/110/100 +f 72/86/80 71/99/92 86/108/99 87/111/101 +f 80/85/79 79/84/78 94/110/100 95/112/102 +f 73/87/81 72/86/80 87/111/101 88/113/103 +f 81/88/82 80/85/79 95/112/102 96/114/104 +f 74/89/83 73/87/81 88/113/103 89/115/105 +f 82/90/84 81/88/82 96/114/104 97/116/106 +f 75/91/85 74/89/83 89/115/105 90/117/107 +f 83/92/86 82/90/84 97/116/106 98/101/93 +f 76/93/87 75/91/85 90/117/107 91/103/95 +f 96/114/104 95/112/102 110/118/108 111/119/109 +f 89/115/105 88/113/103 103/120/110 104/121/111 +f 97/116/106 96/114/104 111/119/109 112/122/112 +f 90/117/107 89/115/105 104/121/111 105/123/113 +f 98/101/93 97/116/106 112/122/112 113/124/114 +f 91/103/95 90/117/107 105/123/113 106/125/115 +f 99/102/94 98/101/93 113/124/114 114/126/116 +f 92/104/96 91/103/95 106/125/115 107/127/117 +f 100/105/97 99/102/94 114/126/116 115/128/118 +f 93/106/98 92/104/96 107/127/117 108/129/119 +f 86/108/99 326/130/14 101/131/120 +f 482/132/16 100/105/97 115/128/118 +f 94/110/100 93/106/98 108/129/119 109/133/121 +f 87/111/101 86/108/99 101/131/120 102/134/122 +f 95/112/102 94/110/100 109/133/121 110/118/108 +f 88/113/103 87/111/101 102/134/122 103/120/110 +f 115/128/118 114/126/116 129/135/123 130/136/124 +f 108/129/119 107/127/117 122/137/125 123/138/126 +f 101/131/120 326/139/14 116/140/127 +f 482/141/16 115/128/118 130/136/124 +f 109/133/121 108/129/119 123/138/126 124/142/128 +f 102/134/122 101/131/120 116/140/127 117/143/129 +f 110/118/108 109/133/121 124/142/128 125/144/130 +f 103/120/110 102/134/122 117/143/129 118/145/131 +f 111/119/109 110/118/108 125/144/130 126/146/132 +f 104/121/111 103/120/110 118/145/131 119/147/133 +f 112/122/112 111/119/109 126/146/132 127/148/134 +f 105/123/113 104/121/111 119/147/133 120/149/135 +f 113/124/114 112/122/112 127/148/134 128/150/136 +f 106/125/115 105/123/113 120/149/135 121/151/137 +f 114/126/116 113/124/114 128/150/136 129/135/123 +f 107/127/117 106/125/115 121/151/137 122/137/125 +f 119/147/133 118/145/131 133/152/138 134/153/139 +f 127/148/134 126/146/132 141/154/140 142/155/141 +f 120/149/135 119/147/133 134/153/139 135/156/142 +f 128/150/136 127/148/134 142/155/141 143/157/143 +f 121/151/137 120/149/135 135/156/142 136/158/144 +f 129/135/123 128/150/136 143/157/143 144/159/145 +f 122/137/125 121/151/137 136/158/144 137/160/146 +f 130/136/124 129/135/123 144/159/145 145/161/147 +f 123/138/126 122/137/125 137/160/146 138/162/148 +f 116/140/127 326/163/14 131/164/149 +f 482/165/16 130/136/124 145/161/147 +f 124/142/128 123/138/126 138/162/148 139/166/150 +f 117/143/129 116/140/127 131/164/149 132/167/151 +f 125/144/130 124/142/128 139/166/150 140/168/152 +f 118/145/131 117/143/129 132/167/151 133/152/138 +f 126/146/132 125/144/130 140/168/152 141/154/140 +f 138/162/148 137/160/146 152/169/153 153/170/154 +f 131/164/149 326/171/14 146/172/155 +f 482/173/16 145/161/147 160/174/156 +f 139/166/150 138/162/148 153/170/154 154/175/157 +f 132/167/151 131/164/149 146/172/155 147/176/158 +f 140/168/152 139/166/150 154/175/157 155/177/159 +f 133/152/138 132/167/151 147/176/158 148/178/160 +f 141/154/140 140/168/152 155/177/159 156/179/161 +f 134/153/139 133/152/138 148/178/160 149/180/162 +f 142/155/141 141/154/140 156/179/161 157/181/163 +f 135/156/142 134/153/139 149/180/162 150/182/164 +f 143/157/143 142/155/141 157/181/163 158/183/165 +f 136/158/144 135/156/142 150/182/164 151/184/166 +f 144/159/145 143/157/143 158/183/165 159/185/167 +f 137/160/146 136/158/144 151/184/166 152/169/153 +f 145/161/147 144/159/145 159/185/167 160/174/156 +f 157/181/163 156/179/161 171/186/168 172/187/169 +f 150/182/164 149/180/162 164/188/170 165/189/171 +f 158/183/165 157/181/163 172/187/169 173/190/172 +f 151/184/166 150/182/164 165/189/171 166/191/173 +f 159/185/167 158/183/165 173/190/172 174/192/174 +f 152/169/153 151/184/166 166/191/173 167/193/175 +f 160/174/156 159/185/167 174/192/174 175/194/176 +f 153/170/154 152/169/153 167/193/175 168/195/177 +f 146/172/155 326/196/14 161/197/178 +f 482/198/16 160/174/156 175/194/176 +f 154/175/157 153/170/154 168/195/177 169/199/179 +f 147/176/158 146/172/155 161/197/178 162/200/180 +f 155/177/159 154/175/157 169/199/179 170/201/181 +f 148/178/160 147/176/158 162/200/180 163/202/182 +f 156/179/161 155/177/159 170/201/181 171/186/168 +f 149/180/162 148/178/160 163/202/182 164/188/170 +f 161/197/178 326/203/14 176/204/183 +f 482/205/16 175/194/176 190/206/184 +f 169/199/179 168/195/177 183/207/185 184/208/186 +f 162/200/180 161/197/178 176/204/183 177/209/187 +f 170/201/181 169/199/179 184/208/186 185/210/188 +f 163/202/182 162/200/180 177/209/187 178/211/189 +f 171/186/168 170/201/181 185/210/188 186/212/190 +f 164/188/170 163/202/182 178/211/189 179/213/191 +f 172/187/169 171/186/168 186/212/190 187/214/192 +f 165/189/171 164/188/170 179/213/191 180/215/193 +f 173/190/172 172/187/169 187/214/192 188/216/194 +f 166/191/173 165/189/171 180/215/193 181/217/195 +f 174/192/174 173/190/172 188/216/194 189/218/196 +f 167/193/175 166/191/173 181/217/195 182/219/197 +f 175/194/176 174/192/174 189/218/196 190/206/184 +f 168/195/177 167/193/175 182/219/197 183/207/185 +f 180/215/193 179/213/191 194/220/198 195/221/199 +f 188/216/194 187/214/192 202/222/200 203/223/201 +f 181/217/195 180/215/193 195/221/199 196/224/202 +f 189/218/196 188/216/194 203/223/201 204/225/203 +f 182/219/197 181/217/195 196/224/202 197/226/204 +f 190/206/184 189/218/196 204/225/203 205/227/205 +f 183/207/185 182/219/197 197/226/204 198/228/206 +f 176/204/183 326/229/14 191/230/207 +f 482/231/16 190/206/184 205/227/205 +f 184/208/186 183/207/185 198/228/206 199/232/208 +f 177/209/187 176/204/183 191/230/207 192/233/209 +f 185/210/188 184/208/186 199/232/208 200/234/210 +f 178/211/189 177/209/187 192/233/209 193/235/211 +f 186/212/190 185/210/188 200/234/210 201/236/212 +f 179/213/191 178/211/189 193/235/211 194/220/198 +f 187/214/192 186/212/190 201/236/212 202/222/200 +f 199/232/208 198/228/206 213/237/213 214/238/214 +f 192/233/209 191/230/207 206/239/215 207/240/216 +f 200/234/210 199/232/208 214/238/214 215/241/217 +f 193/235/211 192/233/209 207/240/216 208/242/218 +f 201/236/212 200/234/210 215/241/217 216/243/219 +f 194/220/198 193/235/211 208/242/218 209/244/220 +f 202/222/200 201/236/212 216/243/219 217/245/221 +f 195/221/199 194/220/198 209/244/220 210/246/222 +f 203/223/201 202/222/200 217/245/221 218/247/223 +f 196/224/202 195/221/199 210/246/222 211/248/224 +f 204/225/203 203/223/201 218/247/223 219/249/225 +f 197/226/204 196/224/202 211/248/224 212/250/226 +f 205/227/205 204/225/203 219/249/225 220/251/227 +f 198/228/206 197/226/204 212/250/226 213/237/213 +f 191/230/207 326/252/14 206/239/215 +f 482/253/16 205/227/205 220/251/227 +f 218/247/223 217/245/221 232/254/228 233/255/229 +f 211/248/224 210/246/222 225/256/230 226/257/231 +f 219/249/225 218/247/223 233/255/229 234/258/232 +f 212/250/226 211/248/224 226/257/231 227/259/233 +f 220/251/227 219/249/225 234/258/232 235/260/234 +f 213/237/213 212/250/226 227/259/233 228/261/235 +f 206/239/215 326/262/14 221/263/236 +f 482/264/16 220/251/227 235/260/234 +f 214/238/214 213/237/213 228/261/235 229/265/237 +f 207/240/216 206/239/215 221/263/236 222/266/238 +f 215/241/217 214/238/214 229/265/237 230/267/239 +f 208/242/218 207/240/216 222/266/238 223/268/240 +f 216/243/219 215/241/217 230/267/239 231/269/241 +f 209/244/220 208/242/218 223/268/240 224/270/242 +f 217/245/221 216/243/219 231/269/241 232/254/228 +f 210/246/222 209/244/220 224/270/242 225/256/230 +f 230/267/239 229/265/237 244/271/243 245/272/244 +f 223/268/240 222/266/238 237/273/245 238/274/246 +f 231/269/241 230/267/239 245/272/244 246/275/247 +f 224/270/242 223/268/240 238/274/246 239/276/248 +f 232/254/228 231/269/241 246/275/247 247/277/249 +f 225/256/230 224/270/242 239/276/248 240/278/250 +f 233/255/229 232/254/228 247/277/249 248/279/251 +f 226/257/231 225/256/230 240/278/250 241/280/252 +f 234/258/232 233/255/229 248/279/251 249/281/253 +f 227/259/233 226/257/231 241/280/252 242/282/254 +f 235/260/234 234/258/232 249/281/253 250/283/255 +f 228/261/235 227/259/233 242/282/254 243/284/256 +f 221/263/236 326/285/14 236/286/257 +f 482/287/16 235/260/234 250/283/255 +f 229/265/237 228/261/235 243/284/256 244/271/243 +f 222/266/238 221/263/236 236/286/257 237/273/245 +f 249/281/253 248/279/251 263/288/258 264/289/259 +f 242/282/254 241/280/252 256/290/260 257/291/261 +f 250/283/255 249/281/253 264/289/259 265/292/262 +f 243/284/256 242/282/254 257/291/261 258/293/263 +f 236/286/257 326/294/14 251/295/264 +f 482/296/16 250/283/255 265/292/262 +f 244/271/243 243/284/256 258/293/263 259/297/265 +f 237/273/245 236/286/257 251/295/264 252/298/266 +f 245/272/244 244/271/243 259/297/265 260/299/267 +f 238/274/246 237/273/245 252/298/266 253/300/268 +f 246/275/247 245/272/244 260/299/267 261/301/269 +f 239/276/248 238/274/246 253/300/268 254/302/270 +f 247/277/249 246/275/247 261/301/269 262/303/271 +f 240/278/250 239/276/248 254/302/270 255/304/272 +f 248/279/251 247/277/249 262/303/271 263/288/258 +f 241/280/252 240/278/250 255/304/272 256/290/260 +f 253/300/268 252/298/266 267/305/273 268/306/274 +f 261/301/269 260/299/267 275/307/275 276/308/276 +f 254/302/270 253/300/268 268/306/274 269/309/277 +f 262/303/271 261/301/269 276/308/276 277/310/278 +f 255/304/272 254/302/270 269/309/277 270/311/279 +f 263/288/258 262/303/271 277/310/278 278/312/280 +f 256/290/260 255/304/272 270/311/279 271/313/281 +f 264/289/259 263/288/258 278/312/280 279/314/282 +f 257/291/261 256/290/260 271/313/281 272/315/283 +f 265/292/262 264/289/259 279/314/282 280/316/284 +f 258/293/263 257/291/261 272/315/283 273/317/285 +f 251/295/264 326/318/14 266/319/286 +f 482/320/16 265/292/262 280/316/284 +f 259/297/265 258/293/263 273/317/285 274/321/287 +f 252/298/266 251/295/264 266/319/286 267/305/273 +f 260/299/267 259/297/265 274/321/287 275/307/275 +f 272/315/283 271/313/281 286/322/288 287/323/289 +f 280/316/284 279/314/282 294/324/290 295/325/291 +f 273/317/285 272/315/283 287/323/289 288/326/292 +f 266/319/286 326/327/14 281/328/293 +f 482/329/16 280/316/284 295/325/291 +f 274/321/287 273/317/285 288/326/292 289/330/294 +f 267/305/273 266/319/286 281/328/293 282/331/295 +f 275/307/275 274/321/287 289/330/294 290/332/296 +f 268/306/274 267/305/273 282/331/295 283/333/297 +f 276/308/276 275/307/275 290/332/296 291/334/298 +f 269/309/277 268/306/274 283/333/297 284/335/299 +f 277/310/278 276/308/276 291/334/298 292/336/300 +f 270/311/279 269/309/277 284/335/299 285/337/301 +f 278/312/280 277/310/278 292/336/300 293/338/302 +f 271/313/281 270/311/279 285/337/301 286/322/288 +f 279/314/282 278/312/280 293/338/302 294/324/290 +f 291/334/298 290/332/296 305/339/303 306/340/304 +f 284/335/299 283/333/297 298/341/305 299/342/306 +f 292/336/300 291/334/298 306/340/304 307/343/307 +f 285/337/301 284/335/299 299/342/306 300/344/308 +f 293/338/302 292/336/300 307/343/307 308/345/309 +f 286/322/288 285/337/301 300/344/308 301/346/310 +f 294/324/290 293/338/302 308/345/309 309/347/311 +f 287/323/289 286/322/288 301/346/310 302/348/312 +f 295/325/291 294/324/290 309/347/311 310/349/313 +f 288/326/292 287/323/289 302/348/312 303/350/314 +f 281/328/293 326/351/14 296/352/315 +f 482/353/16 295/325/291 310/349/313 +f 289/330/294 288/326/292 303/350/314 304/354/316 +f 282/331/295 281/328/293 296/352/315 297/355/317 +f 290/332/296 289/330/294 304/354/316 305/339/303 +f 283/333/297 282/331/295 297/355/317 298/341/305 +f 310/349/313 309/347/311 324/356/318 325/357/319 +f 303/350/314 302/348/312 317/358/320 318/359/321 +f 296/352/315 326/360/14 311/361/322 +f 482/362/16 310/349/313 325/357/319 +f 304/354/316 303/350/314 318/359/321 319/363/323 +f 297/355/317 296/352/315 311/361/322 312/364/324 +f 305/339/303 304/354/316 319/363/323 320/365/325 +f 298/341/305 297/355/317 312/364/324 313/366/326 +f 306/340/304 305/339/303 320/365/325 321/367/327 +f 299/342/306 298/341/305 313/366/326 314/368/328 +f 307/343/307 306/340/304 321/367/327 322/369/329 +f 300/344/308 299/342/306 314/368/328 315/370/330 +f 308/345/309 307/343/307 322/369/329 323/371/331 +f 301/346/310 300/344/308 315/370/330 316/372/332 +f 309/347/311 308/345/309 323/371/331 324/356/318 +f 302/348/312 301/346/310 316/372/332 317/358/320 +f 314/368/328 313/366/326 329/373/333 330/374/334 +f 322/369/329 321/367/327 337/375/335 338/376/336 +f 315/370/330 314/368/328 330/374/334 331/377/337 +f 323/371/331 322/369/329 338/376/336 339/378/338 +f 316/372/332 315/370/330 331/377/337 332/379/339 +f 324/356/318 323/371/331 339/378/338 340/380/340 +f 317/358/320 316/372/332 332/379/339 333/381/341 +f 325/357/319 324/356/318 340/380/340 341/382/342 +f 318/359/321 317/358/320 333/381/341 334/383/343 +f 311/361/322 326/384/14 327/385/344 +f 482/386/16 325/357/319 341/382/342 +f 319/363/323 318/359/321 334/383/343 335/387/345 +f 312/364/324 311/361/322 327/385/344 328/388/346 +f 320/365/325 319/363/323 335/387/345 336/389/347 +f 313/366/326 312/364/324 328/388/346 329/373/333 +f 321/367/327 320/365/325 336/389/347 337/375/335 +f 334/383/343 333/381/341 348/390/348 349/391/349 +f 327/385/344 326/392/14 342/393/350 +f 482/394/16 341/382/342 356/395/351 +f 335/387/345 334/383/343 349/391/349 350/396/352 +f 328/388/346 327/385/344 342/393/350 343/397/353 +f 336/389/347 335/387/345 350/396/352 351/398/354 +f 329/373/333 328/388/346 343/397/353 344/399/355 +f 337/375/335 336/389/347 351/398/354 352/400/356 +f 330/374/334 329/373/333 344/399/355 345/401/357 +f 338/376/336 337/375/335 352/400/356 353/402/358 +f 331/377/337 330/374/334 345/401/357 346/403/359 +f 339/378/338 338/376/336 353/402/358 354/404/360 +f 332/379/339 331/377/337 346/403/359 347/405/361 +f 340/380/340 339/378/338 354/404/360 355/406/362 +f 333/381/341 332/379/339 347/405/361 348/390/348 +f 341/382/342 340/380/340 355/406/362 356/395/351 +f 353/402/358 352/400/356 367/407/363 368/408/364 +f 346/403/359 345/401/357 360/409/365 361/410/366 +f 354/404/360 353/402/358 368/408/364 369/411/367 +f 347/405/361 346/403/359 361/410/366 362/412/368 +f 355/406/362 354/404/360 369/411/367 370/413/369 +f 348/390/348 347/405/361 362/412/368 363/414/370 +f 356/395/351 355/406/362 370/413/369 371/415/371 +f 349/391/349 348/390/348 363/414/370 364/416/372 +f 342/393/350 326/417/14 357/418/373 +f 482/419/16 356/395/351 371/415/371 +f 350/396/352 349/391/349 364/416/372 365/420/374 +f 343/397/353 342/393/350 357/418/373 358/421/375 +f 351/398/354 350/396/352 365/420/374 366/422/376 +f 344/399/355 343/397/353 358/421/375 359/423/377 +f 352/400/356 351/398/354 366/422/376 367/407/363 +f 345/401/357 344/399/355 359/423/377 360/409/365 +f 482/424/16 371/425/371 386/426/378 +f 365/427/374 364/428/372 379/429/379 380/430/380 +f 358/431/375 357/432/373 372/433/381 373/434/382 +f 366/435/376 365/427/374 380/430/380 381/436/383 +f 359/437/377 358/431/375 373/434/382 374/438/384 +f 367/439/363 366/435/376 381/436/383 382/440/385 +f 360/441/365 359/437/377 374/438/384 375/442/386 +f 368/443/364 367/439/363 382/440/385 383/444/387 +f 361/445/366 360/441/365 375/442/386 376/446/388 +f 369/447/367 368/443/364 383/444/387 384/448/389 +f 362/449/368 361/445/366 376/446/388 377/450/390 +f 370/451/369 369/447/367 384/448/389 385/452/391 +f 363/453/370 362/449/368 377/450/390 378/454/392 +f 371/425/371 370/451/369 385/452/391 386/426/378 +f 364/428/372 363/453/370 378/454/392 379/429/379 +f 357/432/373 326/455/14 372/433/381 +f 384/448/389 383/444/387 398/456/393 399/457/394 +f 377/450/390 376/446/388 391/458/395 392/459/396 +f 385/452/391 384/448/389 399/457/394 400/460/397 +f 378/454/392 377/450/390 392/459/396 393/461/398 +f 386/426/378 385/452/391 400/460/397 401/462/399 +f 379/429/379 378/454/392 393/461/398 394/463/400 +f 372/433/381 326/464/14 387/465/401 +f 482/466/16 386/426/378 401/462/399 +f 380/430/380 379/429/379 394/463/400 395/467/402 +f 373/434/382 372/433/381 387/465/401 388/468/403 +f 381/436/383 380/430/380 395/467/402 396/469/404 +f 374/438/384 373/434/382 388/468/403 389/470/405 +f 382/440/385 381/436/383 396/469/404 397/471/406 +f 375/442/386 374/438/384 389/470/405 390/472/407 +f 383/444/387 382/440/385 397/471/406 398/456/393 +f 376/446/388 375/442/386 390/472/407 391/458/395 +f 388/468/403 387/465/401 402/473/408 403/474/409 +f 396/469/404 395/467/402 410/475/410 411/476/411 +f 389/470/405 388/468/403 403/474/409 404/477/412 +f 397/471/406 396/469/404 411/476/411 412/478/413 +f 390/472/407 389/470/405 404/477/412 405/479/414 +f 398/456/393 397/471/406 412/478/413 413/480/415 +f 391/458/395 390/472/407 405/479/414 406/481/416 +f 399/457/394 398/456/393 413/480/415 414/482/417 +f 392/459/396 391/458/395 406/481/416 407/483/418 +f 400/460/397 399/457/394 414/482/417 415/484/419 +f 393/461/398 392/459/396 407/483/418 408/485/420 +f 401/462/399 400/460/397 415/484/419 416/486/421 +f 394/463/400 393/461/398 408/485/420 409/487/422 +f 387/465/401 326/488/14 402/473/408 +f 482/489/16 401/462/399 416/486/421 +f 395/467/402 394/463/400 409/487/422 410/475/410 +f 407/483/418 406/481/416 421/490/423 422/491/424 +f 415/484/419 414/482/417 429/492/425 430/493/426 +f 408/485/420 407/483/418 422/491/424 423/494/427 +f 416/486/421 415/484/419 430/493/426 431/495/428 +f 409/487/422 408/485/420 423/494/427 424/496/429 +f 402/473/408 326/497/14 417/498/430 +f 482/499/16 416/486/421 431/495/428 +f 410/475/410 409/487/422 424/496/429 425/500/431 +f 403/474/409 402/473/408 417/498/430 418/501/432 +f 411/476/411 410/475/410 425/500/431 426/502/433 +f 404/477/412 403/474/409 418/501/432 419/503/434 +f 412/478/413 411/476/411 426/502/433 427/504/435 +f 405/479/414 404/477/412 419/503/434 420/505/436 +f 413/480/415 412/478/413 427/504/435 428/506/437 +f 406/481/416 405/479/414 420/505/436 421/490/423 +f 414/482/417 413/480/415 428/506/437 429/492/425 +f 426/502/433 425/500/431 440/507/438 441/508/439 +f 419/503/434 418/501/432 433/509/440 434/510/441 +f 427/504/435 426/502/433 441/508/439 442/511/442 +f 420/505/436 419/503/434 434/510/441 435/512/443 +f 428/506/437 427/504/435 442/511/442 443/513/444 +f 421/490/423 420/505/436 435/512/443 436/514/445 +f 429/492/425 428/506/437 443/513/444 444/515/446 +f 422/491/424 421/490/423 436/514/445 437/516/447 +f 430/493/426 429/492/425 444/515/446 445/517/448 +f 423/494/427 422/491/424 437/516/447 438/518/449 +f 431/495/428 430/493/426 445/517/448 446/519/450 +f 424/496/429 423/494/427 438/518/449 439/520/451 +f 417/498/430 326/521/14 432/522/452 +f 482/523/16 431/495/428 446/519/450 +f 425/500/431 424/496/429 439/520/451 440/507/438 +f 418/501/432 417/498/430 432/522/452 433/509/440 +f 445/517/448 444/515/446 459/524/453 460/525/454 +f 438/518/449 437/516/447 452/526/455 453/527/456 +f 446/519/450 445/517/448 460/525/454 461/528/457 +f 439/520/451 438/518/449 453/527/456 454/529/458 +f 432/522/452 326/530/14 447/531/459 +f 482/532/16 446/519/450 461/528/457 +f 440/507/438 439/520/451 454/529/458 455/533/460 +f 433/509/440 432/522/452 447/531/459 448/534/461 +f 441/508/439 440/507/438 455/533/460 456/535/462 +f 434/510/441 433/509/440 448/534/461 449/536/463 +f 442/511/442 441/508/439 456/535/462 457/537/464 +f 435/512/443 434/510/441 449/536/463 450/538/465 +f 443/513/444 442/511/442 457/537/464 458/539/466 +f 436/514/445 435/512/443 450/538/465 451/540/467 +f 444/515/446 443/513/444 458/539/466 459/524/453 +f 437/516/447 436/514/445 451/540/467 452/526/455 +f 449/536/463 448/534/461 463/541/468 464/542/469 +f 457/537/464 456/535/462 471/543/470 472/544/471 +f 450/538/465 449/536/463 464/542/469 465/545/472 +f 458/539/466 457/537/464 472/544/471 473/546/473 +f 451/540/467 450/538/465 465/545/472 466/547/474 +f 459/524/453 458/539/466 473/546/473 474/548/475 +f 452/526/455 451/540/467 466/547/474 467/549/476 +f 460/525/454 459/524/453 474/548/475 475/550/477 +f 453/527/456 452/526/455 467/549/476 468/551/478 +f 461/528/457 460/525/454 475/550/477 476/552/479 +f 454/529/458 453/527/456 468/551/478 469/553/480 +f 447/531/459 326/554/14 462/555/481 +f 482/556/16 461/528/457 476/552/479 +f 455/533/460 454/529/458 469/553/480 470/557/482 +f 448/534/461 447/531/459 462/555/481 463/541/468 +f 456/535/462 455/533/460 470/557/482 471/543/470 +f 468/551/478 467/549/476 6/6/6 7/5/5 +f 476/552/479 475/550/477 480/1/1 481/9/9 +f 469/553/480 468/551/478 7/5/5 477/11/11 +f 462/555/481 326/558/14 1/13/13 +f 482/559/16 476/552/479 481/9/9 +f 470/557/482 469/553/480 477/11/11 478/17/17 +f 463/541/468 462/555/481 1/13/13 2/19/19 +f 471/543/470 470/557/482 478/17/17 479/21/21 +f 464/542/469 463/541/468 2/19/19 3/23/23 +f 472/544/471 471/543/470 479/21/21 8/25/25 +f 465/545/472 464/542/469 3/23/23 4/27/27 +f 473/546/473 472/544/471 8/25/25 9/29/29 +f 466/547/474 465/545/472 4/27/27 5/31/31 +f 474/548/475 473/546/473 9/29/29 10/2/2 +f 467/549/476 466/547/474 5/31/31 6/6/6 +f 475/550/477 474/548/475 10/2/2 480/1/1 diff --git a/RayTracer/applications/rsc/normals/script.lua b/RayTracer/applications/rsc/normals/script.lua new file mode 100644 index 0000000..09e45ab --- /dev/null +++ b/RayTracer/applications/rsc/normals/script.lua @@ -0,0 +1,26 @@ + +Meshes = "normals.obj" + +Camera = { + pos = { 4, 4, 4 }, + size_x = 400, + size_y = 600, +} + + +Lights = { + { + pos = { -0.5, 3.5, 1 }, + intensity = 1 + }, + { + pos = { 0, 0, 1 }, + intensity = 0.5 + }, +} + +RenderSettings = { + depth = 1, + spray = 10, + multisampling = 1, +} \ No newline at end of file diff --git a/RayTracer/applications/rsc/scene.blend b/RayTracer/applications/rsc/scene.blend new file mode 100644 index 0000000..336864e Binary files /dev/null and b/RayTracer/applications/rsc/scene.blend differ diff --git a/RayTracer/applications/rsc/scene/meshes.mtl b/RayTracer/applications/rsc/scene/meshes.mtl new file mode 100644 index 0000000..b2d7e64 --- /dev/null +++ b/RayTracer/applications/rsc/scene/meshes.mtl @@ -0,0 +1,20 @@ +# Blender MTL File: 'scene.blend' +# Material Count: 2 + +newmtl Material +Ns 323.999994 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 + +newmtl None +Ns 500 +Ka 0.8 0.8 0.8 +Kd 0.8 0.8 0.8 +Ks 0.8 0.8 0.8 +d 1 +illum 2 diff --git a/RayTracer/applications/rsc/scene/meshes.obj b/RayTracer/applications/rsc/scene/meshes.obj new file mode 100644 index 0000000..4368e9e --- /dev/null +++ b/RayTracer/applications/rsc/scene/meshes.obj @@ -0,0 +1,112 @@ +# Blender v3.0.1 OBJ File: 'scene.blend' +# www.blender.org +mtllib meshes.mtl +o Cube +v -1.039076 1.039076 1.792917 +v -1.039076 1.039076 -1.285234 +v 1.039076 1.039076 1.792917 +v 1.039076 1.039076 -1.285234 +v -1.039076 -1.039076 1.792917 +v -1.039076 -1.039076 -1.285234 +v 1.039076 -1.039076 1.792917 +v 1.039076 -1.039076 -1.285234 +vt 0.625000 0.500000 +vt 0.625000 0.750000 +vt 0.875000 0.750000 +vt 0.875000 0.500000 +vt 0.375000 0.750000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.375000 0.000000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.625000 0.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 0.500000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +usemtl Material +s off +f 1/1/1 3/2/1 7/3/1 5/4/1 +f 4/5/2 8/6/2 7/7/2 3/2/2 +f 8/8/3 6/9/3 5/10/3 7/11/3 +f 6/12/4 8/13/4 4/5/4 2/14/4 +f 6/9/5 2/14/5 1/1/5 5/10/5 +o Cube.001 +v 0.411013 -0.208216 -1.264212 +v 0.411013 -0.208216 -0.612621 +v -0.208216 -0.411013 -1.264212 +v -0.208216 -0.411013 -0.612621 +v 0.208216 0.411013 -1.264212 +v 0.208216 0.411013 -0.612621 +v -0.411013 0.208216 -1.264212 +v -0.411013 0.208216 -0.612621 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vn 0.3112 -0.9503 0.0000 +vn -0.9503 -0.3112 0.0000 +vn -0.3112 0.9503 0.0000 +vn 0.9503 0.3112 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl None +s off +f 9/15/6 10/16/6 12/17/6 11/18/6 +f 11/18/7 12/17/7 16/19/7 15/20/7 +f 15/20/8 16/19/8 14/21/8 13/22/8 +f 13/22/9 14/21/9 10/23/9 9/24/9 +f 11/25/10 15/20/10 13/22/10 9/26/10 +f 16/19/11 12/27/11 10/28/11 14/21/11 +o Cube.002 +v -0.351718 -0.467100 -0.602050 +v -0.351718 -0.467100 0.049542 +v -0.800825 0.004996 -0.602050 +v -0.800825 0.004996 0.049542 +v 0.120377 -0.017993 -0.602050 +v 0.120377 -0.017993 0.049542 +v -0.328730 0.454103 -0.602050 +v -0.328730 0.454103 0.049542 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vn -0.7245 -0.6892 0.0000 +vn -0.6892 0.7245 0.0000 +vn 0.7245 0.6892 0.0000 +vn 0.6892 -0.7245 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl None +s off +f 17/29/12 18/30/12 20/31/12 19/32/12 +f 19/32/13 20/31/13 24/33/13 23/34/13 +f 23/34/14 24/33/14 22/35/14 21/36/14 +f 21/36/15 22/35/15 18/37/15 17/38/15 +f 19/39/16 23/34/16 21/36/16 17/40/16 +f 24/33/17 20/41/17 18/42/17 22/35/17 diff --git a/RayTracer/applications/rsc/scene/script.lua b/RayTracer/applications/rsc/scene/script.lua new file mode 100644 index 0000000..f0146f9 --- /dev/null +++ b/RayTracer/applications/rsc/scene/script.lua @@ -0,0 +1,25 @@ + +Meshes = "meshes.obj" + +Camera = { + pos = { 0.5, 4.5, 0.2 }, + size_x = 600, + size_y = 800, +} + +Lights = { + { + pos = { -0.5, 3.5, 1 }, + intensity = 1 + }, + { + pos = { 0, 0, 1 }, + intensity = 0.5 + }, +} + +RenderSettings = { + depth = 1, + spray = 3, + multisampling = 16, +} \ No newline at end of file diff --git a/RayTracer/private/RayTracer.cpp b/RayTracer/private/RayTracer.cpp new file mode 100644 index 0000000..ab2db13 --- /dev/null +++ b/RayTracer/private/RayTracer.cpp @@ -0,0 +1,242 @@ + +#include "MathCommon.hpp" + +#include "ConnectionCommon.hpp" +#include "Module.hpp" +#include "Ray.hpp" +#include "RayTracer.hpp" +#include "TypeInfo.hpp" + +#include + +/* + if (1) { + const auto& points = castData.obj->mCache.TransformedPoints; + const auto& normals = castData.obj->mCache.TransformedNormals; + const auto trig = castData.trig; + +const auto& n1 = normals[trig->mP1]; +const auto& n2 = normals[trig->mP2]; +const auto& n3 = normals[trig->mP3]; + +auto v0 = points[trig->mP1]; +auto v1 = points[trig->mP2]; +auto v2 = points[trig->mP3]; + +// Calculate barycentric coordinates +Vec3F barycentric; + +// Calculate the area of the triangle +auto areaABC = (halnf) (v1 - v0).cross(v2 - v0).length(); +auto areaPBC = (halnf) (v1 - castData.hitPos).cross(v2 - castData.hitPos).length(); +auto areaPCA = (halnf) (v2 - castData.hitPos).cross(v0 - castData.hitPos).length(); + +// Calculate the barycentric coordinates +barycentric.x = areaPBC / areaABC; +barycentric.y = areaPCA / areaABC; +barycentric.z = 1.0f - barycentric.x - barycentric.y; + +// Interpolate the normal using barycentric coordinates +normal = n1 * barycentric.x + n2 * barycentric.y + n3 * barycentric.z; +} +*/ + +using namespace tp; + +void RayTracer::castRay(const Ray& ray, RayCastData& out, alnf farVal) { + out.hit = false; + + farVal *= farVal; + + for (auto obj : mScene->mObjects) { + for (auto trig : obj->mCache.TrigCaches) { + if (trig->castRay(ray)) { + // printf("Hit\n"); + + auto dist = (trig->getHitPos() - ray.pos).length2(); + + if (farVal > dist && dist > EPSILON) { + out.trig = &trig.data(); + out.hitPos = trig->getHitPos(); + out.obj = &obj.data(); + out.hit = true; + + farVal = dist; + } + } + } + } +} + +void RayTracer::cycle(const RayCastData& castData, LightData& out, uhalni depth) { + if (depth) { + depth--; + + Vec3F normal = castData.trig->getNormal(); + normal.normalize(); + + const auto delta1 = castData.trig->mEdgeP1P2.unitV(); + const auto delta2 = normal.cross(delta1); + + for (auto idx : Range(mSettings.spray)) { + RayCastData materialCastData; + LightData lightData; + + auto d1 = ((halnf) randomFloat() - 0.5f) * 2; + auto d2 = ((halnf) randomFloat() - 0.5f) * 2; + + auto sprayNormal = (normal + delta1 * d1 + delta2 * d2).normalize(); + + castRay({ sprayNormal, castData.hitPos }, materialCastData, mScene->mCamera.getFar()); + if (materialCastData.hit) { + cycle(materialCastData, lightData, depth); + out.intensity += lightData.intensity * 0.2; + } + } + } + + // cast for light + for (auto light : mScene->mLights) { + RayCastData lightCastData; + auto dir = light->pos - castData.hitPos; + auto length = (halnf) dir.length(); + + Ray lightRay = { dir.unitV(), castData.hitPos }; + + if (lightRay.dir.dot(castData.trig->mNormal) < 0) { + continue; + } + castRay(lightRay, lightCastData, length); + + if (lightCastData.hit) { + continue; + } + + out.intensity += light->intensity / (length * length); + } +} + +void RayTracer::render(const Scene& scene, OutputBuffers& out, const RenderSettings& settings) { + out.color.reserve({ settings.size.x, settings.size.y }); + out.normals.reserve({ settings.size.x, settings.size.y }); + out.depth.reserve({ settings.size.x, settings.size.y }); + + mScene = &scene; + mSettings = settings; + + auto pos = mScene->mCamera.getPos(); + auto fov = mScene->mCamera.getFOV(); + auto height = sqrt(mScene->mCamera.getRatio()); + auto width = 1.f / height; + auto forward = mScene->mCamera.getForward(); + auto up = mScene->mCamera.getUp(); + auto right = forward.cross(up); + auto planeCenter = pos + (forward * halnf(width / (2.f * tan(fov / 2.f)))); + auto planeCenterOffset = (up * (halnf) height / 2.f) - (right * (halnf) width / 2.f); + + auto planeLeftTop = planeCenter + planeCenterOffset; + + RayCastData castData; + + Ray ray = { { 0, 0, 0 }, pos }; + + Vec3F iterPoint = { 0, 0, 0 }; + Vec3F deltaX = right * halnf(width / (alnf) mSettings.size.x); + Vec3F deltaY = up * halnf(-height / (alnf) mSettings.size.y); + + ualni maxIterations = mSettings.size.x * mSettings.size.y; + ualni currIter = 0; + + halnf maxDepth = 0; + halnf minDepth = mScene->mCamera.getFar() * mSettings.multisampling; + + auto accumulateColor = [](RGBA& col, const RGBA& in) { + col.r += in.r; + col.g += in.g; + col.b += in.b; + col.a = 1; + }; + + auto divideColor = [](RGBA& col, const halnf num) { + col.r /= num; + col.g /= num; + col.b /= num; + }; + + // clear colors + for (ualni i = 0; i < mSettings.size.x; i++) { + for (ualni j = 0; j < mSettings.size.y; j++) { + out.color.set({ i, j }, 0.f); + out.normals.set({ i, j }, 0.f); + out.depth.set({ i, j }, 0.f); + } + } + + for (ualni i = 0; i < mSettings.size.x; i++) { + for (ualni j = 0; j < mSettings.size.y; j++) { + for (auto sample = 0; sample < mSettings.multisampling; sample++) { + auto randX = randomFloat(); + auto randY = randomFloat(); + + iterPoint = planeLeftTop + ((deltaX * (halnf) (i + randX)) + (deltaY * (halnf) (j + randY))); + ray.dir = (iterPoint - pos).unitV(); + + castRay(ray, castData, mScene->mCamera.getFar()); + + if (castData.hit) { + LightData lightData; + cycle(castData, lightData, mSettings.depth); + + const auto normal = castData.trig->getNormal(); + const auto depth = (halnf) (castData.hitPos - ray.pos).length(); + + lightData.intensity = clamp(lightData.intensity, 0.f, 1.f); + RGBA col = { lightData.intensity, lightData.intensity, lightData.intensity, 1.f }; + + accumulateColor(out.color.get({ i, j }), col); + accumulateColor(out.normals.get({ i, j }), { normal.x * 0.5f + 0.5f, normal.y * 0.5f + 0.5f, normal.z * 0.5f + 0.5f, 1.f }); + accumulateColor(out.depth.get({ i, j }), { depth, depth, depth, 1.f }); + + } else { + out.color.set({ i, j }, 0.f); + out.normals.set({ i, j }, 0.f); + out.depth.set({ i, j }, 0.f); + } + + // auto tmp = buff.get({i, j}); + // printf(" %f, %f, %f, %f, ", tmp.r, tmp.g, tmp.b, tmp.a); + } + + mProgress.percentage = (halnf) currIter / (halnf) maxIterations; + currIter++; + } + } + + for (auto i = 0; i < mSettings.size.x * mSettings.size.y; i++) { + divideColor(out.color.getBuff()[i], (halnf) mSettings.multisampling); + divideColor(out.normals.getBuff()[i], (halnf) mSettings.multisampling); + divideColor(out.depth.getBuff()[i], (halnf) mSettings.multisampling); + } + + for (auto i = 0; i < mSettings.size.x * mSettings.size.y; i++) { + if (!out.depth.getBuff()[i].a) { + continue; + } + const auto depth = out.depth.getBuff()[i].r; + if (maxDepth < depth) { + maxDepth = depth; + } + if (minDepth > depth) { + minDepth = depth; + } + } + + for (auto i = 0; i < mSettings.size.x * mSettings.size.y; i++) { + auto& col = out.depth.getBuff()[i]; + if (col.a == 1.f) { + col.r = (col.r - minDepth) / (maxDepth - minDepth); + col.g = col.r; + col.b = col.r; + } + } +} diff --git a/RayTracer/public/RayTracer.hpp b/RayTracer/public/RayTracer.hpp new file mode 100644 index 0000000..08ea94e --- /dev/null +++ b/RayTracer/public/RayTracer.hpp @@ -0,0 +1,86 @@ + +#pragma once + +#include "Buffer2D.hpp" +#include "Camera.hpp" +#include "Color.hpp" +#include "Module.hpp" +#include "Topology.hpp" +#include "Vec.hpp" + +namespace tp { + + extern ModuleManifest gModuleRayTracer; + + class Object { + public: + Object() = default; + + public: + Topology mTopology; + TopologyCache mCache; + }; + + struct PointLight { + Vec3F pos; + halnf fallOut = 1.f; + halnf intensity = 1.f; + }; + + class Scene { + public: + Scene() = default; + + public: + Buffer mObjects; + Buffer mLights; + Camera mCamera; + }; + + class RayTracer { + public: + typedef Buffer2D RenderBuffer; + + struct Progress { + halnf percentage = 0.f; + } mProgress; + + struct RenderSettings { + uhalni depth = 2; + uhalni spray = 1; + ualni multisampling = 1; + Vec2 size; + }; + + struct OutputBuffers { + RenderBuffer normals; + RenderBuffer color; + RenderBuffer depth; + // albedo, reflectance ... + }; + + public: + RayTracer() = default; + void render(const Scene& scene, OutputBuffers& out, const RenderSettings& settings); + + private: + struct RayCastData { + const Object* obj = nullptr; + TrigCache* trig = nullptr; + Vec3F hitPos = { 0, 0, 0 }; + bool hit = false; + }; + + struct LightData { + halnf intensity = 0; + }; + + private: + void castRay(const Ray& ray, RayCastData& out, alnf far); + void cycle(const RayCastData& ray, LightData& out, uhalni depth); + + private: + RenderSettings mSettings; + const Scene* mScene = nullptr; + }; +} diff --git a/RayTracer/tests/Test.cpp b/RayTracer/tests/Test.cpp new file mode 100644 index 0000000..170ef1c --- /dev/null +++ b/RayTracer/tests/Test.cpp @@ -0,0 +1,118 @@ + +// #include "NewPlacement.hpp" + +#include "RayTracer.hpp" +#include "UnitTest++/UnitTest++.h" + +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include "stb_image_write.h" + +using namespace tp; + +void writeImage(const RayTracer::RenderBuffer& output) { + // Save the data to a PNG file + struct urgb { + uint1 r, g, b, a; + }; + + Buffer2D converted; + converted.reserve(output.size()); + + for (Index i = 0; i < output.size().x; i++) { + for (Index j = 0; j < output.size().y; j++) { + converted.get({ i, j }).r = uint1(output.get({ i, j }).r * 255); + converted.get({ i, j }).g = uint1(output.get({ i, j }).g * 255); + converted.get({ i, j }).b = uint1(output.get({ i, j }).b * 255); + converted.get({ i, j }).a = uint1(output.get({ i, j }).a * 255); + } + } + + stbi_write_png("output.png", converted.size().x, converted.size().y, 4, converted.getBuff(), converted.size().x * 4); +} + +bool compareCols(const RGBA& l, const RGBA& r) { + auto small = 0.0001f; + if ((l.r - r.r) > small) { + return false; + } + if ((l.g - r.g) > small) { + return false; + } + if ((l.b - r.b) > small) { + return false; + } + if ((l.a - r.a) > small) { + return false; + } + return true; +} + +SUITE(RayTracer) { + TEST(Basic) { + using namespace tp; + + Scene scene; + + scene.mCamera.lookAtPoint({ 0, 0, 0 }, { 2, 2, 2 }, { 0, 0, 1 }); + scene.mCamera.setFOV(3.14 / 4); + + scene.mLights.append({ { 0, 0, 1.1f }, 1.f, 0.3f }); + + scene.mObjects.append(Object()); + auto& object = scene.mObjects.last(); + + object.mTopology.Points = { + { 1.000000, 0.000000, 0.000000 }, + { 0.000000, 1.000000, 0.000000 }, + { 0.000000, 0.000000, 1.000000 }, + }; + + object.mTopology.Normals = { + { 1.000000, 1.000000, 1.000000 }, + { 1.000000, 1.000000, 1.000000 }, + { 1.000000, 1.000000, 1.000000 }, + }; + + object.mTopology.Indexes = { + { 0, 1, 2 }, + }; + + object.mCache.Source = &object.mTopology; + object.mCache.updateCache(); + + RayTracer::RenderSettings settings = { + 0, + 0, + 1, + { 10, 10 }, + }; + + RayTracer::OutputBuffers output; + // output.reserve(RayTracer::RenderBuffer::Index2D(settings.size.x, settings.size.y)); + + RayTracer rt; + rt.render(scene, output, settings); + + CHECK(compareCols(output.color.get({ 6, 4 }), RGBA{ 0.560100f, 0.560100f, 0.560100f, 1.000000f })); + CHECK(compareCols(output.color.get({ 6, 5 }), RGBA{ 0.353739f, 0.353739f, 0.353739f, 1.000000f })); + CHECK(compareCols(output.color.get({ 6, 6 }), RGBA{ 0.242577f, 0.242577f, 0.242577f, 1.000000f })); + CHECK(compareCols(output.color.get({ 6, 7 }), RGBA{ 0.176313f, 0.176313f, 0.176313f, 1.000000f })); + CHECK(compareCols(output.color.get({ 6, 8 }), RGBA{ 0.000000f, 0.000000f, 0.000000f, 0.000000f })); + + if (0) { + writeImage(output.color); + for (Index i = 0; i < output.color.size().x; i++) { + for (Index j = 0; j < output.color.size().y; j++) { + auto tmp = output.color.get({ i, j }); + printf( + "TEST(compareCols(output.get({%i, %i}), RGBA{ %ff, %ff, %ff, %ff }));\n", i, j, tmp.r, tmp.g, tmp.b, tmp.a + ); + } + } + } + } +} + +int main(int argc, char* argv[]) { + return UnitTest::RunAllTests(); +} diff --git a/STATUS b/STATUS new file mode 100644 index 0000000..e248500 --- /dev/null +++ b/STATUS @@ -0,0 +1,48 @@ +Externals: + Loved external libraries + +Modules: + Base module + +Math: + Basic math + No tests + +Connection: + Should be removed + Questionable goals of abstracting all storages (remote local etc) + Mostly Reliable + Maybe hard to use + +Containers: + Stable data structures algorithms + Bad integration with modern c++ + Not enough test + +Graphics: + Cross-platform window and debug UI management + No tests + +Widgets: + Widget library using graphics API + needs cleanup + No tests + +Objects: + Python-inspired language + Not feature rich + Not stable + No tests + Not thread safe + +Language: + Not implemented yet + +DataAnalysis: + Toy AI number recognition + +LibraryViewer: + Toy Music player using graphics module + +RayTracer: + Toy raytracer with lua scripting and object loader \ No newline at end of file diff --git a/Sketch3D/CMakeLists.txt b/Sketch3D/CMakeLists.txt new file mode 100644 index 0000000..248c80d --- /dev/null +++ b/Sketch3D/CMakeLists.txt @@ -0,0 +1,22 @@ +project(Sketch3D) + +### ---------------------- Externals --------------------- ### +set(BINDINGS_INCLUDE ../Externals/glfw/include) +set(BINDINGS_LIBS glfw Imgui) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ${BINDINGS_INCLUDE} ./ext/) +target_link_libraries(${PROJECT_NAME} PUBLIC Graphics Connection Widgets Math RasterRender) +target_link_libraries(${PROJECT_NAME} PUBLIC ${BINDINGS_LIBS}) + +### -------------------------- Applications -------------------------- ### +add_executable(Sketch3DApp ./applications/Entry.cpp) +target_link_libraries(Sketch3DApp ${PROJECT_NAME}) + +file(COPY "rsc" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") +file(COPY "applications/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") diff --git a/Sketch3D/applications/Entry.cpp b/Sketch3D/applications/Entry.cpp new file mode 100644 index 0000000..9cb6be0 --- /dev/null +++ b/Sketch3D/applications/Entry.cpp @@ -0,0 +1,37 @@ + +#include "GraphicApplication.hpp" + +#include "Sketch3D.hpp" +#include "Sketch3DWidget.hpp" + +using namespace tp; + +class Sketch3DApplication : public Application { +public: + Sketch3DApplication() : mGui(*mGraphics->getCanvas(), {1920, 1080}) {} + + void processFrame(EventHandler* eventHandler) override { + auto rec = RectF( { 0, 0 }, mWindow->getSize() ); + mGui.proc(*eventHandler, rec, rec); + } + + void drawFrame(Canvas* canvas) override { + mGui.draw(*canvas); + } + +private: + Sketch3DGUI mGui; +}; + + +void runApp() { + tp::GlobalGUIConfig config; + tp::gGlobalGUIConfig = &config; + + Sketch3DApplication app; + app.run(); +} + +int main() { + runApp(); +} \ No newline at end of file diff --git a/Sketch3D/applications/Font.ttf b/Sketch3D/applications/Font.ttf new file mode 100644 index 0000000..8a63054 Binary files /dev/null and b/Sketch3D/applications/Font.ttf differ diff --git a/Sketch3D/private/Sketch3D.cpp b/Sketch3D/private/Sketch3D.cpp new file mode 100644 index 0000000..a0a3c63 --- /dev/null +++ b/Sketch3D/private/Sketch3D.cpp @@ -0,0 +1,439 @@ + +#include "Sketch3D.hpp" + +using namespace tp; + +StrokeGPUHandles::StrokeGPUHandles() { + glGenVertexArrays(1, &VertexArrayID); + glBindVertexArray(VertexArrayID); + + glGenBuffers(1, &vertexbuffer); +} + +void StrokeGPUHandles::sendDataToGPU(Buffer* mPoints) { + glBindVertexArray(VertexArrayID); + vbo_len = mPoints->size(); + glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(StrokePoint) * vbo_len, mPoints->getBuff(), GL_STATIC_COPY); +} + +StrokeGPUHandles::~StrokeGPUHandles() { + glDeleteBuffers(1, &vertexbuffer); + glDeleteVertexArrays(1, &VertexArrayID); +} + +Stroke::Stroke() = default; + +Buffer& Stroke::getPoints() { return mPoints; } + +const Buffer& Stroke::getPoints() const { return mPoints; } + +void Stroke::setColor(const RGBA& col) { mColor = col; } + +const RGBA& Stroke::getColor() const { return mColor; } + +void Stroke::updateGpuBuffers() { mGPUHandles.sendDataToGPU(&mPoints); } + +void Stroke::denoisePos(halni passes) { + for (auto pass : Range(passes)) { + for (auto pi : Range(mPoints.size() - 2)) { + mPoints[pi + 1].pos = (mPoints[pi + 1].pos + mPoints[pi].pos + mPoints[pi + 2].pos) / 3.f; + } + } +} + +void Stroke::denoiseThickness(halni passes) { + for (auto pass : Range(passes)) { + for (auto pi : Range(mPoints.size() - 2)) { + mPoints[pi + 1].thickness = (mPoints[pi].thickness + mPoints[pi + 2].thickness) / 2.f; + } + } +} + +void Stroke::compress(halnf factor) { + if (mPoints.size() < 3) { + return; + } + + List passed_poits; + + for (auto idx : Range(mPoints.size())) { + passed_poits.pushBack(mPoints[idx]); + } + + List::Node* min_node = nullptr; + do { + min_node = nullptr; + halnf min_factor = factor; + + List::Node* iter = passed_poits.first()->next; + for (; iter->next; iter = iter->next) { + Vec3F dir1 = (iter->data.pos - iter->prev->data.pos).normalize(); + Vec3F dir2 = (iter->next->data.pos - iter->data.pos).normalize(); + halnf factor = 1 - dir1.dot(dir2); + + if (factor < min_factor) { + min_node = iter; + min_factor = factor; + } + } + + if (min_node) { + passed_poits.removeNode(min_node); + } + } while (min_node); + + mPoints.reserve(passed_poits.length()); + + ualni idx = 0; + for (auto point : passed_poits) { + mPoints[idx] = point.data(); + idx++; + } +} + +void Stroke::subdiv(halnf precision, const Camera* cam, halni passes) { + // TODO + + if (mPoints.size() < 4) { + return; + } + + List new_points; + for (auto idx : Range(mPoints.size())) { + new_points.pushBack(mPoints[idx]); + } + + auto viewmat = cam->calculateViewMatrix(); + auto projmat = cam->calculateProjectionMatrix(); + + for (auto i : Range(passes)) { + + auto n_points = new_points.length(); + + auto p0 = new_points.first(); + auto p1 = p0->next; + auto p2 = p1->next; + auto p3 = p2->next; + + while (p3) { + + auto p1_2d = cam->project(p1->data.pos, viewmat, projmat); + auto p2_2d = cam->project(p2->data.pos, viewmat, projmat); + + auto len = (p1_2d - p2_2d).length(); + + if (len > precision * 1.5f) { + auto const a = (p1->data.pos - p0->data.pos).unitV(); + auto const b = (p2->data.pos - p3->data.pos).unitV(); + auto const l = p1->data.pos - p2->data.pos; + auto const l_len = l.length(); + auto const ab = a.dot(b); + auto const la = l.dot(a); + auto const lb = l.dot(b); + Vec3F mid; + + if (1 - abs(ab) < 0.001f) { + goto SKIP; + } + + auto k = (lb - ab * la) / (1 - ab * ab); + auto t = ab * k - la; + + if (k < 0 || t < 0) { + goto SKIP; + } + + if (k > l_len) { + k = l_len; + } + + if (t > l_len) { + t = l_len; + } + + auto const p1_mid = p1->data.pos + (a * t); + auto const p2_mid = p2->data.pos + (b * k); + + mid = (p1_mid + p2_mid) / 2.f; + { + auto const p0 = ((p2->data.pos - p1->data.pos) / 2.f) + p1->data.pos; + mid = ((mid - p0) / 3.f) + p0; + } + + auto node = new_points.newNode(); + node->data.pos = mid; + node->data.thickness = (p1->data.thickness + p2->data.thickness) / 2.f; + + auto insert_after = p1; + + p0 = p1; + p1 = p2; + p2 = p3; + p3 = p3->next; + + new_points.attach(node, insert_after); + p0 = p0->next; + continue; + } + + SKIP: + p0 = p1; + p1 = p2; + p2 = p3; + p3 = p3->next; + } + + if (n_points == new_points.length()) { + break; + } + } + + if (new_points.length() != mPoints.size()) { + mPoints.reserve(new_points.length()); + ualni idx = 0; + for (auto point : new_points) { + mPoints[idx] = point.data(); + idx++; + } + } +} + +PencilBrush::PencilBrush() { mType = "pencil"; } + +void PencilBrush::ensureReady(Stroke* stroke, const Camera* cam, bool debug) const { + if (stroke->getPoints().size() == 1) { + auto new_point = stroke->getPoints()[0]; + new_point.pos += 0.00001f; + stroke->getPoints().append(new_point); + } + + if (mEnableCompression && !debug) { + stroke->subdiv(mPrecision, cam, mSubdivPasses); + stroke->denoisePos(mDenoisePassesPos); + stroke->compress(mCompressionFactor); + } + + stroke->updateGpuBuffers(); +} + +void PencilBrush::sample(Project* proj, Vec2F crs, halnf pressure) { + if (proj->mActiveLayer == -1) { + return; + } + + bool max_level = mStroke && mStroke->getPoints().size() > mMaxPoints; + if (!pressure || max_level) { + if (mStroke) { + ensureReady(mStroke, &proj->mCamera); + proj->mLayers[proj->mActiveLayer]->strokes.pushBack(mStroke); + mStroke = nullptr; + } + + if (max_level) { + mStroke = new Stroke(); + mStroke->setColor(mCol); + + mStroke->getPoints().append(proj->mLayers[proj->mActiveLayer]->strokes.last()->data->getPoints().last()); + } + + if (!pressure) { + return; + } + } + + auto thickness = pressure * (proj->mCamera.project({ 0.f, 0.f }) - proj->mCamera.project({ mSize, 0.f })).length(); + bool point_passed = true; + + if (mStroke && mStroke->getPoints().size()) { + auto last_point_2d = proj->mCamera.project(mStroke->getPoints().last().pos); + point_passed = (crs - last_point_2d).length() > mPrecision; + } + + if (!point_passed) { + return; + } + + if (!mStroke) { + mStroke = new Stroke(); + mStroke->setColor(mCol); + } + + auto point_coords = proj->mCamera.project(crs); + mStroke->getPoints().append({ point_coords, (halnf) thickness }); + + // mStroke->updateGpuBuffers(); +} + +void PencilBrush::draw(Renderer* render, const Camera* camera) { + if (mStroke) { + if (mEnableCompression) { + mTempDisplayStroke.getPoints() = mStroke->getPoints(); + mTempDisplayStroke.setColor(mStroke->getColor()); + ensureReady(&mTempDisplayStroke, camera, 0); + + render->drawStroke(&mTempDisplayStroke, camera); + } else { + render->drawStroke(mStroke, camera); + } + } +} + +PencilBrush::~PencilBrush() { + if (mStroke) delete mStroke; +} + +Layer::~Layer() { + for (auto str : strokes) { + delete str.data(); + } +} + +Project::Project() { + mCamera.lookAtPoint({ 0.0f, 0.0f, 0.0f }, { 2.0f, 0.0f, 0.f }, { 0, 0, 1 }); + + auto lay = new Layer(); + lay->enabled = true; + mLayers.append(lay); + mActiveLayer = 0; + + mBrushes.put("eraser", new EraserBrush()); + mBrushes.put("pencil", new PencilBrush()); + + mActiveBrush = "pencil"; + + mBackgroundColor = 0.f; +} + +void Project::sample(halnf pressure, halnf cameraRatio, Vec2F relativeCameraPos) { + mCamera.setRatio(cameraRatio); + + auto idx = mBrushes.presents(mActiveBrush); + if (idx) { + auto brush = mBrushes.getSlotVal(idx); + + brush->sample(this, relativeCameraPos, pressure); + } +} + +Project::~Project() { + for (auto brush : mBrushes) { + delete brush->val; + } + for (auto layer : mLayers) { + delete layer.data(); + } +} + +Renderer::Renderer(Vec2F size) : + mBuffer(size, 4), + mBufferDowncast(size), + mShader("rsc/shaders/stroke.vert", "rsc/shaders/stroke.geom", "rsc/shaders/stroke.frag") { + mMaxSize = size; + + mMatrixUniform = mShader.getu("MVP"); + mColorUniform = mShader.getu("Color"); + mRatioUniform = mShader.getu("Ratio"); + mTargetUniform = mShader.getu("Target"); + mBGColUniform = mShader.getu("BGCol"); + + mBuffer.mClearCol = 0.f; + mBufferDowncast.mClearCol = 0.f; +} + +void Renderer::renderToTexture(const Project* project, Vec2F size) { + size.clamp({ 1, 1 }, mMaxSize); + + setViewport({ 0, 0, size.x, size.y }); + setClearCol(project->mBackgroundColor); + renderBegin(); + + for (auto lay : project->mLayers) { + if (lay.data()->enabled) { + for (auto str : lay.data()->strokes) { + drawStroke(str.data(), &project->mCamera); + } + } + } + + auto idx = project->mBrushes.presents(project->mActiveBrush); + if (idx) { + auto brush = project->mBrushes.getSlotVal(idx); + brush->draw(this, &project->mCamera); + } + + renderEnd(); +} + +void Renderer::renderBegin() { + mBuffer.beginDraw(); + mBuffer.clear(); +} + +void Renderer::setViewport(RectF viewport) { mBuffer.setViewport(viewport); } + +void Renderer::drawStroke(const Stroke* str, const Camera* camera) { + // return; + + glEnable(GL_DEPTH_TEST); + glEnable(GL_MULTISAMPLE); + + GLint val; + glGetIntegerv(GL_SAMPLES, &val); + + glBindVertexArray(str->mGPUHandles.VertexArrayID); + mShader.bind(); + + auto cam_mat = camera->calculateTransformationMatrix().transpose(); + glUniformMatrix4fv(mMatrixUniform, 1, GL_FALSE, &cam_mat[0][0]); + + glUniform4fv(mColorUniform, 1, &str->mColor.r); + + glUniform4fv(mBGColUniform, 1, &mBuffer.mClearCol.r); + + auto ratio = camera->getRatio(); + glUniform1fv(mRatioUniform, 1, &ratio); + + auto target = halnf( + ((camera->getTarget() - camera->getPos()).length() - camera->getNear()) / (camera->getFar() - camera->getNear()) + ); + + glUniform1fv(mTargetUniform, 1, &target); + + // 1st attribute buffer : vertices + glEnableVertexAttribArray(0); + glBindBuffer(GL_ARRAY_BUFFER, str->mGPUHandles.vertexbuffer); + glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, (void*) 0); + + glDrawArrays(GL_LINE_STRIP, 0, str->mGPUHandles.vbo_len); + + glDisableVertexAttribArray(0); + + mShader.unbind(); +} + +void Renderer::renderEnd() { + mBuffer.endDraw(); + + mBufferDowncast.beginDraw(); + + auto size = mBufferDowncast.getSize(); + + glBindFramebuffer(GL_READ_FRAMEBUFFER, mBuffer.buffId()); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mBufferDowncast.buffId()); + mBufferDowncast.clear(); + glBlitFramebuffer(0, 0, size.x, size.y, 0, 0, size.x, size.y, GL_COLOR_BUFFER_BIT, GL_NEAREST); + + mBufferDowncast.endDraw(); +} + +uhalni Renderer::getTextudeId() { return mBufferDowncast.texId(); } + +RenderBuffer* Renderer::getBuff() { return &mBufferDowncast; } + +void Renderer::setClearCol(RGBA col) { + mBuffer.mClearCol = col; + mBufferDowncast.mClearCol = col; +} + +Renderer::~Renderer() {} diff --git a/Sketch3D/public/Sketch3D.hpp b/Sketch3D/public/Sketch3D.hpp new file mode 100644 index 0000000..3e8c334 --- /dev/null +++ b/Sketch3D/public/Sketch3D.hpp @@ -0,0 +1,159 @@ +#pragma once + +#include "Buffer.hpp" +#include "List.hpp" +#include "Map.hpp" +#include "Topology.hpp" +#include "Color.hpp" + +#include "GraphicsApi.hpp" +#include "FrameBuffer.hpp" +#include "Shader.hpp" + +namespace tp { + + class Renderer; + class Project; + class Stroke; + class Brush; + + struct StrokePoint { + Vec3F pos = { 0, 0, 0 }; + halnf thickness = 0; + }; + + struct StrokeGPUHandles { + GLuint VertexArrayID = 0; + GLuint vertexbuffer = 0; + GLuint vbo_len = 0; + StrokeGPUHandles(); + void sendDataToGPU(Buffer* mPoints); + ~StrokeGPUHandles(); + }; + + class Renderer { + public: + Renderer(Vec2F size); // max render size + ~Renderer(); + + void renderToTexture(const Project* project, Vec2F size); // needed size + + void renderBegin(); + void setViewport(RectF viewport); + void drawStroke(const Stroke* str, const Camera* camera); + void renderEnd(); + + void setClearCol(RGBA col); + uhalni getTextudeId(); + RenderBuffer* getBuff(); + + private: + RenderBuffer mBufferDowncast; + RenderBuffer mBuffer; + RenderShader mShader; + + // shader uniforms + GLuint mMatrixUniform = 0; + GLuint mColorUniform = 0; + GLuint mRatioUniform = 0; + GLuint mTargetUniform = 0; + GLuint mBGColUniform = 0; + + Vec2F mMaxSize; + }; + + class Stroke { + public: + Stroke(); + void denoisePos(halni passes); + void denoiseThickness(halni passes); + void compress(halnf factor); + void subdiv(halnf precition, const Camera* cam, halni passes = 1); + void updateGpuBuffers(); + Buffer& getPoints(); + const Buffer& getPoints() const; + void setColor(const RGBA& col); + const RGBA& getColor() const; + + private: + Buffer mPoints; + RGBA mColor; + + friend Renderer; + StrokeGPUHandles mGPUHandles; + }; + + struct Layer { + Layer() = default; + ~Layer(); + + std::string name = "new layer"; + List strokes; // TODO use vector + bool enabled = true; + }; + + class Project { + public: + Project(); + ~Project(); + + // pos from -1 to 1 (left ot right bottom to top) + void sample(halnf pressure, halnf cameraRatio, Vec2F relativeCameraPos); + + public: + Buffer mLayers; + halni mActiveLayer = -1; + + Camera mCamera; + RGBA mBackgroundColor = { 0.22f, 0.22f, 0.25f, 1.f }; + + Map mBrushes; + std::string mActiveBrush; + }; + + class Brush { + public: + std::string mType = "equal"; + Brush() = default; + virtual void sample(Project* proj, Vec2F crs, halnf pressure) {} + virtual void draw(Renderer* render, const Camera* camera) {} + virtual ~Brush() = default; + }; + + class PencilBrush : public Brush { + public: + PencilBrush(); + ~PencilBrush() override; + + virtual void sample(Project* proj, Vec2F crs, halnf pressure) override; + virtual void draw(Renderer* render, const Camera* camera) override; + + private: + void ensureReady(Stroke* stroke, const Camera* cam, bool debug = false) const; + + public: + RGBA mCol = RGBA(1.0f); + halnf mSize = 0.01f; + + private: + halnf mPrecision = 0.001f; + + halni mDenoisePassesPos = 1; + halni mDenoisePassesThick = 3; + halnf mCompressionFactor = 0.0001f; + halni mSubdivPasses = 3; + bool mEnableCompression = true; + + halni mMaxPoints = 100; + + Stroke* mStroke = nullptr; + Stroke mTempDisplayStroke; + }; + + struct EraserBrush : public Brush { + EraserBrush() { mType = "eraser"; } + void sample(Project* proj, Vec2F crs, halnf pressure) override {} + void draw(Renderer* render, const Camera* camera) override {} + ~EraserBrush() override = default; + }; +} \ No newline at end of file diff --git a/Sketch3D/public/Sketch3DWidget.hpp b/Sketch3D/public/Sketch3DWidget.hpp new file mode 100644 index 0000000..787672a --- /dev/null +++ b/Sketch3D/public/Sketch3DWidget.hpp @@ -0,0 +1,183 @@ +#pragma once + +#include "Sketch3D.hpp" +#include "Widgets.hpp" + +namespace tp { + + template + class Sketch3DWidget : public Widget { + public: + Sketch3DWidget(Canvas& canvas, Vec2F renderResolution) : + mRenderer(renderResolution) { + mImage = canvas.createImageFromTextId(mRenderer.getBuff()->texId(), mRenderer.getBuff()->getSize()); + mCanvas = &canvas; + + mProject.mBackgroundColor = { 0.13f, 0.13f, 0.13f, 1.f }; + } + + ~Sketch3DWidget() { + mCanvas->deleteImageHandle(mImage); + } + + void proc(const Events& events, const RectF& areaParent, const RectF& area) override { + + this->mArea = area; + this->mVisible = area.isOverlap(areaParent); + if (!this->mVisible) return; + + if (!this->mArea.isInside(events.getPointer())) { + return; + } + + auto crs = (events.getPointer() - this->mArea.pos); + crs.x /= this->mArea.z; + crs.y /= this->mArea.w; + crs = (crs - 0.5) * 2; + + // TODO : make better api for events + Vec2F absolutePos = events.getPointer() - this->mArea.pos; + + if (events.isPressed(InputID::MOUSE1)) { + mAction = true; + } else if (events.isReleased(InputID::MOUSE1)) { + mAction = false; + } + + Vec2F relativePos = ((absolutePos / this->mArea.size) - 0.5f) * 2.f; + Vec2F relativePosPrev = ((mActionPosAbsolutePrev / this->mArea.size) - 0.5f) * 2.f; + Vec2F relativeDelta = relativePos - relativePosPrev; + + mProject.mCamera.setRatio(this->mArea.w / this->mArea.z); + + switch (mMode) { + case Mode::MOVE: { + if (mAction) mProject.mCamera.move(relativePos, relativePosPrev); + break; + } + case Mode::ZOOM: { + halnf factor = absolutePos.y / mActionPosAbsolutePrev.y; + if (mAction) mProject.mCamera.zoom(factor); + break; + } + case Mode::ROTATE: { + if (mAction) mProject.mCamera.rotate(-relativeDelta.x * halnf(PI), -relativeDelta.y * halnf(PI)); + break; + } + case Mode::DRAW: { + mProject.sample(events.getPointerPressure(), this->mArea.w / this->mArea.z, crs); + break; + } + default: break; + } + + mActionPosAbsolutePrev = absolutePos; + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + mRenderer.renderToTexture(&mProject, this->mArea.size); + canvas.drawImage(this->mArea, &mImage, 0, 1, 12); + } + + void setColor(const RGBA& color) { + ((PencilBrush*) mProject.mBrushes.get("pencil"))->mCol = color; + } + + public: + enum class Mode { + MOVE, ROTATE, ZOOM, DRAW, NONE + } mMode = Mode::NONE; + + Vec2F mActionPosAbsolutePrev = { 0, 0 }; + bool mAction = false; + + private: + Renderer mRenderer; + Project mProject; + Canvas::ImageHandle mImage; + Canvas* mCanvas = nullptr; + }; + + template + class Sketch3DGUI : public Widget { + public: + Sketch3DGUI(Canvas& canvas, Vec2F renderResolution) : mViewport(canvas, renderResolution) { + this->createConfig("Sketch3D"); + + this->addColor("Background", "Background"); + this->addValue("Rounding", "Rounding"); + + mDrawButton = new ButtonWidget("Draw", { 0, 0, 100, 30 }); + mMoveButton = new ButtonWidget("Pan View", { 0, 0, 100, 30 }); + mRotateButton = new ButtonWidget("Rotate view", { 0, 0, 100, 30 }); + mZoomButton = new ButtonWidget("Zoom view", { 0, 0, 100, 30 }); + + mOptions.mContents.append(mDrawButton); + mOptions.mContents.append(mMoveButton); + mOptions.mContents.append(mRotateButton); + mOptions.mContents.append(mZoomButton); + + // add color sliders + mRed = new NamedSliderWidget < Events, Canvas >("Red"); + mGreen = new NamedSliderWidget < Events, Canvas >("Green"); + mBlue = new NamedSliderWidget < Events, Canvas >("Blue"); + + mOptions.mContents.append(mRed); + mOptions.mContents.append(mGreen); + mOptions.mContents.append(mBlue); + } + + ~Sketch3DGUI() { + for (auto item : mOptions.mContents) { + delete item.data(); + } + } + + void proc(const Events& events, const RectF& areaParent, const RectF& area) override { + this->mArea = area; + this->mVisible = area.isOverlap(areaParent); + if (!this->mVisible) return; + + mSplitView.proc(events, this->mArea, this->mArea); + mViewport.proc(events, this->mArea, mSplitView.getFirst()); + mOptions.proc(events, this->mArea, mSplitView.getSecond()); + + if (mDrawButton->mIsPressed) { + mViewport.mMode = Sketch3DWidget::Mode::DRAW; + } else if (mMoveButton->mIsPressed) { + mViewport.mMode = Sketch3DWidget::Mode::MOVE; + } else if (mRotateButton->mIsPressed) { + mViewport.mMode = Sketch3DWidget::Mode::ROTATE; + } else if (mZoomButton->mIsPressed) { + mViewport.mMode = Sketch3DWidget::Mode::ZOOM; + } + + mViewport.setColor(RGBA(mRed->mSlider.mFactor, mGreen->mSlider.mFactor, mBlue->mSlider.mFactor, 1.f)); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + canvas.rect(this->mArea, this->getColor("Background"), this->getValue("Rounding")); + + mSplitView.draw(canvas); + mViewport.draw(canvas); + mOptions.draw(canvas); + } + + private: + Sketch3DWidget mViewport; + SplitView mSplitView; + ScrollableWindow mOptions; + + ButtonWidget* mDrawButton = nullptr; + ButtonWidget* mMoveButton = nullptr; + ButtonWidget* mRotateButton = nullptr; + ButtonWidget* mZoomButton = nullptr; + + NamedSliderWidget* mRed = nullptr; + NamedSliderWidget* mGreen = nullptr; + NamedSliderWidget* mBlue = nullptr; + }; +} \ No newline at end of file diff --git a/Sketch3D/rsc/shaders/Texture.frag b/Sketch3D/rsc/shaders/Texture.frag new file mode 100644 index 0000000..c72e4c9 --- /dev/null +++ b/Sketch3D/rsc/shaders/Texture.frag @@ -0,0 +1,15 @@ +#version 330 core + +in vec2 UV; + +out vec4 color; + +uniform sampler2D renderedTexture; + +void main(){ + vec4 texColor = texture(renderedTexture, UV); + if(texColor.a < 0.2) + discard; + + color = texColor; +} diff --git a/Sketch3D/rsc/shaders/Texture.vert b/Sketch3D/rsc/shaders/Texture.vert new file mode 100644 index 0000000..7700076 --- /dev/null +++ b/Sketch3D/rsc/shaders/Texture.vert @@ -0,0 +1,12 @@ +#version 330 core + +// Input vertex data, different for all executions of this shader. +layout(location = 0) in vec3 vertexPosition_modelspace; + +// Output data ; will be interpolated for each fragment. +out vec2 UV; + +void main(){ + gl_Position = vec4(vertexPosition_modelspace.x, vertexPosition_modelspace.y, -0.99, 1); + UV = (vertexPosition_modelspace.xy + vec2(1, 1)) / 2.0; +} \ No newline at end of file diff --git a/Sketch3D/rsc/shaders/stroke.frag b/Sketch3D/rsc/shaders/stroke.frag new file mode 100644 index 0000000..0257290 --- /dev/null +++ b/Sketch3D/rsc/shaders/stroke.frag @@ -0,0 +1,28 @@ + +#version 330 core + +uniform vec4 Color; + +layout(location = 0) out vec4 color; + +uniform float Target; +uniform vec4 BGCol; + +#define A 0.1f + +void main() { + float x = gl_FragCoord.z; + + float val = A; + + float f = Target * 2; + + if (x < f) { + val = ((A - 1) / f) * x + 1; + } + + val = clamp(val, A, 1); + + + color = vec4((Color.xyz - BGCol.xyz) * val + BGCol.xyz, 1.f); +} \ No newline at end of file diff --git a/Sketch3D/rsc/shaders/stroke.geom b/Sketch3D/rsc/shaders/stroke.geom new file mode 100644 index 0000000..04199b2 --- /dev/null +++ b/Sketch3D/rsc/shaders/stroke.geom @@ -0,0 +1,170 @@ +#version 330 core + +#define PI 3.14 + +layout (lines) in; +layout (triangle_strip, max_vertices = 16) out; + +in float thickness[]; + +uniform float Ratio; + +void main2() { + + float r = sqrt(Ratio); + vec4 l1 = gl_in[0].gl_Position; + vec4 l2 = gl_in[1].gl_Position; + + vec2 l1p = l1.xy / l1.w; + vec2 l2p = l2.xy / l2.w; + + float t1 = thickness[0] / l1.w; + float t2 = thickness[1] / l2.w; + + vec2 l = normalize(vec2(l2p.x / r, l2p.y * r) - vec2(l1p.x / r, l1p.y * r)); + vec2 tmp = vec2(-l.y, l.x); + + vec2 tmp_poj = vec2(tmp.x * r, tmp.y / r); + vec2 l_poj = vec2(l.x * r, l.y / r); + + vec2 p1 = l1p.xy + (tmp_poj * t1); + vec2 p2 = l1p.xy - (tmp_poj * t1); + vec2 p3 = l2p.xy + (tmp_poj * t2); + vec2 p4 = l2p.xy - (tmp_poj * t2); + + gl_Position = vec4(p1.x, p1.y , l1.z, 1); + EmitVertex(); + gl_Position = vec4(p2.x, p2.y, l1.z, 1); + EmitVertex(); + + gl_Position = vec4(p3.x, p3.y, l2.z, 1); + EmitVertex(); + gl_Position = vec4(p4.x, p4.y, l2.z, 1); + EmitVertex(); + EndPrimitive(); + + + p1 = l1p.xy + (tmp_poj * t1); + p2 = l1p.xy - (tmp_poj * t1); + p3 = l1p.xy + (tmp_poj * t1) - (l_poj * t1) / 2.f; + p4 = l1p.xy - (tmp_poj * t1) - (l_poj * t1) / 2.f; + vec2 p5 = l1p.xy + (tmp_poj * t1) / 2.f - (l_poj * t1); + vec2 p6 = l1p.xy - (tmp_poj * t1) / 2.f - (l_poj * t1); + + gl_Position = vec4(p1.x, p1.y, l1.z, 1); + EmitVertex(); + gl_Position = vec4(p2.x, p2.y, l1.z, 1); + EmitVertex(); + gl_Position = vec4(p3.x, p3.y, l1.z, 1); + EmitVertex(); + gl_Position = vec4(p4.x, p4.y, l1.z, 1); + EmitVertex(); + gl_Position = vec4(p5.x, p5.y, l1.z, 1); + EmitVertex(); + gl_Position = vec4(p6.x, p6.y, l1.z, 1); + EmitVertex(); + + EndPrimitive(); + + p1 = l2p.xy + (tmp_poj * t2); + p2 = l2p.xy - (tmp_poj * t2); + p3 = l2p.xy + (tmp_poj * t2) + (l_poj * t2) / 2.f; + p4 = l2p.xy - (tmp_poj * t2) + (l_poj * t2) / 2.f; + p5 = l2p.xy + (tmp_poj * t2) / 2.f + (l_poj * t2); + p6 = l2p.xy - (tmp_poj * t2) / 2.f + (l_poj * t2); + + gl_Position = vec4(p1.x, p1.y, l2.z, 1); + EmitVertex(); + gl_Position = vec4(p2.x, p2.y, l2.z, 1); + EmitVertex(); + gl_Position = vec4(p3.x, p3.y, l2.z, 1); + EmitVertex(); + gl_Position = vec4(p4.x, p4.y, l2.z, 1); + EmitVertex(); + gl_Position = vec4(p5.x, p5.y, l2.z, 1); + EmitVertex(); + gl_Position = vec4(p6.x, p6.y, l2.z, 1); + EmitVertex(); + + EndPrimitive(); +} + +void main() { + + float r = sqrt(Ratio); + vec4 l1 = gl_in[0].gl_Position; + vec4 l2 = gl_in[1].gl_Position; + + vec2 l1p = l1.xy / l1.w; + vec2 l2p = l2.xy / l2.w; + + float t1 = thickness[0] / l1.w; + float t2 = thickness[1] / l2.w; + + vec2 l = normalize(vec2(l2p.x / r, l2p.y * r) - vec2(l1p.x / r, l1p.y * r)); + vec2 tmp = vec2(-l.y, l.x); + + vec2 tmp_poj = vec2(tmp.x * r, tmp.y / r); + vec2 l_poj = vec2(l.x * r, l.y / r); + + vec2 p1 = l1p.xy + (tmp_poj * t1); + vec2 p2 = l1p.xy - (tmp_poj * t1); + vec2 p3 = l2p.xy + (tmp_poj * t2); + vec2 p4 = l2p.xy - (tmp_poj * t2); + + gl_Position = vec4(p1.x * l1.w, p1.y * l1.w, l1.z, l1.w); + EmitVertex(); + gl_Position = vec4(p2.x * l1.w, p2.y * l1.w, l1.z, l1.w); + EmitVertex(); + + gl_Position = vec4(p3.x * l2.w, p3.y * l2.w, l2.z, l2.w); + EmitVertex(); + gl_Position = vec4(p4.x * l2.w, p4.y * l2.w, l2.z, l2.w); + EmitVertex(); + EndPrimitive(); + + + p1 = l1p.xy + (tmp_poj * t1); + p2 = l1p.xy - (tmp_poj * t1); + p3 = l1p.xy + (tmp_poj * t1) - (l_poj * t1) / 2.f; + p4 = l1p.xy - (tmp_poj * t1) - (l_poj * t1) / 2.f; + vec2 p5 = l1p.xy + (tmp_poj * t1) / 2.f - (l_poj * t1); + vec2 p6 = l1p.xy - (tmp_poj * t1) / 2.f - (l_poj * t1); + + gl_Position = vec4(p1.x * l1.w, p1.y * l1.w, l1.z, 1 * l1.w); + EmitVertex(); + gl_Position = vec4(p2.x * l1.w, p2.y * l1.w, l1.z, 1 * l1.w); + EmitVertex(); + gl_Position = vec4(p3.x * l1.w, p3.y * l1.w, l1.z, 1 * l1.w); + EmitVertex(); + gl_Position = vec4(p4.x * l1.w, p4.y * l1.w, l1.z, 1 * l1.w); + EmitVertex(); + gl_Position = vec4(p5.x * l1.w, p5.y * l1.w, l1.z, 1 * l1.w); + EmitVertex(); + gl_Position = vec4(p6.x * l1.w, p6.y * l1.w, l1.z, 1 * l1.w); + EmitVertex(); + + EndPrimitive(); + + p1 = l2p.xy + (tmp_poj * t2); + p2 = l2p.xy - (tmp_poj * t2); + p3 = l2p.xy + (tmp_poj * t2) + (l_poj * t2) / 2.f; + p4 = l2p.xy - (tmp_poj * t2) + (l_poj * t2) / 2.f; + p5 = l2p.xy + (tmp_poj * t2) / 2.f + (l_poj * t2); + p6 = l2p.xy - (tmp_poj * t2) / 2.f + (l_poj * t2); + + gl_Position = vec4(p1.x * l2.w, p1.y * l2.w, l2.z, 1 * l2.w); + EmitVertex(); + gl_Position = vec4(p2.x * l2.w, p2.y * l2.w, l2.z, 1 * l2.w); + EmitVertex(); + gl_Position = vec4(p3.x * l2.w, p3.y * l2.w, l2.z, 1 * l2.w); + EmitVertex(); + gl_Position = vec4(p4.x * l2.w, p4.y * l2.w, l2.z, 1 * l2.w); + EmitVertex(); + gl_Position = vec4(p5.x * l2.w, p5.y * l2.w, l2.z, 1 * l2.w); + EmitVertex(); + gl_Position = vec4(p6.x * l2.w, p6.y * l2.w, l2.z, 1 * l2.w); + EmitVertex(); + + EndPrimitive(); +} diff --git a/Sketch3D/rsc/shaders/stroke.vert b/Sketch3D/rsc/shaders/stroke.vert new file mode 100644 index 0000000..220e25e --- /dev/null +++ b/Sketch3D/rsc/shaders/stroke.vert @@ -0,0 +1,16 @@ +#version 330 core + +layout(location = 0) in vec4 point; + +out float thickness; + +uniform mat4 MVP; + +void main() { + thickness = point.w; + // gl_Position = MVP * vec4(point.xyz, 1); + + vec4 vec = MVP * vec4(point.xyz, 1); + vec.z *= vec.w; + gl_Position = vec; +} \ No newline at end of file diff --git a/TODO b/TODO index 7811a43..b98011b 100644 --- a/TODO +++ b/TODO @@ -1,19 +1,89 @@ -All: - Testing - Serialization + +ALL: + Gradually introduce STL into the project (replace own classes or add seamless interface and conversions into STL) + + Remove BaseModule and Connection modules + remove archiver and add boost serialization + Bring windows old window to graphics + + Check Warnings + Make all modules stable with tests + +Modules: + Remove all static variable into module's data + +Algorithms: + Implement heap sort, quick sort, bucket sort, counting sort, (radix sort?) + Implement order statistics. Containers: - Add mem leakage tests - Buffer 2d ! + Add variant size buffer + Buffer add resize function + Buffer improvements Add check copy times - AVL dont copy data just swap - More tests on buff and avl -Strings: - Implement +Storage: + Reconsider + Finish networking + Enable preloads -Utils: - Stack trace fixes +Objects: + Warnings + Memory leaks + Compile-time error handling + Debug information support + Run-time error handling + Refactors + Optimizations -Tokenizer: - Implement + features: + add debug line information into bytecode + implement Alloc Size queries + + enhance: + use anonymous namespaces for object static methods + remove obj_ref_count macro + fix all clang-tidy notices + replace all strings with const string ref + replace all type usages with typedefs + remove tp:: + rename classes + +Language: + Grammar: + Store all RE Grammar API nodes in one buffer + + rename Language module to FormalLanguage + Merge parser and tokenizer module into grammar module + + Define grammars + Implement automations + Implement LL parsing using hardcoded rules in the code + Implement save and loading of automatas + Using LL parsing define grammar for + + Make two grammars Regular and Context-free + For each grammar make grammar rules parser, example sentence generation and sentence parsing + Make automations itself a universal tool - NFA DFA conversions + +Math: + FFT + +RayTracer: + Features: + Normals flag + Material, Normals per trig info + + Quality: + Render eq + Lenses + Exposure + + Efficiency: + Casting Accelerators + MIS (DMIS CMIS) + Important sampling + Threading + +TextEditor: + Restore diff --git a/Utils/CMakeLists.txt b/Utils/CMakeLists.txt deleted file mode 100644 index 5651c5d..0000000 --- a/Utils/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ - -cmake_minimum_required(VERSION 3.2) - -set(CMAKE_CXX_STANDARD 23) - -project(Utils) - -### ---------------------- Static Library --------------------- ### -file(GLOB SOURCES "./private/*.cpp") -add_library(${PROJECT_NAME} STATIC ${SOURCES}) -target_include_directories(${PROJECT_NAME} PUBLIC ./public/) - -### ---------------------- Dependencies --------------------- ### -target_link_libraries(${PROJECT_NAME} PUBLIC Containers) - -### -------------------------- Tests -------------------------- ### -enable_testing() -file(GLOB TEST_SOURCES "./tests/*.cpp") -add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) -target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) - - -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Utils/private/Debugging.cpp b/Utils/private/Debugging.cpp deleted file mode 100644 index 38aade8..0000000 --- a/Utils/private/Debugging.cpp +++ /dev/null @@ -1,223 +0,0 @@ - -#include "Debugging.hpp" -#include "Utils.hpp" - -#include - -using namespace tp; - -CallStackCapture* tp::gCSCapture = nullptr; - -void initializeCallStackCapture() { - gCSCapture = new (malloc(sizeof(CallStackCapture))) CallStackCapture(); -} - -void deinitializeCallStackCapture() { - gCSCapture->~CallStackCapture(); - free(gCSCapture); -} - -ualni CallStackCapture::CallStack::getDepth() const { - ualni len = 0; - for (long long frame : frames) { - if (!frame) { break; } - len++; - } - ualni stripedLen = 0; - for (auto i = FRAMES_TO_SKIP_START; i < len - FRAMES_TO_SKIP_END; i++) { - if (!frames[i]) { break; } - stripedLen++; - } - return stripedLen; -} - -ualni CallStackCapture::hashCallStack(CallStackKey key) { - auto const cs = key.cs; - ualni out = 0; - for (ualni i = 0; cs->frames[i]; i++) { out += cs->frames[i]; } - return out; -} - -bool CallStackCapture::CallStackKey::operator==(const CallStackCapture::CallStackKey &in) const { - for (auto i : Range(MAX_CALL_DEPTH_CAPTURE)) { - if (cs->frames[i] != in.cs->frames[i]) { - return false; - } - if (cs->frames[i] == 0 && in.cs->frames[i] == 0) { - return true; - } - } - DEBUG_ASSERT(0 && "Must Not Happen") - return true; -} - -CallStackCapture::CallStackCapture() { - static_assert(MAX_CALL_DEPTH_CAPTURE >= 1); - static_assert(MAX_CALL_CAPTURES_MEM_SIZE_MB > 0); - static_assert(MAX_DEBUG_INFO_LEN > sizeof("unresolved")); - static_assert(FRAMES_TO_SKIP_END >= 0 && FRAMES_TO_SKIP_START >= 0); - static_assert(MAX_CALL_DEPTH_CAPTURE > FRAMES_TO_SKIP_START + FRAMES_TO_SKIP_END); - static_assert(MAX_CALL_CAPTURES_MEM_SIZE_MB * 1024 * 1024 > sizeof(CallStack)); - - MODULE_SANITY_CHECK(gModuleUtils) - mBuffLoad = 0; - mBuffLen = (MAX_CALL_CAPTURES_MEM_SIZE_MB * 1024 * 1024) / sizeof(CallStack); - mBuff = (CallStack*) malloc(mBuffLen * sizeof(CallStack)); -} - -const CallStackCapture::CallStack* CallStackCapture::getSnapshot() { - if (mBuffLoad > mBuffLen) { - static CallStack cs; - cs.frames[0] = 0; - return &cs; - } - - CallStack* cs = &mBuff[mBuffLoad]; - platformWriteStackTrace(cs); - - auto idx = mSnapshots.presents({ cs }); - if (idx) { - return mSnapshots.getSlotVal(idx); - } - - mSnapshots.put({ cs }, cs); - - mBuffLoad++; - return cs; -} - -const CallStackCapture::DebugSymbols* CallStackCapture::getSymbols(FramePointer frame) { - auto idx = mSymbols.presents(frame); - if (idx) { - return &mSymbols.getSlotVal(idx); - } - - mSymbols.put(frame, {}); - auto symbols = &mSymbols.get(frame); - - platformWriteDebugSymbols(frame, symbols); - return symbols; -} - -void CallStackCapture::clear() { - mBuffLoad = 0; - mSnapshots.removeAll(); - mSymbols.removeAll(); -} - -CallStackCapture::~CallStackCapture() { - free(mBuff); -} - -// ---------------------------------- Platform Depended ---------------------------------- // - -#if defined(ENV_OS_LINUX) - -#include -#include -#include -#include - -void CallStackCapture::platformWriteStackTrace(CallStack* stack) { - auto depth = backtrace((void**)stack->frames, (int) MAX_CALL_DEPTH_CAPTURE - 1); - stack->frames[depth] = 0; -} - -static void getGetSourceFromBinaryAddress(const char* binary, const char* address, char* file, ualni* line) { - static char buff[1024]; - - snprintf(buff, sizeof(buff), "addr2line -e %s -a %s", binary, address); - FILE* pipe = popen(buff, "r"); - if (pipe) { - fgets(buff, sizeof(buff), pipe); - fgets(buff, sizeof(buff), pipe); - pclose(pipe); - char* linePtr = strchr(buff, ':'); - - printf("%s\n", buff); - - if (linePtr != nullptr && buff[0] != '?' && buff[1] != '?' && buff[2] != ':') { - *linePtr = '\0'; - auto sourceLen = std::strlen(buff); - std::strcpy(file, buff + ((sourceLen > MAX_DEBUG_INFO_LEN) ? (sourceLen - MAX_DEBUG_INFO_LEN) : 0)); - *line = strtoul(linePtr + 1, nullptr, 10); - return; - } - } - - std::strcpy(file, "unresolved"); - *line = 0; -} - -static void getDemangledName(const char* func, char* out) { - int status; - size_t funcDemangledSize = MAX_DEBUG_INFO_LEN; - char* funcDemangled = (char*)malloc(funcDemangledSize); - char* ret = abi::__cxa_demangle(func, funcDemangled, &funcDemangledSize, &status); - if (status == 0) { - funcDemangled = ret; - auto funcLen = std::strlen(funcDemangled); - std::strcpy(out, funcDemangled + ((funcLen > MAX_DEBUG_INFO_LEN) ? (funcLen - MAX_DEBUG_INFO_LEN) : 0)); - free(ret); - return; - } - auto funcLen = std::strlen(func); - std::strcpy(out, func + ((funcLen > MAX_DEBUG_INFO_LEN) ? (funcLen - MAX_DEBUG_INFO_LEN) : 0)); - free(funcDemangled); -} - -void CallStackCapture::platformWriteDebugSymbols(FramePointer frame, DebugSymbols* out) { - void* addrList[1] = { (void*) frame }; - auto symbolsArray = backtrace_symbols(addrList, 1); - - // 'bin(fun+addr)' - char* bin = *symbolsArray; - char* func = nullptr; - char* offset = nullptr; - - // 'bin fun+addr' - for (char *p = bin; *p; ++p) { - if (*p == '(') { *p = 0; func = p + 1; } - else if (*p == '+') { offset = p; } - else if (*p == ')' && offset) { *p = 0; } - } - - if (func && offset) { - getGetSourceFromBinaryAddress(bin, func, out->file, &out->line); - - if (offset != func) { - *offset = 0; - getDemangledName(func, out->function); - } else { - std::strcpy(out->function, "unresolved"); - } - } else { - std::strcpy(out->file, "unresolved"); - std::strcpy(out->function, "unresolved"); - } - - free(symbolsArray); -} - -void CallStackCapture::printSnapshot(const CallStack* snapshot) { - printf("CallStack: \n"); - for (auto frame : *snapshot) { - auto symbols = gCSCapture->getSymbols(frame.getFrame()); - printf(" %s ----- %s:%llu\n", symbols->getFunc(), symbols->getFile(), symbols->getLine()); - } - printf("\n"); -} - -void CallStackCapture::logLeaks() { - for (auto cs : *this) { - printSnapshot(cs.getCallStack()); - } -} - -#else -void CallStackCapture::platformWriteStackTrace(CallStack* stack) { stack->frames[0] = 0; } -void CallStackCapture::platformWriteDebugSymbols(FramePointer frame, DebugSymbols* out) { - std::strcpy(out->file, "unresolved"); - std::strcpy(out->function, "unresolved"); -} -#endif \ No newline at end of file diff --git a/Utils/private/Testing.cpp b/Utils/private/Testing.cpp deleted file mode 100644 index d2aaa56..0000000 --- a/Utils/private/Testing.cpp +++ /dev/null @@ -1,83 +0,0 @@ - -#include "Testing.hpp" -#include "Utils.hpp" - -#include -#include - -using namespace tp; - -Testing tp::gTesting; - -void Testing::startTest(const char* name) { - MODULE_SANITY_CHECK(gModuleUtils) - auto newNode = new (malloc(sizeof(TestingNode))) TestingNode{ {}, {}, name, mCurrent }; - mCurrent->mSubTests.pushBack(newNode); - mCurrent = mCurrent->mSubTests.last()->data; -} - -void Testing::endTest() { - if (mCurrent->mParent) { - mCurrent = mCurrent->mParent; - } -} - -void Testing::addFailedCheck(const FailedCheck& info) { - DEBUG_BREAK(0 && info.expression); - auto lastRecord = &mCurrent->mFailedChecks.last()->data; - if (lastRecord && lastRecord->failedCheck.file == info.file && lastRecord->failedCheck.line == info.line) { - lastRecord->times++; - return; - } - mCurrent->mFailedChecks.pushBack({ info, 1 }); -} - -void Testing::reportState() { - mRootTest.updateState(); - - printf("\n"); - mRootTest.report(); -} - -bool Testing::hasFailed() { - mRootTest.updateState(); - return mRootTest.mHasFailed; -} - -void Testing::setRootName(const char* name) { - mRootTest.mName = name; -} - -void Testing::TestingNode::updateState() { - for (auto child : mSubTests) { - child->updateState(); - mHasFailed = child->mHasFailed; - if (mHasFailed) return; - } - mHasFailed = mFailedChecks.length(); -} - -void Testing::TestingNode::report(const char* path) const { - if (!mHasFailed) { - return; - } - - auto newPath = path ? std::string(path) + "/" + mName : std::string(mName); - - for (auto check : mFailedChecks) { - auto failedCheck = &check.data().failedCheck; - auto times = check.data().times; - printf("%s Failed - (%s) %s:%llu x%i\n", newPath.c_str(), failedCheck->expression, failedCheck->file, failedCheck->line, (halni) times); - } - - for (const auto& child : mSubTests) { - child->report(newPath.c_str()); - } -} - -Testing::TestingNode::~TestingNode() { - for (const auto& child : mSubTests) { - child.data()->~TestingNode(); - free(child.data()); - } -} diff --git a/Utils/public/Debugging.hpp b/Utils/public/Debugging.hpp deleted file mode 100644 index 26f0cf8..0000000 --- a/Utils/public/Debugging.hpp +++ /dev/null @@ -1,125 +0,0 @@ -#pragma once - -#include "Environment.hpp" -#include "Map.hpp" - -#define MAX_CALL_DEPTH_CAPTURE 16 -#define MAX_CALL_CAPTURES_MEM_SIZE_MB 16 -#define MAX_DEBUG_INFO_LEN 63 -#define FRAMES_TO_SKIP_START 2 -#define FRAMES_TO_SKIP_END 3 - -namespace tp { - - class CallStackCapture { - public: - typedef tp::alni FramePointer; - - class CallStack { - friend CallStackCapture; - FramePointer frames[MAX_CALL_DEPTH_CAPTURE]; - - public: - [[nodiscard]] ualni getDepth() const; - - class Iterator { - const FramePointer* mFrame; - public: - explicit Iterator(const FramePointer* frame) : mFrame(frame) {}; - FramePointer getFrame() { return *mFrame; } - bool operator==(const Iterator& in) const { return in.mFrame == mFrame; } - void operator++() { mFrame++; } - const Iterator& operator*() const { return *this; } - }; - - [[nodiscard]] Iterator begin() const { return Iterator(frames + FRAMES_TO_SKIP_START); } - [[nodiscard]] Iterator end() const { return Iterator(frames + FRAMES_TO_SKIP_START + getDepth()); } - }; - - class DebugSymbols { - friend CallStackCapture; - char function[MAX_DEBUG_INFO_LEN + 1] = { 0 }; - char file[MAX_DEBUG_INFO_LEN + 1] = { 0 }; - ualni line = 0; - public: - [[nodiscard]] const char* getFunc() const { return function; } - [[nodiscard]] const char* getFile() const { return file; } - [[nodiscard]] ualni getLine() const { return line; } - }; - - public: - CallStackCapture(); - ~CallStackCapture(); - - [[nodiscard]] const CallStack* getSnapshot(); - const DebugSymbols* getSymbols(FramePointer fp); - - static void printSnapshot(const CallStack* snapshot); - void logLeaks(); - - public: - - template - void write(Saver& file) { - file.write(mBuffLoad); - for (auto cs : *this) { - file.write(cs.getCallStack()->getDepth()); - for (auto frame : *cs.getCallStack()) { - file.write((ualni) frame.getFrame()); - } - } - file.write(mSymbols); - } - - // independent of the configuration - template - void read(Loader& file) { - clear(); - ualni loadLen; - file.read(loadLen); - for (auto cs = loadLen; cs; cs--) { - ualni callStackLen; - file.read(callStackLen); - for (auto fp = callStackLen; fp; fp--) { - // -- - } - } - } - - public: - class Iterator { - const CallStack* mSnapshot; - public: - explicit Iterator(const CallStack* start) : mSnapshot(start) {}; - const CallStack* getCallStack() { return mSnapshot; } - bool operator==(const Iterator& in) const { return in.mSnapshot == mSnapshot; } - void operator++() { mSnapshot++; } - const Iterator& operator*() const { return *this; } - }; - - [[nodiscard]] Iterator begin() const { return Iterator(mBuff); } - [[nodiscard]] Iterator end() const { return Iterator(mBuff + mBuffLoad); } - - private: - - struct CallStackKey { - CallStack* cs; - bool operator==(const CallStackKey& in) const; - }; - - static void platformWriteStackTrace(CallStack* stack); - static void platformWriteDebugSymbols(FramePointer frame, DebugSymbols* out); - [[nodiscard]] static ualni hashCallStack(CallStackKey key); - - void clear(); - - private: - ualni mBuffLen; - ualni mBuffLoad; - CallStack* mBuff; - Map mSnapshots; - Map mSymbols; - }; - - extern CallStackCapture* gCSCapture; -} diff --git a/Utils/public/Testing.hpp b/Utils/public/Testing.hpp deleted file mode 100644 index c8c1c1c..0000000 --- a/Utils/public/Testing.hpp +++ /dev/null @@ -1,64 +0,0 @@ - -#pragma once - -#include "List.hpp" - -namespace tp { - class Testing { - public: - - struct FailedCheck { - const char* expression = nullptr; - const char* file = nullptr; - ualni line = 0; - }; - - Testing() = default; - void startTest(const char* name); - void endTest(); - void addFailedCheck(const FailedCheck& info); - void reportState(); - void setRootName(const char* name); - [[nodiscard]] bool hasFailed(); - - private: - struct TestingNode { - struct FailedCheckRecord { FailedCheck failedCheck; ualni times; }; - List mFailedChecks; - List mSubTests; - const char* mName = "Unnamed"; - TestingNode* mParent = nullptr; - bool mHasFailed = false; - - void report(const char* path = nullptr) const; - void updateState(); - ~TestingNode(); - }; - - TestingNode mRootTest; - TestingNode* mCurrent = &mRootTest; - }; - - extern Testing gTesting; -} - -#define TEST_DEF(Name)\ - static void Name##FunctorBody();\ - void test##Name() { \ - tp::gTesting.startTest(#Name);\ - Name##FunctorBody();\ - tp::gTesting.endTest();\ - } \ - void Name##FunctorBody() - -#define TEST_DEF_STATIC(Name)\ - static void Name##FunctorBody();\ - static void test##Name() { \ - tp::gTesting.startTest(#Name);\ - Name##FunctorBody();\ - tp::gTesting.endTest();\ - } \ - void Name##FunctorBody() - -#define TEST(expr) if (!(expr)) tp::gTesting.addFailedCheck({ #expr, __FILE__, __LINE__ }) -#define TEST_EQUAL(l, r) if (!((l) == (r))) tp::gTesting.addFailedCheck({ #l" == "#r, __FILE__, __LINE__ }) diff --git a/Utils/tests/Tests.cpp b/Utils/tests/Tests.cpp deleted file mode 100644 index 3ac860a..0000000 --- a/Utils/tests/Tests.cpp +++ /dev/null @@ -1,65 +0,0 @@ - -#include "Utils.hpp" -#include "Debugging.hpp" -#include "Testing.hpp" - -#include - -using namespace tp; - -void printSnapshot(const tp::CallStackCapture::CallStack* snapshot) { - printf("CallStack: \n"); - for (auto frame : *snapshot) { - auto symbols = gCSCapture->getSymbols(frame.getFrame()); - printf(" %s ----- %s:%llu\n", symbols->getFunc(), symbols->getFile(), symbols->getLine()); - } - printf("\n"); -} - -void common() { - gCSCapture->getSnapshot(); -} - -void first() { - common(); - common(); - common(); -} - -void second() { - common(); - common(); - common(); - common(); -} - -void third() { - common(); - common(); -} - -void root() { - first(); - second(); - third(); -} - -TEST_DEF(Debugging) { - root(); - - gCSCapture->logLeaks(); -} - -int main() { - - tp::ModuleManifest* deps[] = { &tp::gModuleUtils, nullptr }; - tp::ModuleManifest testModule("UtilsTest", nullptr, nullptr, deps); - - if (!testModule.initialize()) { - return 1; - } - - testDebugging(); - - testModule.deinitialize(); -} \ No newline at end of file diff --git a/Widgets/CMakeLists.txt b/Widgets/CMakeLists.txt new file mode 100644 index 0000000..dc1b591 --- /dev/null +++ b/Widgets/CMakeLists.txt @@ -0,0 +1,21 @@ +project(Widgets) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Math Graphics Imgui) + +### -------------------------- Applications -------------------------- ### + +add_executable(SimpleGui examples/SimpleGUI.cpp) +target_link_libraries(SimpleGui ${PROJECT_NAME} ${GLEW_LIB}) +target_include_directories(SimpleGui PUBLIC ../Externals/glfw/include ${GLEW_INCLUDE_DIR}) + +add_executable(ChatGui examples/ChatGUI.cpp) +target_link_libraries(ChatGui ${PROJECT_NAME} ${GLEW_LIB}) +target_include_directories(ChatGui PUBLIC ../Externals/glfw/include ${GLEW_INCLUDE_DIR}) + +file(COPY "examples/Font.ttf" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/") \ No newline at end of file diff --git a/Widgets/examples/ChatGUI.cpp b/Widgets/examples/ChatGUI.cpp new file mode 100644 index 0000000..580b979 --- /dev/null +++ b/Widgets/examples/ChatGUI.cpp @@ -0,0 +1,32 @@ + +#include "ChatGUI.hpp" + +#include "GraphicApplication.hpp" + +using namespace tp; + +class ExampleGUI : public Application { +public: + ExampleGUI() { mGui.setupConfig(mWidgetManager); } + + void processFrame(EventHandler* eventHandler) override { + auto rec = RectF({ 0, 0 }, mWindow->getSize()); + + mGui.updateConfigCache(mWidgetManager); + + mGui.proc(*eventHandler, rec, rec); + } + + void drawFrame(Canvas* canvas) override { mGui.draw(*canvas); } + +private: + WidgetManager mWidgetManager; + ComplexWidget mGui; +}; + +int main() { + { + ExampleGUI gui; + gui.run(); + } +} diff --git a/Widgets/examples/ChatGUI.hpp b/Widgets/examples/ChatGUI.hpp new file mode 100644 index 0000000..805cd4c --- /dev/null +++ b/Widgets/examples/ChatGUI.hpp @@ -0,0 +1,393 @@ +#pragma once + +#include "Widgets.hpp" + +namespace tp { + + template + class UserWidget : public Widget { + public: + UserWidget() { this->mId = "UserWidget"; } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + this->mArea.w = 30; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + mIsHover = aArea.isInside(events.getPointer()); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + if (mIsHover) canvas.rect(this->mArea, mAccentColor, mRounding); + else canvas.rect(this->mArea, mBaseColor, mRounding); + + canvas.text(mUser.c_str(), this->mArea, mFontSize, Canvas::CC, mPadding, mUserColor); + } + + public: + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + wm.addReference(this->mId, "Base", "Base"); + wm.addReference(this->mId, "Size", "FontSize"); + wm.addReference(this->mId, "Padding", "Padding"); + wm.addReference(this->mId, "ColUser", "Front"); + wm.addReference(this->mId, "Accent", "Accent"); + wm.addReference(this->mId, "Rounding", "Rounding"); + } + + void updateConfigCache(const WidgetManager& wm) override { + mBaseColor = wm.getColor(this->mId, "Base"); + mFontSize = wm.getNumber(this->mId, "Size"); + mPadding = wm.getNumber(this->mId, "Padding"); + mUserColor = wm.getColor(this->mId, "ColUser"); + mAccentColor = wm.getColor(this->mId, "Accent"); + mRounding = wm.getNumber(this->mId, "Rounding"); + } + + public: + std::string mUser = "UserName"; + bool mIsHover = false; + + RGBA mBaseColor; + RGBA mUserColor; + RGBA mAccentColor; + halnf mPadding = 0; + halnf mFontSize = 0; + halnf mRounding = 0; + }; + + template + class MessageWidget : public Widget { + public: + MessageWidget() { this->mId = "MessageWidget"; } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + this->mArea.w = 50; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + mIsHover = aArea.isInside(events.getPointer()); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + if (mIsHover) canvas.rect(this->mArea, mBaseColor, mRounding); + + auto userName = this->mArea; + userName.w = 25; + + auto content = this->mArea; + content.y = userName.y + userName.w; + content.w = this->mArea.w - userName.w; + + canvas.text(mContent.c_str(), content, mFontSize, Canvas::LC, mPadding, mUserColorDim); + canvas.text(mUser.c_str(), userName, mFontSizeDim, Canvas::LC, mPadding, mUserColor); + } + + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + wm.addReference(this->mId, "Base", "Base"); + wm.addReference(this->mId, "Size", "FontSize"); + wm.addReference(this->mId, "SizeUser", "FontSizeDim"); + wm.addReference(this->mId, "Padding", "Padding"); + wm.addReference(this->mId, "UserColor", "Front"); + wm.addReference(this->mId, "UserColorDim", "FrontDim"); + wm.addReference(this->mId, "Rounding", "Rounding"); + } + + void updateConfigCache(const WidgetManager& wm) override { + mBaseColor = wm.getColor(this->mId, "Base"); + mFontSize = wm.getNumber(this->mId, "Size"); + mFontSizeDim = wm.getNumber(this->mId, "SizeUser"); + mPadding = wm.getNumber(this->mId, "Padding"); + mUserColor = wm.getColor(this->mId, "UserColor"); + mUserColorDim = wm.getColor(this->mId, "UserColorDim"); + mRounding = wm.getNumber(this->mId, "Rounding"); + } + + public: + std::string mContent = "Message Content"; + std::string mUser = "UserName"; + bool mIsHover = false; + + RGBA mBaseColor; + RGBA mUserColor; + RGBA mUserColorDim; + halnf mPadding = 0; + halnf mFontSize = 0; + halnf mFontSizeDim = 0; + halnf mRounding = 0; + }; + + template + class LoginWidget : public Widget { + public: + explicit LoginWidget() { + this->mId = "Login"; + + mPass.mId = "pass"; + mUser.mId = "user"; + mButton.mLabel.mLabel = "Login"; + } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + mLogged = false; + + const auto xval = aArea.z / 2 - 100; + mUser.proc(events, aArea, { xval, 10, 200, 30 }); + mPass.proc(events, aArea, { xval, 50, 200, 30 }); + mButton.proc(events, aArea, { xval, 90, 200, 30 }); + + if (mButton.mIsReleased) { + mButton.mIsReleased = false; + mLogged = true; + } + } + + void draw(Canvas& canvas) override { + canvas.rect(this->mArea, mBGColor); + mButton.draw(canvas); + mUser.draw(canvas); + mPass.draw(canvas); + } + + public: + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + wm.addReference(this->mId, "Back", "Base"); + + mUser.setupConfig(wm); + mPass.setupConfig(wm); + mButton.setupConfig(wm); + } + + void updateConfigCache(const WidgetManager& wm) override { + mBGColor = wm.getColor(this->mId, "Back"); + + mUser.updateConfigCache(wm); + mPass.updateConfigCache(wm); + mButton.updateConfigCache(wm); + } + + public: + TextInputWidget mUser; + TextInputWidget mPass; + ButtonWidget mButton; + bool mLogged = false; + + RGBA mBGColor; + }; + + template + class ActiveChatWidget : public Widget { + public: + ActiveChatWidget() { + this->mId = "ActiveWidget"; + + mSend.mLabel.mLabel = "Send"; + mMessage.mId = "Message"; + } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + + auto history = this->mArea; + history.w -= 50; + + auto input = this->mArea; + input.y = history.w + 10; + input.w = 40 - mPadding; + input.x += mPadding; + input.z -= mPadding; + + auto inputMessage = input; + inputMessage.z -= 100; + + auto inputSend = input; + inputSend.x = inputMessage.x + inputMessage.z + mPadding; + inputSend.z = 100 - mPadding * 2; + + mSend.proc(events, this->mArea, inputSend); + mMessage.proc(events, this->mArea, inputMessage); + + if (mSend.mIsReleased) { + mSend.mIsReleased = false; + } + + mHistoryView.proc(events, this->mArea, history); + } + + void draw(Canvas& canvas) override { + canvas.rect(this->mArea, mBGColor); + mHistoryView.draw(canvas); + mMessage.draw(canvas); + mSend.draw(canvas); + } + + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + + wm.addReference(this->mId, "Back", "Background"); + wm.addReference(this->mId, "Padding", "Padding"); + + mHistoryView.setupConfig(wm); + mMessage.setupConfig(wm); + mSend.setupConfig(wm); + + MessageWidget().setupConfig(wm); + } + + void updateConfigCache(const WidgetManager& wm) override { + mBGColor = wm.getColor(this->mId, "Back"); + mPadding = wm.getNumber(this->mId, "Padding"); + + mHistoryView.updateConfigCache(wm); + mMessage.updateConfigCache(wm); + mSend.updateConfigCache(wm); + + for (auto message : mMessages) { + message->updateConfigCache(wm); + } + } + + public: + Buffer> mMessages; + ScrollableWindow mHistoryView; + TextInputWidget mMessage; + ButtonWidget mSend; + + RGBA mBGColor; + halnf mPadding = 0; + }; + + template + class ChattingWidget : public Widget { + public: + ChattingWidget() { + this->mId = "Chatting"; + + // todo : fetch code + mUsers.append(UserWidget()); + mUsers.append(UserWidget()); + mUsers.append(UserWidget()); + + mUsers[0].mArea = { 0, 0, 100, 100 }; + mUsers[1].mArea = { 0, 0, 100, 100 }; + mUsers[2].mArea = { 0, 0, 100, 100 }; + + for (auto message : mUsers) { + mSideView.mContents.append(&message.data()); + } + + mActive.mMessages.append(MessageWidget()); + mActive.mMessages.append(MessageWidget()); + mActive.mMessages.append(MessageWidget()); + + mActive.mMessages[0].mArea = { 0, 0, 100, 100 }; + mActive.mMessages[1].mArea = { 0, 0, 100, 100 }; + mActive.mMessages[2].mArea = { 0, 0, 100, 100 }; + + for (auto message : mActive.mMessages) { + mActive.mHistoryView.mContents.append(&message.data()); + } + } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + + mSplitView.proc(events, aArea, aArea); + mSideView.proc(events, this->mArea, mSplitView.getSecond()); + mActive.proc(events, aArea, mSplitView.getFirst()); + } + + void draw(Canvas& canvas) override { + canvas.rect(this->mArea, mBGColor); + mSplitView.draw(canvas); + mSideView.draw(canvas); + mActive.draw(canvas); + } + + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + + wm.addReference(this->mId, "Back", "Background"); + + mSideView.setupConfig(wm); + mActive.setupConfig(wm); + mSplitView.setupConfig(wm); + + UserWidget().setupConfig(wm); + } + + void updateConfigCache(const WidgetManager& wm) override { + mBGColor = wm.getColor(this->mId, "Back"); + + mSideView.updateConfigCache(wm); + mActive.updateConfigCache(wm); + mSplitView.updateConfigCache(wm); + + for (auto user : mUsers) { + user->updateConfigCache(wm); + } + } + + public: + Buffer> mUsers; + ScrollableWindow mSideView; + ActiveChatWidget mActive; + SplitView mSplitView; + + RGBA mBGColor; + }; + + template + class ComplexWidget : public Widget { + public: + ComplexWidget() { this->mId = "Chat"; } + + void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override { + this->mArea = aArea; + if (mLogged) { + mChatting.proc(events, aArea, aArea); + } else { + mLogin.proc(events, aArea, aArea); + mLogged = mLogin.mLogged; + if (mLogged) { + mChatting.proc(events, aArea, aArea); + } + } + } + + void draw(Canvas& canvas) override { + canvas.rect(this->mArea, mBGColor); + if (mLogged) mChatting.draw(canvas); + else mLogin.draw(canvas); + } + + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + + wm.addReference(this->mId, "Back", "Background"); + + mLogin.setupConfig(wm); + mChatting.setupConfig(wm); + } + + void updateConfigCache(const WidgetManager& wm) override { + mBGColor = wm.getColor(this->mId, "Back"); + + mLogin.updateConfigCache(wm); + mChatting.updateConfigCache(wm); + } + + private: + bool mLogged = false; + LoginWidget mLogin; + ChattingWidget mChatting; + + RGBA mBGColor; + }; +} \ No newline at end of file diff --git a/Widgets/examples/Font.ttf b/Widgets/examples/Font.ttf new file mode 100644 index 0000000..8a63054 Binary files /dev/null and b/Widgets/examples/Font.ttf differ diff --git a/Widgets/examples/SimpleGUI.cpp b/Widgets/examples/SimpleGUI.cpp new file mode 100644 index 0000000..fd4ec5e --- /dev/null +++ b/Widgets/examples/SimpleGUI.cpp @@ -0,0 +1,50 @@ + +#include "ChatGUI.hpp" + +#include "GraphicApplication.hpp" + +using namespace tp; + +class SimpleGUI : public Application { +public: + SimpleGUI() { + mGui.setupConfig(mWidgetManager); + + mButton.setupConfig(mWidgetManager); + mSlider.setupConfig(mWidgetManager); + mLabel.setupConfig(mWidgetManager); + + mGui.mContents.append(&mButton); + mGui.mContents.append(&mSlider); + mGui.mContents.append(&mLabel); + } + + void processFrame(EventHandler* eventHandler) override { + + mGui.updateConfigCache(mWidgetManager); + + mSlider.updateConfigCache(mWidgetManager); + mLabel.updateConfigCache(mWidgetManager); + mButton.updateConfigCache(mWidgetManager); + + const auto rec = RectF({ 0, 0 }, mWindow->getSize()); + mGui.proc(*eventHandler, rec, rec); + } + + void drawFrame(Canvas* canvas) override { mGui.draw(*canvas); } + +private: + WidgetManager mWidgetManager; + ScrollableWindow mGui; + + ButtonWidget mButton; + LabelWidget mLabel; + SliderWidget mSlider; +}; + +int main() { + { + SimpleGUI gui; + gui.run(); + } +} diff --git a/Widgets/private/Animations.cpp b/Widgets/private/Animations.cpp new file mode 100644 index 0000000..5c8721a --- /dev/null +++ b/Widgets/private/Animations.cpp @@ -0,0 +1,103 @@ + +#include "Animations.hpp" + +using namespace tp; + +bool AnimValue::gInTransition = false; + +halnf AnimValue::interpolate() const { + if (!mTimeAnim) { + return mVal; + } + + auto dt = gCurrentTime - mTimeStart; + if (dt > mTimeAnim) dt = mTimeAnim; + auto t = (halnf) dt / (halnf) mTimeAnim; + t = (halnf) (0.511 + atan((t - 0.36) * 28) / 2.9); + t = clamp(t, 0.f, 1.f); + auto out = mValPrev + (mVal - mValPrev) * t; + return out; +} + +AnimValue::AnimValue() { + mTimeStart = gCurrentTime; +} + +void AnimValue::setAnimTime(halni time) { mTimeAnim = time; } + +AnimValue::AnimValue(halnf val) { + mVal = val; + mValPrev = mVal; + mTimeStart = gCurrentTime; +} + +bool AnimValue::inTransition() const { + auto timePassed = gCurrentTime - mTimeStart >= mTimeAnim; + return !timePassed; +} + +void AnimValue::set(halnf val) { + if (!inTransition()) mValPrev = mVal; + if (val == mVal) return; + mValPrev = get(); + mVal = val; + if (!inTransition()) { + mTimeStart = gCurrentTime; + } +} + +halnf AnimValue::getTarget() const { return mVal; } + +void AnimValue::setNoTransition(halnf val) { + mValPrev = val; + mVal = val; + mTimeStart = gCurrentTime - mTimeAnim; +} + +halnf AnimValue::get() const { + if (inTransition()) { + gInTransition = true; + return interpolate(); + } + return mVal; +} + +void AnimValue::operator=(halnf val) { + setNoTransition(val); +} + +AnimValue::operator halnf() const { return get(); } + +RectF AnimRect::get() const { return { x.get(), y.get(), z.get(), w.get() }; } + +RectF AnimRect::getTarget() const { return { x.getTarget(), y.getTarget(), z.getTarget(), w.getTarget() }; } + +void AnimRect::setNoTransition(RectF rec) { + x.setNoTransition(rec.x); + y.setNoTransition(rec.y); + z.setNoTransition(rec.z); + w.setNoTransition(rec.w); +} + +void AnimRect::setAnimTime(const halni time) { + x.setAnimTime(time); + y.setAnimTime(time); + z.setAnimTime(time); + w.setAnimTime(time); +} + +void AnimRect::set(const RectF& in) { + x.set(in.x); + y.set(in.y); + z.set(in.z); + w.set(in.w); +} + +AnimColor::AnimColor() : mColor() {} + +RGBA AnimColor::get() const { + auto col = mColor.get(); + return { col.x, col.y, col.z, col.w }; +} + +void AnimColor::set(const RGBA& col) { mColor.set(RectF(col.r, col.g, col.b, col.a)); } \ No newline at end of file diff --git a/Widgets/private/WidgetConfig.cpp b/Widgets/private/WidgetConfig.cpp new file mode 100644 index 0000000..5a2cf39 --- /dev/null +++ b/Widgets/private/WidgetConfig.cpp @@ -0,0 +1,6 @@ + +#include "WidgetBase.hpp" + +#include "Graphics.hpp" + +namespace tp {} \ No newline at end of file diff --git a/Widgets/public/Animations.hpp b/Widgets/public/Animations.hpp new file mode 100644 index 0000000..1e33f40 --- /dev/null +++ b/Widgets/public/Animations.hpp @@ -0,0 +1,57 @@ +#pragma once + +#include "Color.hpp" +#include "Rect.hpp" +#include "Timing.hpp" + +namespace tp { + + class AnimValue { + halnf mValPrev = 0; + halnf mVal = 0; + time_ms mTimeStart = 0; + halni mTimeAnim = 250; + + static bool gInTransition; + + private: + [[nodiscard]] halnf interpolate() const; + + public: + AnimValue(); + explicit AnimValue(halnf val); + + [[nodiscard]] halnf prev() const { return mValPrev; } + void set(halnf val); + void setNoTransition(halnf); + void setAnimTime(halni time); + [[nodiscard]] halnf get() const; + [[nodiscard]] halnf getTarget() const; + [[nodiscard]] bool inTransition() const; + explicit operator halnf() const; + void operator=(halnf val); + }; + + class AnimRect : Rect { + public: + AnimRect() { + setAnimTime(450); + setNoTransition({ 0, 0, 0, 0 }); + } + + [[nodiscard]] RectF get() const; + [[nodiscard]] RectF getTarget() const; + void setNoTransition(RectF); + void set(const RectF&); + void setAnimTime(halni time_ms); + }; + + class AnimColor { + public: + AnimColor(); + AnimRect mColor; + + [[nodiscard]] RGBA get() const; + void set(const RGBA&); + }; +}; \ No newline at end of file diff --git a/Widgets/public/ButtonWidget.hpp b/Widgets/public/ButtonWidget.hpp new file mode 100644 index 0000000..4eb748c --- /dev/null +++ b/Widgets/public/ButtonWidget.hpp @@ -0,0 +1,95 @@ +#pragma once + +#include "LabelWidget.hpp" + +namespace tp { + + template + class ButtonWidget : public Widget { + public: + ButtonWidget() { + this->mArea = { 0, 0, 100, 100 }; + this->mId = "Button"; + } + + ButtonWidget(const std::string& label, const tp::RectF& aArea) { + this->mId = "Button"; + this->mArea = aArea; + this->mLabel.mLabel = label; + } + + void proc(const Events& events, const tp::RectF& areaParent, const tp::RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + + mIsHover = false; + + if (!areaParent.isOverlap(aArea)) { + mIsReleased = false; + mIsPressed = false; + return; + } + + mIsHover = aArea.isInside(events.getPointer()); + + if (events.isPressed(InputID::MOUSE1) && mIsHover) { + mIsPressed = true; + } + + if (mIsPressed && mIsHover && events.isReleased(InputID::MOUSE1)) { + mIsReleased = true; + mIsPressed = false; + } + + if (!mIsHover) mIsPressed = false; + + mLabel.proc(events, aArea, aArea); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + if (mIsPressed) { + canvas.rect(this->mArea, pressedColor, rounding); + } else if (mIsHover) { + canvas.rect(this->mArea, hoveredColor, rounding); + } else { + canvas.rect(this->mArea, accentColor, rounding); + } + mLabel.draw(canvas); + } + + public: + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + wm.addReference(this->mId, "Pressed", "Action"); + wm.addReference(this->mId, "Hovered", "Interaction"); + wm.addReference(this->mId, "Default", "Accent"); + wm.addReference(this->mId, "Rounding", "Rounding"); + + mLabel.setupConfig(wm); + } + + void updateConfigCache(const WidgetManager& wm) override { + pressedColor = wm.getColor(this->mId, "Pressed"); + hoveredColor = wm.getColor(this->mId, "Hovered"); + accentColor = wm.getColor(this->mId, "Default"); + rounding = wm.getNumber(this->mId, "Rounding"); + + mLabel.updateConfigCache(wm); + } + + public: + LabelWidget mLabel; + + bool mIsHover = false; + bool mIsPressed = false; + bool mIsReleased = false; + + RGBA pressedColor; + RGBA hoveredColor; + RGBA accentColor; + halnf rounding = 0; + }; +} \ No newline at end of file diff --git a/Widgets/public/LabelWidget.hpp b/Widgets/public/LabelWidget.hpp new file mode 100644 index 0000000..5fba4d1 --- /dev/null +++ b/Widgets/public/LabelWidget.hpp @@ -0,0 +1,43 @@ +#pragma once + +#include "WidgetBase.hpp" + +namespace tp { + template + class LabelWidget : public Widget { + public: + LabelWidget() { this->mId = "Label"; } + + void proc(const Events&, const tp::RectF& areaParent, const tp::RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + canvas.text(mLabel.c_str(), this->mArea, fontSize, Canvas::CC, padding, fontColor); + } + + public: + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + wm.addReference(this->mId, "Size", "FontSize"); + wm.addReference(this->mId, "Padding", "Padding"); + wm.addReference(this->mId, "Default", "Front"); + } + + void updateConfigCache(const WidgetManager& wm) override { + fontSize = wm.getNumber(this->mId, "Size"); + padding = wm.getNumber(this->mId, "Padding"); + fontColor = wm.getColor(this->mId, "Default"); + } + + public: + std::string mLabel = "Label"; + + halnf fontSize = 10; + halnf padding = 0; + RGBA fontColor = { 1, 1, 1, 1 }; + }; +} \ No newline at end of file diff --git a/Widgets/public/ScrollableWidget.hpp b/Widgets/public/ScrollableWidget.hpp new file mode 100644 index 0000000..da93640 --- /dev/null +++ b/Widgets/public/ScrollableWidget.hpp @@ -0,0 +1,262 @@ +#pragma once + +#include "WidgetBase.hpp" +#include "Buffer.hpp" + +namespace tp { + + template + class ScrollBarWidget : public Widget { + public: + ScrollBarWidget() { this->mId = "ScrollBar"; } + + // takes whole area + void proc(const Events& events, const tp::RectF& areaParent, const tp::RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + + auto area = getHandle(); + mHovered = getHandleHandle().isInside(events.getPointer()); + + if (mSizeFraction > 1.f) { + mPositionFraction = 0; + return; + } + + if (!areaParent.isOverlap(area)) { + mIsScrolling = false; + return; + } + + if (events.getScrollY() != 0 && areaParent.isInside(events.getPointer())) { + auto offset = events.getScrollY() < 0 ? 1.0f : -1.0f; + if (scrollInertia * offset > 0) { + scrollInertia += offset; + } else { + scrollInertia = -scrollInertia + offset; + } + } + + if (tp::abs(scrollInertia) > 0.1f) { + auto offset = scrollInertia * mScrollFactor; + mPositionFraction += offset; + mPositionFraction = tp::clamp(mPositionFraction, 0.f, 1.f - mSizeFraction); + scrollInertia *= 0.f; + return; + } + + if (events.isPressed(InputID::MOUSE1) && area.isInside(events.getPointer())) { + mIsScrolling = true; + } else if (events.isReleased(InputID::MOUSE1)) { + mIsScrolling = false; + } + + if (mIsScrolling) { + tp::halnf pos = events.getPointer().y; + pos = (pos - area.y - mSizeFraction * area.w / 2.f) / area.w; + mPositionFraction = tp::clamp(pos, 0.f, 1.f - mSizeFraction); + } + + mPositionFraction = tp::clamp(mPositionFraction, 0.f, 1.f - mSizeFraction); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + auto area = getHandle(); + + if (mSizeFraction > 1.f) return; + // if (!areaParent.isOverlap(getHandle())) return; + + tp::RGBA col = mHandleColor; + + if (mIsScrolling) { + col = mScrollingColor; + } else if (mHovered) { + col = mHoveredColor; + } + + canvas.rect(area, mDefaultColor, mRounding); + + canvas.rect(getHandleHandle(), col, mRounding); + } + + RectF getHandleHandle() const { + auto area = getHandle(); + auto sliderSize = tp::clamp(area.w * mSizeFraction, mMinSize * 2, area.w); + auto diffSize = sliderSize - area.w * mSizeFraction; + return { area.x, area.y + (area.w - diffSize) * mPositionFraction, area.z, sliderSize }; + } + + RectF getViewport() const { + if (mSizeFraction > 1.f) { + return this->mArea; + } + return { this->mArea.x, this->mArea.y, this->mArea.z - mHandleSize, this->mArea.w }; + } + + RectF getHandle() const { + return { this->mArea.x + this->mArea.z - mHandleSize + mPadding, + this->mArea.y + mPadding, + mHandleSize - mPadding * 2, + this->mArea.w - mPadding * 2 }; + } + + public: + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + + wm.addReference(this->mId, "Default", "Base"); + wm.addReference(this->mId, "Handle", "Accent"); + wm.addReference(this->mId, "Hovered", "Interaction"); + wm.addReference(this->mId, "Scrolling", "Action"); + wm.addReference(this->mId, "Padding", "Padding"); + wm.addNumber(this->mId, "HandleSize", 20.f); + wm.addNumber(this->mId, "MinSize", 20.f); + wm.addReference(this->mId, "Rounding", "Rounding"); + } + + void updateConfigCache(const WidgetManager& wm) override { + mDefaultColor = wm.getColor(this->mId, "Default"); + mHandleColor = wm.getColor(this->mId, "Handle"); + mHoveredColor = wm.getColor(this->mId, "Hovered"); + mScrollingColor = wm.getColor(this->mId, "Scrolling"); + mPadding = wm.getNumber(this->mId, "Padding"); + mHandleSize = wm.getNumber(this->mId, "HandleSize"); + mMinSize = wm.getNumber(this->mId, "MinSize"); + mRounding = wm.getNumber(this->mId, "Rounding"); + } + + public: + halnf mScrollFactor = 0.f; + halnf scrollInertia = 0.f; + bool mIsScrolling = false; + halnf mSizeFraction = 1.f; + halnf mPositionFraction = 0.f; + bool mHovered = false; + + RGBA mDefaultColor; + RGBA mHandleColor; + RGBA mHoveredColor; + RGBA mScrollingColor; + halnf mPadding = 0; + halnf mHandleSize = 10; + halnf mMinSize = 10; + halnf mRounding = 10; + }; + + template + class ScrollableWindow : public Widget { + public: + ScrollableWindow() { this->mId = "ScrollableWindow"; } + + ~ScrollableWindow() = default; + + // takes whole area + void proc(const Events& events, const tp::RectF& areaParent, const tp::RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + + updateContents(); + updateContentSize(); + + const auto padding = mPadding; + + mScroller.mSizeFraction = this->mArea.w / mContentSize; + mScroller.proc(events, this->mArea, this->mArea); + + if (mScroller.mSizeFraction > 1.f) { + setOffset(0); + } else { + setOffset((-mScroller.mPositionFraction) * mContentSize); + } + + for (auto widget : mContents) { + widget->proc( + events, + this->mArea, + { this->mArea.x + padding, widget->mArea.y, mScroller.getViewport().z - padding * 2, widget->mArea.w } + ); + } + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + mScroller.draw(canvas); + + canvas.pushClamp(this->mArea); + for (auto widget : mContents) { + widget->draw(canvas); + } + canvas.popClamp(); + } + + public: + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + + wm.addReference(this->mId, "Default", "Base"); + wm.addReference(this->mId, "Padding", "Padding"); + wm.addReference(this->mId, "Rounding", "Rounding"); + + mScroller.setupConfig(wm); + } + + void updateConfigCache(const WidgetManager& wm) override { + mDefaultColor = wm.getColor(this->mId, "Default"); + mPadding = wm.getNumber(this->mId, "Padding"); + + mScroller.updateConfigCache(wm); + + for (auto item : mContents) { + item->updateConfigCache(wm); + } + } + + private: + void updateContents() { + if (mContents.size()) { + const halnf offset = mContents.first()->mArea.y + mPadding; + + halnf start = 0; + for (auto widget : mContents) { + widget->mArea.y = start; + start += widget->mArea.w + mPadding; + } + + for (auto widget : mContents) { + widget->mArea.y += offset; + } + } + } + + void updateContentSize() { + mContentSize = 0; + if (mContents.size()) { + mContentSize = mContents.last()->mArea.y - mContents.first()->mArea.y; + mContentSize += mContents.last()->mArea.w; + mContentSize += 2 * mPadding; + } + } + + void setOffset(const halnf offset) { + if (!mContents.size()) return; + auto newOffset = offset - mContents.first()->mArea.y + mPadding; + for (auto widget : mContents) { + widget->mArea.y += newOffset; + } + } + + public: + halnf mContentSize = 0; + + Buffer*> mContents; + ScrollBarWidget mScroller; + + RGBA mDefaultColor; + halnf mPadding = 0; + }; +} \ No newline at end of file diff --git a/Widgets/public/SliderWidget.hpp b/Widgets/public/SliderWidget.hpp new file mode 100644 index 0000000..70aa657 --- /dev/null +++ b/Widgets/public/SliderWidget.hpp @@ -0,0 +1,109 @@ +#pragma once + +#include "LabelWidget.hpp" + +namespace tp { + + template + class SliderWidget : public Widget { + public: + SliderWidget() { this->mId = "SliderWidget"; } + + void proc(const Events& events, const tp::RectF& areaParent, const tp::RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + + if (events.isPressed(InputID::MOUSE1) && this->mArea.isInside(events.getPointer())) { + mIsSliding = true; + } else if (events.isReleased(InputID::MOUSE1)) { + mIsSliding = false; + } + + if (mIsSliding) { + mFactor = (events.getPointer().x - this->mArea.x - handleSize / 2.f) / (this->mArea.z - handleSize); + } + + mFactor = tp::clamp(mFactor, 0.f, 1.f); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + canvas.rect(this->mArea, defaultColor, rounding); + canvas.rect(getHandle(), handleColor, rounding); + } + + RectF getHandle() const { + const auto halfHandle = handleSize / 2.f; + const auto left = this->mArea.x + (this->mArea.z - handleSize) * mFactor; + return { left, this->mArea.y, handleSize, this->mArea.w }; + } + + public: + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + wm.addReference(this->mId, "Default", "Base"); + wm.addReference(this->mId, "Handle", "Accent"); + wm.addNumber(this->mId, "HandleSize", 20.f); + wm.addReference(this->mId, "Rounding", "Rounding"); + } + + void updateConfigCache(const WidgetManager& wm) override { + defaultColor = wm.getColor(this->mId, "Default"); + handleColor = wm.getColor(this->mId, "Handle"); + handleSize = wm.getNumber(this->mId, "HandleSize"); + rounding = wm.getNumber(this->mId, "Rounding"); + } + + public: + halnf mFactor = 0.f; + bool mIsSliding = false; + + RGBA defaultColor; + RGBA handleColor; + halnf handleSize = 0; + halnf rounding = 0; + }; + + template + class NamedSliderWidget : public Widget { + public: + explicit NamedSliderWidget(const char* name = "Value") { + this->mId = "NamedSliderWidget"; + mLabel.mLabel = name; + this->mArea = { 0, 0, 100, 30 }; + } + + void proc(const Events& events, const tp::RectF& areaParent, const tp::RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + + const auto widthFirst = this->mArea.z * mFactor; + const auto widthSecond = this->mArea.z * (1.f - mFactor); + + RectF rec = this->mArea; + rec.size.x = widthFirst; + + mLabel.proc(events, this->mArea, rec); + + rec.pos.x += widthFirst; + rec.size.x = widthSecond; + + mSlider.proc(events, this->mArea, rec); + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + mSlider.draw(canvas); + mLabel.draw(canvas); + } + + public: + public: + SliderWidget mSlider; + LabelWidget mLabel; + + halnf mFactor = 0.5f; + }; +} \ No newline at end of file diff --git a/Widgets/public/SplitViewWidget.hpp b/Widgets/public/SplitViewWidget.hpp new file mode 100644 index 0000000..6731efa --- /dev/null +++ b/Widgets/public/SplitViewWidget.hpp @@ -0,0 +1,93 @@ +#pragma once + +#include "WidgetBase.hpp" + +namespace tp { + template + class SplitView : public Widget { + public: + SplitView() { this->mId = "SplitView"; } + + void proc(const Events& events, const tp::RectF& areaParent, const tp::RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + + if (!this->mVisible) { + mResizeInProcess = false; + return; + } + + mIsHover = getHandle().isInside(events.getPointer()); + + if (events.isPressed(InputID::MOUSE1) && mIsHover) { + mResizeInProcess = true; + } else if (events.isReleased(InputID::MOUSE1)) { + mResizeInProcess = false; + } + + if (mResizeInProcess) { + halnf pos = events.getPointer().x; + auto diff = pos - (this->mArea.x + mFactor * this->mArea.z); + mFactor += diff / this->mArea.z; + } + + mFactor = tp::clamp(mFactor, mMinSize / this->mArea.z, 1 - mMinSize / this->mArea.z); + + if (mMinSize * 2.f > this->mArea.z) { + mFactor = 0.5f; + } + } + + // takes whole area + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + if (mResizeInProcess) canvas.rect(getHandle(), mResizingColor); + else if (mIsHover) canvas.rect(getHandle(), mHoveredColor); + else canvas.rect(getHandle(), mHandleColor); + } + + RectF getFirst() const { + return { this->mArea.x, this->mArea.y, mFactor * this->mArea.z - mHandleSize / 2.f, this->mArea.w }; + } + + RectF getSecond() const { + return { this->mArea.x + mFactor * this->mArea.z + mHandleSize / 2.f, + this->mArea.y, + (1.f - mFactor) * this->mArea.z - mHandleSize / 2.f, + this->mArea.w }; + } + + RectF getHandle() const { + return { this->mArea.x + mFactor * this->mArea.z - mHandleSize / 2.f, this->mArea.y, mHandleSize, this->mArea.w }; + } + + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + wm.addReference(this->mId, "Handle", "Accent"); + wm.addReference(this->mId, "Hovered", "Interaction"); + wm.addReference(this->mId, "Resizing", "Action"); + wm.addNumber(this->mId, "Min", 200.f); + wm.addNumber(this->mId, "HandleSize", 7.f); + } + + void updateConfigCache(const WidgetManager& wm) override { + mHandleColor = wm.getColor(this->mId, "Handle"); + mHoveredColor = wm.getColor(this->mId, "Hovered"); + mResizingColor = wm.getColor(this->mId, "Resizing"); + mMinSize = wm.getNumber(this->mId, "Min"); + mHandleSize = wm.getNumber(this->mId, "HandleSize"); + } + + public: + halnf mFactor = 0.7f; + bool mResizeInProcess = false; + bool mIsHover = false; + + RGBA mHandleColor; + RGBA mHoveredColor; + RGBA mResizingColor; + halnf mMinSize = 0; + halnf mHandleSize = 0; + }; +} \ No newline at end of file diff --git a/Widgets/public/TextInputWidget.hpp b/Widgets/public/TextInputWidget.hpp new file mode 100644 index 0000000..2dfd40b --- /dev/null +++ b/Widgets/public/TextInputWidget.hpp @@ -0,0 +1,93 @@ +#pragma once + +#include "WidgetBase.hpp" + +#include "imgui.h" +#include "imgui_internal.h" + +namespace tp { + template + class TextInputWidget : public Widget { + public: + TextInputWidget() { this->mId = "TextInput"; } + + void proc(const Events& events, const tp::RectF& areaParent, const tp::RectF& aArea) override { + this->mArea = aArea; + this->mVisible = areaParent.isOverlap(aArea); + if (!this->mVisible) return; + } + + void draw(Canvas& canvas) override { + if (!this->mVisible) return; + + nChanged = false; + + const auto col = mAccentColor; + const auto colSel = mHoveredColor; + + ImGui::GetStyle().Colors[ImGuiCol_FrameBg] = { col.r, col.g, col.b, col.a }; + ImGui::GetStyle().Colors[ImGuiCol_TextSelectedBg] = { colSel.r, colSel.g, colSel.b, colSel.a }; + + ImGui::SetNextWindowPos({ this->mArea.x, this->mArea.y }); + ImGui::SetNextWindowSize({ this->mArea.z, this->mArea.w }); + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 0, 0 }); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, mRounding * 1.5f); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, { mPadding, mPadding }); + + // ImGui::PushID((int) alni(this)); + ImGui::Begin( + mId.c_str(), + 0, + ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoBackground | + ImGuiWindowFlags_NoResize + ); + + if (mMultiline) { + if (ImGui::InputTextMultiline("input", mBuff, mMaxBufferSize, { this->mArea.z, this->mArea.w })) { + mValue = mBuff; + nChanged = true; + } + } else { + if (ImGui::InputTextEx("input", mId.c_str(), mBuff, mMaxBufferSize, { this->mArea.z, this->mArea.w }, 0)) { + mValue = mBuff; + nChanged = true; + } + } + + ImGui::End(); + ImGui::PopStyleVar(3); + } + + public: + void setupConfig(WidgetManager& wm) { + if (!wm.createWidgetConfig(this->mId)) return; + wm.addReference(this->mId, "Accent", "Accent"); + wm.addReference(this->mId, "Base", "Base"); + wm.addReference(this->mId, "Rounding", "Rounding"); + wm.addReference(this->mId, "Hovered", "Accent"); + wm.addReference(this->mId, "Padding", "Padding"); + } + + void updateConfigCache(const WidgetManager& wm) override { + mAccentColor = wm.getColor(this->mId, "Accent"); + mBaseColor = wm.getColor(this->mId, "Base"); + mHoveredColor = wm.getColor(this->mId, "Hovered"); + mRounding = wm.getNumber(this->mId, "Rounding"); + mPadding = wm.getNumber(this->mId, "Padding"); + } + + public: + enum { mMaxBufferSize = 512 }; + char mBuff[mMaxBufferSize] = ""; + bool nChanged = false; + std::string mValue; + std::string mId = "id"; + bool mMultiline = false; + + RGBA mAccentColor; + RGBA mHoveredColor; + RGBA mBaseColor; + halnf mRounding = 0; + halnf mPadding = 0; + }; +} \ No newline at end of file diff --git a/Widgets/public/WidgetBase.hpp b/Widgets/public/WidgetBase.hpp new file mode 100644 index 0000000..8eae05f --- /dev/null +++ b/Widgets/public/WidgetBase.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "WidgetManager.hpp" + +namespace tp { + + template + class Widget { + public: + Widget() { this->mArea = { 0, 0, 100, 100 }; } + + virtual void proc(const Events& events, const tp::RectF& areaParent, const tp::RectF& aArea) { + mVisible = areaParent.isOverlap(aArea); + if (!mVisible) { + return; + } + + this->mArea = aArea; + } + + virtual void draw(Canvas& canvas) { + if (!mVisible) { + return; + } + } + + virtual void updateConfigCache(const WidgetManager& wm) = 0; + + public: + std::string mId; + RectF mArea; + bool mVisible = false; + }; +} \ No newline at end of file diff --git a/Widgets/public/WidgetManager.hpp b/Widgets/public/WidgetManager.hpp new file mode 100644 index 0000000..e254a7d --- /dev/null +++ b/Widgets/public/WidgetManager.hpp @@ -0,0 +1,131 @@ +#pragma once + +#include "Animations.hpp" +#include "Map.hpp" +#include "Rect.hpp" + +#include "InputCodes.hpp" +#include "Buffer.hpp" + +namespace tp { + + struct WidgetConfig { + + struct WidgetShortcut { + struct Condition { + std::string name; + std::string state; + }; + + std::string callbackName; + + WidgetShortcut() = default; + WidgetShortcut(const InitialierList&) {} + }; + + struct WidgetParameter { + enum Type { NONE, VAL, COL, REF }; + + halnf value = 0.f; + RGBA color = {}; + + std::string refName; + std::string refWidgetId; + + Type type = NONE; + + WidgetParameter() = default; + + explicit WidgetParameter(halnf val) { + type = VAL; + value = val; + } + + explicit WidgetParameter(const RGBA& val) { + type = COL; + color = val; + } + + explicit WidgetParameter(const std::string& widgetId, const std::string& val) { + type = REF; + refName = val; + refWidgetId = widgetId; + } + }; + + Map mParameters; + Buffer mShortcuts; + }; + + class WidgetManager { + public: + WidgetManager() { + createWidgetConfig("Default"); + + addNumber("Default", "FontSize", 15.f); + addNumber("Default", "FontSizeDim", 12.f); + addNumber("Default", "Rounding", 5.f); + addNumber("Default", "Padding", 5.f); + addNumber("Default", "HandleSize", 5.f); + + addColor("Default", "Background", RGBA{ 0.03f, 0.03f, 0.03f, 1.f }); + addColor("Default", "Base", RGBA{ 0.07f, 0.07f, 0.07f, 1.f }); + addColor("Default", "Accent", RGBA{ 0.13f, 0.13f, 0.13f, 1.f }); + addColor("Default", "Interaction", RGBA{ 0.33f, 0.33f, 0.3f, 1.f }); + addColor("Default", "Action", RGBA{ 0.44f, 0.44f, 0.4f, 1.f }); + addColor("Default", "Front", RGBA{ 1.f, 1.f, 1.f, 1.f }); + addColor("Default", "FrontDim", RGBA{ 0.7f, 0.7f, 0.7f, 1.f }); + } + + ~WidgetManager() { mConfigurations.removeAll(); } + + bool createWidgetConfig(const std::string& widgetId) { + auto idx = mConfigurations.presents(widgetId); + if (idx) return false; + mConfigurations.put(widgetId, {}); + return true; + } + + [[nodiscard]] const RGBA& getColor(const std::string& widgetId, const std::string& name) const { + const WidgetConfig& config = mConfigurations.get(widgetId); + const WidgetConfig::WidgetParameter& parameter = config.mParameters.get(name); + + if (parameter.type == WidgetConfig::WidgetParameter::REF) { + return mConfigurations.get(parameter.refWidgetId).mParameters.get(parameter.refName).color; + } else { + return parameter.color; + } + } + + [[nodiscard]] halnf getNumber(const std::string& widgetId, const std::string& name) const { + const WidgetConfig& config = mConfigurations.get(widgetId); + const WidgetConfig::WidgetParameter& parameter = config.mParameters.get(name); + + if (parameter.type == WidgetConfig::WidgetParameter::REF) { + return mConfigurations.get(parameter.refWidgetId).mParameters.get(parameter.refName).value; + } else { + return parameter.value; + } + } + + void addColor(const std::string& widgetId, const std::string& name, const RGBA& val) { + WidgetConfig& config = mConfigurations.get(widgetId); + config.mParameters.put(name, WidgetConfig::WidgetParameter(val)); + } + + void addNumber(const std::string& widgetId, const std::string& name, halnf val) { + WidgetConfig& config = mConfigurations.get(widgetId); + config.mParameters.put(name, WidgetConfig::WidgetParameter(val)); + } + + void addReference(const std::string& widgetId, const std::string& refName, const std::string& name) { + WidgetConfig& config = mConfigurations.get(widgetId); + config.mParameters.put(refName, WidgetConfig::WidgetParameter("Default", name)); + } + + private: + Map mConfigurations; + RGBA mErrorColor = { 0, 0, 0, 1 }; + halnf mErrorNumber = 0; + }; +} \ No newline at end of file diff --git a/Widgets/public/Widgets.hpp b/Widgets/public/Widgets.hpp new file mode 100644 index 0000000..95d35b8 --- /dev/null +++ b/Widgets/public/Widgets.hpp @@ -0,0 +1,9 @@ +#pragma once + +#include "ButtonWidget.hpp" +#include "LabelWidget.hpp" +#include "ScrollableWidget.hpp" +#include "SplitViewWidget.hpp" +#include "TextInputWidget.hpp" +#include "SliderWidget.hpp" +#include "Animations.hpp" \ No newline at end of file